rho::String js_Barcode1_setProperty(rho::json::CJSONArray& argv, const rho::String& strObjID) { CMethodResult oRes; rho::common::IRhoRunnable* pFunctor = 0; bool bUseCallback = false; int argc = argv.getSize(); int nCallbackArg = 0; IBarcode1* pObj = CBarcode1FactoryBase::getInstance()->getModuleByID(convertToStringW(strObjID)); nCallbackArg = 1; if ( argc == 0 ) { oRes.setArgError(L"Wrong number of arguments: " + convertToStringW(argc) + L" instead of " + convertToStringW(2) ); return oRes.toJSON(); } rho::StringW arg0; if ( argc > 0 ) { if ( argv[0].isString() ) { arg0 = convertToStringW(argv[0].getString()); oRes.setStringParam(argv[0].getString()); } else if (!argv[0].isNull()) { oRes.setArgError(L"Type error: argument " L"0" L" should be " L"string" ); return oRes.toJSON(); } } nCallbackArg = 2; if ( argc == 1 ) { oRes.setArgError(L"Wrong number of arguments: " + convertToStringW(argc) + L" instead of " + convertToStringW(2) ); return oRes.toJSON(); } rho::StringW arg1; if ( argc > 1 ) { if ( argv[1].isString() ) { arg1 = convertToStringW(argv[1].getString()); } else if (!argv[1].isNull()) { oRes.setArgError(L"Type error: argument " L"1" L" should be " L"string" ); return oRes.toJSON(); } } if ( argc > nCallbackArg ) { oRes.setArgError(L"Wrong number of arguments: " + convertToStringW(argc) + L" instead of " + convertToStringW(2) ); return oRes.toJSON(); if ( !argv[nCallbackArg].isString() ) { oRes.setArgError(L"Type error: callback should be String"); return oRes.toJSON(); } oRes.setCallInUIThread(false); oRes.setRubyCallback( argv[nCallbackArg].getString() ); if ( argc > nCallbackArg + 1 ) { if ( !argv[nCallbackArg + 1].isString() ) { oRes.setArgError(L"Type error: callback parameter should be String"); return oRes.toJSON(); } oRes.setCallbackParam( argv[nCallbackArg + 1].getString() ); } } pFunctor = rho_makeInstanceClassFunctor3( pObj, &IBarcode1::setProperty, arg0, arg1, oRes ); if ( bUseCallback ) CBarcode1FactoryBase::getBarcode1SingletonS()->addCommandToQueue( pFunctor ); else { delete pFunctor; pObj->setProperty( arg0, arg1, oRes ); } return oRes.toJSON(); }
static VALUE _api_generator_Barcode_setProperty(int argc, VALUE *argv, IBarcode* pObj) { CMethodResult oRes; rho::common::IRhoRunnable* pFunctor = 0; bool bUseCallback = false; int nCallbackArg = 0; nCallbackArg = 1; if ( argc == 0 ) { oRes.setArgError(L"Wrong number of arguments: " + convertToStringW(argc) + L" instead of " + convertToStringW(2) ); return oRes.toRuby(); } rho::StringW arg0; if ( argc > 0 ) { if ( rho_ruby_is_string(argv[0]) ) { arg0 = convertToStringW(getStringFromValue(argv[0])); oRes.setStringParam(getStringFromValue(argv[0])); } else if (!rho_ruby_is_NIL(argv[0])) { oRes.setArgError(L"Type error: argument " L"0" L" should be " L"string" ); return oRes.toRuby(); } } nCallbackArg = 2; if ( argc == 1 ) { oRes.setArgError(L"Wrong number of arguments: " + convertToStringW(argc) + L" instead of " + convertToStringW(2) ); return oRes.toRuby(); } rho::StringW arg1; if ( argc > 1 ) { if ( rho_ruby_is_string(argv[1]) ) { arg1 = convertToStringW(getStringFromValue(argv[1])); } else if (!rho_ruby_is_NIL(argv[1])) { oRes.setArgError(L"Type error: argument " L"1" L" should be " L"string" ); return oRes.toRuby(); } } if ( argc > nCallbackArg ) { oRes.setArgError(L"Wrong number of arguments: " + convertToStringW(argc) + L" instead of " + convertToStringW(2) ); return oRes.toRuby(); if ( rho_ruby_is_proc(argv[nCallbackArg]) || rho_ruby_is_method(argv[nCallbackArg]) ) { oRes.setRubyCallbackProc( argv[nCallbackArg] ); }else if ( rho_ruby_is_string(argv[nCallbackArg]) ) { oRes.setRubyCallback( getStringFromValue(argv[nCallbackArg]) ); }else { oRes.setArgError(L"Type error: callback should be String"); return oRes.toRuby(); } oRes.setCallInUIThread(false); if ( argc > nCallbackArg + 1 ) { if ( !rho_ruby_is_string(argv[nCallbackArg + 1]) ) { oRes.setArgError(L"Type error: callback parameter should be String"); return oRes.toRuby(); } oRes.setCallbackParam( getStringFromValue(argv[nCallbackArg + 1]) ); } bUseCallback = true; } pFunctor = rho_makeInstanceClassFunctor3( pObj, &IBarcode::setProperty, arg0, arg1, oRes ); if ( bUseCallback ) CBarcodeFactoryBase::getBarcodeSingletonS()->addCommandToQueue( pFunctor ); else { delete pFunctor; pObj->setProperty( arg0, arg1, oRes ); } return oRes.toRuby(); }
rho::String js_barcode1_getProps(const rho::String& strID, CJSONArrayIterator& oParams) { //If method has call_in_ui_thread attribute, then call method in UI thread if no return value or callback present //If method has call_in_thread attribute, then call method in separate thread if no return value or callback present //If method calles with callback, then call method in separate thread boolean bCallInUIThread = false; boolean bCallInThread = false; rho::String strObjID = strID; if ( strObjID.length() == 0 ) strObjID = CBarcode1::getDefaultID(); IBarcode1* pObj = CBarcode1::getBarcodes()[strObjID]; CMethodResult oRes; if ( oParams.isEnd() ) { pObj->getProps(oRes); return oRes.toJSON(); } CJSONEntry oParam1 = oParams.getCurItem(); oParams.next(); if ( oParams.isEnd() ) { if ( oParam1.isNull() ) { pObj->getProps(oRes); }else if ( oParam1.isString() ) { pObj->getProps(oParam1.getString(), oRes); }else if ( oParam1.isArray() ) { rho::Vector<rho::String> ar; CJSONArrayIterator arParam(oParam1); for( ; !arParam.isEnd(); arParam.next() ) { ar.addElement( arParam.getCurItem().getString() ); } pObj->getProps(ar, oRes ); }else { oRes.setArgError("Type error: argument 1 should be String or Array"); //see SWIG Ruby_Format_TypeError } }else { CJSONEntry oParam2 = oParams.getCurItem(); oRes.setCallInUIThread(bCallInUIThread); oRes.setJSCallback( oParam2.getString() ); oParams.next(); if ( !oParams.isEnd() ) { CJSONEntry oParam3 = oParams.getCurItem(); if ( !oParam3.isString() ) { oRes.setArgError("Type error: argument 3 should be String"); //see SWIG Ruby_Format_TypeError return oRes.toJSON(); } oRes.setCallbackParam( oParam3.getString() ); } rho::common::IRhoRunnable* pFunctor = 0; if ( oParam1.isNull() ) { pFunctor = new rho::common::CInstanceClassFunctor1<IBarcode1*, void (IBarcode1::*)(CMethodResult&), CMethodResult> ( pObj, &IBarcode1::getProps, oRes ); }else if ( oParam1.isString() ) { oRes.setStringParam( oParam1.getString() ); pFunctor = new rho::common::CInstanceClassFunctor2<IBarcode1*, void (IBarcode1::*)(const rho::String&, CMethodResult&), rho::String, CMethodResult> ( pObj, &IBarcode1::getProps, oParam1.getString(), oRes ); }else if ( oParam1.isArray() ) { rho::Vector<rho::String> ar; CJSONArrayIterator arParam(oParam1); for( ; !arParam.isEnd(); arParam.next() ) { ar.addElement( arParam.getCurItem().getString() ); } pFunctor = new rho::common::CInstanceClassFunctor2<IBarcode1*, void (IBarcode1::*)(const rho::Vector<rho::String>&, CMethodResult&), rho::Vector<rho::String>, CMethodResult> ( pObj, &IBarcode1::getProps, ar, oRes ); }else { oRes.setArgError("Type error: argument 1 should be String or Array"); //see SWIG Ruby_Format_TypeError return oRes.toJSON(); } if ( bCallInUIThread ) rho_wm_impl_performOnUiThread( pFunctor ); else //call in separate thread CBarcode1::addCommandToQueue( pFunctor ); } return oRes.toJSON(); }