Definition.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { XMLElem, type IToXML } from "@/util/XmlElem";
  2. import type { NamespaceTable } from "./NameSpaceTable";
  3. import type { IAddressSpace } from "./IAddressSpace";
  4. export class Definition implements IToXML {
  5. public name:string;
  6. public symbolicName:string|undefined;
  7. public isUnion:boolean;
  8. public IsOptionSet:boolean;
  9. public baseType:string;
  10. constructor(options: DefinitionOptions) {
  11. this.name=options.name;
  12. this.symbolicName=options.symbolicName;
  13. this.isUnion=(options.isUnion===undefined?false:Boolean(options.isUnion));
  14. this.IsOptionSet=(options.IsOptionSet===undefined?false:Boolean(options.IsOptionSet));
  15. this.baseType=options.baseType||"";
  16. }
  17. toXML(_lnst:NamespaceTable, _gnst:NamespaceTable): XMLElem {
  18. return new XMLElem("Definition")
  19. .attr("Name", this.name)
  20. .attr('SymbolicName', this.symbolicName)
  21. .attr('IsUnion', this.isUnion)
  22. .attr('IsOptionSet', this.IsOptionSet)
  23. .attr('BaseType', this.baseType);
  24. }
  25. static fromXML(xmlDefinition: any, _addressSpace: IAddressSpace): Definition{
  26. return new Definition({
  27. name: xmlDefinition['@_Name'],
  28. symbolicName: xmlDefinition['@_SymbolicName'],
  29. isUnion: xmlDefinition['@_IsUnion'],
  30. IsOptionSet: xmlDefinition['@_IsOptionSet'],
  31. baseType: xmlDefinition['@_BaseType']
  32. });
  33. }
  34. }
  35. export interface DefinitionOptions{
  36. name: string;
  37. symbolicName?: string;
  38. isUnion?: boolean;
  39. IsOptionSet?: boolean;
  40. baseType?:string;
  41. }