'''
EPICS record
'''
import macros
class RecordException(Exception): pass
[docs]class Record(object):
'''definition of an EPICS record, macros are not expanded'''
def __init__(self, parent, rtype, rname, ref, **env):
self.parent = parent
self.RTYP = rtype
self.rname = rname
self.macros = macros.Macros(**env)
self.fields = {}
self.addFieldPattern('RTYP', rtype, parent, ref)
self.addFieldPattern('NAME', rname, parent, ref)
self.reference = ref
self.alias_list = []
self.info_dict = {}
def __str__(self):
return 'record ' + self.RTYP + ' ' + self.rname
def addFieldPattern(self, field, value, parent=None, ref=None):
self.fields[field] = macros.KVpair(parent, field, value, ref)
def addAlias(self, alias, parent=None, ref=None):
self.alias_list.append(alias) # TODO: what about a reference?
def addInfo(self, key, field_list, parent=None, ref=None):
self.info_dict[key] = macros.KVpair(parent, key, field_list, ref)
[docs]class PV(object):
'''single instance of an EPICS record, will expand all macros as provided'''
def __init__(self, record_object, ref, **env):
self.record = record_object
self.RTYP = record_object.RTYP
self.macros = macros.Macros(**env)
self.reference = ref
self.fields = {k: self.macros.replace(v) for k, v in self.record.fields.items()}
self.NAME = self.fields['NAME']
def __str__(self):
return 'record ' + self.RTYP + ' ' + str(self.macros.db)
def getField(self, field, default=None):
return self.fields[field]
def getFields(self):
return self.fields.items()
def getFieldList(self):
return self.fields.keys()