improve xmacro exporter
This commit is contained in:
@@ -22,7 +22,7 @@ class CStructArrayExporter extends BaseExporter
|
||||
return 'c';
|
||||
}
|
||||
|
||||
private function cify($name)
|
||||
protected function cify($name)
|
||||
{
|
||||
$name = preg_replace('/[^a-z0-9_]/i', '_', $name);
|
||||
if (ctype_digit($name[0])) {
|
||||
@@ -79,49 +79,60 @@ class CStructArrayExporter extends BaseExporter
|
||||
}
|
||||
|
||||
echo " { ";
|
||||
|
||||
$firstf = true;
|
||||
foreach ($fields as $field) {
|
||||
if ($firstf) {
|
||||
$firstf = false;
|
||||
} else {
|
||||
echo ", ";
|
||||
}
|
||||
|
||||
$val = 0;
|
||||
switch ($field->type) {
|
||||
case 'string':
|
||||
$val = "";
|
||||
break;
|
||||
|
||||
case 'bool':
|
||||
$val = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (isset($row->{$field->name})) {
|
||||
$val = $row->{$field->name};
|
||||
}
|
||||
|
||||
// export to C format
|
||||
switch ($field->type) {
|
||||
case 'string':
|
||||
echo '"' . addcslashes($val, "\0..\37!@\@\177..\377") . '"';
|
||||
break;
|
||||
|
||||
case 'bool':
|
||||
echo (int)$val;
|
||||
break;
|
||||
|
||||
case 'int':
|
||||
case 'float':
|
||||
echo $val;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->dumpRow($fields, $row);
|
||||
echo " }";
|
||||
}
|
||||
|
||||
echo "\n};\n";
|
||||
}
|
||||
|
||||
protected function dumpRow($fields, $row, $noQuoteCols=[], $spaces = true)
|
||||
{
|
||||
$firstf = true;
|
||||
foreach ($fields as $field) {
|
||||
if ($firstf) {
|
||||
$firstf = false;
|
||||
} else {
|
||||
if ($spaces)
|
||||
echo ", ";
|
||||
else
|
||||
echo ",";
|
||||
}
|
||||
|
||||
$val = 0;
|
||||
switch ($field->type) {
|
||||
case 'string':
|
||||
$val = "";
|
||||
break;
|
||||
|
||||
case 'bool':
|
||||
$val = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (isset($row->{$field->name})) {
|
||||
$val = $row->{$field->name};
|
||||
}
|
||||
|
||||
// export to C format
|
||||
switch ($field->type) {
|
||||
case 'string':
|
||||
if (in_array($field->name, $noQuoteCols)) {
|
||||
echo $val;
|
||||
} else {
|
||||
echo '"' . addcslashes($val, "\0..\37!@\@\177..\377") . '"';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'bool':
|
||||
echo (int)$val;
|
||||
break;
|
||||
|
||||
case 'int':
|
||||
case 'float':
|
||||
echo $val;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user