Example #1
0
 /**
  * Load all class symbols from classes.json, its enumerations from
  * class_enumerations.json and variables from class_variables.json.
  */
 private function LoadClassesFromJson()
 {
     $classes_def = Json::Decode(file_get_contents($this->definitions_path . "classes.json"));
     $enumerations_def = array();
     if (file_exists($this->definitions_path . "class_enumerations.json")) {
         $enumerations_def = Json::Decode(file_get_contents($this->definitions_path . "class_enumerations.json"));
     }
     $variables_def = array();
     if (file_exists($this->definitions_path . "class_variables.json")) {
         $variables_def = Json::Decode(file_get_contents($this->definitions_path . "class_variables.json"));
     }
     foreach ($classes_def as $header => $namespaces) {
         $this->symbols->AddHeader($header);
         foreach ($namespaces as $namespace => $classes) {
             foreach ($classes as $class_name => $methods) {
                 $class = new Element\ClassElement($class_name);
                 // Set class details
                 if (isset($methods["_description"])) {
                     $class->description = $methods["_description"];
                     unset($methods["_description"]);
                 }
                 if (isset($methods["_parents"])) {
                     $class->AddParents($methods["_parents"]);
                     unset($methods["_parents"]);
                 }
                 if (isset($methods["_struct"])) {
                     $class->struct = true;
                     unset($methods["_struct"]);
                 }
                 if (isset($methods["_forward_declaration"])) {
                     $class->forward_declaration = true;
                     unset($methods["_forward_declaration"]);
                 }
                 if (isset($methods["_platforms"])) {
                     $class->platforms = $methods["_platforms"];
                     unset($methods["_platforms"]);
                 }
                 // Add methods
                 foreach ($methods as $method_name => $method_overloads) {
                     $method = new Element\FunctionElement($method_name);
                     foreach ($method_overloads as $method_overload) {
                         $overload = new Element\Overload($method_overload["description"]);
                         $overload->SetReturnType(new Element\ReturnType($method_overload["return_type"]));
                         if (isset($method_overload["constant"])) {
                             $overload->constant = $method_overload["constant"];
                         }
                         if (isset($method_overload["static"])) {
                             $overload->static = $method_overload["static"];
                         }
                         if (isset($method_overload["virtual"])) {
                             $overload->virtual = $method_overload["virtual"];
                         }
                         if (isset($method_overload["pure_virtual"])) {
                             $overload->pure_virtual = $method_overload["pure_virtual"];
                         }
                         if (isset($method_overload["protected"])) {
                             $overload->protected = $method_overload["protected"];
                         }
                         if (isset($method_overload["parameters"])) {
                             foreach ($method_overload["parameters"] as $parameter) {
                                 if (!isset($parameter["value"])) {
                                     $parameter["value"] = "";
                                 }
                                 if (!isset($parameter["description"])) {
                                     $parameter["description"] = "";
                                 }
                                 $param = new Element\Parameter($parameter["name"], $parameter["type"], $parameter["value"], $parameter["description"]);
                                 if (isset($parameter["is_array"])) {
                                     $param->is_array = true;
                                 }
                                 $overload->AddParameter($param);
                             }
                         }
                         $method->AddOverload($overload);
                     }
                     $class->AddMethod($method);
                 }
                 // Add enumerations
                 if (isset($enumerations_def[$header][$namespace][$class_name])) {
                     foreach ($enumerations_def[$header][$namespace][$class_name] as $enumeration_name => $enumeration_data) {
                         if (!isset($enumeration_data["description"])) {
                             $enumeration_data["description"] = "";
                         }
                         $class->AddEnumeration(new Element\Enumeration($enumeration_name, $enumeration_data["options"], $enumeration_data["description"]));
                     }
                 }
                 // Add variables
                 if (isset($variables_def[$header][$namespace][$class_name])) {
                     foreach ($variables_def[$header][$namespace][$class_name] as $variable_name => $variable_options) {
                         $variable = new Element\ClassVariable($variable_name, $variable_options["type"]);
                         if (isset($variable_options["static"])) {
                             $variable->static = $variable_options["static"];
                         }
                         if (isset($variable_options["mutable"])) {
                             $variable->mutable = $variable_options["mutable"];
                         }
                         if (isset($variable_options["protected"])) {
                             $variable->protected = $variable_options["protected"];
                         }
                         if (isset($variable_options["public"])) {
                             $variable->public = $variable_options["public"];
                         }
                         if (isset($variable_options["description"])) {
                             $variable->description = $variable_options["description"];
                         }
                         $class->AddVariable($variable);
                     }
                 }
                 $this->symbols->headers[$header]->AddClass($class, $namespace);
             }
         }
     }
     unset($classes_def);
     unset($enumerations_def);
     unset($variables_def);
 }
