Example #1
0
        throw new Exception("invalid flag {$flag}");
    }
    return substr($ret, 2);
}
///////////////////////////////////////////////////////////////////////////////
// schema functions that will be used (and only used) by schemas
function ResetSchema()
{
    global $current_class, $preamble, $funcs, $classes, $constants;
    $current_class = '';
    $preamble = '';
    $funcs = array();
    $classes = array();
    $constants = array();
}
ResetSchema();
function DefinePreamble($p)
{
    global $preamble;
    $preamble .= $p;
}
function BeginClass($class)
{
    global $classes, $current_class;
    $current_class = $class['name'];
    if (!isset($class['parent'])) {
        $class['parent'] = null;
    }
    if (!isset($class['ifaces'])) {
        $class['ifaces'] = array();
    }
function parseIDLForMethods(&$ext_class_info, $mangleMap, $idlDir)
{
    global $scriptPath;
    $files = findIDLFiles($idlDir);
    foreach ($files as $file) {
        require $file;
        global $classes;
        foreach ($classes as $cls) {
            $cname = $cls['name'];
            if (strtolower($cname) === 'closure' || strtolower($cname) === 'generatorclosure') {
                // Ignore the C++ version of Closure and GeneratorClosure;
                // the VM uses the pure Closure class declared in systemlib.php
                continue;
            }
            $method_info = array();
            foreach ($cls['methods'] as $method) {
                $method_info[] = parseIDLMethod($method, $mangleMap, $cname);
            }
            $ext_class_info[$cname] = $method_info;
        }
        ResetSchema();
    }
}