// 11 february 2014
package main

import (
	"fmt"
	"sync"
)

// I need a way to get a sysData for a given HWND or a given HWND/control ID. So, this.

var (
	sysDatas = map[_HWND]*sysData{}
	sysDatasLock sync.Mutex
	sysDataIDs = map[_HMENU]*sysData{}
	sysDataIDsLock sync.Mutex
)

func addSysData(hwnd _HWND, s *sysData) {
	sysDatasLock.Lock()
	defer sysDatasLock.Unlock()
	sysDatas[hwnd] = s
}

func addSysDataID(id _HMENU, s *sysData) {
	sysDataIDsLock.Lock()
	defer sysDataIDsLock.Unlock()
	sysDataIDs[id] = s
}

func getSysData(hwnd _HWND) *sysData {
	sysDatasLock.Lock()
	defer sysDatasLock.Unlock()
	if ss, ok := sysDatas[hwnd]; ok {
		return ss
	}
	return nil
}

func getSysDataID(id _HMENU) *sysData {
	sysDataIDsLock.Lock()
	defer sysDataIDsLock.Unlock()
	if ss, ok := sysDataIDs[id]; ok {
		return ss
	}
	panic(fmt.Sprintf("getting nonexistent ID %d\n", id))
}