Example #2
0
 /**
  * Save class symbols into classes.json, the class
  * enumerations into class_enumerations.json and its variables into
  * class_variables.json.
  */
 private function SaveClassesToJson()
 {
     $classes = array();
     $enumerations = array();
     $variables = array();
     foreach ($this->symbols->headers as $header) {
         if (!$header->HasClasses()) {
             continue;
         }
         foreach ($header->namespaces as $namespace) {
             if (!$namespace->HasClasses()) {
                 continue;
             }
             foreach ($namespace->classes as $class) {
                 // Set class details
                 if ($class->description) {
                     $classes[$header->name][$namespace->name][$class->name]["_description"] = $class->description;
                 }
                 if ($class->parents) {
                     foreach ($class->parents as $parent) {
                         $classes[$header->name][$namespace->name][$class->name]["_parents"][] = $parent;
                     }
                 }
                 if ($class->struct) {
                     $classes[$header->name][$namespace->name][$class->name]["_struct"] = $class->struct;
                 }
                 if ($class->forward_declaration) {
                     $classes[$header->name][$namespace->name][$class->name]["_forward_declaration"] = $class->forward_declaration;
                 }
                 if ($class->platforms) {
                     $classes[$header->name][$namespace->name][$class->name]["_platforms"] = $class->platforms;
                 }
                 // Get methods
                 foreach ($class->methods as $function) {
                     foreach ($function->overloads as $overload) {
                         $parameters = array();
                         if ($overload->HasParameters()) {
                             foreach ($overload->parameters as $parameter) {
                                 $parameter_array = array();
                                 $parameter_array["name"] = $parameter->name;
                                 $parameter_array["type"] = $parameter->original_type;
                                 if ($parameter->is_array) {
                                     $parameter_array["is_array"] = $parameter->is_array;
                                 }
                                 if ($parameter->default_value) {
                                     $parameter_array["value"] = $parameter->default_value;
                                 }
                                 if (trim($parameter->description)) {
                                     $parameter_array["description"] = $parameter->description;
                                 }
                                 $parameters[] = $parameter_array;
                             }
                             $classes[$header->name][$namespace->name][$class->name][$function->name][] = ["description" => $overload->description, "return_type" => $overload->return_type->original_type, "parameters" => $parameters];
                         } else {
                             $classes[$header->name][$namespace->name][$class->name][$function->name][] = ["description" => $overload->description, "return_type" => $overload->return_type->original_type];
                         }
                     }
                 }
                 // Get enumerations
                 foreach ($class->enumerations as $enumeration) {
                     if (trim($enumeration->description)) {
                         $enumerations[$header->name][$namespace->name][$class->name][$enumeration->name] = ["options" => $enumeration->options, "description" => $enumeration->description];
                     } else {
                         $enumerations[$header->name][$namespace->name][$class->name][$enumeration->name] = ["options" => $enumeration->options];
                     }
                 }
                 // Get variables
                 foreach ($class->variables as $variable) {
                     $variable_array = array();
                     if (trim($variable->type)) {
                         $variable_array["type"] = $variable->type;
                     }
                     if (trim($variable->static)) {
                         $variable_array["static"] = $variable->static;
                     }
                     if (trim($variable->protected)) {
                         $variable_array["protected"] = $variable->protected;
                     }
                     if (trim($variable->mutable)) {
                         $variable_array["mutable"] = $variable->mutable;
                     }
                     if (trim($variable->description)) {
                         $variable_array["description"] = $variable->description;
                     }
                     $variables[$header->name][$namespace->name][$class->name][$variable->name] = $variable_array;
                 }
             }
         }
     }
     if (count($classes) > 0) {
         file_put_contents($this->definitions_path . "classes.json", Json::Encode($classes));
         unset($classes);
     }
     if (count($enumerations) > 0) {
         file_put_contents($this->definitions_path . "class_enumerations.json", Json::Encode($enumerations));
         unset($enumerations);
     }
     if (count($variables) > 0) {
         file_put_contents($this->definitions_path . "class_variables.json", Json::Encode($variables));
         unset($variables);
     }
 }