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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 91477 - (show annotations)
Sun Jan 14 09:47:13 2007 UTC (13 years ago) by ericb
File size: 2025 byte(s)
Synchronized with ISE 6.0.65740
1 indexing
2 description: "[
3 Objects representing delayed calls to a procedure.
4 with some operands possibly still open.
5
6 Note: Features are the same as those of ROUTINE,
7 with `apply' made effective, and no further
8 redefinition of `is_equal' and `copy'.
9 ]"
10 library: "Free implementation of ELKS library"
11 copyright: "Copyright (c) 1986-2004, Eiffel Software and others"
12 license: "Eiffel Forum License v2 (see forum.txt)"
13 date: "$Date$"
14 revision: "$Revision$"
15
16 class
17 PROCEDURE [BASE_TYPE, OPEN_ARGS -> TUPLE create default_create end]
18
19 inherit
20 ROUTINE [BASE_TYPE, OPEN_ARGS]
21
22 feature -- Calls
23
24 apply is
25 -- Call procedure with `args' as last set.
26 do
27 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
38
39 feature {NONE} -- Implementation
40
41 fast_call (a_rout_disp, a_calc_rout_addr: POINTER;
42 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
46 "C inline use %"eif_rout_obj.h%""
47 alias
48 "[
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
72
73 end

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.23