module php/reflect/version4/class
imports
php/reflect/oo/classes
/**
* Stratego class support for class
*/
signature
constructors
PHP4Class : ClassName
strategies
/**
* Succeeds if the current term is an instance of PHP Class
*/
instanceof-PHPClass =
instanceof-PHP4Class
instanceof-PHP4Class =
classes_instanceof(|PHP4Class())
strategies
/**
* Constructs a new Class.
*
* @type _ -> Class Object
*/
new-php4-class(|ast) =
{ this :
<classes_get-class> PHP4Class()
; classes_new-instance
; ?this
; classes_set-instance-field(|"reference-ast", ast)
; classes_set-instance-field(|"classes-table" , <new-hashtable>)
; classes_set-instance-field(|"function-table", <new-hashtable>)
; classes_set-instance-field(|"function-table", <new-hashtable>)
; <add-php4-function-objects(|this)> ast
;!this
}
add-php4-function-objects(|this) =
collect-all(match-php4-function-decl)
; map({ast, fun:
?ast
; fun := <new-php4-function(|ast)>
; <add-function(|fun)> this
})
/**
* Properties
*/
strategies
/**
* Returns the name of the class
*
* @type Class Object -> String
*/
get-name = instanceof-PHP4Class;
get-name(get-php4-class-name)
get-php4-class-name =
get-class-name
/**
* Returns the name of the class
* it extends (if any)
*
* @type Class Object -> String
*/
get-extends = instanceof-PHP4Class;
get-extends(get-php4-extends-name)
get-php4-extends-name =
get-extends-name
/**
* Returns the instance-variables of this class
*
* @type Class Object -> List(InstanceVariable)
*/
get-instance-variables = instanceof-PHP4Class;
get-instance-variables(match-php4-instance-variable)
match-php4-instance-variable =
match-instance-variable
strategies
/**
* Returns the function object of the constructor of
* this class.
*
* @type PHP4Class Object -> Function Object
*/
get-class-constructor = instanceof-PHP4Class;
(( ?class
; name := <get-name> class
; ((<get-function(|name)> class)
<+
( parent := <get-class-parent> class
; <get-function(|name)> parent
))
)
<+
( get-class-parent
; get-class-constructor
))