!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\Intranet\C\xampp\php\PEAR\CodeGen\PECL\   drwxrwxrwx
Free 4.09 GB of 39.52 GB (10.36%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     ExtensionParser.php (33.48 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Extension to the generic parser that adds PECL specific tags 
 *
 * PHP versions 5
 *
 * LICENSE: This source file is subject to version 3.0 of the PHP license
 * that is available through the world-wide-web at the following URI:
 * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
 * the PHP License and are unable to obtain it through the web, please
 * send a note to license@php.net so we can mail you a copy immediately.
 *
 * @category   Tools and Utilities
 * @package    CodeGen
 * @author     Hartmut Holzgraefe <hartmut@php.net>
 * @copyright  2005 Hartmut Holzgraefe
 * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
 * @version    CVS: $Id: ExtensionParser.php,v 1.47 2006/08/14 22:50:43 hholzgra Exp $
 * @link       http://pear.php.net/package/CodeGen
 */

/** 
 * includes
 */
require_once "CodeGen/ExtensionParser.php";
require_once 
"CodeGen/PECL/Maintainer.php";

/**
 * Extension to the generic parser that adds PECL specific tags 
 *
 * @category   Tools and Utilities
 * @package    CodeGen
 * @author     Hartmut Holzgraefe <hartmut@php.net>
 * @copyright  2005 Hartmut Holzgraefe
 * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
 * @version    Release: @package_version@
 * @link       http://pear.php.net/package/CodeGen
 */
class CodeGen_PECL_ExtensionParser 
    
extends CodeGen_ExtensionParser
{
    function 
setInputFile($filename
    {
        
$this->extension->addPackageFile("copy"$filename);
        return 
parent::setInputFile($filename);
    }

    function 
tagstart_maintainer($attr)
    {
        
// check: never popped?
        
$this->pushHelper(new CodeGen_PECL_Maintainer);
        return 
$this->noAttributes($attr);
    }

    function 
tagstart_release($attr)
    {
        
$this->pushHelper(new CodeGen_PECL_Release);
        return 
$this->noAttributes($attr);
    }

    function 
tagstart_extension_changelog($attr)
    {
        
$this->verbatim();
        return 
$this->noAttributes($attr);
    }

    function 
tagstart_extension_function($attr)
    {
        
$err $this->checkAttributes($attr, array("name""role""if"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
                                      
        
$this->pushHelper(new CodeGen_PECL_Element_Function);
        
        
$role = isset($attr["role"]) ? $attr["role"] : "public";
        
        if (isset(
$attr["name"])) {
            if (
$role == "public" && $this->extension->getPrefix()) {
                
$err $this->helper->setName($this->extension->getPrefix()."_".$attr["name"]);
            } else {
                
$err $this->helper->setName($attr["name"]);
                }
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("'name' attribut for <function> missing");
        }
        
        
$err $this->helper->setRole($role);
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        if (isset(
$attr["if"])) {
            
$this->helper->setIfCondition($attr["if"]);
        }
        
        return 
true;
    }
    
    function 
tagstart_extension_functions_function($attr) {
        return 
$this->tagstart_extension_function($attr);
    }
        
    function 
tagstart_function_summary($attr
    {
        return 
$this->noAttributes($attr);
    }

    function 
tagend_function_summary($attr$data
    {
        return 
$this->helper->setSummary(trim($data));
    }

    function 
tagstart_function_description($attr)
    {
        
$this->verbatim();
        return 
$this->noAttributes($attr);
    }

    function 
tagend_function_description($attr$data
    {
        return 
$this->helper->setDescription(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagstart_function_proto($attr)
    {
        return 
$this->noAttributes($attr);
    }

    function 
tagend_function_proto($attr$data)
    {
        return 
$this->helper->setProto(trim($data), $this->extension);
    }

    function 
tagstart_function_code($attr)
    {
        
$err $this->checkAttributes($attr, array("src"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
                                      
        if (isset(
$attr["src"])) {
            if (!
file_exists($attr["src"])) {
                return 
PEAR::raiseError("'src' file '$attr[src]' not found in <code>");                    
            }
            if (!
is_readable($attr["src"])) {
                return 
PEAR::raiseError("Cannot read 'src' file '$attr[src]' in <code>");                    
            }
        }
    }

    function 
tagend_function_code($attr$data$line=0$file="")
    {
        if (isset(
$attr["src"])) {
            return 
$this->helper->setCode(CodeGen_Tools_IndentC::linetrim(file_get_contents($attr["src"])));
        } else {
            return 
$this->helper->setCode($data$line$file);
        }
    }
    
    function 
tagstart_function_notest($attr)
    {
        return 
$this->noAttributes($attr);
    }

    function 
tagend_function_notest($attr$data)
    {
        return 
$this->helper->setTestCode("");
    }

    function 
tagstart_function_test($attr)
    {
        return 
$this->noAttributes($attr);
    }

    function 
tagstart_function_test_description($attr)
    {
        return 
$this->noAttributes($attr);
    }

    function 
tagend_function_test_description($attr$data)
    {
        return 
$this->helper->setTestDescription(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagstart_function_test_code($attr)
    {
        return 
$this->noAttributes($attr);
    }

    function 
tagend_function_test_code($attr$data)
    {
        return 
$this->helper->setTestCode(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagstart_function_test_result($attr)
    {
        return 
$this->checkAttributes($attr, array("mode"));
    }

    function 
tagend_function_test_result($attr$data)
    {
        return 
$this->helper->setTestResult(CodeGen_Tools_IndentC::linetrim($data), @$attr['mode']);
    } 

    function 
tagstart_function_test_ini($attr)
    {
        return 
$this->noAttributes($attr);
    }

    function 
tagend_function_test_ini($attr$data)
    {
        return 
$this->helper->setTestIni(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagstart_function_test_skipif($attr)
    {
        return 
$this->noAttributes($attr);
    }

    function 
tagend_function_test_skipif($attr$data)
    {
        return 
$this->helper->setTestSkipIf(CodeGen_Tools_IndentC::linetrim($data));
    }



    function 
tagend_extension_function($attr$data
    {
        
$err $this->extension->addFunction($this->helper);
        
$this->popHelper();
        return 
$err;
    }
    




    function 
tagend_extension_functions_function($attr$data)
    {
        return 
$this->tagend_extension_function($attr$data);
    }
    



    function 
tagstart_functions($attr) {
        return 
$this->noAttributes($attr);
    }        


    function 
tagstart_extension_resource($attr)
    {
        return 
$this->tagstart_resources_resource($attr);
    }
    
    function 
tagstart_resources_resource($attr)
    {
        
$this->pushHelper(new CodeGen_PECL_Element_Resource);
        
        if (isset(
$attr["name"])) {
            
$err $this->helper->setName($attr["name"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("name attribut for resource missing");
        }
        
        if (isset(
$attr["payload"])) {
            
$err $this->helper->setPayload($attr["payload"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("payload attribut for resource missing");
        }
        
        if (isset(
$attr["alloc"])) {
            
$err $this->helper->setAlloc($this->toBool($attr["alloc"]));
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } 
        
        return 
true;
    }

    function 
tagend_resource_destruct($attr$data)
    {
        return 
$this->helper->setDestruct(CodeGen_Tools_IndentC::linetrim($data));
    }
    
    function 
tagend_resource_description($attr$data)
    {
        return 
$this->helper->setDescription(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagend_extension_resource($attr$data) {
        return 
$this->tagend_resources_resource($attr$data);
    }
    
    function 
tagend_resources_resource($attr$data
    {
        
$err $this->extension->addResource($this->helper);
        
$this->popHelper();
        return 
$err;
    }
    
    
    function 
tagend_resources($attr$data) {
        return 
true;
    }
    
    
    
    function 
tagend_extension_logo($attr$data)
    {
        
// TODO checks
        
if (!isset($attr["name"])) {
            
$attr["name"] = $this->extension->getName();
        }
        
        
$logo = new CodeGen_PECL_Element_Logo($attr["name"]);
        
        if (!isset(
$attr["mimetype"])) {
            
$attr["mimetype"] = false;
        }
        
        if (isset(
$attr["src"])) {
            
$err $logo->loadFile($attr["src"], $attr["mimetype"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            
// we support base64 encoded embedded data only
            
$decoded base64_decode($data);
            if (!
is_string($decoded)) {
                return 
PEAR::raiseError("only base64 encoded image data is supported for embedded data");
            }
            
            
$err $logo->setData($decoded$attr["mimetype"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }
        
        return 
$this->extension->addLogo($logo);
    }
    
    
    
    function 
tagend_extension_constant($attr$data)
    {
        return 
$this->tagend_constants_constant($attr$data);
    }
    
    function 
tagend_constants_constant($attr$data)
    {
        
$const = new CodeGen_PECL_Element_Constant;

        if (isset(
$attr["name"])) {
            
$err $const->setName($attr["name"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("name attribut for constant missing");
        }

        if (isset(
$attr["type"])) {
            
$err $const->setType($attr["type"]);
        } else {
            
$err $const->setType("int"); // default
        
}
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        if (isset(
$attr["value"])) {
            
$err $const->setValue($attr["value"]);
        } else {
            
$const->setDefine(false);
            
$err $const->setValue($attr["name"]); // default -> mimic a C #define or enum value                
        

        if (
PEAR::isError($err)) {
            return 
$err;
        }
            
        if (isset(
$attr["define"])) {
            
$err $const->setDefine($attr["define"]);
        }
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        
$const->setDesc(CodeGen_Tools_IndentC::linetrim($data));

        return 
$this->extension->addConstant($const);
    }

    function 
tagend_constants($attr$data) {
        return 
true;
    }


        
    function 
tagend_extension_global($attr$data)
    {
        return 
$this->tagend_globals_global($attr$data);
    }


    function 
tagend_globals_global($attr$data)
    {
        
$global = new CodeGen_PECL_Element_Global;

        if (isset(
$attr["name"])) {
            
$err $global->setName($attr["name"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("name attribut for global missing");
        }

        if (isset(
$attr["type"])) {
            
$err $global->setType($attr["type"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("type attribut for global missing");
        }

        if (isset(
$attr["value"])) {
            
$err $global->setValue($attr["value"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } 

        return 
$this->extension->addGlobal($global);
    }

        

    function 
tagend_extension_phpini($attr$data
    {
        return 
$this->tagend_globals_phpini($attr$data);
    }

    function 
tagend_globals_phpini($attr$data)
    {
        
$ini = new CodeGen_PECL_Element_Ini;

        if (isset(
$attr["name"])) {
            
$err $ini->setName($attr["name"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("name attribut for php.ini directive missing");
        }

        if (isset(
$attr["type"])) {
            
$err $ini->setType($attr["type"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } 

        if (isset(
$attr["value"])) {
            
$err $ini->setValue($attr["value"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } 

        if (isset(
$attr["access"])) {
            
$err $ini->setAccess($attr["access"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } 

        if (isset(
$attr["onupdate"])) {
            
$err $ini->setOnUpdate($attr["onupdate"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } 

        
$ini->setDesc(CodeGen_Tools_IndentC::linetrim($data));

        
$err $this->extension->addPhpini($ini);
        if (
PEAR::isError($err)) {
            return 
$err;
        }
            
        
// php.ini settings are stored in modul-global variables
        
$global = new CodeGen_PECL_Element_Global;
        
$err $global->setName($ini->getName());
        if (
PEAR::isError($err)) {
            return 
$err;
        }
        
$err $global->setType($ini->getType());
        if (
PEAR::isError($err)) {
            return 
$err;
        }
        
$err $this->extension->addGlobal($global);

        return 
$err;
    }

    function 
tagend_globals($attr$data) {
        return 
true;
    }
        





    function 
tagstart_deps_lib($attr)
    {
        
$err $this->checkAttributes($attr, array("name""platform""path""function"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
                                 
        if (!isset(
$attr["name"])) {
            return 
PEAR::raiseError("");
        }

        if (!isset(
$attr["platform"])) {
            
$attr["platform"] = "all";
        }

        
error_log("Warning: Use of <lib> tags out of <with> sections is deprecated");
     
        
$lib = new CodeGen_PECL_Dependency_Lib($attr["name"], $attr["platform"]);

        if (isset(
$attr['path'])) {
            
$lib->setPath($attr['path']);
        }

        if (isset(
$attr['function'])) {
            
$lib->setFunction($attr['function']);
        }
        
$this->extension->addLib($lib);

        return 
true;
    }

    function 
tagstart_deps_header($attr)
    {
        
$err $this->checkAttributes($attr, array("name""prepend""path"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
                                 
        
error_log("Warning: Use of <header> tags out of <with> sections is deprecated");
     
        
// TODO check name
        
$header = new CodeGen_PECL_Dependency_Header($attr["name"]);

        if (isset(
$attr['path'])) {
            
$header->setPath($attr["path"]);
        }

        if (isset(
$attr['prepend'])) {
            
$header->setPrepend($attr["prepend"]);
        }

        
$this->extension->addHeader($header);
    }


    function 
tagstart_deps_extension($attr)
    {
        
$ext = new CodeGen_PECL_Dependency_Extension;

        
$err $ext->setName($attr['name']);
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        if (isset(
$attr["type"])) {
            
$err $ext->setType($attr['type']);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }

        if (isset(
$attr["version"]) || isset($attr["rel"])) {
            if (!isset(
$attr["version"])) {
                return 
PEAR::raiseError("'rel' attribut requires 'version' ");
            }

            if (!isset(
$attr["rel"])) {
                
$attr["rel"] = "ge";
            }

            
$err $ext->setVersion($attr['version'], $attr['rel']);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }

        
$this->extension->addOtherExtension($ext);
    }
        
    function 
tagstart_deps_with($attr
    {
        
$with = new CodeGen_PECL_Dependency_With;

        if (!isset(
$attr['name'])) {
            
$attr["name"] = $this->extension->getName();
        }
        
$err $with->setName($attr["name"]);
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        if (isset(
$attr["testfile"])) {
            
$with->setTestfile($attr["testfile"]);
        }

        if (isset(
$attr["defaults"])) {
            
$with->setDefaults($attr["defaults"]);
        }

        if (isset(
$attr["mode"])) {
            
$err $with->setMode($attr["mode"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }

        
$this->pushHelper($with);

        return 
true;
    }

    function 
tagstart_deps_with_header($attr
    {
        
$err $this->checkAttributes($attr, array("name""prepend""path"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
                                 
        
// TODO check name
        
$header = new CodeGen_PECL_Dependency_Header($attr["name"]);

        if (isset(
$attr['path'])) {
            
$header->setPath($attr["path"]);
        }

        if (isset(
$attr['prepend'])) {
            
$header->setPrepend($attr["prepend"]);
        }

        
$this->helper->addHeader($header);
    }

    function 
tagstart_deps_with_lib($attr
    {
        
$err $this->checkAttributes($attr, array("name""platform""path""function"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
                                 
        if (!isset(
$attr["name"])) {
            return 
PEAR::raiseError("");
        }

        if (!isset(
$attr["platform"])) {
            
$attr["platform"] = "all";
        }

        
$lib = new CodeGen_PECL_Dependency_Lib($attr["name"], $attr["platform"]);

        if (isset(
$attr['path'])) {
            
$lib->setPath($attr['path']);
        }

        if (isset(
$attr['function'])) {
            
$lib->setFunction($attr['function']);
        }

        
$this->helper->addLib($lib);
    }


    function 
tagend_deps_with($attr$data) {
        
$this->helper->setSummary($data);

        
$this->extension->addWith($this->helper);

        
$this->popHelper();
    }


    function 
tagstart_extension_code($attr)
    {
        if (isset(
$attr["src"])) {
            if (!
file_exists($attr["src"])) {
                return 
PEAR::raiseError("Soruce file '$attr[src]' not found");                    
            }
            if (!
is_readable($attr["src"])) {
                return 
PEAR::raiseError("Cannot read source file '$attr[src]'");                    
            }
        }
    }

    function 
tagend_extension_makefile($attr$data) {
        return 
$this->extension->addMakeFragment(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagend_deps_configm4($attr$data) {
        return 
$this->extension->addConfigFragment(CodeGen_Tools_IndentC::linetrim($data), 
                                                   isset(
$attr['position']) ? $attr['position'] : "top");
    }


    function 
tagstart_extension_test($attr) {
        static 
$testCount 0;
        
$test = new CodeGen_PECL_Element_Test();

        if (isset(
$attr["name"])) {
            
$err $test->setName($attr["name"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            if (!
$test->getName()) {
                
$test->setName(sprintf("%03d", ++$testCount));
            }
        }

        
$test->setSkipIf("!extension_loaded('".$this->extension->getName()."')");

        
$this->pushHelper($test);
    }

    function 
tagstart_extension_tests_test($attr
    {
        return 
$this->tagstart_extension_test($attr);
    }

    function 
tagend_test_title($attr$data) {
        
$this->helper->setTitle(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagend_test_description($attr$data) {
        
$this->helper->setDescription(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagend_test_skipif($attr$data) {
        
$this->helper->setSkipIf(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagend_test_get($attr$data) {
        
$this->helper->setGet(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagend_test_post($attr$data) {
        
$this->helper->setPost(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagstart_test_code($attr)
    {
        if (isset(
$attr["src"])) {
            if (!
file_exists($attr["src"])) {
                return 
PEAR::raiseError("Soruce file '$attr[src]' not found");                    
            }
            if (!
is_readable($attr["src"])) {
                return 
PEAR::raiseError("Cannot read source file '$attr[src]'");                    
            }
        }
    }

    function 
tagend_test_code($attr$data) {
        if (isset(
$attr["src"])) {
            
$this->helper->setCode(CodeGen_Tools_IndentC::linetrim(file_get_contents($attr["src"])));
        } else {
            
$this->helper->setCode(CodeGen_Tools_IndentC::linetrim($data));
        }
    }

    function 
tagend_test_result($attr$data) {
        
$err $this->helper->setOutput(CodeGen_Tools_IndentC::linetrim($data));
            
        if (isset(
$attr['mode']) && !PEAR::isError($err)) {
            
$err $this->helper->setMode($attr['mode']);
        }
            
        return 
$err;
    }

    function 
tagend_extension_test($attr$data) {
        
$test =  $this->popHelper();
        
$err $this->extension->addTest($test);
        return 
$err;
    }

    function 
tagend_extension_tests_test($attr$data) {
        return 
$this->tagend_extension_test($attr$data);
    }

    function 
tagend_extension_tests($attr$data) {
        return 
true;
    }






    function 
tagstart_class($attr)
    {
        
$err $this->checkAttributes($attr, array("name""extends""final""abstract"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        
$class = new CodeGen_PECL_Element_Class;

        
$this->pushHelper($class);

        if (isset(
$attr["name"])) {
            
$err $class->setName($attr["name"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("name attribut for class missing");
        }

        if (isset(
$attr["extends"])) {
            
$err $class->setExtends($attr["extends"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }
            
        
// TODO: make sure a class is not abstract and final at the same time

        
if (isset($attr["final"]) && $this->toBool($attr["final"])) {
            
$class->isFinal();
        }

        if (isset(
$attr["abstract"]) && $this->toBool($attr["abstract"])) {
            
$class->isAbstract();
        }

        return 
true;
    }

    function 
tagend_class_summary($attr$data
    {
        return 
$this->helper->setSummary(trim($data));
    }

    function 
tagend_class_description($attr$data
    {
        return 
$this->helper->setDescription(CodeGen_Tools_IndentC::linetrim($data));
    }

    function 
tagend_class_implements($attr$data)
    {
        
$err $this->checkAttributes($attr, array("interface"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        if (!isset(
$attr["interface"])) {
            return 
PEAR::raiseError("intarface attribute missing for <implements>");
        }

        return 
$this->helper->addInterface($attr["interface"]);
    }

    function 
tagstart_class_property($attr)
    {
        
$err $this->checkAttributes($attr, array("name""type""value""access""static"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        
$prop = new CodeGen_PECL_Element_Property;

        if (!isset(
$attr["name"])) {
            return 
PEAR::raiseError("name attribute missing for property");
        }
        
$err $prop->setName($attr["name"]);
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        if (isset(
$attr["type"])) {
            
$err $prop->setType($attr["type"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }

        if (isset(
$attr["value"])) {
            if (!isset(
$attr["type"])) {
                return 
PEAR::raiseError("property value can only be set together with type");
            }
            
$err $prop->setValue($attr["value"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }            

        if (isset(
$attr["access"])) {
            
$err $prop->setAccess($attr["access"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }

        if (isset(
$attr["static"]) && $this->toBool($attr["static"])) {
            
$prop->isStatic();
        }

        return 
$this->helper->addProperty($prop);
    }

    function 
tagstart_class_constant($attr)
    {
        
$err $this->checkAttributes($attr, array("name""type""value"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        
$const = new CodeGen_PECL_Element_ClassConstant;

        if (!isset(
$attr["name"])) {
            return 
PEAR::raiseError("name attribute missing for class constant");
        }
        
$err $const->setName($attr["name"]);
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        if (!isset(
$attr["type"])) {
            return 
PEAR::raiseError("type attribute missing for class constant");
        }
        
$err $const->setType($attr["type"]);
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        if (!isset(
$attr["value"])) {
            return 
PEAR::raiseError("value attribute missing for class constant");
        }
        
$err $const->setValue($attr["value"]);
        if (
PEAR::isError($err)) {
            return 
$err;
        }

        return 
$this->helper->addConstant($const);
    }

    function 
tagstart_class_payload($attr)
    {
        
$err $this->checkAttributes($attr, array("type""alloc"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
    }
    
    function 
tagend_class_payload($attr$data
    {
        if (!isset(
$attr["type"])) {
            return 
PEAR::raiseError("type attribute missing for class payload");
        }
        
$this->helper->setPayloadType($attr["type"]);

        
$alloc = isset($attr["alloc"]) ? $this->toBool($attr["alloc"]): true;
        
$this->helper->setPayloadAlloc($alloc);
    }

    function 
tagend_class_init($attr$data
    {
        
$this->helper->setPayloadCtor($data);
    }

    function 
tagend_class_destruct($attr$data
    {
        
$this->helper->setPayloadDtor($data);
    }


    function 
tagstart_class_function($attr)
    {
        
$err $this->checkAttributes($attr, array("name""access""abstract""final""procedural"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
                                      
        
$method = new CodeGen_PECL_Element_Method($this->helper);

        
$this->pushHelper($method);
        
        if (isset(
$attr["name"])) {
            
$err $method->setName($attr["name"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("'name' attribut for <function> missing");
        }

        if (isset(
$attr["access"])) {
            
$err $method->setAccess($attr["access"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }
        
        if (isset(
$attr["abstract"]) && $this->toBool($attr["abstract"])) {
            
$err $method->isAbstract();
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }
        
        if (isset(
$attr["final"]) && $this->toBool($attr["final"])) {
            
$err $method->isFinal();
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }
        
        if (isset(
$attr["procedural"])) {
            if (
$attr["procedural"] == "" || $attr["procedural"] == "yes") {
                
$attr["procedural"] = "default";
            }
            
$err $method->setProceduralName($attr["procedural"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }

        return 
true;
    }
    
    function 
tagend_class_function($attr$data
    {
        
$method $this->helper;
        
$this->popHelper();
        
$err $this->helper->addMethod($method);
        return 
$err;
    }
    
    function 
tagend_class($attr$data
    {
        
$err $this->extension->addClass($this->helper);
        
$this->popHelper();
        return 
true;
    }

    function 
tagstart_interface($attr)
    {
        
$err $this->checkAttributes($attr, array("name""extends"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
                                      
        
$class = new CodeGen_PECL_Element_Interface;

        
$this->pushHelper($class);

        if (isset(
$attr["name"])) {
            
$err $class->setName($attr["name"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("name attribut for class missing");
        }

        if (isset(
$attr["extends"])) {
            
$err $class->setExtends($attr["extends"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        }
            
        return 
true;
    }

    function 
tagstart_interface_function($attr)
    {
        
$err $this->checkAttributes($attr, array("name"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
                                      
        
$method = new CodeGen_PECL_Element_Method($this->helper);
        
$method->isAbstract();
        
$method->isInterface();
        
$this->pushHelper($method);
        
        if (isset(
$attr["name"])) {
            
$err $method->setName($attr["name"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("'name' attribut for <function> missing");
        }

        return 
true;
    }
    
    function 
tagend_interface_function($attr$data
    {
        
$method $this->helper;
        
$this->popHelper();
        
$err $this->helper->addMethod($method);
        return 
$err;
    }
    

    function 
tagend_interface($attr$data
    {
        
$err $this->extension->addInterface($this->helper);
        
$this->popHelper();
        return 
true;
    }

    function 
tagstart_stream($attr)
    {
        
$err $this->checkAttributes($attr, array("name"));
        if (
PEAR::isError($err)) {
            return 
$err;
        }
                                      
        
$this->pushHelper(new CodeGen_PECL_Element_Stream);            

        if (isset(
$attr["name"])) {
            
$err $this->helper->setName($attr["name"]);
            if (
PEAR::isError($err)) {
                return 
$err;
            }
        } else {
            return 
PEAR::raiseError("'name' attribut for <stream> missing");
        }
    }

    function 
tagend_stream_open($attr$data)
    {
        
$this->helper->addCode("open"$data);
    }

    function 
tagend_stream_close($attr$data)
    {
        
$this->helper->addCode("close"$data);
    }

    function 
tagend_stream_stat($attr$data)
    {
        
$this->helper->addCode("stat"$data);
    }

    function 
tagend_stream_urlstat($attr$data)
    {
        
$this->helper->addCode("urlstat"$data);
    }

    function 
tagend_stream_diropen($attr$data)
    {
        
$this->helper->addCode("diropen"$data);
    }

    function 
tagend_stream_unlink($attr$data)
    {
        
$this->helper->addCode("unlink"$data);
    }

    function 
tagend_stream_rename($attr$data)
    {
        
$this->helper->addCode("rename"$data);
    }

    function 
tagend_stream_mkdir($attr$data)
    {
        
$this->helper->addCode("mkdir"$data);
    }

    function 
tagend_stream_rmdir($attr$data)
    {
        
$this->helper->addCode("rmdir"$data);
    }

    function 
tagend_stream_summary($attr$data)
    {
        
$this->helper->addCode("summary"$data);
    }

    function 
tagend_stream_write($attr$data)
    {
        
$this->helper->addCode("write"$data);
    }

    function 
tagend_stream_read($attr$data)
    {
        
$this->helper->addCode("read"$data);
    }

    function 
tagend_stream_flush($attr$data)
    {
        
$this->helper->addCode("flush"$data);
    }

    function 
tagend_stream_seek($attr$data)
    {
        
$this->helper->addCode("seek"$data);
    }

    function 
tagend_stream_cast($attr$data)
    {
        
$this->helper->addCode("cast"$data);
    }

    function 
tagend_stream_set($attr$data)
    {
        
$this->helper->addCode("set"$data);
    }

    function 
tagend_stream($attr$data)
    {
        
$this->extension->addStream($this->helper);
        
$this->popHelper();
    }

    function 
tagstart_channel($attr)
    {
        return 
$this->noAttributes($attr);
    }

    function 
tagend_channel($attr$data)
    {
        return 
$this->extension->setChannel($data);
    }
}


/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * indent-tabs-mode:nil
 * End:
 */
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

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

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0312 ]--