function actionClass($id = null)
 {
     if ($id == null) {
         $this->render('classes', array('classes' => Class_Prog::model()->findAll()));
     } else {
         $c = Class_Prog::model()->findByPk($id);
         if ($c == null) {
             throw new CHttpException(404, 'The requested page does not exist.');
         }
         $this->render('class', array('class' => $c));
     }
 }
 public function actionDiff($id, $mode)
 {
     if (!isset(Yii::app()->session['code'])) {
         $this->redirect(array('index'));
     }
     $class = Class_Prog::model()->findByPk($id);
     if ($class == null) {
         throw new CHttpException(404, 'Unable to find the requested class.');
     }
     $original = $this->renderPartial('/generator/cpp_class_decl', array('raw' => 1, 'class' => $class), true);
     $new = Yii::app()->session['code'];
     $diff = TextDiff::compare($original, $new, $mode);
     $this->render('diff', array('class' => $class, 'diff' => $diff, 'new' => $new, 'mode' => $mode));
 }
示例#3
0
 private function type_id($name)
 {
     if (array_key_exists($name, $this->extra_data_types)) {
         return $this->extra_data_types[$name];
     }
     $qual = explode("::", $name);
     $unqual = $qual[count($qual) - 1];
     $classes = Class_Prog::model()->findAllByAttributes(array('name' => $unqual));
     foreach ($classes as $class) {
         if ($class->name == $name || $class->full_name() == $name) {
             return $this->class_id($class->id_class);
         }
     }
     return $this->extra_data_types[$name] = $this->generic_id();
     // "X.".count($this->extra_data_types);
 }
 function internalFile($name, $ext, $raw)
 {
     $ns = explode('/', $name);
     $name = $ns[count($ns) - 1];
     $camel_name = str_replace(' ', '', ucwords(str_replace('_', ' ', $name)));
     $classes = Class_Prog::model()->findAll('name = :n1 OR name = :n2', array('n1' => $name, 'n2' => $camel_name));
     for ($i = count($ns) - 2, $l = 1; $i >= 0 && count($classes) > 1; $i--, $l++) {
         $new_classes = array();
         foreach ($classes as $c) {
             $t = $c->ancestor_level($l);
             if ($t != null && $t->name == $ns[$i]) {
                 $new_classes[] = $c;
             }
         }
         $classes = $new_classes;
     }
     if (count($classes) == 0) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     $class = $classes[0];
     $view = $ext == 'cpp' ? 'impl' : 'decl';
     $this->render_code('cpp_class', $raw, false, array('class' => $class, 'view' => $view));
 }
 /**
  * Displays a particular model.
  * @param integer $id the ID of the model to be displayed
  */
 public function actionView($id)
 {
     $model = $this->loadModel($id);
     if (isset($_REQUEST['add_package'])) {
         $class = Package::model()->findByPk($_REQUEST['add_package']);
         if ($class != null) {
             $nm = new ClassRequirement();
             $nm->id_requirement = $model->id_requirement;
             $nm->id_package = $class->id_package;
             $nm->save(false);
         }
     }
     if (isset($_REQUEST['add_class'])) {
         $class = Class_Prog::model()->findByPk($_REQUEST['add_class']);
         if ($class != null) {
             $nm = new ClassRequirementReal();
             $nm->id_requirement = $model->id_requirement;
             $nm->id_class = $class->id_class;
             $nm->save(false);
         }
     }
     $this->render('view', array('model' => $model));
 }
 function actionParentCompletion($term)
 {
     /*$sql_command = Yii::app()->db->createCommand()
           ->select('name as value, id_class as id' )
           ->from ( 'class' )
           ->where ( 'name like :txt', 
                       array('txt'=>"%$term%") )
           ->order ( 'name' )
           ->limit ( 10 );
       $matches = $sql_command->queryAll();*/
     $classes = Class_Prog::model()->findAll(array('condition' => 'name like :txt', 'order' => 'name', 'limit' => 10, 'params' => array('txt' => "%{$term}%")));
     $matches = array();
     foreach ($classes as $c) {
         $matches[] = array('value' => $c->name . " (" . $c->with('package')->package->full_name() . ")", 'id' => $c->id_class);
     }
     echo json_encode($matches);
 }
