Patch title: Release 85 bulk changes
Abstract:
File: /pliant/language/startup/startup.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


#ifdef _CHECK_
  FUNCTION Void terminate() {
    struct EntryHeader *h,*h2; struct DictNode *n,**l;
    struct Type *t; struct Module *m;
    Int i,j; struct Str temp,temp2; Char buffer[16],buffer2[
    TERMINATE("terminating (1");
    memory_checkup();
    TERMINATE("2");
    G.execution_phase=phase_free_objects;
    G.memory_allocate_hook=default_memory_allocate;
    G.memory_zallocate_hook=default_memory_zallocate;
    G.memory_free_hook=default_memory_free;
    G.memory_resize_hook=default_memory_resize;
    G.memory_zresize_hook=default_memory_zresize;
    G.memory_size_hook=default_memory_size;
    G.memory_checkup_hook=default_memory_checkup;
    G.memory_shrink_hook=default_memory_shrink;
    G.memory_enumerate_hook=default_memory_enumerate;
// 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


#ifdef _CHECK_
  FUNCTION Void terminate() {
    struct EntryHeader *h,*h2; struct DictNode *n,**l;
    struct Type *t; struct Module *m;
    Int i,j; struct Str temp,temp2; Char buffer[16],buffer2[
    TERMINATE("terminating (1");
    memory_checkup();
    TERMINATE("2");
    G.execution_phase=phase_free_objects;
    G.memory_allocate_hook=default_memory_allocate;
    G.memory_zallocate_hook=default_memory_zallocate;
    G.memory_free_hook=default_memory_free;
    G.memory_resize_hook=default_memory_resize;
    G.memory_zresize_hook=default_memory_zresize;
    G.memory_size_hook=default_memory_size;
    G.memory_checkup_hook=default_memory_checkup;
    G.memory_shrink_hook=default_memory_shrink;
    G.memory_enumerate_hook=default_memory_enumerate;
    G.memory_pre_extend_hook=default_pre_extend;
    G.memory_post_extend_hook=default_post_extend;
    G.entry_lock_hook=G.entry_unlock_hook=do_nothing;
    G.action_push_record_hook=default_action_push_record;
    G.action_pull_record_hook=default_action_pull_record;
    G.action_top_record_hook=default_action_top_record;
    G.error_push_record_hook=default_error_push_record;
    G.error_pull_record_hook=default_error_pull_record;
    G.error_top_record_hook=default_error_top_record;
    G.error_fatal_hook=default_error_fatal;
    G.entry_lock_hook=G.entry_unlock_hook=do_nothing;
    G.action_push_record_hook=default_action_push_record;
    G.action_pull_record_hook=default_action_pull_record;
    G.action_top_record_hook=default_action_top_record;
    G.error_push_record_hook=default_error_push_record;
    G.error_pull_record_hook=default_error_pull_record;
    G.error_top_record_hook=default_error_top_record;
    G.error_fatal_hook=default_error_fatal;
    G.pre_execute_hook=default_pre_execute;
    G.post_active_hook=default_post_active;

    List_destroy(G.execute_begin_hooks); List_build(G.execut
    List_destroy(G.execute_end_hooks); List_build(G.execute_
    Arrow_set(&G.bottom_error.context,null);
    for(h=G.entry_first; h!=null; h=h->next)
      if(h->type==G.type_Type)
        entry_lock(h+1);
    entry_lock(G.general_dictionary);
    for(h=G.entry_first; h!=null; h=h->next)
      h->index=int_bad;
    for(i=0; i<G.general_dictionary->hashsize; i++)
      for(n=G.general_dictionary->table[i]; n!=null; n=n->ne
        h=(struct EntryHeader *)n->object-1;
        h->index=i; }
    for(h=G.entry_last,entry_lock(h+1); h!=null; h=h2) {
      if(h->index>=0)
        for(l=G.general_dictionary->table+h->index; (n=*l)!=
          if(n->object==h+1) {
            *l=n->next;
            entry_unlock(n->object);
            Str_destroy(&n->label);
            memory_free(n);
            G.general_dictionary->count--;
            break; }
      h2=h->previous; if(h2!=null) entry_lock(h2+1); entry_u
    entry_unlock(G.general_dictionary);
    TERMINATE("3");
    G.execution_phase=phase_free_types;
    for(h=G.entry_first; h!=null; h=h->next)
      if(h->type==G.type_Type) {
              t=(struct Type *)(h+1);
        for(i=0; i<G.generic_nb_indices; i++)
          if(i!=G.generic_method_destroy)
            Arrow_set((Arrow *)&t->generic_methods[i].functi
        List_destroy(&t->maybe); List_build(&t->maybe);
        for(i=0; i<t->nb_field; i++)
          Arrow_set(&t->fields[i].initial_value,null); }
    TERMINATE("4");
    while(List_last(&G.entry_roots)!=G.null_constant)
      List_remove(&G.entry_roots,List_last(&G.entry_roots));
    List_destroy(&G.entry_roots);
    TERMINATE("5");
    Str_destroy(&G.pliant_root_path);
    Str_destroy(&G.bottom_error.message);
    for(i=0; i<G.generic_nb_indices; i++)
      List_destroy(&G.generic_indices[i].types);
    memory_free(G.generic_indices);
    #ifdef _LISTING_
      Str_destroy(&G.initial_listing_function_name);
      Str_destroy(&G.expanded_listing_function_name);
      Str_destroy(&G.middle_listing_function_name);
      Str_destroy(&G.final_listing_function_name);
    #endif
    TERMINATE("6");
    for(h=G.entry_last,entry_lock(h+1); h!=null; h=h2) {
      if(h->type==G.type_Type) {
              t=(struct Type *)(h+1);
        Arrow_set((Arrow *)&t->generic_methods[G.generic_met
        if(t!=G.type_Type && t!=G.type_Function)
          entry_unlock(t); }
      h2=h->previous; if(h2!=null) entry_lock(h2+1); entry_u
    TERMINATE("7");
    if(entry_header(G.type_Function)->counter==1) {
      entry_unrecord(entry_header(G.type_Function)); Type_de
    if(entry_header(G.type_Type)->counter==1) {
      entry_unrecord(entry_header(G.type_Type)); Type_destro
    TERMINATE("8)\n");
    if(G.memory_current_used!=0) {
      G.execution_phase=phase_free_report;
      consolen(Z,"\n----------------------------------------
      if(G.entry_first!=null) {
        for(h=G.entry_first,i=0,j=0; h!=null; h=h->next,i++)
          j+=h->counter;
        consolen(
          S,Str_map_area(&temp,buffer,Int_str2(i,10,buffer))
          Z," object(s) have not been freed because of at mo
          S,Str_map_area(&temp2,buffer2,Int_str2(j,10,buffer
          Z," lost link(s).",EOL); }
      consolen(
        S,Str_map_area(&temp,buffer,Int_str2(G.memory_curren
        Z," byte(s) have not been freed\n",
        Z,"-----------------------------------------",EOL);
      for(h=G.entry_first; h!=null; h=h->next) {
        t=h->type; if(t->signature!=Type_signature || t->obj
        consolen(
          S,Str_map_area(&temp,buffer,Int_str2(t->objects_co
          Z," object(s) with type ",
          S,&t->name,
          EOL);
        t->objects_counter=0; }
      if(G.memory_current_used<4096) {
        consolen(Z,"----------------------------------------
        memory_dump(); }
      consolen(Z,"-----------------------------------------"
#endif


    // memory.c
    MemoryPool_build(&G.memory_pool); 
    G.memory_allocate_hook=default_memory_allocate;
    G.memory_zallocate_hook=default_memory_zallocate;
    G.memory_free_hook=default_memory_free;
    G.memory_resize_hook=default_memory_resize;
    G.memory_zresize_hook=default_memory_zresize;
    G.memory_size_hook=default_memory_size;
    G.memory_checkup_hook=default_memory_checkup;
    G.memory_shrink_hook=default_memory_shrink;
    G.memory_enumerate_hook=default_memory_enumerate;
    List_destroy(G.execute_begin_hooks); List_build(G.execut
    List_destroy(G.execute_end_hooks); List_build(G.execute_
    Arrow_set(&G.bottom_error.context,null);
    for(h=G.entry_first; h!=null; h=h->next)
      if(h->type==G.type_Type)
        entry_lock(h+1);
    entry_lock(G.general_dictionary);
    for(h=G.entry_first; h!=null; h=h->next)
      h->index=int_bad;
    for(i=0; i<G.general_dictionary->hashsize; i++)
      for(n=G.general_dictionary->table[i]; n!=null; n=n->ne
        h=(struct EntryHeader *)n->object-1;
        h->index=i; }
    for(h=G.entry_last,entry_lock(h+1); h!=null; h=h2) {
      if(h->index>=0)
        for(l=G.general_dictionary->table+h->index; (n=*l)!=
          if(n->object==h+1) {
            *l=n->next;
            entry_unlock(n->object);
            Str_destroy(&n->label);
            memory_free(n);
            G.general_dictionary->count--;
            break; }
      h2=h->previous; if(h2!=null) entry_lock(h2+1); entry_u
    entry_unlock(G.general_dictionary);
    TERMINATE("3");
    G.execution_phase=phase_free_types;
    for(h=G.entry_first; h!=null; h=h->next)
      if(h->type==G.type_Type) {
              t=(struct Type *)(h+1);
        for(i=0; i<G.generic_nb_indices; i++)
          if(i!=G.generic_method_destroy)
            Arrow_set((Arrow *)&t->generic_methods[i].functi
        List_destroy(&t->maybe); List_build(&t->maybe);
        for(i=0; i<t->nb_field; i++)
          Arrow_set(&t->fields[i].initial_value,null); }
    TERMINATE("4");
    while(List_last(&G.entry_roots)!=G.null_constant)
      List_remove(&G.entry_roots,List_last(&G.entry_roots));
    List_destroy(&G.entry_roots);
    TERMINATE("5");
    Str_destroy(&G.pliant_root_path);
    Str_destroy(&G.bottom_error.message);
    for(i=0; i<G.generic_nb_indices; i++)
      List_destroy(&G.generic_indices[i].types);
    memory_free(G.generic_indices);
    #ifdef _LISTING_
      Str_destroy(&G.initial_listing_function_name);
      Str_destroy(&G.expanded_listing_function_name);
      Str_destroy(&G.middle_listing_function_name);
      Str_destroy(&G.final_listing_function_name);
    #endif
    TERMINATE("6");
    for(h=G.entry_last,entry_lock(h+1); h!=null; h=h2) {
      if(h->type==G.type_Type) {
              t=(struct Type *)(h+1);
        Arrow_set((Arrow *)&t->generic_methods[G.generic_met
        if(t!=G.type_Type && t!=G.type_Function)
          entry_unlock(t); }
      h2=h->previous; if(h2!=null) entry_lock(h2+1); entry_u
    TERMINATE("7");
    if(entry_header(G.type_Function)->counter==1) {
      entry_unrecord(entry_header(G.type_Function)); Type_de
    if(entry_header(G.type_Type)->counter==1) {
      entry_unrecord(entry_header(G.type_Type)); Type_destro
    TERMINATE("8)\n");
    if(G.memory_current_used!=0) {
      G.execution_phase=phase_free_report;
      consolen(Z,"\n----------------------------------------
      if(G.entry_first!=null) {
        for(h=G.entry_first,i=0,j=0; h!=null; h=h->next,i++)
          j+=h->counter;
        consolen(
          S,Str_map_area(&temp,buffer,Int_str2(i,10,buffer))
          Z," object(s) have not been freed because of at mo
          S,Str_map_area(&temp2,buffer2,Int_str2(j,10,buffer
          Z," lost link(s).",EOL); }
      consolen(
        S,Str_map_area(&temp,buffer,Int_str2(G.memory_curren
        Z," byte(s) have not been freed\n",
        Z,"-----------------------------------------",EOL);
      for(h=G.entry_first; h!=null; h=h->next) {
        t=h->type; if(t->signature!=Type_signature || t->obj
        consolen(
          S,Str_map_area(&temp,buffer,Int_str2(t->objects_co
          Z," object(s) with type ",
          S,&t->name,
          EOL);
        t->objects_counter=0; }
      if(G.memory_current_used<4096) {
        consolen(Z,"----------------------------------------
        memory_dump(); }
      consolen(Z,"-----------------------------------------"
#endif


    // memory.c
    MemoryPool_build(&G.memory_pool); 
    G.memory_allocate_hook=default_memory_allocate;
    G.memory_zallocate_hook=default_memory_zallocate;
    G.memory_free_hook=default_memory_free;
    G.memory_resize_hook=default_memory_resize;
    G.memory_zresize_hook=default_memory_zresize;
    G.memory_size_hook=default_memory_size;
    G.memory_checkup_hook=default_memory_checkup;
    G.memory_shrink_hook=default_memory_shrink;
    G.memory_enumerate_hook=default_memory_enumerate;
    G.memory_pre_extend_hook=default_pre_extend;
    G.memory_post_extend_hook=default_post_extend;




    // parser.c
    G.pre_execute_hook=default_pre_execute;
    G.post_active_hook=default_post_active;

    // type.c
    G.null_constant=(Address *)entry_new1(null,sizeof(Addres
    *G.null_constant=null;


    C_function(". add_token",parser_module,ParserContext_add
    C_function(". open_sublevel",parser_module,ParserContext
    C_function(". close_sublevel",parser_module,ParserContex
    C_function(". forward",parser_module,ParserContext_forwa
    C_function(". add_pending",parser_module,ParserContext_a
    C_function(". execute",parser_module,ParserContext_execu
    // type.c
    G.null_constant=(Address *)entry_new1(null,sizeof(Addres
    *G.null_constant=null;


    C_function(". add_token",parser_module,ParserContext_add
    C_function(". open_sublevel",parser_module,ParserContext
    C_function(". close_sublevel",parser_module,ParserContex
    C_function(". forward",parser_module,ParserContext_forwa
    C_function(". add_pending",parser_module,ParserContext_a
    C_function(". execute",parser_module,ParserContext_execu
    C_function(". rearrange",parser_module,ParserContext_rea
    C_function("fold_arguments",parser_module,fold_arguments


    C_function("position",compiler_module,ListingPosition_se
    C_function("cast Str",compiler_module,ListingPosition_ge
    C_function("fold_arguments",parser_module,fold_arguments


    C_function("position",compiler_module,ListingPosition_se
    C_function("cast Str",compiler_module,ListingPosition_ge
    C_function(". line",compiler_module,ListingPosition_line,0,G.type_ListingPosition,Ar, G.type_Int, AwvR, END);
    C_function(". column",compiler_module,ListingPosition_column,0,G.type_ListingPosition,Ar, G.type_Int, AwvR, END);


    C_field(G.type_Expression,"value",compiler_module,G.type
    C_field(G.type_Expression,"arguments",compiler_module,G.
    C_field(G.type_Expression,"module",compiler_module,linkt
    C_field(G.type_Expression,"position",compiler_module,G.t
    C_field(G.type_Expression,"properties",compiler_module,G
    C_field(G.type_Expression,"instructions",compiler_module
    C_field(G.type_Expression,"result",compiler_module,linkt
    C_field(G.type_Expression,"backtracking",compiler_module
    C_field(G.type_Expression,"access",compiler_module,G.typ
    C_field(G.type_Expression,"last_uncasted_instruction",co
    C_field(G.type_Expression,"uncasted_result",compiler_mod
    C_field(G.type_Expression,"uncasted_access",compiler_mod
    C_field(G.type_Expression,"cast_level",compiler_module,G
    C_field(G.type_Expression,"cast_flags",compiler_module,G
    C_field(G.type_Expression,"operator",compiler_module,lin
    C_field(G.type_Expression,"selected_definition",compiler
    C_field(G.type_Expression,"close_operator_name",compiler
    C_field(G.type_Expression,"error_message",compiler_modul
    C_function(". add",compiler_module,Expression_add,0, G.t
    C_function(". set_void_result",compiler_module,Expressio
    C_function(". set_constant_result",compiler_module,Expre
    C_function(". set_result",compiler_module,Expression_set
    C_function(". suckup",compiler_module,Expression_suckup,
    C_function(". suckup_error",compiler_module,Expression_s
    C_function(". precompile_rewrite",compiler_module,Expres
    C_function(". postcompile_rewrite",compiler_module,Expre
    C_function(". is_compiled",compiler_module,Expression_is
    C_function(". compile",compiler_module,Expression_compil
    C_function(". uncompile",compiler_module,Expression_unco
    C_function(". define",compiler_module,Expression_define,
    C_function(". backtrack",compiler_module,Expression_back
    C_function(". cut_backtracking",compiler_module,Expressi
    C_function(". cast",compiler_module,Expression_cast,Func
    C_function(". cast",compiler_module,Expression_cast2,Fun
    C_function(". cast",compiler_module,Expression_cast3,Fun
    C_function(". uncast",compiler_module,Expression_uncast,
    C_function(". constant",compiler_module,Expression_const
    C_function(". constant",compiler_module,Expression_const
    C_function(". execute",compiler_module,Expression_execut
    C_function(". evaluate",compiler_module,Expression_evalu
    C_function(". evaluate",compiler_module,Expression_evalu
    C_function(". compile_step2",compiler_module,Expression_
    C_function(". compile_step3",compiler_module,Expression_
    C_function(". compile_step4",compiler_module,Expression_


    C_field(G.type_Expression,"value",compiler_module,G.type
    C_field(G.type_Expression,"arguments",compiler_module,G.
    C_field(G.type_Expression,"module",compiler_module,linkt
    C_field(G.type_Expression,"position",compiler_module,G.t
    C_field(G.type_Expression,"properties",compiler_module,G
    C_field(G.type_Expression,"instructions",compiler_module
    C_field(G.type_Expression,"result",compiler_module,linkt
    C_field(G.type_Expression,"backtracking",compiler_module
    C_field(G.type_Expression,"access",compiler_module,G.typ
    C_field(G.type_Expression,"last_uncasted_instruction",co
    C_field(G.type_Expression,"uncasted_result",compiler_mod
    C_field(G.type_Expression,"uncasted_access",compiler_mod
    C_field(G.type_Expression,"cast_level",compiler_module,G
    C_field(G.type_Expression,"cast_flags",compiler_module,G
    C_field(G.type_Expression,"operator",compiler_module,lin
    C_field(G.type_Expression,"selected_definition",compiler
    C_field(G.type_Expression,"close_operator_name",compiler
    C_field(G.type_Expression,"error_message",compiler_modul
    C_function(". add",compiler_module,Expression_add,0, G.t
    C_function(". set_void_result",compiler_module,Expressio
    C_function(". set_constant_result",compiler_module,Expre
    C_function(". set_result",compiler_module,Expression_set
    C_function(". suckup",compiler_module,Expression_suckup,
    C_function(". suckup_error",compiler_module,Expression_s
    C_function(". precompile_rewrite",compiler_module,Expres
    C_function(". postcompile_rewrite",compiler_module,Expre
    C_function(". is_compiled",compiler_module,Expression_is
    C_function(". compile",compiler_module,Expression_compil
    C_function(". uncompile",compiler_module,Expression_unco
    C_function(". define",compiler_module,Expression_define,
    C_function(". backtrack",compiler_module,Expression_back
    C_function(". cut_backtracking",compiler_module,Expressi
    C_function(". cast",compiler_module,Expression_cast,Func
    C_function(". cast",compiler_module,Expression_cast2,Fun
    C_function(". cast",compiler_module,Expression_cast3,Fun
    C_function(". uncast",compiler_module,Expression_uncast,
    C_function(". constant",compiler_module,Expression_const
    C_function(". constant",compiler_module,Expression_const
    C_function(". execute",compiler_module,Expression_execut
    C_function(". evaluate",compiler_module,Expression_evalu
    C_function(". evaluate",compiler_module,Expression_evalu
    C_function(". compile_step2",compiler_module,Expression_
    C_function(". compile_step3",compiler_module,Expression_
    C_function(". compile_step4",compiler_module,Expression_
    C_function(". local_variable",compiler_module,local_vari
    C_function(". local_variable",compiler_module,local_variable1,Function_flag_has_side_effects|Function_flag_may_generate_error, G.type_Expression,Arw, G.type_Str,Ar, G.type_Type,Ar, G.type_Argument,AwmR, END);
    C_function(". local_variable",compiler_module,local_variable2,Function_flag_has_side_effects|Function_flag_may_generate_error, G.type_Expression,Arw, G.type_Expression,Arw, G.type_Type,Ar, G.type_Argument,AwmR, END);
    C_function("copy_properties", compiler_module,Expression_copy_properties,0,G.type_Expression,Ar,G.type_Expression,Arw,END);


    // hooks
    C_map("pliant_memory_allocate_hook",hooks_module,entry(p
    C_map("pliant_memory_zallocate_hook",hooks_module,entry(
    C_map("pliant_memory_free_hook",hooks_module,entry(point
    C_map("pliant_memory_resize_hook",hooks_module,entry(poi
    C_map("pliant_memory_zresize_hook",hooks_module,entry(po
    C_map("pliant_memory_size_hook",hooks_module,entry(point
    C_map("pliant_memory_checkup_hook",hooks_module,entry(po
    C_map("pliant_memory_shrink_hook",hooks_module,entry(poi
    C_map("pliant_memory_enumerate_hook",hooks_module,entry(


    // hooks
    C_map("pliant_memory_allocate_hook",hooks_module,entry(p
    C_map("pliant_memory_zallocate_hook",hooks_module,entry(
    C_map("pliant_memory_free_hook",hooks_module,entry(point
    C_map("pliant_memory_resize_hook",hooks_module,entry(poi
    C_map("pliant_memory_zresize_hook",hooks_module,entry(po
    C_map("pliant_memory_size_hook",hooks_module,entry(point
    C_map("pliant_memory_checkup_hook",hooks_module,entry(po
    C_map("pliant_memory_shrink_hook",hooks_module,entry(poi
    C_map("pliant_memory_enumerate_hook",hooks_module,entry(
    C_map("pliant_memory_pre_extend_hook",hooks_module,entry(pointerto(G.type_Address),&G.memory_pre_extend_hook,END),Arw);
    C_map("pliant_memory_post_extend_hook",hooks_module,entry(pointerto(G.type_Address),&G.memory_post_extend_hook,END),Arw);
    #ifdef _CHECK_
      C_map("pliant_entry_lock_hook",hooks_module,entry(poin
      C_map("pliant_entry_unlock_hook",hooks_module,entry(po
    #endif
    C_map("pliant_action_push_record_hook",hooks_module,entr
    C_map("pliant_action_pull_record_hook",hooks_module,entr
    C_map("pliant_action_top_record_hook",hooks_module,entry
    C_map("pliant_error_push_record_hook",hooks_module,entry
    C_map("pliant_error_pull_record_hook",hooks_module,entry
    C_map("pliant_error_top_record_hook",hooks_module,entry(
    C_map("pliant_error_fatal_hook",hooks_module,entry(point
    C_map("pliant_yield_hook",hooks_module,entry(pointerto(G
    #ifdef _TIMER_
      C_constant("pliant_timers",context_module,entry(G.type
      C_map("pliant_bytes_count",context_module,entry(pointe
    #endif


    // the following functions are declared only for the deb
    #ifdef _DLL_
      #ifdef _GCC_
        C_function("pliant internal startup function",unused
      #else
        C_function("pliant internal startup function",unused
      #endif
    #endif
    C_function("pliant internal GeneratorContext_insert0 fun
    C_function("pliant internal parse_one_token function",un
    C_function("pliant internal parser_filter_execute functi
    C_function("pliant internal execute function",unused_mod
    C_function("pliant internal Function_terminate_code func
    C_function("pliant internal C_function2 function",unused
    #ifdef _CHECK_
      C_function("pliant internal check_assertion function",
    #endif
    C_function("pliant breakpoint",hooks_module,breakpoint,0
    #ifdef _CHECK_
      C_map("pliant_entry_lock_hook",hooks_module,entry(poin
      C_map("pliant_entry_unlock_hook",hooks_module,entry(po
    #endif
    C_map("pliant_action_push_record_hook",hooks_module,entr
    C_map("pliant_action_pull_record_hook",hooks_module,entr
    C_map("pliant_action_top_record_hook",hooks_module,entry
    C_map("pliant_error_push_record_hook",hooks_module,entry
    C_map("pliant_error_pull_record_hook",hooks_module,entry
    C_map("pliant_error_top_record_hook",hooks_module,entry(
    C_map("pliant_error_fatal_hook",hooks_module,entry(point
    C_map("pliant_yield_hook",hooks_module,entry(pointerto(G
    #ifdef _TIMER_
      C_constant("pliant_timers",context_module,entry(G.type
      C_map("pliant_bytes_count",context_module,entry(pointe
    #endif


    // the following functions are declared only for the deb
    #ifdef _DLL_
      #ifdef _GCC_
        C_function("pliant internal startup function",unused
      #else
        C_function("pliant internal startup function",unused
      #endif
    #endif
    C_function("pliant internal GeneratorContext_insert0 fun
    C_function("pliant internal parse_one_token function",un
    C_function("pliant internal parser_filter_execute functi
    C_function("pliant internal execute function",unused_mod
    C_function("pliant internal Function_terminate_code func
    C_function("pliant internal C_function2 function",unused
    #ifdef _CHECK_
      C_function("pliant internal check_assertion function",
    #endif
    C_function("pliant breakpoint",hooks_module,breakpoint,0
    C_map("pliant_parser_pre_execute_hook",parser_module,entry(pointerto(G.type_Address), &G.pre_execute_hook,END),Arw);
    C_map("pliant_compiler_post_active_hook",compiler_module,entry(pointerto(G.type_Address), &G.post_active_hook,END),Arw);