#
# props.mac
#
#
def get_property_filename() '{
return sprintf("%s/../../../local/spec/spec.d/%s/properties",SPECD,SPEC)
}'
def properties '{
local propfile editor
propfile = get_property_filename()
editor = SEDITOR
unix(sprintf("%s %s", editor, propfile))
}'
def get_ctrl_id(prefix,ctrlno) '{
return PROPERTIES[prefix][ctrlno]
}'
def ctrl_register(id,prefix) '{
PROPERTIES["mnemonic"][id] = prefix
}'
def get_nonempty_line(line) '{
local i j
for (i = 1; i <= length(line); i++) {
j = index("# \t\n", substr(line, i, 1))
if (j <= 1){
return (j == 0) ? line : ""
}
}
return ""
}'
def load_properties() '{
unglobal PROPERTIES
global PROPERTIES
local vals, propfile, nv, key, line
local smkeys
propfile = get_property_filename()
while ( (line = getline(propfile)) != -1 ) {
# print ".. reading line " line
if ((line = get_nonempty_line(line)) == ""){
continue
}
nv = split(line,vals,"=")
if (nv == 2) {
sscanf(vals[0],"%s",key)
split(key,smkeys,":")
sscanf(vals[1],"%s",value)
if ( split(value,vals,"\"") > 2 || split(value,vals,"\'") > 2) {
value = vals[1]
}
PROPERTIES[smkeys[0]][smkeys[1]] = value
}
}
getline(propfile,"close")
load_mnemonics()
}'
def load_mnemonics() '{
local mi ci
for (mi=0;mi<MOTORS;mi++) {
PROPERTIES["mnemonic"][motor_mne(mi)] = "motor"
}
for (ci=0;ci<COUNTERS;ci++) {
PROPERTIES["mnemonic"][cnt_mne(ci)] = "counter"
}
}'
def get_property(id,propname) '{
return PROPERTIES[id][propname];
}'
def get_properties(id) '{
local retval rval
for ( rval in PROPERTIES[id] ) {
retval[rval] = PROPERTIES[id][rval]
}
return retval
}'
def set_property(id, propname, value ) '{
PROPERTIES[id][propname] = value
}'
def gethardbyname(name) '{
local answer
answer = name ":" PROPERTIES["mnemonic"][name]
return answer
}'
def gethardlist(type) '{
local answer ci mi key
answer = ""
for (key in PROPERTIES["mnemonic"]) {
if (type == "") {
answer = answer "," key ":" PROPERTIES["mnemonic"][key]
} else if ( type != "" && PROPERTIES["mnemonic"][key] == type ) {
answer = answer "," key ":" type
}
}
return substr(answer,2)
}'
|