>>> import esilib
>>> f = esilib.ESIFile()
>>> f.add_var_datatype(True, int, 16, '')
('INT', 16)
>>> rec = f.add_record_datatype("DT1337")
>>> f.add_record_subobj(rec, { 'subindex': 0, 'name': 'foobar', 'type': (True, int, 16, '') } )
<Element DataType at 0xce0fa8>
>>> f.add_record_subobj(rec, { 'subindex': 1, 'name': 'fish', 'type': (True, int, 16, '') } )
<Element DataType at 0xce0fa8>
>>> f.dump()
<Dictionary>
<DataTypes>
<DataType>
<Name>INT</Name>
<BitSize>48</BitSize>
</DataType>
<DataType>
<Name>DT1337</Name>
<BitSize>x</BitSize>
<SubItem>
<SubIdx>0</SubIdx>
<Name>foobar</Name>
<Type>INT</Type>
<BitSize>16</BitSize>
<BitOffs>16</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
</Flags>
</SubItem>
<SubItem>
<SubIdx>1</SubIdx>
<Name>fish</Name>
<Type>INT</Type>
<BitSize>16</BitSize>
<BitOffs>32</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
</Flags>
</SubItem>
</DataType>
</DataTypes>
<Objects/>
</Dictionary>
{"text":"text","html5":"html","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"lua","bash":"sh","erlang":"erlang","go":"golang","c":"c_cpp","cpp":"c_cpp","diff":"diff","latex":"latex","sql":"sql","xml":"xml","0":"text","abap":"abap","actionscript":"actionscript","actionscript3":"actionscript","ada":"ada","apache":"apache_conf","applescript":"applescript","asm":"assembly_x86","autohotkey":"autohotkey","closure":"closure","cobol":"cobol","coffeescript":"coffee","cpp-winapi":"c_cpp","c_loadrunner":"c_cpp","c_mac":"c_cpp","c_winapi":"c_cpp","csharp":"csharp","d":"d","dart":"dart","dot":"dot","eiffel":"eiffel","fortran":"fortran","groovy":"groovy","haskell":"haskell","haxe":"haxe","ini":"ini","io":"io","java":"java","java5":"java","make":"makefile","matlab":"matlab","mysql":"mysql","objc":"objectivec","ocaml":"ocaml","pascal":"pascal","perl":"perl","perl6":"perl","postgresql":"pgsql","powershell":"powershell","prolog":"prolog","properties":"properties","rails":"ruby","rust":"rust","scala":"scala","scheme":"scheme","smarty":"smarty","tcl":"tcl","vala":"vala","vb":"vbscript","verilog":"verilog","vhdl":"vhdl","yaml":"yaml"}