Difference between revisions of "Agent Calls"

(Wrapper generation)
(Wrapper generation)
Line 30: Line 30:
  
 
== Wrapper generation ==
 
== Wrapper generation ==
Lets look first at frozen workbench code.
+
Lets look first at frozen workbench code. Class C is used throughout the following examples.
 
+
 
<code>[eiffel,N]
 
<code>[eiffel,N]
 
class
 
class
Line 42: Line 41:
 
         end   
 
         end   
 
end  
 
end  
 +
</code>
  
</code>
+
For everly '''agent creation''' a c-function is generated. This wrapper function does two things:
 +
*Reorder the closed and open arguments
 +
*Call the '''callee''' of the

Revision as of 14:45, 21 August 2006

Work in progress!

Terminology

In the following text the place where an agent is created (with the agent keyword or the tilde operator) is called the agent creation. The feature to which the agent points is the callee and the place (or places) where the agent is called is denoted agent call.

class 
    TERMINOLOGY
 
feature
 
    f1
        local
            p: PROCEDURE [ANY, TUPLE]
        do
            p := agent target   -- agent creation
        end
 
    f2 (p: PROCEDURE [ANY, TUPLE])
        do
            p.call ([])         -- agent call
        end
 
    target                      -- callee
        do
        end
end

Wrapper generation

Lets look first at frozen workbench code. Class C is used throughout the following examples.

class
    C
 
feature
    f (p1, p2: INTEGER; p3: STRING): STRING
        do
            ...
        end   
end

For everly agent creation a c-function is generated. This wrapper function does two things:

  • Reorder the closed and open arguments
  • Call the callee of the