<?xml?>

<tm2>

  <typedef id="uint8_t_array" type="array" basetype="uint8_t" lang="c" >
    <identifier>uint8_t</identifier>

    <codedefs>

      <codedef id="construct">
        <code>
          memset($(dst), 0, $(maxlen));
        </code>
      </codedef>

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

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

      <codedef id="dup">
        <code>
          memmove($(dst), $(src), $(maxlen));
        </code>
      </codedef>

      <codedef id="compare">
        <code>
          if (*($(dst)) &amp;&amp; *($(src)))
            $(retval)=memcmp($(src), $(dst), $(maxlen));
          else if ($(src))
            $(retval)=1;
          else if ($(dst))
            $(retval)=-1;
          else
            $(retval)=0;
        </code>
      </codedef>

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

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

      <codedef id="toDb">
        <code>
          {
            int i=0;
            int result=0;
            
            GWEN_DB_DeleteVar($(db), "$(name)");
            for (i=0; i &lt; $(maxlen); i++) {
              result=GWEN_DB_SetIntValue($(db), 0, "$(name)", $(src)[i]);
            }
            
            $(retval)=result;
          }
        </code>
      </codedef>



      <codedef id="fromDb">
        <code>
          {
            int i;
            
            memset($(dst), 0, ($(maxlen))*sizeof(uint8_t));
            for (i=0; i &lt; $(maxlen); i++) {
              int v;
              
              v=GWEN_DB_GetIntValue($(db), "$(name)", i, 0);
              if (v==0)
                break;
              $(dst)[i]=v;
            }
          }
        </code>
      </codedef>



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



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



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

    </codedefs>


    <inlines>

      <inline loc="end" access="public">
        <typeFlagsMask></typeFlagsMask>
        <typeFlagsValue></typeFlagsValue>
        <content>
           $(api) $(member_basetype_type) $(struct_prefix)_Get$(nameWithCapital)At(const $(struct_type) *p_struct, int idx);
        </content>
      </inline>
   
      <inline loc="code">
        <typeFlagsMask></typeFlagsMask>
        <typeFlagsValue></typeFlagsValue>
        <content>
           $(member_basetype_type) $(struct_prefix)_Get$(nameWithCapital)At(const $(struct_type) *p_struct, int idx) {
             if (p_struct &amp;&amp; (idx &lt; $(maxlen)))
               return p_struct->$(name)[idx];

             return 0;
           }
        </content>
      </inline>


      <inline loc="end" access="public">
        <typeFlagsMask></typeFlagsMask>
        <typeFlagsValue></typeFlagsValue>
        <content>
           $(api) int $(struct_prefix)_Set$(nameWithCapital)At($(struct_type) *p_struct, int idx, $(member_basetype_type) v);
        </content>
      </inline>
   
      <inline loc="code">
        <typeFlagsMask></typeFlagsMask>
        <typeFlagsValue></typeFlagsValue>
        <content>
           int $(struct_prefix)_Set$(nameWithCapital)At($(struct_type) *p_struct, int idx, $(member_basetype_type) v) {
             if (p_struct &amp;&amp; (idx &lt; $(maxlen))) {
                p_struct->$(name)[idx]=v;
               return 0;
             }
             return GWEN_ERROR_INVALID;
           }
        </content>
      </inline>


      <inline loc="end" access="public">
        <typeFlagsMask></typeFlagsMask>
        <typeFlagsValue></typeFlagsValue>
        <content>
           $(api) void $(struct_prefix)_Preset$(nameWithCapital)($(struct_type) *p_struct, $(member_basetype_type) v);
        </content>
      </inline>
   
      <inline loc="code">
        <typeFlagsMask></typeFlagsMask>
        <typeFlagsValue></typeFlagsValue>
        <content>
           void $(struct_prefix)_Preset$(nameWithCapital)($(struct_type) *p_struct, $(member_basetype_type) v) {
             memset(p_struct->$(name), v, $(maxlen));
           }
        </content>
      </inline>


      <inline loc="end" access="public">
        <typeFlagsMask></typeFlagsMask>
        <typeFlagsValue></typeFlagsValue>
        <content>
           $(api) int $(struct_prefix)_Get$(nameWithCapital)ArraySize(void);
        </content>
      </inline>
   
      <inline loc="code">
        <typeFlagsMask></typeFlagsMask>
        <typeFlagsValue></typeFlagsValue>
        <content>
           int $(struct_prefix)_Get$(nameWithCapital)ArraySize(void) {
              return $(maxlen);
           }
        </content>
      </inline>


    </inlines>


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


    
  </typedef>

</tm2>
