From anonymous, 10 Years ago, written in Python.
Embed
  1. >>> import esilib
  2. >>> f = esilib.ESIFile()
  3. >>> f.add_var_datatype(True, int, 16, '')
  4. ('INT', 16)
  5. >>> rec = f.add_record_datatype("DT1337")
  6. >>> f.add_record_subobj(rec, { 'subindex': 0, 'name': 'foobar', 'type': (True, int, 16, '') } )
  7. <Element DataType at 0xce0fa8>
  8. >>> f.add_record_subobj(rec, { 'subindex': 1, 'name': 'fish', 'type': (True, int, 16, '') } )
  9. <Element DataType at 0xce0fa8>
  10. >>> f.dump()
  11. <Dictionary>
  12.   <DataTypes>
  13.     <DataType>
  14.       <Name>INT</Name>
  15.       <BitSize>48</BitSize>
  16.     </DataType>
  17.     <DataType>
  18.       <Name>DT1337</Name>
  19.       <BitSize>x</BitSize>
  20.       <SubItem>
  21.         <SubIdx>0</SubIdx>
  22.         <Name>foobar</Name>
  23.         <Type>INT</Type>
  24.         <BitSize>16</BitSize>
  25.         <BitOffs>16</BitOffs>
  26.         <Flags>
  27.           <Access>rw</Access>
  28.           <Category>o</Category>
  29.         </Flags>
  30.       </SubItem>
  31.       <SubItem>
  32.         <SubIdx>1</SubIdx>
  33.         <Name>fish</Name>
  34.         <Type>INT</Type>
  35.         <BitSize>16</BitSize>
  36.         <BitOffs>32</BitOffs>
  37.         <Flags>
  38.           <Access>rw</Access>
  39.           <Category>o</Category>
  40.         </Flags>
  41.       </SubItem>
  42.     </DataType>
  43.   </DataTypes>
  44.   <Objects/>
  45. </Dictionary>