|
From: <mk...@us...> - 2003-07-18 10:14:51
|
Update of /cvsroot/csp/APPLICATIONS/SimData/SimData
In directory sc8-pr-cvs1:/tmp/cvs-serv15388/SimData
Modified Files:
Parse.py
Log Message:
see CHANGES.current
Index: Parse.py
===================================================================
RCS file: /cvsroot/csp/APPLICATIONS/SimData/SimData/Parse.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** Parse.py 17 Jul 2003 10:12:40 -0000 1.7
--- Parse.py 18 Jul 2003 10:14:49 -0000 1.8
***************
*** 580,584 ****
xbreaks, attrs = tags["XBreaks"]
if not attrs.has_key("spacing"):
! msg = "CurveHander <XBreaks> tag missing required attribute 'spacing'"
raise XMLSyntax, msg
xspacing = float(attrs["spacing"])
--- 580,584 ----
xbreaks, attrs = tags["XBreaks"]
if not attrs.has_key("spacing"):
! msg = "TableHander <XBreaks> tag missing required attribute 'spacing'"
raise XMLSyntax, msg
xspacing = float(attrs["spacing"])
***************
*** 587,591 ****
ybreaks, attrs = tags["YBreaks"]
if not attrs.has_key("spacing"):
! msg = "CurveHander <YBreaks> tag missing required attribute 'spacing'"
raise XMLSyntax, msg
yspacing = float(attrs["spacing"])
--- 587,591 ----
ybreaks, attrs = tags["YBreaks"]
if not attrs.has_key("spacing"):
! msg = "TableHander <YBreaks> tag missing required attribute 'spacing'"
raise XMLSyntax, msg
yspacing = float(attrs["spacing"])
***************
*** 598,601 ****
--- 598,679 ----
table.interpolate()
interface.set(object, name, table)
+
+
+
+ ##
+ # Generic LUT handler, specialized below for Table1, Table2, and Table3
+ #
+ class _LUTHandler(SimpleHandler):
+
+ handlers = {
+ "Values" : FloatListHandler,
+ # "Method" : EnumHandler,
+ }
+
+ members = handlers.keys()
+ required_members = members
+
+ def __init__(self, dim, id, base, name, attrs):
+ SimpleHandler.__init__(self, id, base, name, attrs)
+ self._required_members = _LUTHandler.required_members
+ for i in range(dim):
+ self._required_members.append("Breaks%d" % i)
+ self._dim = dim
+ self._keys = {}
+
+ def handleChild(self, name, attrs):
+ if name.startswith("Breaks"):
+ return FloatListHandler
+ return _LUTHandler.handlers[name]
+
+ def validateChild(self, name, attrs):
+ if name.startswith("Breaks"):
+ n = int(name[6:])
+ return n >= 0 and n < self._dim
+ return name in _LUTHandler.members
+
+ def endChild(self):
+ child = self._handler.getElement()
+ attrs = self._handler._attrs
+ member = self._handler_tag
+ self._keys[member] = (child, attrs)
+
+ def assign(self, interface, object, name):
+ missing = filter(lambda x, f=self._keys.has_key: not f(x), self._required_members)
+ assert len(missing)==0, "LUTHandler required tag(s) missing:\n %s" % str(missing)
+ table = getattr(SimData, "Table%d" % self._dim)()
+ tags = self._keys
+ breaks = []
+ spacing = []
+ for i in range(self._dim):
+ breakpoints, attrs = tags["Breaks%d" % i]
+ if not attrs.has_key("spacing"):
+ msg = "LUTHander <Breaks%d> tag missing required attribute 'spacing'" % i
+ raise XMLSyntax, msg
+ breaks.append(breakpoints)
+ dx = float(attrs["spacing"])
+ n = 1 + int((max(breaks[i]) - min(breaks[i])) / dx)
+ spacing.append(n)
+ values, attrs = tags["Values"]
+ table.load(values, breaks)
+ # method, attrs = tags["Method"]
+ # table.method.parseXML(method)
+ table.interpolate(spacing, table.LINEAR)
+ interface.set(object, name, table)
+
+
+ class Table1Handler(_LUTHandler):
+ def __init__(self, id, base, name, attrs):
+ _LUTHandler.__init__(self, 1, id, base, name, attrs)
+
+
+ class Table2Handler(_LUTHandler):
+ def __init__(self, id, base, name, attrs):
+ _LUTHandler.__init__(self, 2, id, base, name, attrs)
+
+
+ class Table3Handler(_LUTHandler):
+ def __init__(self, id, base, name, attrs):
+ _LUTHandler.__init__(self, 3, id, base, name, attrs)
|