anchor.diff:                  print >>f, "#define %s(i) (inst->%s[i])" % (to_c(name), to_c(name))
               else:
                   print >>f, "#define %s (inst->%s)" % (to_c(name), to_c(name))
  -        
  +
  +        for type, name, array, value in variables:
  +            print >>f, "#define %s (inst->%s)" % (name, name)
  +
           if has_data:
               print >>f, "#define data (*(%s*)&(inst->_data))" % options['data']
           if has_personality:
  
positive.code:       | "pin" PINDIRECTION TYPE HALNAME OptArray OptAssign OptPersonality OptString ";"  {{ pin(HALNAME, TYPE, OptArray, PINDIRECTION, OptString, OptAssign, OptPersonality) }}
        | "param" PARAMDIRECTION TYPE HALNAME OptArray OptAssign OptPersonality OptString ";" {{ param(HALNAME, TYPE, OptArray, PARAMDIRECTION, OptString, OptAssign, OptPersonality) }}
        | "function" NAME OptFP OptString ";"       {{ function(NAME, OptFP, OptString) }}
        | "option" NAME OptValue ";"   {{ option(NAME, OptValue) }}
        | "see_also" String ";"   {{ see_also(String) }}
        | "description" String ";"   {{ description(String) }}
  
negative.code:             print >>f, "    hal_%s_t %s;" % (type, to_c(name))
          names[name] = 1
  
      for type, name, array, value in variables:
          if array:
              print >>f, "    %s %s[%d]\n" % (type, name, array)
          else:
              print >>f, "    %s %s;\n" % (type, name)
      if has_data:
          print >>f, "    void *_data;"
  
  