PreviousUpNext

15.3.245  src/lib/compiler/front/semantic/basics/inlining-junk.api

## inlining-junk.api
## (C) 2001 Lucent Technologies, Bell Labs

# Compiled by:
#     src/lib/compiler/core.sublib



###        "In my eyes it is never a crime to steal knowledge.
###         It is a good theft.  The pirate of knowledge is a
###         good pirate."
###
###                                  -- Michel Serres



stipulate
    package hbo =  highcode_baseops;                                    # highcode_baseops              is from   src/lib/compiler/back/top/highcode/highcode-baseops.pkg
    package tdt =  type_declaration_types;                              # type_declaration_types        is from   src/lib/compiler/front/typer-stuff/types/type-declaration-types.pkg
herein

    api Inlining_Junk {
        #
        Inlining_Data;

#       inline_baseop:     (hbo::Baseop, tdt::Typoid) -> Inlining_Data;
#       inline_list:        List( Inlining_Data ) -> Inlining_Data;
#       inline_nil:     Inlining_Data;


        print_inlining_data:        Inlining_Data -> String;
        select_inlining_data:      (Inlining_Data, Int) -> Inlining_Data;

        is_baseop_info:     Inlining_Data -> Bool;
        is_callcc_baseop:   Inlining_Data -> Bool;
        is_pure_baseop:     Inlining_Data -> Bool;

        make_baseop_inlining_data:      (hbo::Baseop, tdt::Typoid) -> Inlining_Data;
        make_inlining_data_list:        List(Inlining_Data)        -> Inlining_Data;
            #
            # These two wrap-and-return the supplied info.
            # They are used (only) in:    src/lib/compiler/front/semantic/symbolmapstack/base-types-and-ops.pkg

        null_inlining_data:             Inlining_Data;

        # This one essentially unwraps information wrapped by one
        # of the above two make_*_inlining_data funs and then does
        # a 'case' statement based on that information:
        #
        case_inlining_data
            :
            Inlining_Data
            ->
            { do_inline_baseop:   (hbo::Baseop, tdt::Typoid) -> X,
              do_inline_list:      List( Inlining_Data ) -> X,
              do_inline_nil:       Void -> X
            }
            ->
            X;

        get_inlining_data_for_prettyprinting:  Inlining_Data -> (String, tdt::Typoid);                  # We return baseop as string to allow use where hbo package is not visible.
    };

end;


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext