BsonTreeModel::BsonTreeModel(const std::vector<MongoDocumentPtr> &documents, QObject *parent) : BaseClass(parent), _root(new BsonTreeItem(this)) { for (int i = 0; i < documents.size(); ++i) { MongoDocumentPtr doc = documents[i]; BsonTreeItem *child = new BsonTreeItem(doc->bsonObj(), _root); parseDocument(child, doc->bsonObj(), doc->bsonObj().isArray()); QString idValue; BsonTreeItem *idItem = child->childByKey("_id"); if (idItem) { idValue = idItem->value(); } child->setKey(QString("(%1) %2").arg(i + 1).arg(idValue)); int count = BsonUtils::elementsCount(doc->bsonObj()); if (doc->bsonObj().isArray()) { child->setValue(arrayValue(count)); child->setType(mongo::Array); } else { child->setValue(objectValue(count)); child->setType(mongo::Object); } _root->addChild(child); } }
void Opcode80E1::_run() { // @TODO: add implementation Logger::debug("SCRIPT") << "[80E1] [*] int metarule3(int meta, int p1, int p2, int p3)" << std::endl; auto dataStack = _script->dataStack(); auto arg3 = dataStack->pop(); auto arg2 = dataStack->pop(); auto arg1 = dataStack->pop(); auto meta = dataStack->popInteger(); int result = 0; switch(meta) { case 100: // rm_fixed_timer_event(object, fixed_param, 0) { auto state = Game::Game::getInstance()->locationState(); if (state) { state->removeTimerEvent(arg1.objectValue(), arg2.integerValue()); } break; } case 101: // mark subtile visited on worldmap - mark_world_subtile_visited(x, y, radius) break; case 102: // METARULE3_SET_WM_MUSIC - (map index, ACM file name) break; case 103: // player_kill_count(critterType) break; case 104: // int mark_map_entrance_state(int map_idx, int state, int elev); elev -1 means for all elevations break; case 105: // int wm_get_subtile_state(int xPos, int yPos) (0 - unknown, 1 - known, 2 - visited) break; case 106: // ObjectPtr tile_get_next_critter(int tile_num, int elev, ObjectPtr last_critter) break; case 107: // int art_change_fid_num(ObjectPtr who, int fid) - change base FID num for object break; case 108: // void tile_set_center(int tileNum) - center camera on given tile { auto state = Game::Game::getInstance()->locationState(); if (state) { state->centerCameraAtHexagon(arg1.integerValue()); } break; } default: _error("metarule3 - unknown meta: " + std::to_string(meta)); break; } dataStack->push(result); }
const Object::ConstPointer ExecutionEvent::GetObjectParameterForExecution( const std::string& parameterId) const { if (command.IsNull()) { throw ExecutionException( "No command is associated with this execution event"); //$NON-NLS-1$ } try { // const ParameterType parameterType = command // .getParameterType(parameterId); // if (parameterType == null) // { // throw new ExecutionException( // "Command does not have a parameter type for the given parameter"); //$NON-NLS-1$ // } // const AbstractParameterValueConverter valueConverter = parameterType // .getValueConverter(); // if (valueConverter == null) // { // throw new ExecutionException( // "Command does not have a value converter"); //$NON-NLS-1$ // } const std::string stringValue = this->GetParameter(parameterId); ObjectString::Pointer objectValue(new ObjectString(stringValue)); // const Object objectValue = valueConverter // .convertToObject(stringValue); return objectValue; } catch (NotDefinedException e) { throw ExecutionException("Command is not defined", e); //$NON-NLS-1$ } // catch (ParameterValueConversionException e) // { // throw new ExecutionException( // "The parameter string could not be converted to an object", e); //$NON-NLS-1$ // } }
bool RenderTargetConstructor( JSContext *cx, unsigned argc, jsval *vp ) { //printf( "RenderTarget Constructor!%d\n", argc ); JS::CallArgs args = JS::CallArgsFromVp( argc, vp ); JSObject *object = JS_NewObjectForConstructor( cx, &RenderTargetClass, args ); RootedObject obj(cx, object ); RootedValue v(cx, JS::UndefinedValue() ); JS_DefineFunctions( cx, HandleObject(obj), rendertarget_functions ); JS_DefineProperty( cx, HandleObject(obj), "w", HandleValue(&v), JSPROP_SHARED, (JSPropertyOp) GetRenderTargetProperty, (JSStrictPropertyOp) SetRenderTargetProperty ); JS_DefineProperty( cx, HandleObject(obj), "h", HandleValue(&v), JSPROP_SHARED, (JSPropertyOp) GetRenderTargetProperty, (JSStrictPropertyOp) SetRenderTargetProperty ); JS_DefineProperty( cx, HandleObject(obj), "autoResize", HandleValue(&v), JSPROP_SHARED, (JSPropertyOp) GetRenderTargetProperty, (JSStrictPropertyOp) SetRenderTargetProperty ); JS_DefineProperty( cx, HandleObject(obj), "main", HandleValue(&v), JSPROP_SHARED, (JSPropertyOp) GetRenderTargetProperty, (JSStrictPropertyOp) SetRenderTargetProperty ); GLint w=0; GLint h=0; bool main=false; if ( argc >= 1 ) w=args[0].toInt32(); if ( argc >= 2 ) h=args[1].toInt32(); if ( argc >= 3 ) main=args[2].toBoolean(); RenderTarget *target = new RenderTarget( w, h, main ); JS_SetPrivate( object, target ); args.rval().set( OBJECT_TO_JSVAL( object ) ); //VG.Renderer().addResource(this); RootedValue rendererRC(cx); RootedObject global( cx,JS_GetGlobalForObject( cx, object ) ); bool ok = JS_EvaluateScript( cx, HandleObject( global ), "VG.Renderer()", strlen("VG.Renderer()"), "unknown", 1, MutableHandleValue(&rendererRC) ); if ( ok ) { RootedValue objectValue( cx, OBJECT_TO_JSVAL(object) ); RootedObject renderer(cx, &rendererRC.toObject() ); MutableHandleValue handleValue( &rendererRC ); ok=Call( cx, HandleObject(renderer), "addResource", HandleValueArray( objectValue ), handleValue ); } return true; }
void OpcodeComparison::_run() { Logger::debug("SCRIPT") << "[8033-8038] [*] " << _cmpOpcodeName() << std::endl; auto bValue = _script->dataStack()->pop(); auto aValue = _script->dataStack()->pop(); int result = 0; switch (aValue.type()) { case StackValue::Type::INTEGER: { int arg1 = aValue.integerValue(); switch (bValue.type()) { case StackValue::Type::INTEGER: { result = _compare(arg1, bValue.integerValue()); // INTEGER op INTEGER break; } case StackValue::Type::FLOAT: { result = _compare(arg1, bValue.floatValue()); // INTEGER op FLOAT break; } case StackValue::Type::STRING: { result = _compare(arg1, bValue.toInteger()); // INTEGER op STRING (parsed as int) break; } default: { _error(std::string() + _cmpOpcodeName() + ": invalid right argument type: " + bValue.typeName()); } } break; } case StackValue::Type::FLOAT: { float arg1 = aValue.floatValue(); switch (bValue.type()) { case StackValue::Type::INTEGER: { result = _compare(arg1, bValue.integerValue()); // FLOAT op INTEGER break; } case StackValue::Type::FLOAT: { result = _compare(arg1, bValue.floatValue()); // FLOAT op FLOAT break; } case StackValue::Type::STRING: { float arg2 = 0.0; try { arg2 = std::stof(bValue.stringValue()); } catch (std::invalid_argument ex) { } catch (std::out_of_range ex) { } result = _compare(arg1, arg2); // FLOAT op STRING (parsed as float) break; } default: { _error(std::string() + _cmpOpcodeName() + ": invalid right argument type: " + bValue.typeName()); } } break; } case StackValue::Type::STRING: { switch (bValue.type()) { case StackValue::Type::INTEGER: { result = _compare(aValue.toInteger(), bValue.integerValue()); // STRING (as integer) op INTEGER break; } case StackValue::Type::FLOAT: { float arg1 = 0.0; try { arg1 = std::stof(aValue.stringValue()); } catch (std::invalid_argument ex) { } catch (std::out_of_range ex) { } result = _compare(arg1, bValue.floatValue()); // STRING (as float) op FLOAT break; } case StackValue::Type::STRING: { result = _compare(aValue.stringValue(), bValue.stringValue()); // STRING op STRING break; } default: { _error(std::string() + _cmpOpcodeName() + ": invalid right argument type: " + bValue.typeName()); } } break; } case StackValue::Type::OBJECT: { switch (bValue.type()) { case StackValue::Type::INTEGER: { result = _compare((int)aValue.toBoolean(), bValue.integerValue()); // OBJECT op INTEGER break; } case StackValue::Type::FLOAT: { result = _compare((float)aValue.toBoolean(), bValue.floatValue()); // OBJECT op FLOAT break; } case StackValue::Type::STRING: { result = _compare(aValue.toString(), bValue.stringValue()); // OBJECT op STRING - compare object name break; } case StackValue::Type::OBJECT: { result = _compare(aValue.objectValue(), bValue.objectValue()); // OBJECT op OBJECT break; } default: { _error(std::string() + _cmpOpcodeName() + ": invalid right argument type: " + bValue.typeName()); } } break; } default: { _error(std::string() + _cmpOpcodeName() + ": invalid left argument type: " + aValue.typeName()); } } _script->dataStack()->push(result); }