module php/reflect/common/main imports php/reflect/common/environment php/reflect/common/function php/reflect/common/class /** * Strategies that both versions of the environment have * in common to create the environment * */ strategies collect-all-skip-classes(s) = collect-all(s, union, skip-class) match-function-decl = ?FunctionDecl(_,_,_) <+ ?FunctionDeclRef(_,_,_) match-class-decl = ?Class(_,_,_,_) rules skip-class : Class(_,_,_,_) -> [] skip-class : Class(_,_,_,_,_) -> [] strategies /** * Initialization of an environment. If there was an option * for a specific release the environment is made for * this release. Otherwise it uses the PHP4Environment. * * @param doc The main document on which the environment has to be filled. * @type _ -> PHPEnvironment */ init-php-environment(|doc) = if <get-config> "version" => "PHP5" then init-php5-environment(|doc) else init-php4-environment(|doc) end /** * Fills the current PHP environment with the extra document. It * analyzes the AST and caches the decleration of several things. * This strategy can be used instead of a specific one for a version. * * @param doc The main document on which the environment has to be filled. * @type _ -> PHPEnvironment */ fill-php-environment(|doc) = ( env := <get-php5-environment> ; fill-php5-environment(|env,doc) ) <+ ( env := <get-php4-environment> ; fill-php4-environment(|env,doc) ) rules /** * Sets the current PHP environment. This environment can be extracted * by get-php-environment. * * @param environment The PHPEnvironment to store */ set-php-environment(|environment) = table-hashtable ; hashtable-put(|"PHP-Environment",environment) /** * Catches the current environment. Fails if there is * none. */ get-php-environment = table-hashtable ; hashtable-get(|"PHP-Environment") /** * Cleans the php-environment. */ clean-php-environment = table-hashtable ; hashtable-remove(|"PHP-Environment")