anchor.diff:      names[name] = None
       pins.append((name, type, array, dir, value))
   
  -def param(name, type, dir, doc, value):
  +def param(name, type, array, dir, doc, value):
  +    checkarray(name, array)
       type = type2type(type)
       if name in names:
           Error("Duplicate item name %s" % name)
  -    docs.append(('param', name, type, dir, doc, value))
  +    docs.append(('param', name, type, array, dir, doc, value))
       names[name] = None
  -    params.append((name, type, dir, value))
  +    params.append((name, type, array, dir, value))
   
   def function(name, fp, doc):
       if name in names:
  
positive.code:             raise SystemExit, "Component must have at least one pin"
          prologue(f)
          lineno = a.count("\n") + 3
          #f.write("#line %d \"%s\"\n" % (lineno, filename))
          f.write(b)
          epilogue(f)
          f.close()
  
negative.code:                     print >>f, "#define %s (0+*inst->%s)" % (to_c(name), to_c(name))
                  else:
                      print >>f, "#define %s (*inst->%s)" % (to_c(name), to_c(name))
          for name, type, array, dir, value in params:
              if array:
                  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))
          
          if has_data:
              print >>f, "#define data (*(%s*)&(inst->_data))" % options['data']
  