<?xml?>

<tm2>

  <typedef id="struct_base" type="pointer" lang="c" >

    <codedefs>

      <codedef id="construct">
        <code>
          $(dst)=$(preset);
        </code>
      </codedef>

      <codedef id="destruct">
        <code>
          $(member_prefix)_free($(src));
          $(src)=NULL;
        </code>
      </codedef>

      <codedef id="assign">
        <code>
          $(dst)=$(src);
        </code>
      </codedef>

      <codedef id="dup">
        <code>
          $(dst)=$(member_prefix)_dup($(src));
        </code>
      </codedef>

      <codedef id="compare">
        <code>
        </code>
      </codedef>

      <codedef id="toXml">
        <code>
          {
            if ($(src)) {
              GWEN_XMLNODE *dbDest;
              
              dbDest=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "$(name)");
              $(member_prefix)_toXml($(src), dbDest);
              GWEN_XMLNode_AddChild($(db), dbDest);
            }
          }
        </code>
      </codedef>

      <codedef id="fromXml">
        <code>
          {
            GWEN_XMLNODE *dbSource;
            
            dbSource=GWEN_XMLNode_FindFirstTag($(db), "$(name)", NULL, NULL);
            if (dbSource)
              $(dst)=$(member_prefix)_fromXml(dbSource);
            else
              $(dst)=$(preset);
          }
        </code>
      </codedef>



      <codedef id="toObject">
        <code>
        </code>
      </codedef>



      <codedef id="fromObject">
        <code>
        </code>
      </codedef>



      <codedef id="toDb">
        <code>
          {
            if ($(src)) {
              GWEN_DB_NODE *dbDest;
              
              dbDest=GWEN_DB_GetGroup($(db), GWEN_DB_FLAGS_OVERWRITE_GROUPS, "$(name)");
              assert(dbDest);
              $(retval)=$(member_prefix)_toDb($(src), dbDest);
            }
            else
              $(retval)=0;
          }
        </code>
      </codedef>



      <codedef id="fromDb">
        <code>
          {
            GWEN_DB_NODE *dbSource;
            
            dbSource=GWEN_DB_GetGroup($(db), GWEN_PATH_FLAGS_NAMEMUSTEXIST, "$(name)");
            if (dbSource)
              $(dst)=$(member_prefix)_fromDb(dbSource);
            else
              $(dst)=$(preset);
          }
        </code>
      </codedef>



      <codedef id="toHashString">
        <code>
          $(member_prefix)_toHashString($(src), $(buffer));
        </code>
      </codedef>




    </codedefs>



    <defaults>
      <!-- defaults flags etc for member declarations of this type -->
      <default>NULL</default>
      <preset>NULL</preset>
      <setflags>const dup</setflags>
      <getflags>const</getflags>
      <dupflags>const</dupflags>
    </defaults>
  
  </typedef>

</tm2>
