/[eiffelstudio]/FreeELKS/trunk/library/kernel/procedure.e
ViewVC logotype

Diff of /FreeELKS/trunk/library/kernel/procedure.e

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 91476 by manus_eiffel, Thu Nov 3 23:50:46 2005 UTC revision 91477 by ericb, Sun Jan 14 09:47:13 2007 UTC
# Line 4  indexing Line 4  indexing
4                  with some operands possibly still open.                  with some operands possibly still open.
5                                    
6                  Note: Features are the same as those of ROUTINE,                  Note: Features are the same as those of ROUTINE,
7                  with `apply' made effective, and no further                          with `apply' made effective, and no further
8                  redefinition of `is_equal' and `copy'.                          redefinition of `is_equal' and `copy'.
9                  ]"                  ]"
10          library: "Free implementation of ELKS library"          library: "Free implementation of ELKS library"
11          copyright: "Copyright (c) 1986-2004, Eiffel Software and others"          copyright: "Copyright (c) 1986-2004, Eiffel Software and others"
# Line 24  feature -- Calls Line 24  feature -- Calls
24          apply is          apply is
25                          -- Call procedure with `args' as last set.                          -- Call procedure with `args' as last set.
26                  do                  do
27                          rout_obj_call_procedure (rout_disp, $internal_operands)                          call (operands)
28                    end
29    
30            call (args: OPEN_ARGS) is
31                    local
32                            l_closed_count: INTEGER
33                    do
34                            l_closed_count :=  closed_operands.count
35                            fast_call (encaps_rout_disp, calc_rout_addr, $closed_operands, $args, class_id, feature_id,
36                                           is_precompiled, is_basic, is_inline_agent, l_closed_count, open_count, $open_map)
37                  end                  end
38    
39  feature {NONE} -- Implementation  feature {NONE} -- Implementation
40    
41          rout_obj_call_procedure (rout: POINTER; args: POINTER) is          fast_call (a_rout_disp, a_calc_rout_addr: POINTER;
42                          -- Perform call to `rout' with `args'.                         a_closed_operands: POINTER; a_operands: POINTER;
43                               a_class_id, a_feature_id: INTEGER; a_is_precompiled, a_is_basic, a_is_inline_agent: BOOLEAN;
44                               a_closed_count, a_open_count: INTEGER; a_open_map: POINTER)
45                  external                  external
46                          "C inline use %"eif_rout_obj.h%""                          "C inline use %"eif_rout_obj.h%""
47                  alias                  alias
48                          "rout_obj_call_agent($rout, $args, $$_result_type)"                          "[
49                            #ifdef WORKBENCH
50                                    if ($a_rout_disp != 0) {
51                                            (FUNCTION_CAST(void, (EIF_POINTER, EIF_REFERENCE, EIF_REFERENCE)) $a_rout_disp)(
52                                                    $a_calc_rout_addr, $a_closed_operands, $a_operands);
53                                    } else {
54                                            rout_obj_call_procedure_dynamic (
55                                                    $a_class_id,
56                                                    $a_feature_id,
57                                                    $a_is_precompiled,
58                                                    $a_is_basic,
59                                                    $a_is_inline_agent,
60                                                    $a_closed_operands,
61                                                    $a_closed_count,
62                                                    $a_operands,
63                                                    $a_open_count,
64                                                    $a_open_map);
65                                    }
66                            #else
67                                    (FUNCTION_CAST(void, (EIF_POINTER, EIF_REFERENCE, EIF_REFERENCE)) $a_rout_disp)(
68                                            $a_calc_rout_addr, $a_closed_operands, $a_operands);
69                            #endif
70                            ]"
71                  end                  end
72    
73  end  end

Legend:
Removed from v.91476  
changed lines
  Added in v.91477

  ViewVC Help
Powered by ViewVC 1.1.23