function test_row(Method $meth, TableCreator $table_creator)
{
    $text = $meth->ttest != null ? $meth->ttest->unitTest->public_id() : '';
    return $table_creator->row(array(Class_Prog::model()->findByPK($meth->id_class)->name . "::" . $meth->name . "()", $text));
}
示例#8
0
 function CppLoader($code)
 {
     global $regex_id, $regex_qual_id, $regex_type_name;
     $regex_id = "[[:alnum:]_]+";
     $regex_qual_id = "(?:{$regex_id}::)*{$regex_id}";
     $regex_type_name = "(?:const)?\\s*{$regex_qual_id}" . "(?:<(?:[[:alnum:]_() ]|(?:<(?:[[:alnum:]_() ]|(?:<[[:alnum:]_() ]+>)?)+>)?)+>)?" . "\\**&?";
     $this->s = fopen('data://text/plain,' . $code, 'r');
     $this->namespace = array();
     $this->parents = array();
     $this->class = Class_Prog::model();
     $this->attributes = array();
     $this->methods = array();
 }
示例#9
0
<?php

$classes = Class_Prog::model()->findAll();
foreach ($classes as $class) {
    $errors = SpellCheck::check($class->description);
    if (!empty($errors)) {
        echo CHtml::link($class->name, array('class/view', 'id' => $class->id_class));
        echo " - Description";
        echo '<ul>';
        foreach ($errors as $err) {
            echo "<li>{$err}</li>";
        }
        echo '</ul>';
    }
    $errors = SpellCheck::check($class->usage);
    if (!empty($errors)) {
        echo CHtml::link($class->name, array('class/view', 'id' => $class->id_class));
        echo " - Usage";
        echo '<ul>';
        foreach ($errors as $err) {
            echo "<li>{$err}</li>";
        }
        echo '</ul>';
    }
}
示例#10
0
<?php

/// @warning HARD CODED DB PK!!!!!!!!!!!
$methods = Method::model()->findAll();
$table = $table_creator->begin_table("|m{3cm}|m{6cm}|m{2cm}|m{2cm}|") . $table_creator->heading_row(array("Classe", "Metodo", "Righe", "Test"));
foreach ($methods as $m) {
    $class = Class_Prog::model()->findByPK($m->id_class)->name;
    $table .= $table_creator->row(array($class, $m->name, '', ''));
}
$table .= $table_creator->caption("Tabella metodi") . $table_creator->end_table();
if ($table_creator->id() != 'html' && !$raw) {
    echo CodeGen::generic_render_code($table, 'latex', true);
} else {
    echo $table;
}
<?php

function class_row(Class_Prog $class, TableCreator $table_creator)
{
    $ret = "";
    $pkg_name = array();
    foreach ($class->requirements as $c) {
        array_push($pkg_name, $c->public_id());
    }
    array_unique($pkg_name);
    sort($pkg_name);
    $cells = array($table_creator->anchor($class->full_name(), $class->name), implode("\n\n", $pkg_name));
    $ret .= $table_creator->row($cells);
    return $ret;
}
$table = $table_creator->begin_table("|l|p{3cm}|") . $table_creator->heading_row(array("Classe", "Requisiti"));
$toplevel = Class_Prog::model()->findAll("t.library != 1");
foreach ($toplevel as $req) {
    $table .= class_row($req, $table_creator);
}
$table .= $table_creator->caption("Tabella classi / requisiti") . $table_creator->end_table();
if ($table_creator->id() != 'html' && !$raw) {
    echo CodeGen::generic_render_code($table, 'latex', true);
} else {
    echo $table;
}
示例#12
0
<?php

$classes = Class_Prog::model()->with('package')->findAll('library = 0');
foreach ($classes as $class) {
    echo $class->package->full_name("/") . "/" . $class->cpp_header_file() . "\n";
    if ($sources) {
        echo $class->package->full_name("/") . "/" . $class->cpp_source_file() . "\n";
    }
}