static RESULT cmd_discard(const char** argv, int argc, GameContext* pContext, GameEventContext* pEvent) { int idx[MAX_PARAM_NUM]; int cnt = 0; int n; if(get_game_status(pContext) == Status_None) { MSG_OUT("当前不在游戏中!\n"); return R_E_STATUS; } if(argc < 2) { param_error(argv[0]); return R_E_PARAM; } for(n = 1; n < argc && cnt < MAX_PARAM_NUM; n++) { if(0 != to_int(argv[n], &idx[cnt])) { param_error(argv[0]); return R_E_PARAM; } cnt++; } return game_cmd_discard_card(pContext, pEvent, idx, cnt); }
/* * Xboard - level command * Arguments are three numbers, or four numbers with a colon between * the two in the middle: * * level 40 5 0 * * or * * level 20 1:40 2 */ static void cmd_level(void) { unsigned mps, base, inc; char *base_str; char *base_token; char *lasts; long long base_minutes; long long base_seconds; mps = get_uint(0, 1024); base_str = get_str_arg(); inc = get_uint(0, 1024); base_token = xstrtok_r(base_str, ":", &lasts); base_minutes = get_num_arg(base_token); if (base_minutes < 0 || base_minutes > 8192) param_error(); if ((base_token = xstrtok_r(NULL, ":", &lasts)) != NULL) base_seconds = get_num_arg(base_token); else base_seconds = 0; if (base_minutes < 0 || base_minutes > 59) param_error(); if (xstrtok_r(NULL, ":", &lasts) != NULL) param_error(); base = ((unsigned)base_minutes) * 60 + (unsigned)base_seconds; set_moves_left_in_time(mps); set_computer_clock(base * 100); set_time_inc(inc * 100); }
static unsigned get_uint(unsigned min, unsigned max) { long long n; n = get_num_arg(get_str_arg()); if (n < (long long)min) { (void) fprintf(stderr, "Number too low: %lld\n", n); param_error(); } if (n > (long long)max) { (void) fprintf(stderr, "Number too high: %lld\n", n); param_error(); } return (unsigned)n; }
static int get_int(int min, int max) { long long n; n = get_num_arg(get_str_arg()); if (n < (long long)min) { (void) fprintf(stderr, "Number too low: %lld\n", n); param_error(); } if (n > (long long)max) { (void) fprintf(stderr, "Number too high: %lld\n", n); param_error(); } return (int)n; }
static RESULT cmd_load(const char** argv, int argc, GameContext* pContext, GameEventContext* pEvent) { GameEventContext event; //RESULT ret; if(pContext->status != Status_None) { MSG_OUT("已经在游戏中,不能加载一个游戏进度!\n"); return R_E_STATUS; } if(argc != 2) { param_error(argv[0]); return R_E_PARAM; } // load game INIT_EVENT(&event, GameEvent_LoadGame, INVALID_PLAYER , INVALID_PLAYER, pEvent); event.file_name = argv[1]; //ret = game_load(pContext, argv[1]); //if(R_SUCC != ret) //{ // return ret; //} // game main return game_main(pContext, &event); }
static RESULT cmd_useskill(const char** argv, int argc, GameContext* pContext, GameEventContext* pEvent) { int idx; RESULT ret; if(get_game_status(pContext) == Status_None) { MSG_OUT("当前不在游戏中!\n"); return R_E_STATUS; } ret = R_DEF; if(argc >= 2 && 0 == to_int(argv[1], &idx)) { ret = game_cmd_use_skill(pContext, pEvent, idx); } else if(argc >= 2 && (0 == strcasecmp(argv[1], "weapon") || 0 == strcasecmp(argv[1], "w")) ) { ret = game_cmd_use_weapon(pContext, pEvent); } else if(argc >= 2 && (0 == strcasecmp(argv[1], "armor") || 0 == strcasecmp(argv[1], "a")) ) { ret = game_cmd_use_armor(pContext, pEvent); } else { param_error(argv[0]); return R_E_PARAM; } return ret; }
static PyObject* buffer_set( PyIOCPBufferObject* s, PyObject *args ) { const void * buffer_ptr = 0 ; DWORD buffer_len = 0; DWORD buffer_set_length = -1; PyObject* o = 0; int r = PyArg_ParseTuple( args, "O|I", &o, &buffer_set_length ); if( r == 0 ) return param_error( ); r = PyObject_AsReadBuffer( o, &buffer_ptr, (Py_ssize_t *) &buffer_len ); if( r != 0 ) return param_error( ); if( buffer_set_length < buffer_len ) buffer_len = buffer_set_length; DWORD mov_num = buffer_len; if( s->len < mov_num ) mov_num = s->len ; memcpy_s( s->ptr_start, s->len, buffer_ptr, mov_num ); Py_RETURN_NONE; }
static RESULT cmd_start(const char** argv, int argc, GameContext* pContext, GameEventContext* pEvent) { //RESULT ret; int cfg; const NewGameConfig* pConfig; GameEventContext event; if(pContext->status != Status_None) { MSG_OUT("你正在游戏中,不能开始一个新的游戏!"); return R_E_STATUS; } if(argc < 2 || 0 != to_int(argv[1], &cfg)) { param_error(argv[0]); return R_E_PARAM; } // get config struct pConfig = select_config(cfg); if(pConfig == NULL ) { param_error(argv[0]); return R_E_PARAM; } // new game INIT_EVENT(&event, GameEvent_NewGame, INVALID_PLAYER, INVALID_PLAYER, pEvent); event.new_game_config = pConfig; //ret = init_game_context(pContext, pConfig->ministers, pConfig->spies, pConfig->mutineers); //if(ret != R_SUCC) //{ // MSG_OUT("start init new game failed!"); // return ret; //} // game main return game_main(pContext, &event); }
static char* get_str_arg(void) { char *str; if ((str = get_str_arg_opt()) == NULL) { param_error(); } return str; }
static void cmd_setmovenot(void) { char *str = get_str_arg_lower(); if (strcmp(str, "coor") == 0) conf->move_not = mn_coordinate; else if (strcmp(str, "san") == 0) conf->move_not = mn_san; else param_error(); }
QVariantMap simulatorSyncCOMP(int i, QIODevice *connection, const QSqlDatabase& db, const QSqlDatabase& user_db, const QVariantMap& action, const QString& email) { Q_UNUSED(db); Q_UNUSED(connection); // Check for the 'devils' paramater if( !action.contains("devils") ) return param_error(tr("simulator_sync_comp action"), tr("devils"), tr("action %1").arg(i)); int user_id = Auth::getSingletonPtr()->queryUserID(email); if(user_id < 1) return herror("simulator_sync_comp action", tr("unknown user for " "action %1").arg(i)); QVariantList devils = action.value("devils").toList(); if(devils.count() != SLOT_COUNT_COMP) return herror("simulator_sync_comp action", tr("unexpected number " "of devil COMP slots for action %1").arg(i)); QSqlDatabase m_db = user_db; m_db.transaction(); QString sql = "UPDATE db_comp SET devil = :devil WHERE " "user_id = :user_id AND slot = :slot"; QSqlQuery query(m_db); if( !query.prepare(sql) ) return herror_sql(m_db, "simulator_sync_comp action", tr("SQL " "error for action %1: %2").arg(i).arg( query.lastError().text() )); for(int j = 0; j < SLOT_COUNT_COMP; j++) { query.bindValue(":user_id", user_id, QSql::In); query.bindValue(":slot", j + 1, QSql::In); query.bindValue(":devil", devils.at(j), QSql::In); if( !query.exec() ) return herror_sql(m_db, "simulator_sync_comp action", tr("SQL " "error for action %1: %2").arg(i).arg( query.lastError().text() )); } m_db.commit(); return QVariantMap(); }
static long long get_num_arg(const char *str) { long long n; char *endptr; n = strtoll(str, &endptr, 0); if (n == LLONG_MAX || n == LLONG_MIN || *endptr != '\0') { (void) fprintf(stderr, "Invalid numeric argument\n"); param_error(); } return n; }
inline void error_report(state_t &state, bool suc, int type, int idx, const std::string &msg) { if( suc ) return; std::ostringstream os; os << "lua parameter error: " << std::endl << "index [" << idx << "]" << std::endl << "real type [" << ::lua_typename(state, ::lua_type(state, idx)) << "]" << std::endl << "expected type [" << ::lua_typename(state, type) << "]" << std::endl << "information [" << msg << "]" << std::endl; parameter_error_t param_error(state, os.str()); param_error.dump(std::cerr); std::cerr << std::endl << param_error.what() << std::endl; assert(suc); throw param_error; }
static void set_var_onoff(bool *variable) { char *str; if ((str = get_str_arg_lower_opt()) == NULL) { *variable = true; return; } if (strcmp(str, "on") == 0) { *variable = true; } else if (strcmp(str, "off") == 0) { *variable = false; } else { param_error(); } }
static RESULT cmd_save(const char** argv, int argc, GameContext* pContext, GameEventContext* pEvent) { if(get_game_status(pContext) == Status_None) { MSG_OUT("当前不在游戏中,不能保存进度!\n"); return R_E_STATUS; } if(argc != 2) { param_error(argv[0]); return R_E_PARAM; } game_save(pContext, argv[1]); return R_DEF; }
int transform_parameters_line(t_cor_line *line, t_label *label) { int it; int len; len = get_wordarr_len(line->args); line->p_args = xmalloc(len * sizeof(t_cor_arg)); it = 0; while (it < len) { line->p_args[it] = to_cor_arg(line->args[it], line->mempos, label); if (line->p_args[it].type == T_ERR) { param_error(line->p_args[it].val, line->nbr); return (-1); } it++; } return (0); }
void init_frac(t_env *e) { if (!(e->array = (t_frac *)malloc(sizeof(t_frac) * 5))) param_error(1); e->ptr = NULL; e->array[0] = (t_frac) { {0, 0}, {0, 0}, -0.9, 0, 0, 0, \ e->width / 2.7, e->height / 2.4, 0.5, 0, 0, 50, mandelbrot }; e->array[1] = (t_frac) { {0.285, 0.01}, {0, 0}, 0, 0, 0, 0, \ e->width / 3.0, e->height / 2.4, 0.5, 0, 0, 10, julia }; e->array[2] = (t_frac) { {0, 0}, {0, 0}, -2.1, 0.6, -1.2, 1.2, \ e->width / 2.7, e->height / 2.4, 1, 0, 0, 50, menger }; e->array[3] = (t_frac) { {0, 0}, {0, 0}, 0, 0, 0, 0, \ e->width / 2.7, e->height / 2.4, 0.5, 0, 0, 50, b_ship }; e->array[4] = (t_frac) { {0, 0}, {0, 0}, 0, 0, 0, 0, \ e->width / 2.7, e->height / 2.4, 0.5, 0, 0, 50, mandelbar }; e->ptr = &(e->array[0]); }
void UmlOperation::generate_decl(QTextStream & f, const WrapperStr & cl_stereotype, WrapperStr indent, bool) { if (!idlDecl().isEmpty()) { if ((cl_stereotype != "interface") && (cl_stereotype != "valuetype")) { write_trace_header(); UmlCom::trace(" <font color=\"red\"><b>cannot have operation</b></font><br>"); incr_warning(); return; } const char * p = idlDecl(); const char * pp = 0; const QList<UmlParameter> & params = this->params(); const QList<UmlTypeSpec> & exceptions = this->exceptions(); unsigned rank; while ((*p == ' ') || (*p == '\t')) indent += *p++; if (*p != '#') f << indent; for (;;) { if (*p == 0) { if (pp == 0) break; // comment management done p = pp; pp = 0; if (*p == 0) break; if (*p != '#') f << indent; } if (*p == '\n') { f << *p++; if (*p && (*p != '#')) f << indent; } else if (*p == '@') manage_alias(p, f); else if (*p != '$') f << *p++; else if (!strncmp(p, "${comment}", 10)) manage_comment(p, pp); else if (!strncmp(p, "${description}", 14)) manage_description(p, pp); else if (!strncmp(p, "${oneway}", 9)) { p += 9; if (isIdlOneway()) f << "oneway "; } else if (!strncmp(p, "${type}", 7)) { p += 7; UmlClass::write(f, returnType()); } else if (!strncmp(p, "${name}", 7)) { p += 7; f << compute_name(); } else if (!strncmp(p, "${(}", 4)) { p += 4; f << '('; } else if (!strncmp(p, "${)}", 4)) { p += 4; f << ')'; } else if (sscanf(p, "${d%u}", &rank) == 1) { if (!generate_dir(params, rank, f)) param_error(parent()->name(), name(), rank, "declaration"); p = strchr(p, '}') + 1; } else if (sscanf(p, "${t%u}", &rank) == 1) { if (!generate_type(params, rank, f)) param_error(parent()->name(), name(), rank, "declaration"); p = strchr(p, '}') + 1; } else if (sscanf(p, "${p%u}", &rank) == 1) { if (!generate_var(params, rank, f)) param_error(parent()->name(), name(), rank, "declaration"); p = strchr(p, '}') + 1; } else if (!strncmp(p, "${stereotype}", 13)) { p += 13; f << IdlSettings::relationAttributeStereotype(stereotype()); } else if (!strncmp(p, "${raisesnl}", 11)) { if (exceptions.count() != 0) { f << '\n' << indent << " "; } p += 11; } else if (!strncmp(p, "${raises}", 9)) { p += 9; if (! exceptions.isEmpty()) { const char * sep; QList<UmlTypeSpec>::ConstIterator it; for (it = exceptions.begin(), sep = " raises ("; it != exceptions.end(); ++it, sep = " ") f << sep << IdlSettings::type((*it).toString()); f << ')'; } } else if (!strncmp(p, "${association}", 14)) { p += 14; UmlClassMember * m; if (((m = getOf()) != 0) && (m->kind() == aRelation)) f << IdlSettings::type(((UmlRelation *) m)->association().toString()); else if (((m = setOf()) != 0) && (m->kind() == aRelation)) f << IdlSettings::type(((UmlRelation *) m)->association().toString()); } else // strange f << *p++; } f << '\n'; } }
static RESULT cmd_info(const char** argv, int argc, GameContext* pContext, GameEventContext* pEvent) { if(argc <= 1) // self info { if(pContext->status == Status_None) { MSG_OUT("游戏中才能查看当前玩家信息!\n"); return R_E_STATUS; } else { game_cur_info(pContext, pEvent); } } else if(!strcmp(argv[1], "event") || !strcmp(argv[1], "e")) // game event info { game_event_info(pContext, pEvent, 0); } else if(!strcmp(argv[1], "eventfull") || !strcmp(argv[1], "ef")) // game event info { game_event_info(pContext, pEvent, 1); } else if(!strcmp(argv[1], "game") || !strcmp(argv[1], "g")) // game global info { if(pContext->status == Status_None) { MSG_OUT("游戏中才能查看游戏全局信息!\n"); return R_E_STATUS; } else { game_global_info(pContext, pEvent); } } else if(!strcmp(argv[1], "gamefull") || !strcmp(argv[1], "gf")) // game full info { MSG_OUT("暂时不支持该指令!\n"); } else if(!strcmp(argv[1], "stack") || !strcmp(argv[1], "s")) // list out cards { if(pContext->status == Status_None) { MSG_OUT("游戏中才能查看牌堆信息!\n"); return R_E_STATUS; } else { game_stack_info(pContext, pEvent); } } else if(!strcmp(argv[1], "player") || !strcmp(argv[1], "p")) // player info: -n - prev [n] player; +n - next n player; n - player index n info; { const char* pp; char cp = 0; int n = 0; if(pContext->status == Status_None) { MSG_OUT("游戏中才能查看玩家信息!\n"); return R_E_STATUS; } if(argc < 3) { param_error(argv[0]); return R_E_PARAM; } pp = argv[2]; if(*pp == '+' || *pp == '-') { cp = *pp; pp++; } if(*pp ==0 ) { param_error(argv[0]); return R_E_PARAM; } while(*pp >= '0' && *pp <= '9') { n = n * 10 + (*pp -'0'); pp++; } if(*pp != 0 ) { param_error(argv[0]); return R_E_PARAM; } if(cp == '+') { n = (n + pContext->cur_player) % pContext->player_count; } else if(cp == '-') { n = (pContext->cur_player - n % pContext->player_count + pContext->player_count) % pContext->player_count; } else { n = n % pContext->player_count; } game_other_player_info(pContext, pEvent, n); } else if(!strcmp(argv[1], "card") || !strcmp(argv[1], "c")) { game_card_info(pContext, pEvent, argc < 3 ? NULL : argv[2]); } else if(!strcmp(argv[1], "hero") || !strcmp(argv[1], "h")) { game_hero_info(pContext, pEvent, argc < 3 ? NULL : argv[2]); } else { param_error(argv[0]); return R_E_PARAM; } return R_DEF; }
void UmlOperation::generate(QTextStream & f, const WrapperStr &, WrapperStr indent, BooL & indent_needed, int &, const WrapperStr &) { const char * p = pythonDecl(); if ((p == 0) || (*p == 0)) return; const char * pp = 0; WrapperStr saved_indent = indent; WrapperStr indent_step = PythonSettings::indentStep(); const char * afterparam = 0; const QList<UmlParameter> & params = this->params(); unsigned rank; bool isinline = TRUE; bool in_params = FALSE; for (;;) { if (*p == 0) { if (pp == 0) break; // comment management done p = pp; if (*p == 0) break; pp = 0; indent = saved_indent; } if (*p == '@') manage_alias(p, f, indent, indent_needed); else if (*p != '$') { if (indent_needed) { indent_needed = FALSE; f << indent; } switch (*p) { case ':': if (pp == 0) { indent += indent_step; saved_indent = indent; indent_step = ""; } break; case '\n': indent_needed = TRUE; break; } f << *p++; } else if (!strncmp(p, "${comment}", 10)) manage_comment(p, pp); else if (!strncmp(p, "${description}", 14)) manage_description(p, pp); else if (!strncmp(p, "${docstring}", 12)) manage_docstring(p, pp, indent_needed, indent, saved_indent); else if (!strncmp(p, "${static}", 9)) { p += 9; if (isClassMember()) { if (indent_needed) f << indent; else indent_needed = TRUE; f << "@staticmethod\n"; } } else if (!strncmp(p, "${abstract}", 11)) { p += 11; if (isAbstract()) { if (indent_needed) f << indent; else indent_needed = TRUE; f << "@abstractmethod\n"; } } else if (!strncmp(p, "${@}", 4)) { p += 4; manage_decorators(f, pythonDecorators(), indent, indent_needed); } else if (!strncmp(p, "${name}", 7)) { if (indent_needed) { indent_needed = FALSE; f << indent; } p += 7; f << compute_name(); } else if (!strncmp(p, "${class}", 8)) { if (indent_needed) { indent_needed = FALSE; f << indent; } p += 8; f << parent()->name(); } else if (!strncmp(p, "${(}", 4)) { p += 4; f << '('; in_params = TRUE; } else if (!strncmp(p, "${)}", 4)) { p += 4; f << ')'; afterparam = p; in_params = FALSE; } else if (sscanf(p, "${t%u}", &rank) == 1) { if (indent_needed) { indent_needed = FALSE; f << indent; } if (!generate_type(params, rank, f, in_params)) param_error(parent()->name(), name(), rank); p = strchr(p, '}') + 1; } else if (sscanf(p, "${p%u}", &rank) == 1) { if (indent_needed) { indent_needed = FALSE; f << indent; } if (!generate_var(params, rank, f)) param_error(parent()->name(), name(), rank); p = strchr(p, '}') + 1; } else if (sscanf(p, "${v%u}", &rank) == 1) { if (!generate_init(params, rank, f)) param_error(parent()->name(), name(), rank); p = strchr(p, '}') + 1; } else if (!strncmp(p, "${body}", 7) && (pp == 0)) {// not in comment isinline = FALSE; p = generate_body(f, indent, indent_needed, p); } else if (!strncmp(p, "${association}", 14)) { p += 14; UmlClassMember * m; if ((((m = getOf()) != 0) || ((m = setOf()) != 0)) && (m->kind() == aRelation)) { if (indent_needed) { indent_needed = FALSE; f << indent; } UmlClass::write(f, ((UmlRelation *) m)->association()); } } else if (!strncmp(p, "${type}", 7)) { p += 7; const UmlTypeSpec & t = returnType(); if ((t.type != 0) || !t.explicit_type.isEmpty()) { f << " -> "; UmlClass::write(f, t); } } else { // strange if (indent_needed) { indent_needed = FALSE; f << indent; } f << *p++; } } if (isinline) { if (indent_needed) f << indent << '\n'; else f << '\n'; indent_needed = TRUE; } }
QVariantMap simulatorCache(int i, QIODevice *connection, const QSqlDatabase& db, const QSqlDatabase& user_db, const QVariantMap& action, const QString& email) { Q_UNUSED(email); Q_UNUSED(user_db); Q_UNUSED(connection); QVariantMap map; // Check for the 'lang' paramater if( !action.contains("lang") ) return param_error(tr("simulator_cache action"), tr("lang"), tr("action %1").arg(i)); bool reload = false; if( action.contains("reload") ) { if( !action.value("reload").canConvert(QVariant::Bool) ) return herror("simulator_cache action", tr("reload must be a " "boolean value for action %1").arg(i)); reload = action.value("reload").toBool(); } QString lang = action.value("lang").toString().toLower(); if(lang != "en" && lang != "ja") return herror("simulator_cache action", tr("parmater 'lang' for action " "%1 contains an illegal value").arg(i)); if(simulator_cache.contains(lang) && !reload) return simulator_cache.value(lang); QString sql = "SELECT db_skills.id id, db_skills.name_{$lang} name, " "db_skills.icon icon, db_affinity.name_{$lang} affinity, " "db_expert.name_{$lang} expert, db_category.name_{$lang} category, " "db_skills.mp_cost mp_cost, db_skills.hp_cost hp_cost, " "db_skills.mag_cost mag_cost, db_action_type.name_{$lang} action_type, " "db_skills.desc_{$lang} desc, db_skills.class class, " "db_skills.rank rank, db_skills.inheritance inheritance, " "db_related_stat.name_{$lang} related_stat FROM db_skills LEFT JOIN " "db_affinity ON db_skills.affinity = db_affinity.id LEFT JOIN " "db_expert ON db_skills.expert = db_expert.id LEFT JOIN db_category ON " "db_skills.category = db_category.id LEFT JOIN db_action_type ON " "db_skills.action_type = db_action_type.id LEFT JOIN db_related_stat " "ON db_skills.related_stat = db_related_stat.id " "WHERE db_skills.player_only = 0 OR db_skills.player_only = 'false'"; sql = sql.replace("{$lang}", lang); QSqlQuery query(db); if( !query.prepare(sql) ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query.lastError().text() )); if( !query.exec() ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query.lastError().text() )); QVariantList skills; while( query.next() ) { QSqlRecord record = query.record(); QVariantMap skill; for(int j = 0; j < record.count(); j++) skill[record.fieldName(j)] = record.value(j); skills << skill; } map["skills"] = skills; sql = "SELECT id, name_{$lang} name, desc_{$lang} desc FROM db_traits"; sql = sql.replace("{$lang}", lang); if( !query.prepare(sql) ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query.lastError().text() )); if( !query.exec() ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query.lastError().text() )); QVariantList traits; while( query.next() ) { QSqlRecord record = query.record(); QVariantMap trait; for(int j = 0; j < record.count(); j++) trait[record.fieldName(j)] = record.value(j); traits << trait; } map["traits"] = traits; sql = "SELECT db_devils.id id, db_devils.name_{$lang} name, " "db_devils.icon icon, db_devils.lvl lvl, db_genus.name_{$lang} genus, " "db_growth_type.name_{$lang} growth_type, db_devils.lnc lnc, " "db_devils.hp hp, db_devils.mp mp, db_devils.mag mag, " "db_mashou.fusion1_desc_{$lang} mashou_desc1, " "db_mashou.fusion2_desc_{$lang} mashou_desc2, " "db_equip_type.name_{$lang} mashou_equip_type, " "db_devils.fusion2 fusion2, db_devils.fusion3 fusion3, " "db_devils.fuse_min_lvl fuse_min_lvl, db_devils.parent parent_id, " "db_devils.fuse_max_lvl fuse_max_lvl, db_devils.genus genus_id, " "db_devils.fuse_chance fuse_chance, db_devils.breath breath, " "db_devils.wing wing, db_devils.pierce pierce, db_devils.fang fang, " "db_devils.claw claw, db_devils.needle needle, db_devils.sword sword, " "db_devils.strange strange, db_devils.eye eye, db_devils.notes notes, " "db_devils.fusion_cost fuse_cost, db_devils.mashou_gem mashou_gem " "FROM db_devils LEFT JOIN db_genus ON db_devils.genus = db_genus.id " "LEFT JOIN db_growth_type ON db_devils.growth = db_growth_type.id " "LEFT JOIN db_mashou ON db_devils.mashou = db_mashou.id LEFT JOIN " "db_equip_type ON db_mashou.equip_type = db_equip_type.id ORDER BY " "db_devils.genus, db_devils.lvl"; sql = sql.replace("{$lang}", lang); if( !query.prepare(sql) ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query.lastError().text() )); if( !query.exec() ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query.lastError().text() )); QVariantList devils; while( query.next() ) { QSqlRecord record = query.record(); QVariantMap devil; for(int j = 0; j < record.count(); j++) devil[record.fieldName(j)] = record.value(j); sql = "SELECT skill, lvl FROM db_devil_skills WHERE devil = :devil"; QSqlQuery query2(db); if( !query2.prepare(sql) ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query2.lastError().text() )); query2.bindValue(":devil", devil.value("id"), QSql::In); if( !query2.exec() ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query2.lastError().text() )); QVariantList devil_skills; while( query2.next() ) { QSqlRecord record2 = query2.record(); QVariantMap devil_skill; for(int j = 0; j < record2.count(); j++) devil_skill[record2.fieldName(j)] = record2.value(j); devil_skills << devil_skill; } devil["skills"] = devil_skills; sql = "SELECT trait FROM db_devil_traits WHERE devil = :devil"; if( !query2.prepare(sql) ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query2.lastError().text() )); query2.bindValue(":devil", devil.value("id"), QSql::In); if( !query2.exec() ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query2.lastError().text() )); QVariantList devil_traits; while( query2.next() ) devil_traits << query2.value(0); devil["traits"] = devil_traits; devils << devil; } map["devils"] = devils; sql = "SELECT id, name_ja FROM db_genus"; if( !query.prepare(sql) ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query.lastError().text() )); if( !query.exec() ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query.lastError().text() )); QVariantMap genus; while( query.next() ) genus[query.value(1).toString()] = query.value(0); map["genus"] = genus; Q_ASSERT( genus.contains(QString::fromUtf8("精霊")) ); sql = "SELECT id, name_ja FROM db_devils WHERE genus = :genus"; if( !query.prepare(sql) ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query.lastError().text() )); query.bindValue(":genus", genus.value(QString::fromUtf8("精霊")), QSql::In); if( !query.exec() ) return herror_sql(db, "simulator_cache action", tr("SQL error for " "action %1: %2").arg(i).arg( query.lastError().text() )); QVariantMap seirei; while( query.next() ) seirei[query.value(1).toString()] = query.value(0); map["seirei"] = seirei; // Update the cache simulator_cache[lang] = map; return map; }
void UmlOperation::generate(QTextStream & f, const WrapperStr & cl_stereotype, WrapperStr indent, int &) { if (!phpDecl().isEmpty()) { const char * p = phpDecl(); const char * pp = 0; const char * afterparam = 0; const Q3ValueList<UmlParameter> & params = this->params(); unsigned rank; const char * body_indent = strstr(p, "${body}"); if (body_indent != 0) { while ((body_indent != p) && ((body_indent[-1] == ' ') || (body_indent[-1] == '\t'))) body_indent -= 1; } // manage old style indent while ((*p == ' ') || (*p == '\t')) indent += *p++; f << indent; for (;;) { if (*p == 0) { if (pp == 0) break; // comment management done p = pp; pp = 0; if (*p == 0) break; f << indent; } if (*p == '\n') { f << *p++; if (p == body_indent) p = generate_body(f, indent, p); else if (*p) f << indent; } else if (*p == '{') { if (isAbstract() || (cl_stereotype == "interface")) { f << ";"; break; } else { f << '{'; p += 1; } } else if (*p == '@') manage_alias(p, f); else if (*p != '$') { if (p == body_indent) p = generate_body(f, indent, p); else f << *p++; } else if (!strncmp(p, "${comment}", 10)) manage_comment(p, pp, PhpSettings::isGenerateJavadocStyleComment()); else if (!strncmp(p, "${description}", 14)) manage_description(p, pp); else if (!strncmp(p, "${visibility}", 13)) { p += 13; generate_visibility(f); } else if (!strncmp(p, "${final}", 8)) { p += 8; if (isPhpFinal()) f << "final "; } else if (!strncmp(p, "${static}", 9)) { p += 9; if (isClassMember()) f << "static "; } else if (!strncmp(p, "${abstract}", 11)) { p += 11; if (isAbstract() && (cl_stereotype != "interface")) f << "abstract "; } else if (!strncmp(p, "${name}", 7)) { p += 7; f << compute_name(); } else if (!strncmp(p, "${(}", 4)) { p += 4; f << '('; } else if (!strncmp(p, "${)}", 4)) { p += 4; f << ')'; afterparam = p; } else if (sscanf(p, "${t%u}", &rank) == 1) { if (!generate_type(params, rank, f)) param_error(parent()->name(), name(), rank); p = strchr(p, '}') + 1; } else if (sscanf(p, "${p%u}", &rank) == 1) { if (!generate_var(params, rank, f)) param_error(parent()->name(), name(), rank); p = strchr(p, '}') + 1; } else if (sscanf(p, "${v%u}", &rank) == 1) { if (!generate_init(params, rank, f)) param_error(parent()->name(), name(), rank); p = strchr(p, '}') + 1; } else if (!strncmp(p, "${staticnl}", 11)) { p += 11; if (isClassMember()) { f << '\n'; if (*p) f << indent; } else f << ' '; } else if (!strncmp(p, "${body}", 7) && (pp == 0)) // not in comment p = generate_body(f, indent, p); else if (!strncmp(p, "${type}", 7)) { p += 7; UmlClass::write(f, returnType()); } else f << *p++; } f << '\n'; } }
void UmlOperation::generate(QTextStream & f, const WrapperStr & cl_stereotype, WrapperStr indent) { if (!javaDecl().isEmpty()) { const char * p = javaDecl(); const char * pp = 0; const char * afterparam = 0; const Q3ValueList<UmlParameter> & params = this->params(); unsigned rank; const char * body_indent = strstr(p, "${body}"); if (body_indent != 0) { while ((body_indent != p) && ((body_indent[-1] == ' ') || (body_indent[-1] == '\t'))) body_indent -= 1; } // manage old style indent while ((*p == ' ') || (*p == '\t')) indent += *p++; f << indent; for (;;) { if (*p == 0) { if (pp == 0) break; // comment management done p = pp; pp = 0; if (*p == 0) break; f << indent; } if (*p == '\n') { f << *p++; if (p == body_indent) p = generate_body(f, indent, p); else if (*p) f << indent; } else if (*p == '{') { if (afterparam != 0) { if (cl_stereotype == "@interface") { if (strstr(afterparam, "default") != 0) afterparam = 0; else { f << ";"; p = bypass_body(p); continue; } } else if (isAbstract() || (cl_stereotype == "interface")) { f << ";"; p = bypass_body(p); continue; } } f << '{'; p += 1; } else if (*p == '@') manage_alias(p, f); else if (*p != '$') { if (p == body_indent) p = generate_body(f, indent, p); else f << *p++; } else if (!strncmp(p, "${comment}", 10)) manage_comment(p, pp, JavaSettings::isGenerateJavadocStyleComment()); else if (!strncmp(p, "${description}", 14)) manage_description(p, pp); else if (!strncmp(p, "${visibility}", 13)) { p += 13; generate_visibility(f, cl_stereotype); } else if (!strncmp(p, "${final}", 8)) { p += 8; if (isJavaFinal()) f << "final "; } else if (!strncmp(p, "${static}", 9)) { p += 9; if (isClassMember()) f << "static "; } else if (!strncmp(p, "${abstract}", 11)) { p += 11; if (isAbstract() && (cl_stereotype != "interface") && (cl_stereotype != "@interface")) f << "abstract "; } else if (!strncmp(p, "${synchronized}", 15)) { p += 15; if (isJavaSynchronized()) f << "synchronized "; } else if (!strncmp(p, "${type}", 7)) { p += 7; UmlClass::write(f, returnType()); } else if (!strncmp(p, "${stereotype}", 13)) { p += 13; // get/set relation with multiplicity > 1 f << JavaSettings::relationAttributeStereotype(stereotype()); } else if (!strncmp(p, "${name}", 7)) { p += 7; f << compute_name(); } else if (!strncmp(p, "${(}", 4)) { p += 4; f << '('; } else if (!strncmp(p, "${)}", 4)) { p += 4; f << ')'; afterparam = p; } else if (sscanf(p, "${t%u}", &rank) == 1) { if (!generate_type(params, rank, f)) param_error(parent()->name(), name(), rank); p = strchr(p, '}') + 1; } else if (sscanf(p, "${p%u}", &rank) == 1) { if (!generate_var(params, rank, f)) param_error(parent()->name(), name(), rank); p = strchr(p, '}') + 1; } else if (!strncmp(p, "${throws}", 9)) { p += 9; const char * sep; const Q3ValueList<UmlTypeSpec> & exceptions = this->exceptions(); Q3ValueList<UmlTypeSpec>::ConstIterator it; for (it = exceptions.begin(), sep = " throws "; it != exceptions.end(); ++it, sep = ", ") { f << sep; UmlClass::write(f, *it); } } else if (!strncmp(p, "${staticnl}", 11)) { p += 11; if (isClassMember()) { f << '\n'; if (*p) f << indent; } else f << ' '; } else if (!strncmp(p, "${body}", 7) && (pp == 0)) // not in comment p = generate_body(f, indent, p); else if (!strncmp(p, "${association}", 14)) { p += 14; UmlClassMember * m; if (((m = getOf()) != 0) && (m->kind() == aRelation)) UmlClass::write(f, ((UmlRelation *) m)->association()); else if (((m = setOf()) != 0) && (m->kind() == aRelation)) UmlClass::write(f, ((UmlRelation *) m)->association()); } else if (!strncmp(p, "${@}", 4)) { p += 4; if (pp != 0) f << "${@}"; else if (! javaAnnotations().isEmpty()) { pp = p; p = javaAnnotations(); } } else f << *p++; } f << '\n'; } }
int main(int argc, char *argv[]) { struct option longopts[] = { { "listen", no_argument, NULL, 'l' }, { "connect", no_argument, NULL, 'c' }, { "send", no_argument, NULL, 's' }, { "receive", no_argument, NULL, 'r' }, { "port", required_argument, NULL, 'p' }, { "buffer", required_argument, NULL, 'b' }, { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; int opt; enum { LISTEN=1, CONNECT } mode = 0; enum { SEND=1, RECEIVE } direction = 0; int port = 0; int buffer_size = 0; char *rhost = NULL; int sock; argv0=argv[0]; while ((opt=getopt_long(argc, argv, "-lcsrp:b:hV", longopts, NULL)) != -1) { switch (opt) { char *tailptr; case 'l': if (mode==0) mode=LISTEN; else param_error(NULL); break; case 'c': if (mode==0) mode=CONNECT; else param_error(NULL); break; case 's': if (direction==0) direction=SEND; else param_error(NULL); break; case 'r': if (direction==0) direction=RECEIVE; else param_error(NULL); break; case 'p': if (port==0) { errno=0; port = strtol(optarg, &tailptr, 0); if (errno || *tailptr!=0) param_error(NULL); } else param_error(NULL); break; case 'b': if (buffer_size==0) { errno=0; buffer_size = strtol(optarg, &tailptr, 0); if (errno || *tailptr!=0) param_error(NULL); } else param_error(NULL); break; case 'h': print_usage(); break; case 'V': print_version(); break; case 1: if (rhost==NULL) rhost=optarg; else param_error(NULL); break; case '?': param_error(""); break; default: oops(); break; } } if (mode==0) param_error(NULL); if (direction==0) direction = mode==LISTEN ? SEND : RECEIVE; if (port==0) param_error(NULL); if (port<0 || port>65535) param_error(NULL); if (buffer_size==0) buffer_size = DEFAULT_BUFFER_SIZE; if (buffer_size<0) param_error(NULL); if (mode==CONNECT && rhost==NULL) param_error(NULL); switch (mode) { case LISTEN: sock = do_listen(port, rhost); break; case CONNECT: sock = do_connect(port, rhost); break; default: oops(); break; } switch (direction) { case SEND: do_transfer(STDIN_FILENO, sock, buffer_size); break; case RECEIVE: do_transfer(sock, STDOUT_FILENO, buffer_size); break; default: oops(); break; } return 0; }