anchor.diff:          
           if has_data:
               print >>f, "#define data (*(%s*)&(inst->_data))" % options['data']
  +        if has_personality:
  +            print >>f, "#define personality (inst->_personality)"
   
           if options.get("userspace"):
               print >>f, "#define FOR_ALL_INSTS() for(inst = first_inst; inst; inst = inst->_next)"    
  
positive.code:     if options.get("extra_cleanup"):
          print >>f, "static void extra_cleanup(void);"
  
      has_array = False
      for name, type, array, dir, value in pins:
          if array: has_array = True
      for name, type, array, dir, value in params:
          if array: has_array = True
  
      print >>f
      print >>f, "static int export(char *prefix, long extra_arg) {"
      print >>f, "    char buf[HAL_NAME_LEN + 2];"
      print >>f, "    int r = 0;"
      if has_array:
  
negative.code:             print >>f, "    if(r != 0) return r;"
              if value is not None:
                  print >>f, "    *(inst->%s) = %s;" % (to_c(name), value)
          if personality:
              print >>f, "}"
  
      for name, type, array, dir, value, personality in params:
          if personality:
              print >>f, "if(%s) {" % personality
          if array:
              if isinstance(array, tuple): array = array[1]
              print >>f, "    for(j=0; j < %s; j++) {" % array
              print >>f, "        r = hal_param_%s_newf(%s, &(inst->%s[j]), comp_id," % (
                  type, dirmap[dir], to_c(name))
  