} } } } } } } } //require_once($config_dir . '/config.php'); require_once '/export/servers/' . $v_path . '/PhpCodeFactory/code/parseConfig.php'; $tDtl = array(); $tDtl['IP'] = $agentip; $tDtl['PORT'] = $agentport; $tDtl['TOKEN'] = $accesstoken; parseConfig($cfg, $tDtl); if ($php_dir != null) { TPL2CODE::buildDTCfg($tDtl, $php_dir, $v_path); TPL2CODE::buildDTCPHP($tDtl, $php_dir, $v_path); var_dump(TPL2CODE::$errMsg); } if ($java_dir != null) { TPL2CODE::buildDTCfg($tDtl, $java_dir, $v_path); TPL2CODE::buildDTCJAVA($tDtl, $java_dir, $v_path); var_dump(TPL2CODE::$errMsg); } if ($cplus_dir != null) { TPL2CODE::buildDTCfg($tDtl, $cplus_dir, $v_path); TPL2CODE::buildDTCCplus($tDtl, $cplus_dir, $v_path); var_dump(TPL2CODE::$errMsg); } //End Of Script
static function buildDTCCplus($tDtl, $dir, $path) { self::clearError(); $cfgFile = $dir . '/' . $tDtl['TABLE_NAME'] . '.conf'; $dtcCfg = parse_ini_file($cfgFile, true); if (!is_array($dtcCfg)) { self::$errCode = 100; self::$errMsg = '读取TTC配置文件失败'; return false; } if (!isset($dtcCfg['FIELD1']) || !isset($dtcCfg['TABLE_DEFINE']['TableName'])) { self::$errCode = 100; self::$errMsg = 'TTC配置文件格式错误'; return false; } $dtcFieldLst = array(); for ($i = 1;; ++$i) { $key = 'FIELD' . $i; if (!key_exists($key, $dtcCfg)) { break; } if (!is_array($dtcCfg[$key])) { break; } $index = $i - 1; $dtcFieldLst[$index] = array(); $dtcFieldLst[$index]['name'] = $dtcCfg[$key]['FieldName']; if (isset($dtcCfg[$key]['DefaultValue']) && $dtcCfg[$key]['DefaultValue'] == "auto_increment") { $dtcFieldLst[$index]['auto'] = true; } if ($dtcCfg[$key]['FieldType'] == 1) { //signed $dtcFieldLst[$index]['type'] = 1; switch ($dtcCfg[$key]['FieldSize']) { case 1: $dtcFieldLst[$index]['min'] = -128; $dtcFieldLst[$index]['max'] = 127; break; case 2: $dtcFieldLst[$index]['min'] = -65536; $dtcFieldLst[$index]['max'] = 0x7fff; break; case 4: $dtcFieldLst[$index]['min'] = -2147483648; $dtcFieldLst[$index]['max'] = 0x7fffffff; break; case 8: //当做字符串处理 // $dtcFieldLst[$index]['min'] = -9223372036854775808; // $dtcFieldLst[$index]['max'] = 0x7FFFFFFFFFFFFFFF; $dtcFieldLst[$index]['min'] = -2147483648; $dtcFieldLst[$index]['max'] = 0x7fffffff; break; default: self::$errCode = 100; self::$errMsg = "FILED[" . $dtcCfg[$key]['FieldName'] . "] SIZE TOO BIG " . $dtcCfg[$key]['FieldSize']; return false; } } else { if ($dtcCfg[$key]['FieldType'] == 2) { //unsigned $dtcFieldLst[$index]['type'] = 2; $dtcFieldLst[$index]['min'] = 0; switch ($dtcCfg[$key]['FieldSize']) { case 1: $dtcFieldLst[$index]['max'] = 255; break; case 2: $dtcFieldLst[$index]['max'] = 0xffff; break; case 4: $dtcFieldLst[$index]['max'] = 0xffffffff; break; case 8: //当做字符串处理 // $dtcFieldLst[$index]['min'] = 0; // $dtcFieldLst[$index]['max'] = 0xFFFFFFFFFFFFFFFF; $dtcFieldLst[$index]['min'] = 0; $dtcFieldLst[$index]['max'] = 0xffffffff; break; default: self::$errCode = 100; self::$errMsg = "FILED[" . $dtcCfg[$key]['FieldName'] . "] SIZE TOO BIG " . $dtcCfg[$key]['FieldSize']; return false; } } else { if ($dtcCfg[$key]['FieldType'] == 4) { //STRING $dtcFieldLst[$index]['type'] = 4; $dtcFieldLst[$index]['min'] = 0; $dtcFieldLst[$index]['max'] = $dtcCfg[$key]['FieldSize']; } else { if ($dtcCfg[$key]['FieldType'] == 5) { //STRING $dtcFieldLst[$index]['type'] = 5; $dtcFieldLst[$index]['min'] = 0; $dtcFieldLst[$index]['max'] = $dtcCfg[$key]['FieldSize']; } else { if ($dtcCfg[$key]['FieldType'] == 3) { //FLOAT $dtcFieldLst[$index]['type'] = 3; $dtcFieldLst[$index]['min'] = -0xffffffff; $dtcFieldLst[$index]['max'] = 0xffffffff; } else { self::$errCode = 100; self::$errMsg = "FILED[" . $dtcCfg[$key]['FieldName'] . "TYPE IS INVALID "; return false; } } } } } } $itLst = $tDtl['FIELDS']; $str = "/export/servers/" . $path . "/PhpCodeFactory/tpl/tpl_c++/"; $tpl = new Template($str); $tpl->set_file("main", "dtc.h"); $tpl->set_var('Dtckey', $tDtl['TTCKEY']); $tpl->set_var('IP', $tDtl['IP']); $tpl->set_var('Port', $tDtl['PORT']); $tpl->set_var('Token', $tDtl['TOKEN']); //$tpl->set_var('PRIKEY', $tDtl['FIELDS'][0]['name']); $tpl->set_var('TableName', $tDtl['TABLE_NAME']); $tpl->set_block('main', 'FIELD1', 'FIELD1S'); //$tpl->set_block('main', 'FIELD2', 'FIELD2S'); //$len = self::getFieldsMaxLen($itLst); foreach ($dtcFieldLst as $it) { $strName = str_pad($it['name'], strlen($it['name'])); $tpl->set_var('FIELD1Name', $strName); $tpl->set_var('FIELD1Type', $it['type']); $tpl->set_var('minsize', $it['min']); $tpl->set_var('maxsize', $it['max']); $tpl->parse('FIELD1S', 'FIELD1', true); } foreach ($itLst as $it) { $strName = str_pad($it['name'], strlen($it['name'])); $tpl->set_var('FIELD2Name', $strName); $tmp = $it['type'] != 4 && $it['type'] != 5 ? ' XXX' : "'XXX'"; $tpl->set_var('FIELD2_VALUE', $tmp); $tpl->set_var('FIELD2_NAME_CH', $it['cname']); $tpl->parse('FIELD2S', 'FIELD2', true); } $tpl->parse("main", "main"); $v = $tpl->get_var("main"); self::writeFile($dir . '/', "dtc_{$tDtl['TABLE_NAME']}.h", $v); $tpl1 = new Template($str); $tpl1->set_file("main1", "dtc.cpp"); $tpl1->set_var('TableName', $tDtl['TABLE_NAME']); $tpl1->parse("main1", "main1"); $v1 = $tpl1->get_var("main1"); self::writeFile($dir . '/', "dtc_{$tDtl['TABLE_NAME']}.cpp", $v1); $errorCode = false; $ss = "/export/servers/" . $path . "/PhpCodeFactory/tpl/tpl_c++/ttcapi.h "; $cmd = 'cp -p ' . $ss . $dir; exec($cmd, $errorCode); return $errorCode; }