Patch title: Release 96 bulk changes
Abstract:
File: /pliant/language/compiler/type/type.c
Key:
    Removed line
    Added line
   
// Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
//
// This program is free software; you can redistribute it an
// modify it under the terms of the GNU General Public Licen
// as published by the Free Software Foundation.
// 
// This program is distributed in the hope that it will be u
// but WITHOUT ANY WARRANTY; without even the implied warran
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public
// version 2 along with this program; if not, write to the F
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA


FUNCTION struct Function *C_field(struct Type *type,Char *fi
  struct Function *f; struct Argument *object,*field,*offset
  struct Str fullname;
// Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
//
// This program is free software; you can redistribute it an
// modify it under the terms of the GNU General Public Licen
// as published by the Free Software Foundation.
// 
// This program is distributed in the hope that it will be u
// but WITHOUT ANY WARRANTY; without even the implied warran
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public
// version 2 along with this program; if not, write to the F
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA


FUNCTION struct Function *C_field(struct Type *type,Char *fi
  struct Function *f; struct Argument *object,*field,*offset
  struct Str fullname;
  Int *index; Int i; struct Str temp;
  Str_build(&fullname); Str_concat(&fullname,Z,". ",Z,fieldn
  f=C_function(fullname.chars,module,null,Function_flag_inli
  Str_destroy(&fullname);
  object=argument(type,Argument_undefined);
  field=argument(fieldtype,Argument_undefined);
  offset=argument(G.type_Int,Argument_constant,entry(G.type_
  Arrow_set((Arrow *)&f->arguments[0].inline_argument,object
  Arrow_set((Arrow *)&f->arguments[1].inline_argument,field)
  List_append(&f->inline_instructions,instruction(G.function
  Str_build(&fullname); Str_concat(&fullname,Z,". ",Z,fieldn
  f=C_function(fullname.chars,module,null,Function_flag_inli
  Str_destroy(&fullname);
  object=argument(type,Argument_undefined);
  field=argument(fieldtype,Argument_undefined);
  offset=argument(G.type_Int,Argument_constant,entry(G.type_
  Arrow_set((Arrow *)&f->arguments[0].inline_argument,object
  Arrow_set((Arrow *)&f->arguments[1].inline_argument,field)
  List_append(&f->inline_instructions,instruction(G.function
  index=entry_new(G.type_Int); *index=Str_allocated; // Str_allocated is the same as undefined
  for(i=0; i<type->nb_field; i++)
    if(type->fields[i].offset==fieldoffset)
      *index=i;
  Dictionary_insert(&f->properties,Str_map_string(&temp,"field"),true,index);
  return f; }


  return f; }