1215 classmembers[elmtname] = None |
1215 classmembers[elmtname] = None |
1216 classmembers["set%s" % elmtname] = generateSetMethod(elmtname) |
1216 classmembers["set%s" % elmtname] = generateSetMethod(elmtname) |
1217 classmembers["get%s" % elmtname] = generateGetMethod(elmtname) |
1217 classmembers["get%s" % elmtname] = generateGetMethod(elmtname) |
1218 |
1218 |
1219 classmembers["__init__"] = generateInitMethod(self, classinfos) |
1219 classmembers["__init__"] = generateInitMethod(self, classinfos) |
1220 classmembers["__setattr__"] = generateSetattrMethod(self, classinfos) |
|
1221 classmembers["getStructure"] = generateStructureMethod(classinfos) |
1220 classmembers["getStructure"] = generateStructureMethod(classinfos) |
1222 classmembers["loadXMLTree"] = generateLoadXMLTree(self, classinfos) |
1221 classmembers["loadXMLTree"] = generateLoadXMLTree(self, classinfos) |
1223 classmembers["generateXMLText"] = generateGenerateXMLText(self, classinfos) |
1222 classmembers["generateXMLText"] = generateGenerateXMLText(self, classinfos) |
1224 classmembers["getElementAttributes"] = generateGetElementAttributes(self, classinfos) |
1223 classmembers["getElementAttributes"] = generateGetElementAttributes(self, classinfos) |
1225 classmembers["getElementInfos"] = generateGetElementInfos(self, classinfos) |
1224 classmembers["getElementInfos"] = generateGetElementInfos(self, classinfos) |
1226 classmembers["setElementValue"] = generateSetElementValue(self, classinfos) |
1225 classmembers["setElementValue"] = generateSetElementValue(self, classinfos) |
1227 classmembers["singleLineAttributes"] = True |
1226 classmembers["singleLineAttributes"] = True |
1228 classmembers["compatibility"] = lambda x, y: None |
1227 classmembers["compatibility"] = lambda x, y: None |
1229 |
1228 |
1230 class_definition = classobj(str(classname), bases, classmembers) |
1229 class_definition = classobj(str(classname), bases, classmembers) |
|
1230 setattr(class_definition, "__setattr__", generateSetattrMethod(self, class_definition, classinfos)) |
1231 class_infos = {"type": COMPILEDCOMPLEXTYPE, |
1231 class_infos = {"type": COMPILEDCOMPLEXTYPE, |
1232 "name": classname, |
1232 "name": classname, |
1233 "check": generateClassCheckFunction(class_definition), |
1233 "check": generateClassCheckFunction(class_definition), |
1234 "initial": generateClassCreateFunction(class_definition), |
1234 "initial": generateClassCreateFunction(class_definition), |
1235 "extract": generateClassExtractFunction(class_definition), |
1235 "extract": generateClassExtractFunction(class_definition), |
1294 |
1294 |
1295 """ |
1295 """ |
1296 Method that generate the method for loading an xml tree by following the |
1296 Method that generate the method for loading an xml tree by following the |
1297 attributes list defined |
1297 attributes list defined |
1298 """ |
1298 """ |
1299 def generateSetattrMethod(factory, classinfos): |
1299 def generateSetattrMethod(factory, class_definition, classinfos): |
1300 attributes = dict([(attr["name"], attr) for attr in classinfos["attributes"] if attr["use"] != "prohibited"]) |
1300 attributes = dict([(attr["name"], attr) for attr in classinfos["attributes"] if attr["use"] != "prohibited"]) |
1301 optional_attributes = dict([(attr["name"], True) for attr in classinfos["attributes"] if attr["use"] == "optional"]) |
1301 optional_attributes = dict([(attr["name"], True) for attr in classinfos["attributes"] if attr["use"] == "optional"]) |
1302 elements = dict([(element["name"], element) for element in classinfos["elements"]]) |
1302 elements = dict([(element["name"], element) for element in classinfos["elements"]]) |
1303 |
1303 |
1304 def setattrMethod(self, name, value): |
1304 def setattrMethod(self, name, value): |
1320 return object.__setattr__(self, name, value) |
1320 return object.__setattr__(self, name, value) |
1321 else: |
1321 else: |
1322 raise ValueError("Invalid value for attribute '%s'." % (name)) |
1322 raise ValueError("Invalid value for attribute '%s'." % (name)) |
1323 elif classinfos.has_key("base"): |
1323 elif classinfos.has_key("base"): |
1324 return classinfos["base"].__setattr__(self, name, value) |
1324 return classinfos["base"].__setattr__(self, name, value) |
1325 elif self.__class__.__dict__.has_key(name): |
1325 elif class_definition.__dict__.has_key(name): |
1326 return object.__setattr__(self, name, value) |
1326 return object.__setattr__(self, name, value) |
1327 else: |
1327 else: |
1328 raise AttributeError("'%s' can't have an attribute '%s'." % (self.__class__.__name__, name)) |
1328 raise AttributeError("'%s' can't have an attribute '%s'." % (self.__class__.__name__, name)) |
1329 |
1329 |
1330 return setattrMethod |
1330 return setattrMethod |