Go to the first, previous, next, last section, table of contents.


11.12 Function Types

The abstract model of a C++ function is given by the sort cpp_function in the following trait. This model is very abstract, because the real semantics of C++ functions is given by the function specification mechanisms of Larch/C++ (see section 6 Function Specifications).

% @(#)$Id: cpp_function.lsl,v 1.5 1997/06/03 20:49:42 leavens Exp $
% C++ functions
cpp_function(TYPE): trait
  includes List(TYPE, List[TYPE]), NoContainedObjects(cpp_function)
  introduces
    returnType: cpp_function -> TYPE
    argumentTypes, exceptionTypes: cpp_function -> List[TYPE]

The sort TYPE in the trait above stands for a Larch/C++ sort. But the trait functions are more suggestive than useful. See section 6.13 Specifying Higher-Order Functions for how to compare functions against Larch/C++ function specifications, and for how to specify functions that take or return pointers to C++ functions.

Member functions are modeled in Larch/C++ as values of the sort cpp_member_function in the following trait.

% @(#)$Id: cpp_member_function.lsl,v 1.3 1995/12/23 02:51:47 leavens Exp $
% C++ member functions
cpp_member_function(TYPE): trait
  includes cpp_function(cpp_member_function for cpp_function)
  introduces
    selfType: cpp_member_function -> TYPE
    isConst, isVolatile: cpp_member_function -> Bool


Go to the first, previous, next, last section, table of contents.