!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: nginx/1.23.4. PHP/5.6.40-65+ubuntu20.04.1+deb.sury.org+1 

uname -a: Linux foro-restaurado-2 5.15.0-1040-oracle #46-Ubuntu SMP Fri Jul 14 21:47:21 UTC 2023
aarch64
 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/home/scripts/pba/phc-read-only/src/generated/   drwxrwxr-x
Free 83.26 GB of 96.73 GB (86.08%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     HIR_fold.h (41.46 KB)      -rw-rw-r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#include <iostream>
#include <sstream>
#include <iomanip>
#include "lib/error.h"
#include "lib/Object.h"
#include "lib/List.h"
#include "lib/String.h"
#include "lib/Boolean.h"
#include "lib/Integer.h"
#include "lib/AttrMap.h"
#include "process_ir/IR.h"
#include "process_ir/Foreach.h"
#include <list>
#include <string>
#include <cstring>
#include <cassert>


#include "HIR.h"
namespace HIR{
template
<class _Actual_parameter,
 class _Array_access,
 class _Array_next,
 class _Assign_array,
 class _Assign_field,
 class _Assign_next,
 class _Assign_var,
 class _Assign_var_var,
 class _Attr_mod,
 class _Attribute,
 class _BOOL,
 class _Bin_op,
 class _Break,
 class _CAST,
 class _CLASS_NAME,
 class _CONSTANT_NAME,
 class _Cast,
 class _Catch,
 class _Class_def,
 class _Class_mod,
 class _Class_name,
 class _Constant,
 class _Continue,
 class _Eval_expr,
 class _Expr,
 class _FIELD_NAME,
 class _FOREIGN,
 class _Field_access,
 class _Field_name,
 class _Foreach,
 class _Formal_parameter,
 class _Global,
 class _INT,
 class _INTERFACE_NAME,
 class _Identifier,
 class _If,
 class _Instanceof,
 class _Interface_def,
 class _Literal,
 class _Loop,
 class _METHOD_NAME,
 class _Member,
 class _Method,
 class _Method_invocation,
 class _Method_mod,
 class _Method_name,
 class _NIL,
 class _Name_with_default,
 class _New,
 class _Node,
 class _OP,
 class _PHP_script,
 class _Pre_op,
 class _REAL,
 class _Return,
 class _Rvalue,
 class _STRING,
 class _Signature,
 class _Statement,
 class _Static_array,
 class _Static_array_elem,
 class _Static_array_key,
 class _Static_declaration,
 class _Static_value,
 class _Target,
 class _Throw,
 class _Try,
 class _Type,
 class _Unary_op,
 class _VARIABLE_NAME,
 class _Variable_actual_parameter,
 class _Variable_class,
 class _Variable_field,
 class _Variable_method,
 class _Variable_name,
 class _Variable_variable,
 template <typename _Tp, typename _Alloc = typename List<_Tp>::allocator_type> class _List = List
>
class Fold
{
// Access this class from subclasses without copying out the template instantiation
public:
   typedef Fold<_Actual_parameter, _Array_access, _Array_next, _Assign_array, _Assign_field, _Assign_next, _Assign_var, _Assign_var_var, _Attr_mod, _Attribute, _BOOL, _Bin_op, _Break, _CAST, _CLASS_NAME, _CONSTANT_NAME, _Cast, _Catch, _Class_def, _Class_mod, _Class_name, _Constant, _Continue, _Eval_expr, _Expr, _FIELD_NAME, _FOREIGN, _Field_access, _Field_name, _Foreach, _Formal_parameter, _Global, _INT, _INTERFACE_NAME, _Identifier, _If, _Instanceof, _Interface_def, _Literal, _Loop, _METHOD_NAME, _Member, _Method, _Method_invocation, _Method_mod, _Method_name, _NIL, _Name_with_default, _New, _Node, _OP, _PHP_script, _Pre_op, _REAL, _Return, _Rvalue, _STRING, _Signature, _Statement, _Static_array, _Static_array_elem, _Static_array_key, _Static_declaration, _Static_value, _Target, _Throw, _Try, _Type, _Unary_op, _VARIABLE_NAME, _Variable_actual_parameter, _Variable_class, _Variable_field, _Variable_method, _Variable_name, _Variable_variable, _List> parent;
// Recursively fold the children before folding the parent
// This methods form the client API for a fold, but should not be
// overridden unless you know what you are doing
public:
    virtual _PHP_script fold_php_script(PHP_script* in)
    {
        _List<_Statement>* statements = 0;
    
        {
            statements = new _List<_Statement>;
            typename _List<Statement*>::const_iterator i;
            for(i = in->statements->begin(); i != in->statements->end(); i++)
                if(*i != NULL) statements->push_back(fold_statement(*i));
                else statements->push_back(0);
        }
        return fold_impl_php_script(in, statements);
    }

    virtual _Class_def fold_class_def(Class_def* in)
    {
        _Class_mod class_mod = 0;
        if(in->class_mod != NULL) class_mod = fold_class_mod(in->class_mod);
        _CLASS_NAME class_name = 0;
        if(in->class_name != NULL) class_name = fold_class_name(in->class_name);
        _CLASS_NAME extends = 0;
        if(in->extends != NULL) extends = fold_class_name(in->extends);
        _List<_INTERFACE_NAME>* implements = 0;
    
        {
            implements = new _List<_INTERFACE_NAME>;
            typename _List<INTERFACE_NAME*>::const_iterator i;
            for(i = in->implements->begin(); i != in->implements->end(); i++)
                if(*i != NULL) implements->push_back(fold_interface_name(*i));
                else implements->push_back(0);
        }
        _List<_Member>* members = 0;
    
        {
            members = new _List<_Member>;
            typename _List<Member*>::const_iterator i;
            for(i = in->members->begin(); i != in->members->end(); i++)
                if(*i != NULL) members->push_back(fold_member(*i));
                else members->push_back(0);
        }
        return fold_impl_class_def(in, class_mod, class_name, extends, implements, members);
    }

    virtual _Class_mod fold_class_mod(Class_mod* in)
    {
        bool is_abstract = in->is_abstract;
        bool is_final = in->is_final;
        return fold_impl_class_mod(in, is_abstract, is_final);
    }

    virtual _Interface_def fold_interface_def(Interface_def* in)
    {
        _INTERFACE_NAME interface_name = 0;
        if(in->interface_name != NULL) interface_name = fold_interface_name(in->interface_name);
        _List<_INTERFACE_NAME>* extends = 0;
    
        {
            extends = new _List<_INTERFACE_NAME>;
            typename _List<INTERFACE_NAME*>::const_iterator i;
            for(i = in->extends->begin(); i != in->extends->end(); i++)
                if(*i != NULL) extends->push_back(fold_interface_name(*i));
                else extends->push_back(0);
        }
        _List<_Member>* members = 0;
    
        {
            members = new _List<_Member>;
            typename _List<Member*>::const_iterator i;
            for(i = in->members->begin(); i != in->members->end(); i++)
                if(*i != NULL) members->push_back(fold_member(*i));
                else members->push_back(0);
        }
        return fold_impl_interface_def(in, interface_name, extends, members);
    }

    virtual _Method fold_method(Method* in)
    {
        _Signature signature = 0;
        if(in->signature != NULL) signature = fold_signature(in->signature);
        _List<_Statement>* statements = 0;
    if (in->statements)
        {
            statements = new _List<_Statement>;
            typename _List<Statement*>::const_iterator i;
            for(i = in->statements->begin(); i != in->statements->end(); i++)
                if(*i != NULL) statements->push_back(fold_statement(*i));
                else statements->push_back(0);
        }
        return fold_impl_method(in, signature, statements);
    }

    virtual _Signature fold_signature(Signature* in)
    {
        _Method_mod method_mod = 0;
        if(in->method_mod != NULL) method_mod = fold_method_mod(in->method_mod);
        bool is_ref = in->is_ref;
        _METHOD_NAME method_name = 0;
        if(in->method_name != NULL) method_name = fold_method_name(in->method_name);
        _List<_Formal_parameter>* formal_parameters = 0;
    
        {
            formal_parameters = new _List<_Formal_parameter>;
            typename _List<Formal_parameter*>::const_iterator i;
            for(i = in->formal_parameters->begin(); i != in->formal_parameters->end(); i++)
                if(*i != NULL) formal_parameters->push_back(fold_formal_parameter(*i));
                else formal_parameters->push_back(0);
        }
        return fold_impl_signature(in, method_mod, is_ref, method_name, formal_parameters);
    }

    virtual _Method_mod fold_method_mod(Method_mod* in)
    {
        bool is_public = in->is_public;
        bool is_protected = in->is_protected;
        bool is_private = in->is_private;
        bool is_static = in->is_static;
        bool is_abstract = in->is_abstract;
        bool is_final = in->is_final;
        return fold_impl_method_mod(in, is_public, is_protected, is_private, is_static, is_abstract, is_final);
    }

    virtual _Formal_parameter fold_formal_parameter(Formal_parameter* in)
    {
        _Type type = 0;
        if(in->type != NULL) type = fold_type(in->type);
        bool is_ref = in->is_ref;
        _Name_with_default var = 0;
        if(in->var != NULL) var = fold_name_with_default(in->var);
        return fold_impl_formal_parameter(in, type, is_ref, var);
    }

    virtual _Type fold_type(Type* in)
    {
        _CLASS_NAME class_name = 0;
        if(in->class_name != NULL) class_name = fold_class_name(in->class_name);
        return fold_impl_type(in, class_name);
    }

    virtual _Attribute fold_attribute(Attribute* in)
    {
        _Attr_mod attr_mod = 0;
        if(in->attr_mod != NULL) attr_mod = fold_attr_mod(in->attr_mod);
        _Name_with_default var = 0;
        if(in->var != NULL) var = fold_name_with_default(in->var);
        return fold_impl_attribute(in, attr_mod, var);
    }

    virtual _Attr_mod fold_attr_mod(Attr_mod* in)
    {
        bool is_public = in->is_public;
        bool is_protected = in->is_protected;
        bool is_private = in->is_private;
        bool is_static = in->is_static;
        bool is_const = in->is_const;
        return fold_impl_attr_mod(in, is_public, is_protected, is_private, is_static, is_const);
    }

    virtual _Name_with_default fold_name_with_default(Name_with_default* in)
    {
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        _Static_value default_value = 0;
        if(in->default_value != NULL) default_value = fold_static_value(in->default_value);
        return fold_impl_name_with_default(in, variable_name, default_value);
    }

    virtual _If fold_if(If* in)
    {
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        _List<_Statement>* iftrue = 0;
    
        {
            iftrue = new _List<_Statement>;
            typename _List<Statement*>::const_iterator i;
            for(i = in->iftrue->begin(); i != in->iftrue->end(); i++)
                if(*i != NULL) iftrue->push_back(fold_statement(*i));
                else iftrue->push_back(0);
        }
        _List<_Statement>* iffalse = 0;
    
        {
            iffalse = new _List<_Statement>;
            typename _List<Statement*>::const_iterator i;
            for(i = in->iffalse->begin(); i != in->iffalse->end(); i++)
                if(*i != NULL) iffalse->push_back(fold_statement(*i));
                else iffalse->push_back(0);
        }
        return fold_impl_if(in, variable_name, iftrue, iffalse);
    }

    virtual _Loop fold_loop(Loop* in)
    {
        _List<_Statement>* statements = 0;
    
        {
            statements = new _List<_Statement>;
            typename _List<Statement*>::const_iterator i;
            for(i = in->statements->begin(); i != in->statements->end(); i++)
                if(*i != NULL) statements->push_back(fold_statement(*i));
                else statements->push_back(0);
        }
        return fold_impl_loop(in, statements);
    }

    virtual _Foreach fold_foreach(Foreach* in)
    {
        _VARIABLE_NAME arr = 0;
        if(in->arr != NULL) arr = fold_variable_name(in->arr);
        _VARIABLE_NAME key = 0;
        if(in->key != NULL) key = fold_variable_name(in->key);
        bool is_ref = in->is_ref;
        _VARIABLE_NAME val = 0;
        if(in->val != NULL) val = fold_variable_name(in->val);
        _List<_Statement>* statements = 0;
    
        {
            statements = new _List<_Statement>;
            typename _List<Statement*>::const_iterator i;
            for(i = in->statements->begin(); i != in->statements->end(); i++)
                if(*i != NULL) statements->push_back(fold_statement(*i));
                else statements->push_back(0);
        }
        return fold_impl_foreach(in, arr, key, is_ref, val, statements);
    }

    virtual _Break fold_break(Break* in)
    {
        _Expr expr = 0;
        if(in->expr != NULL) expr = fold_expr(in->expr);
        return fold_impl_break(in, expr);
    }

    virtual _Continue fold_continue(Continue* in)
    {
        _Expr expr = 0;
        if(in->expr != NULL) expr = fold_expr(in->expr);
        return fold_impl_continue(in, expr);
    }

    virtual _Return fold_return(Return* in)
    {
        _Rvalue rvalue = 0;
        if(in->rvalue != NULL) rvalue = fold_rvalue(in->rvalue);
        return fold_impl_return(in, rvalue);
    }

    virtual _Static_declaration fold_static_declaration(Static_declaration* in)
    {
        _Name_with_default var = 0;
        if(in->var != NULL) var = fold_name_with_default(in->var);
        return fold_impl_static_declaration(in, var);
    }

    virtual _Global fold_global(Global* in)
    {
        _Variable_name variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        return fold_impl_global(in, variable_name);
    }

    virtual _Try fold_try(Try* in)
    {
        _List<_Statement>* statements = 0;
    
        {
            statements = new _List<_Statement>;
            typename _List<Statement*>::const_iterator i;
            for(i = in->statements->begin(); i != in->statements->end(); i++)
                if(*i != NULL) statements->push_back(fold_statement(*i));
                else statements->push_back(0);
        }
        _List<_Catch>* catches = 0;
    
        {
            catches = new _List<_Catch>;
            typename _List<Catch*>::const_iterator i;
            for(i = in->catches->begin(); i != in->catches->end(); i++)
                if(*i != NULL) catches->push_back(fold_catch(*i));
                else catches->push_back(0);
        }
        return fold_impl_try(in, statements, catches);
    }

    virtual _Catch fold_catch(Catch* in)
    {
        _CLASS_NAME class_name = 0;
        if(in->class_name != NULL) class_name = fold_class_name(in->class_name);
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        _List<_Statement>* statements = 0;
    
        {
            statements = new _List<_Statement>;
            typename _List<Statement*>::const_iterator i;
            for(i = in->statements->begin(); i != in->statements->end(); i++)
                if(*i != NULL) statements->push_back(fold_statement(*i));
                else statements->push_back(0);
        }
        return fold_impl_catch(in, class_name, variable_name, statements);
    }

    virtual _Throw fold_throw(Throw* in)
    {
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        return fold_impl_throw(in, variable_name);
    }

    virtual _Assign_var fold_assign_var(Assign_var* in)
    {
        _VARIABLE_NAME lhs = 0;
        if(in->lhs != NULL) lhs = fold_variable_name(in->lhs);
        bool is_ref = in->is_ref;
        _Expr rhs = 0;
        if(in->rhs != NULL) rhs = fold_expr(in->rhs);
        return fold_impl_assign_var(in, lhs, is_ref, rhs);
    }

    virtual _Assign_field fold_assign_field(Assign_field* in)
    {
        _Target target = 0;
        if(in->target != NULL) target = fold_target(in->target);
        _Field_name field_name = 0;
        if(in->field_name != NULL) field_name = fold_field_name(in->field_name);
        bool is_ref = in->is_ref;
        _Rvalue rhs = 0;
        if(in->rhs != NULL) rhs = fold_rvalue(in->rhs);
        return fold_impl_assign_field(in, target, field_name, is_ref, rhs);
    }

    virtual _Assign_array fold_assign_array(Assign_array* in)
    {
        _VARIABLE_NAME lhs = 0;
        if(in->lhs != NULL) lhs = fold_variable_name(in->lhs);
        _Rvalue index = 0;
        if(in->index != NULL) index = fold_rvalue(in->index);
        bool is_ref = in->is_ref;
        _Rvalue rhs = 0;
        if(in->rhs != NULL) rhs = fold_rvalue(in->rhs);
        return fold_impl_assign_array(in, lhs, index, is_ref, rhs);
    }

    virtual _Assign_var_var fold_assign_var_var(Assign_var_var* in)
    {
        _VARIABLE_NAME lhs = 0;
        if(in->lhs != NULL) lhs = fold_variable_name(in->lhs);
        bool is_ref = in->is_ref;
        _Rvalue rhs = 0;
        if(in->rhs != NULL) rhs = fold_rvalue(in->rhs);
        return fold_impl_assign_var_var(in, lhs, is_ref, rhs);
    }

    virtual _Assign_next fold_assign_next(Assign_next* in)
    {
        _VARIABLE_NAME lhs = 0;
        if(in->lhs != NULL) lhs = fold_variable_name(in->lhs);
        bool is_ref = in->is_ref;
        _Rvalue rhs = 0;
        if(in->rhs != NULL) rhs = fold_rvalue(in->rhs);
        return fold_impl_assign_next(in, lhs, is_ref, rhs);
    }

    virtual _Pre_op fold_pre_op(Pre_op* in)
    {
        _OP op = 0;
        if(in->op != NULL) op = fold_op(in->op);
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        return fold_impl_pre_op(in, op, variable_name);
    }

    virtual _Eval_expr fold_eval_expr(Eval_expr* in)
    {
        _Expr expr = 0;
        if(in->expr != NULL) expr = fold_expr(in->expr);
        return fold_impl_eval_expr(in, expr);
    }

    virtual _Field_access fold_field_access(Field_access* in)
    {
        _Target target = 0;
        if(in->target != NULL) target = fold_target(in->target);
        _Field_name field_name = 0;
        if(in->field_name != NULL) field_name = fold_field_name(in->field_name);
        return fold_impl_field_access(in, target, field_name);
    }

    virtual _Array_access fold_array_access(Array_access* in)
    {
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        _Rvalue index = 0;
        if(in->index != NULL) index = fold_rvalue(in->index);
        return fold_impl_array_access(in, variable_name, index);
    }

    virtual _Array_next fold_array_next(Array_next* in)
    {
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        return fold_impl_array_next(in, variable_name);
    }

    virtual _Cast fold_cast(Cast* in)
    {
        _CAST cast = 0;
        if(in->cast != NULL) cast = fold_cast(in->cast);
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        return fold_impl_cast(in, cast, variable_name);
    }

    virtual _Unary_op fold_unary_op(Unary_op* in)
    {
        _OP op = 0;
        if(in->op != NULL) op = fold_op(in->op);
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        return fold_impl_unary_op(in, op, variable_name);
    }

    virtual _Bin_op fold_bin_op(Bin_op* in)
    {
        _Rvalue left = 0;
        if(in->left != NULL) left = fold_rvalue(in->left);
        _OP op = 0;
        if(in->op != NULL) op = fold_op(in->op);
        _Rvalue right = 0;
        if(in->right != NULL) right = fold_rvalue(in->right);
        return fold_impl_bin_op(in, left, op, right);
    }

    virtual _Constant fold_constant(Constant* in)
    {
        _CLASS_NAME class_name = 0;
        if(in->class_name != NULL) class_name = fold_class_name(in->class_name);
        _CONSTANT_NAME constant_name = 0;
        if(in->constant_name != NULL) constant_name = fold_constant_name(in->constant_name);
        return fold_impl_constant(in, class_name, constant_name);
    }

    virtual _Instanceof fold_instanceof(Instanceof* in)
    {
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        _Class_name class_name = 0;
        if(in->class_name != NULL) class_name = fold_class_name(in->class_name);
        return fold_impl_instanceof(in, variable_name, class_name);
    }

    virtual _Method_invocation fold_method_invocation(Method_invocation* in)
    {
        _Target target = 0;
        if(in->target != NULL) target = fold_target(in->target);
        _Method_name method_name = 0;
        if(in->method_name != NULL) method_name = fold_method_name(in->method_name);
        _List<_Actual_parameter>* actual_parameters = 0;
    
        {
            actual_parameters = new _List<_Actual_parameter>;
            typename _List<Actual_parameter*>::const_iterator i;
            for(i = in->actual_parameters->begin(); i != in->actual_parameters->end(); i++)
                if(*i != NULL) actual_parameters->push_back(fold_actual_parameter(*i));
                else actual_parameters->push_back(0);
        }
        return fold_impl_method_invocation(in, target, method_name, actual_parameters);
    }

    virtual _New fold_new(New* in)
    {
        _Class_name class_name = 0;
        if(in->class_name != NULL) class_name = fold_class_name(in->class_name);
        _List<_Actual_parameter>* actual_parameters = 0;
    
        {
            actual_parameters = new _List<_Actual_parameter>;
            typename _List<Actual_parameter*>::const_iterator i;
            for(i = in->actual_parameters->begin(); i != in->actual_parameters->end(); i++)
                if(*i != NULL) actual_parameters->push_back(fold_actual_parameter(*i));
                else actual_parameters->push_back(0);
        }
        return fold_impl_new(in, class_name, actual_parameters);
    }

    virtual _Variable_actual_parameter fold_variable_actual_parameter(Variable_actual_parameter* in)
    {
        bool is_ref = in->is_ref;
        _Target target = 0;
        if(in->target != NULL) target = fold_target(in->target);
        _Variable_name variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        _List<_Rvalue>* array_indices = 0;
    
        {
            array_indices = new _List<_Rvalue>;
            typename _List<Rvalue*>::const_iterator i;
            for(i = in->array_indices->begin(); i != in->array_indices->end(); i++)
                if(*i != NULL) array_indices->push_back(fold_rvalue(*i));
                else array_indices->push_back(0);
        }
        return fold_impl_variable_actual_parameter(in, is_ref, target, variable_name, array_indices);
    }

    virtual _Variable_method fold_variable_method(Variable_method* in)
    {
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        return fold_impl_variable_method(in, variable_name);
    }

    virtual _Variable_variable fold_variable_variable(Variable_variable* in)
    {
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        return fold_impl_variable_variable(in, variable_name);
    }

    virtual _Variable_class fold_variable_class(Variable_class* in)
    {
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        return fold_impl_variable_class(in, variable_name);
    }

    virtual _Variable_field fold_variable_field(Variable_field* in)
    {
        _VARIABLE_NAME variable_name = 0;
        if(in->variable_name != NULL) variable_name = fold_variable_name(in->variable_name);
        return fold_impl_variable_field(in, variable_name);
    }

    virtual _Static_array fold_static_array(Static_array* in)
    {
        _List<_Static_array_elem>* static_array_elems = 0;
    
        {
            static_array_elems = new _List<_Static_array_elem>;
            typename _List<Static_array_elem*>::const_iterator i;
            for(i = in->static_array_elems->begin(); i != in->static_array_elems->end(); i++)
                if(*i != NULL) static_array_elems->push_back(fold_static_array_elem(*i));
                else static_array_elems->push_back(0);
        }
        return fold_impl_static_array(in, static_array_elems);
    }

    virtual _Static_array_elem fold_static_array_elem(Static_array_elem* in)
    {
        _Static_array_key key = 0;
        if(in->key != NULL) key = fold_static_array_key(in->key);
        bool is_ref = in->is_ref;
        _Static_value val = 0;
        if(in->val != NULL) val = fold_static_value(in->val);
        return fold_impl_static_array_elem(in, key, is_ref, val);
    }



// The user-defined folds
// Override these methods to get specific functionality
public:
    virtual _PHP_script fold_impl_php_script(PHP_script* orig, _List<_Statement>* statements) { assert(0); };
    virtual _Class_def fold_impl_class_def(Class_def* orig, _Class_mod class_mod, _CLASS_NAME class_name, _CLASS_NAME extends, _List<_INTERFACE_NAME>* implements, _List<_Member>* members) { assert(0); };
    virtual _Class_mod fold_impl_class_mod(Class_mod* orig, bool is_abstract, bool is_final) { assert(0); };
    virtual _Interface_def fold_impl_interface_def(Interface_def* orig, _INTERFACE_NAME interface_name, _List<_INTERFACE_NAME>* extends, _List<_Member>* members) { assert(0); };
    virtual _Method fold_impl_method(Method* orig, _Signature signature, _List<_Statement>* statements) { assert(0); };
    virtual _Signature fold_impl_signature(Signature* orig, _Method_mod method_mod, bool is_ref, _METHOD_NAME method_name, _List<_Formal_parameter>* formal_parameters) { assert(0); };
    virtual _Method_mod fold_impl_method_mod(Method_mod* orig, bool is_public, bool is_protected, bool is_private, bool is_static, bool is_abstract, bool is_final) { assert(0); };
    virtual _Formal_parameter fold_impl_formal_parameter(Formal_parameter* orig, _Type type, bool is_ref, _Name_with_default var) { assert(0); };
    virtual _Type fold_impl_type(Type* orig, _CLASS_NAME class_name) { assert(0); };
    virtual _Attribute fold_impl_attribute(Attribute* orig, _Attr_mod attr_mod, _Name_with_default var) { assert(0); };
    virtual _Attr_mod fold_impl_attr_mod(Attr_mod* orig, bool is_public, bool is_protected, bool is_private, bool is_static, bool is_const) { assert(0); };
    virtual _Name_with_default fold_impl_name_with_default(Name_with_default* orig, _VARIABLE_NAME variable_name, _Static_value default_value) { assert(0); };
    virtual _If fold_impl_if(If* orig, _VARIABLE_NAME variable_name, _List<_Statement>* iftrue, _List<_Statement>* iffalse) { assert(0); };
    virtual _Loop fold_impl_loop(Loop* orig, _List<_Statement>* statements) { assert(0); };
    virtual _Foreach fold_impl_foreach(Foreach* orig, _VARIABLE_NAME arr, _VARIABLE_NAME key, bool is_ref, _VARIABLE_NAME val, _List<_Statement>* statements) { assert(0); };
    virtual _Break fold_impl_break(Break* orig, _Expr expr) { assert(0); };
    virtual _Continue fold_impl_continue(Continue* orig, _Expr expr) { assert(0); };
    virtual _Return fold_impl_return(Return* orig, _Rvalue rvalue) { assert(0); };
    virtual _Static_declaration fold_impl_static_declaration(Static_declaration* orig, _Name_with_default var) { assert(0); };
    virtual _Global fold_impl_global(Global* orig, _Variable_name variable_name) { assert(0); };
    virtual _Try fold_impl_try(Try* orig, _List<_Statement>* statements, _List<_Catch>* catches) { assert(0); };
    virtual _Catch fold_impl_catch(Catch* orig, _CLASS_NAME class_name, _VARIABLE_NAME variable_name, _List<_Statement>* statements) { assert(0); };
    virtual _Throw fold_impl_throw(Throw* orig, _VARIABLE_NAME variable_name) { assert(0); };
    virtual _Assign_var fold_impl_assign_var(Assign_var* orig, _VARIABLE_NAME lhs, bool is_ref, _Expr rhs) { assert(0); };
    virtual _Assign_field fold_impl_assign_field(Assign_field* orig, _Target target, _Field_name field_name, bool is_ref, _Rvalue rhs) { assert(0); };
    virtual _Assign_array fold_impl_assign_array(Assign_array* orig, _VARIABLE_NAME lhs, _Rvalue index, bool is_ref, _Rvalue rhs) { assert(0); };
    virtual _Assign_var_var fold_impl_assign_var_var(Assign_var_var* orig, _VARIABLE_NAME lhs, bool is_ref, _Rvalue rhs) { assert(0); };
    virtual _Assign_next fold_impl_assign_next(Assign_next* orig, _VARIABLE_NAME lhs, bool is_ref, _Rvalue rhs) { assert(0); };
    virtual _Pre_op fold_impl_pre_op(Pre_op* orig, _OP op, _VARIABLE_NAME variable_name) { assert(0); };
    virtual _Eval_expr fold_impl_eval_expr(Eval_expr* orig, _Expr expr) { assert(0); };
    virtual _Field_access fold_impl_field_access(Field_access* orig, _Target target, _Field_name field_name) { assert(0); };
    virtual _Array_access fold_impl_array_access(Array_access* orig, _VARIABLE_NAME variable_name, _Rvalue index) { assert(0); };
    virtual _Array_next fold_impl_array_next(Array_next* orig, _VARIABLE_NAME variable_name) { assert(0); };
    virtual _Cast fold_impl_cast(Cast* orig, _CAST cast, _VARIABLE_NAME variable_name) { assert(0); };
    virtual _Unary_op fold_impl_unary_op(Unary_op* orig, _OP op, _VARIABLE_NAME variable_name) { assert(0); };
    virtual _Bin_op fold_impl_bin_op(Bin_op* orig, _Rvalue left, _OP op, _Rvalue right) { assert(0); };
    virtual _Constant fold_impl_constant(Constant* orig, _CLASS_NAME class_name, _CONSTANT_NAME constant_name) { assert(0); };
    virtual _Instanceof fold_impl_instanceof(Instanceof* orig, _VARIABLE_NAME variable_name, _Class_name class_name) { assert(0); };
    virtual _Method_invocation fold_impl_method_invocation(Method_invocation* orig, _Target target, _Method_name method_name, _List<_Actual_parameter>* actual_parameters) { assert(0); };
    virtual _New fold_impl_new(New* orig, _Class_name class_name, _List<_Actual_parameter>* actual_parameters) { assert(0); };
    virtual _Variable_actual_parameter fold_impl_variable_actual_parameter(Variable_actual_parameter* orig, bool is_ref, _Target target, _Variable_name variable_name, _List<_Rvalue>* array_indices) { assert(0); };
    virtual _Variable_method fold_impl_variable_method(Variable_method* orig, _VARIABLE_NAME variable_name) { assert(0); };
    virtual _Variable_variable fold_impl_variable_variable(Variable_variable* orig, _VARIABLE_NAME variable_name) { assert(0); };
    virtual _Variable_class fold_impl_variable_class(Variable_class* orig, _VARIABLE_NAME variable_name) { assert(0); };
    virtual _Variable_field fold_impl_variable_field(Variable_field* orig, _VARIABLE_NAME variable_name) { assert(0); };
    virtual _Static_array fold_impl_static_array(Static_array* orig, _List<_Static_array_elem>* static_array_elems) { assert(0); };
    virtual _Static_array_elem fold_impl_static_array_elem(Static_array_elem* orig, _Static_array_key key, bool is_ref, _Static_value val) { assert(0); };

    virtual _FOREIGN fold_foreign(FOREIGN* orig) { assert(0); };
    virtual _CLASS_NAME fold_class_name(CLASS_NAME* orig) { assert(0); };
    virtual _INTERFACE_NAME fold_interface_name(INTERFACE_NAME* orig) { assert(0); };
    virtual _METHOD_NAME fold_method_name(METHOD_NAME* orig) { assert(0); };
    virtual _VARIABLE_NAME fold_variable_name(VARIABLE_NAME* orig) { assert(0); };
    virtual _OP fold_op(OP* orig) { assert(0); };
    virtual _INT fold_int(INT* orig) { assert(0); };
    virtual _REAL fold_real(REAL* orig) { assert(0); };
    virtual _STRING fold_string(STRING* orig) { assert(0); };
    virtual _BOOL fold_bool(BOOL* orig) { assert(0); };
    virtual _NIL fold_nil(NIL* orig) { assert(0); };
    virtual _CAST fold_cast(CAST* orig) { assert(0); };
    virtual _CONSTANT_NAME fold_constant_name(CONSTANT_NAME* orig) { assert(0); };
    virtual _FIELD_NAME fold_field_name(FIELD_NAME* orig) { assert(0); };


// Manual dispatching for abstract classes
// Override only if you know what you are doing!
    virtual _Node fold_node(Node* in)
    {
        switch(in->classid())
        {
            case PHP_script::ID:
                return fold_php_script(dynamic_cast<PHP_script*>(in));
            case Class_def::ID:
                return fold_class_def(dynamic_cast<Class_def*>(in));
            case Interface_def::ID:
                return fold_interface_def(dynamic_cast<Interface_def*>(in));
            case Method::ID:
                return fold_method(dynamic_cast<Method*>(in));
            case Return::ID:
                return fold_return(dynamic_cast<Return*>(in));
            case Static_declaration::ID:
                return fold_static_declaration(dynamic_cast<Static_declaration*>(in));
            case Global::ID:
                return fold_global(dynamic_cast<Global*>(in));
            case Try::ID:
                return fold_try(dynamic_cast<Try*>(in));
            case Throw::ID:
                return fold_throw(dynamic_cast<Throw*>(in));
            case If::ID:
                return fold_if(dynamic_cast<If*>(in));
            case Loop::ID:
                return fold_loop(dynamic_cast<Loop*>(in));
            case Foreach::ID:
                return fold_foreach(dynamic_cast<Foreach*>(in));
            case Break::ID:
                return fold_break(dynamic_cast<Break*>(in));
            case Continue::ID:
                return fold_continue(dynamic_cast<Continue*>(in));
            case Assign_var::ID:
                return fold_assign_var(dynamic_cast<Assign_var*>(in));
            case Assign_var_var::ID:
                return fold_assign_var_var(dynamic_cast<Assign_var_var*>(in));
            case Assign_array::ID:
                return fold_assign_array(dynamic_cast<Assign_array*>(in));
            case Assign_next::ID:
                return fold_assign_next(dynamic_cast<Assign_next*>(in));
            case Assign_field::ID:
                return fold_assign_field(dynamic_cast<Assign_field*>(in));
            case Eval_expr::ID:
                return fold_eval_expr(dynamic_cast<Eval_expr*>(in));
            case Pre_op::ID:
                return fold_pre_op(dynamic_cast<Pre_op*>(in));
            case FOREIGN::ID:
                return fold_foreign(dynamic_cast<FOREIGN*>(in));
            case Class_mod::ID:
                return fold_class_mod(dynamic_cast<Class_mod*>(in));
            case Attribute::ID:
                return fold_attribute(dynamic_cast<Attribute*>(in));
            case Signature::ID:
                return fold_signature(dynamic_cast<Signature*>(in));
            case Method_mod::ID:
                return fold_method_mod(dynamic_cast<Method_mod*>(in));
            case Formal_parameter::ID:
                return fold_formal_parameter(dynamic_cast<Formal_parameter*>(in));
            case Type::ID:
                return fold_type(dynamic_cast<Type*>(in));
            case Attr_mod::ID:
                return fold_attr_mod(dynamic_cast<Attr_mod*>(in));
            case Name_with_default::ID:
                return fold_name_with_default(dynamic_cast<Name_with_default*>(in));
            case Catch::ID:
                return fold_catch(dynamic_cast<Catch*>(in));
            case Cast::ID:
                return fold_cast(dynamic_cast<Cast*>(in));
            case Unary_op::ID:
                return fold_unary_op(dynamic_cast<Unary_op*>(in));
            case Bin_op::ID:
                return fold_bin_op(dynamic_cast<Bin_op*>(in));
            case Constant::ID:
                return fold_constant(dynamic_cast<Constant*>(in));
            case Instanceof::ID:
                return fold_instanceof(dynamic_cast<Instanceof*>(in));
            case Method_invocation::ID:
                return fold_method_invocation(dynamic_cast<Method_invocation*>(in));
            case New::ID:
                return fold_new(dynamic_cast<New*>(in));
            case INT::ID:
                return fold_int(dynamic_cast<INT*>(in));
            case REAL::ID:
                return fold_real(dynamic_cast<REAL*>(in));
            case STRING::ID:
                return fold_string(dynamic_cast<STRING*>(in));
            case BOOL::ID:
                return fold_bool(dynamic_cast<BOOL*>(in));
            case NIL::ID:
                return fold_nil(dynamic_cast<NIL*>(in));
            case VARIABLE_NAME::ID:
                return fold_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
            case Variable_variable::ID:
                return fold_variable_variable(dynamic_cast<Variable_variable*>(in));
            case Array_access::ID:
                return fold_array_access(dynamic_cast<Array_access*>(in));
            case Field_access::ID:
                return fold_field_access(dynamic_cast<Field_access*>(in));
            case Array_next::ID:
                return fold_array_next(dynamic_cast<Array_next*>(in));
            case CLASS_NAME::ID:
                return fold_class_name(dynamic_cast<CLASS_NAME*>(in));
            case Variable_actual_parameter::ID:
                return fold_variable_actual_parameter(dynamic_cast<Variable_actual_parameter*>(in));
            case METHOD_NAME::ID:
                return fold_method_name(dynamic_cast<METHOD_NAME*>(in));
            case Variable_method::ID:
                return fold_variable_method(dynamic_cast<Variable_method*>(in));
            case Variable_class::ID:
                return fold_variable_class(dynamic_cast<Variable_class*>(in));
            case FIELD_NAME::ID:
                return fold_field_name(dynamic_cast<FIELD_NAME*>(in));
            case Variable_field::ID:
                return fold_variable_field(dynamic_cast<Variable_field*>(in));
            case Static_array::ID:
                return fold_static_array(dynamic_cast<Static_array*>(in));
            case Static_array_elem::ID:
                return fold_static_array_elem(dynamic_cast<Static_array_elem*>(in));
            case INTERFACE_NAME::ID:
                return fold_interface_name(dynamic_cast<INTERFACE_NAME*>(in));
            case CAST::ID:
                return fold_cast(dynamic_cast<CAST*>(in));
            case OP::ID:
                return fold_op(dynamic_cast<OP*>(in));
            case CONSTANT_NAME::ID:
                return fold_constant_name(dynamic_cast<CONSTANT_NAME*>(in));
        }
        assert(0);
    }

    virtual _Statement fold_statement(Statement* in)
    {
        switch(in->classid())
        {
            case Class_def::ID:
                return fold_class_def(dynamic_cast<Class_def*>(in));
            case Interface_def::ID:
                return fold_interface_def(dynamic_cast<Interface_def*>(in));
            case Method::ID:
                return fold_method(dynamic_cast<Method*>(in));
            case Return::ID:
                return fold_return(dynamic_cast<Return*>(in));
            case Static_declaration::ID:
                return fold_static_declaration(dynamic_cast<Static_declaration*>(in));
            case Global::ID:
                return fold_global(dynamic_cast<Global*>(in));
            case Try::ID:
                return fold_try(dynamic_cast<Try*>(in));
            case Throw::ID:
                return fold_throw(dynamic_cast<Throw*>(in));
            case If::ID:
                return fold_if(dynamic_cast<If*>(in));
            case Loop::ID:
                return fold_loop(dynamic_cast<Loop*>(in));
            case Foreach::ID:
                return fold_foreach(dynamic_cast<Foreach*>(in));
            case Break::ID:
                return fold_break(dynamic_cast<Break*>(in));
            case Continue::ID:
                return fold_continue(dynamic_cast<Continue*>(in));
            case Assign_var::ID:
                return fold_assign_var(dynamic_cast<Assign_var*>(in));
            case Assign_var_var::ID:
                return fold_assign_var_var(dynamic_cast<Assign_var_var*>(in));
            case Assign_array::ID:
                return fold_assign_array(dynamic_cast<Assign_array*>(in));
            case Assign_next::ID:
                return fold_assign_next(dynamic_cast<Assign_next*>(in));
            case Assign_field::ID:
                return fold_assign_field(dynamic_cast<Assign_field*>(in));
            case Eval_expr::ID:
                return fold_eval_expr(dynamic_cast<Eval_expr*>(in));
            case Pre_op::ID:
                return fold_pre_op(dynamic_cast<Pre_op*>(in));
            case FOREIGN::ID:
                return fold_foreign(dynamic_cast<FOREIGN*>(in));
        }
        assert(0);
    }

    virtual _Member fold_member(Member* in)
    {
        switch(in->classid())
        {
            case Method::ID:
                return fold_method(dynamic_cast<Method*>(in));
            case Attribute::ID:
                return fold_attribute(dynamic_cast<Attribute*>(in));
        }
        assert(0);
    }

    virtual _Expr fold_expr(Expr* in)
    {
        switch(in->classid())
        {
            case Cast::ID:
                return fold_cast(dynamic_cast<Cast*>(in));
            case Unary_op::ID:
                return fold_unary_op(dynamic_cast<Unary_op*>(in));
            case Bin_op::ID:
                return fold_bin_op(dynamic_cast<Bin_op*>(in));
            case Constant::ID:
                return fold_constant(dynamic_cast<Constant*>(in));
            case Instanceof::ID:
                return fold_instanceof(dynamic_cast<Instanceof*>(in));
            case Method_invocation::ID:
                return fold_method_invocation(dynamic_cast<Method_invocation*>(in));
            case New::ID:
                return fold_new(dynamic_cast<New*>(in));
            case INT::ID:
                return fold_int(dynamic_cast<INT*>(in));
            case REAL::ID:
                return fold_real(dynamic_cast<REAL*>(in));
            case STRING::ID:
                return fold_string(dynamic_cast<STRING*>(in));
            case BOOL::ID:
                return fold_bool(dynamic_cast<BOOL*>(in));
            case NIL::ID:
                return fold_nil(dynamic_cast<NIL*>(in));
            case VARIABLE_NAME::ID:
                return fold_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
            case Variable_variable::ID:
                return fold_variable_variable(dynamic_cast<Variable_variable*>(in));
            case Array_access::ID:
                return fold_array_access(dynamic_cast<Array_access*>(in));
            case Field_access::ID:
                return fold_field_access(dynamic_cast<Field_access*>(in));
            case Array_next::ID:
                return fold_array_next(dynamic_cast<Array_next*>(in));
            case FOREIGN::ID:
                return fold_foreign(dynamic_cast<FOREIGN*>(in));
        }
        assert(0);
    }

    virtual _Literal fold_literal(Literal* in)
    {
        switch(in->classid())
        {
            case INT::ID:
                return fold_int(dynamic_cast<INT*>(in));
            case REAL::ID:
                return fold_real(dynamic_cast<REAL*>(in));
            case STRING::ID:
                return fold_string(dynamic_cast<STRING*>(in));
            case BOOL::ID:
                return fold_bool(dynamic_cast<BOOL*>(in));
            case NIL::ID:
                return fold_nil(dynamic_cast<NIL*>(in));
        }
        assert(0);
    }

    virtual _Rvalue fold_rvalue(Rvalue* in)
    {
        switch(in->classid())
        {
            case INT::ID:
                return fold_int(dynamic_cast<INT*>(in));
            case REAL::ID:
                return fold_real(dynamic_cast<REAL*>(in));
            case STRING::ID:
                return fold_string(dynamic_cast<STRING*>(in));
            case BOOL::ID:
                return fold_bool(dynamic_cast<BOOL*>(in));
            case NIL::ID:
                return fold_nil(dynamic_cast<NIL*>(in));
            case VARIABLE_NAME::ID:
                return fold_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
        }
        assert(0);
    }

    virtual _Target fold_target(Target* in)
    {
        switch(in->classid())
        {
            case VARIABLE_NAME::ID:
                return fold_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
            case CLASS_NAME::ID:
                return fold_class_name(dynamic_cast<CLASS_NAME*>(in));
        }
        assert(0);
    }

    virtual _Actual_parameter fold_actual_parameter(Actual_parameter* in)
    {
        switch(in->classid())
        {
            case INT::ID:
                return fold_int(dynamic_cast<INT*>(in));
            case REAL::ID:
                return fold_real(dynamic_cast<REAL*>(in));
            case STRING::ID:
                return fold_string(dynamic_cast<STRING*>(in));
            case BOOL::ID:
                return fold_bool(dynamic_cast<BOOL*>(in));
            case NIL::ID:
                return fold_nil(dynamic_cast<NIL*>(in));
            case Variable_actual_parameter::ID:
                return fold_variable_actual_parameter(dynamic_cast<Variable_actual_parameter*>(in));
        }
        assert(0);
    }

    virtual _Method_name fold_method_name(Method_name* in)
    {
        switch(in->classid())
        {
            case METHOD_NAME::ID:
                return fold_method_name(dynamic_cast<METHOD_NAME*>(in));
            case Variable_method::ID:
                return fold_variable_method(dynamic_cast<Variable_method*>(in));
        }
        assert(0);
    }

    virtual _Variable_name fold_variable_name(Variable_name* in)
    {
        switch(in->classid())
        {
            case VARIABLE_NAME::ID:
                return fold_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
            case Variable_variable::ID:
                return fold_variable_variable(dynamic_cast<Variable_variable*>(in));
        }
        assert(0);
    }

    virtual _Class_name fold_class_name(Class_name* in)
    {
        switch(in->classid())
        {
            case CLASS_NAME::ID:
                return fold_class_name(dynamic_cast<CLASS_NAME*>(in));
            case Variable_class::ID:
                return fold_variable_class(dynamic_cast<Variable_class*>(in));
        }
        assert(0);
    }

    virtual _Field_name fold_field_name(Field_name* in)
    {
        switch(in->classid())
        {
            case FIELD_NAME::ID:
                return fold_field_name(dynamic_cast<FIELD_NAME*>(in));
            case Variable_field::ID:
                return fold_variable_field(dynamic_cast<Variable_field*>(in));
        }
        assert(0);
    }

    virtual _Static_value fold_static_value(Static_value* in)
    {
        switch(in->classid())
        {
            case INT::ID:
                return fold_int(dynamic_cast<INT*>(in));
            case REAL::ID:
                return fold_real(dynamic_cast<REAL*>(in));
            case STRING::ID:
                return fold_string(dynamic_cast<STRING*>(in));
            case BOOL::ID:
                return fold_bool(dynamic_cast<BOOL*>(in));
            case NIL::ID:
                return fold_nil(dynamic_cast<NIL*>(in));
            case Static_array::ID:
                return fold_static_array(dynamic_cast<Static_array*>(in));
            case Constant::ID:
                return fold_constant(dynamic_cast<Constant*>(in));
        }
        assert(0);
    }

    virtual _Static_array_key fold_static_array_key(Static_array_key* in)
    {
        switch(in->classid())
        {
            case INT::ID:
                return fold_int(dynamic_cast<INT*>(in));
            case REAL::ID:
                return fold_real(dynamic_cast<REAL*>(in));
            case STRING::ID:
                return fold_string(dynamic_cast<STRING*>(in));
            case BOOL::ID:
                return fold_bool(dynamic_cast<BOOL*>(in));
            case NIL::ID:
                return fold_nil(dynamic_cast<NIL*>(in));
            case Constant::ID:
                return fold_constant(dynamic_cast<Constant*>(in));
        }
        assert(0);
    }

    virtual _Identifier fold_identifier(Identifier* in)
    {
        switch(in->classid())
        {
            case INTERFACE_NAME::ID:
                return fold_interface_name(dynamic_cast<INTERFACE_NAME*>(in));
            case CLASS_NAME::ID:
                return fold_class_name(dynamic_cast<CLASS_NAME*>(in));
            case METHOD_NAME::ID:
                return fold_method_name(dynamic_cast<METHOD_NAME*>(in));
            case VARIABLE_NAME::ID:
                return fold_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
            case FIELD_NAME::ID:
                return fold_field_name(dynamic_cast<FIELD_NAME*>(in));
            case CAST::ID:
                return fold_cast(dynamic_cast<CAST*>(in));
            case OP::ID:
                return fold_op(dynamic_cast<OP*>(in));
            case CONSTANT_NAME::ID:
                return fold_constant_name(dynamic_cast<CONSTANT_NAME*>(in));
        }
        assert(0);
    }



// Virtual destructor to avoid compiler warnings
    virtual ~Fold() {}
};

template<class T, template <class _Tp, class _Alloc = typename List<_Tp>::allocator_type> class _List>
class Uniform_fold : public Fold<T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, _List> {};
}


:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by HackingTool | HackingTool | Generation time: 0.0066 ]--