EXPORT_C TInt RMemSpySession::ThreadSystemPermanentOrCritical( TThreadId aId, TBool aValue )
	{
	TPckgBuf<TThreadId> arg1( aId );
	TPckgBuf<TBool> arg2( aValue );
	TIpcArgs args( &arg1, &arg2 );
	
	TInt error = SendReceive( EMemSpyClientServerOpThreadSystemPermanentOrCritical, args );
	
	aValue = arg2();
	
	return error;
	}
Beispiel #2
0
bool            xpathplugin_xbn_select::operator() (xbn_state &state, xbn_xpath *pxpath )
{
	// Hole linke Seite
	xbn_state arg1(state);
	if( !pxpath->process( arg1, *(state.pCurrent_token) ) )
	{
		return true;
	}

	// Und verknuepfe diese mit allen ergebnissen der rechten seite
	uint_xbn pos=0, col_size = arg1.ResultNodeList.size();
	for( xbnode_list::iterator pc=arg1.ResultNodeList.begin(),pe=arg1.ResultNodeList.end(); pc!=pe;++pc,++pos )
	{
		xbn_state arg2(state);
		uint_xbn current_token = *(state.pCurrent_token);
		arg2.pCurrent_token  = &current_token;

		arg2.pCurrentNode          = *pc;
		arg2.current_node_position = pos;
		arg2.last_node_position    = col_size-1;
		if( pxpath->process( arg2, *(arg2.pCurrent_token) ) )
		{
			// Ergebnis auflisten
			state.addNodeList( arg2.ResultNodeList );
			//if( state.ResultNodeList.size()>state.MaxResultSize ) break;
		}
	}
	return true;
}
// ----------------------------------------------------------------------
double f_3g(double *x, double *par) {
  // par[0] -> const
  // par[1] -> mean
  // par[2] -> sigma
  // par[3] -> const
  // par[4] -> mean
  // par[5] -> sigma
  // par[6] -> const
  // par[7] -> mean
  // par[8] -> sigma
  Double_t arg1(0.), arg2(0.), arg3(0.), fitval1(0.), fitval2(0.), fitval3(0.); 
  if (par[2] > 0) {
    arg1 = (x[0] - par[1]) / par[2];
    fitval1 =  par[0]*TMath::Exp(-0.5*arg1*arg1);
  }
  if (par[5] > 0.) {
    arg2 = (x[0] - par[4]) / par[5];
    fitval2 =  par[3]*par[0]*TMath::Exp(-0.5*arg2*arg2);
  }
  if (par[8] > 0.) {
    arg3 = (x[0] - par[7]) / par[8];
    fitval3 =  par[6]*par[0]*TMath::Exp(-0.5*arg3*arg3);
  }
  Double_t fitval = fitval1 + fitval2 + fitval3;
  return fitval;
}
Beispiel #4
0
int main(int argc, char* argv[])
{
	switch (argc)
	{
		case 3:
			strcpy(buffer1, argv[1]);
			strcpy(buffer2, argv[2]);
			
			arg2(buffer1, buffer2);
			break;
		
		case 4:
			strcpy(buffer1, argv[1]);
			strcpy(buffer2, argv[2]);
			sscanf(argv[3], "%d", &buffer3);
			
			arg3(buffer1, buffer2, buffer3);
			break;
		
		default:		
			arg0();
			break;
	}
	return(0);
}
EXPORT_C void RMemSpySession::SetThreadPriorityL(TThreadId aId, TInt aPriority)
	{
	TPckgBuf<TThreadId> arg1( aId );
	TPckgBuf<TInt> arg2( aPriority );
	
	User::LeaveIfError(SendReceive( EMemSpyClientServerOpSetThreadPriority, TIpcArgs(&arg1, &arg2)));
	}
const std::string& CmdServerStart::execute( const std::vector< std::string >& arguments )
{
    _cmdResult = "";
    if ( arguments.size() < 1 )
    {
        _cmdResult = getUsage();
        return _cmdResult;
    }

    // get the full binary path
    std::string cmd = yaf3d::Application::get()->getFullBinPath();
    std::string levelfile = arguments[ 0 ];
    std::string arg1( "-server" );
    std::string arg2( "-level" );
    std::string arg3( levelfile );

    // use utility function to start the server
    std::string args = arg1 + "  " + arg2 + "  " + arg3;
    YAF3D_SPAWN_PROC_ID serverProcHandle = yaf3d::spawnApplication( cmd, args );

    if ( serverProcHandle )
        _cmdResult = "trying to start server with level file '" + levelfile + "'.";
    else
        _cmdResult = "* error starting server with level file '" + levelfile + "'.";

    return _cmdResult;
}
Beispiel #7
0
void test_values()
{
	RPN::Context cxt;
	
	//Constant node (boring)
	cxt.insert("c", new RPN::ConstantNode(42));
	insist_equal(evaluate("c", cxt), 42.0);
	
	//Variable node
	double x;
	cxt.insert("x", new RPN::VariableNode(&x));
	
	x = 17;
	RPN::Expression var("x", cxt);
	insist_equal(var.evaluate(), 17.0);
	
	x = 23;
	insist_equal(var.evaluate(), 23.0);
	
	//Expression node
	cxt.insert("e", new RPN::ExpressionNode(&var));
	insist_equal(evaluate("e", cxt), 23.0);
	
	//Argument node
	RPN::Evaluator eval;
	
	//One argument...
	cxt.insert("arg11", new RPN::ArgumentNode(1, 1));
	RPN::Expression arg1("arg11", cxt, 1);
	
	eval.push(12);
	insist_equal(arg1.evaluate(eval), 12.0);
	insist_equal(arg1.evaluate(7.5), 7.5);
	insist_zero(eval.count());
	
	//Two arguments...
	cxt.insert("arg12", new RPN::ArgumentNode(-2));
	cxt.insert("arg22", new RPN::ArgumentNode(-1));
	RPN::Expression arg2("arg12 + arg22", cxt, 2);
	
	eval.push(13);
	eval.push(14);
	insist_equal(arg2.evaluate(eval), 27.0);
	insist_equal(arg2.evaluate(7.5, 8.5), 16.0);
	insist_zero(eval.count());
	
	//Three arguments...
	cxt.insert("arg13", new RPN::ArgumentNode(1, 3));
	cxt.insert("arg23", new RPN::ArgumentNode(-2));
	cxt.insert("arg33", new RPN::ArgumentNode(3, 3));
	RPN::Expression arg3("arg13 + arg23 + arg33", cxt, 3);
	
	eval.push(101);
	eval.push(202);
	eval.push(303);
	insist_equal(arg3.evaluate(eval), 606.0);
	insist_equal(arg3.evaluate(1, 2, 3), 6.0);
	insist_zero(eval.count());
}
Beispiel #8
0
QJsonObject Blink1Input::toJson3()
{
    QJsonObject obj;
    obj.insert("arg1",arg1());
    obj.insert("iname", name());
    obj.insert("lastTime",date());
    if(mtype!="IFTTT.COM")
        obj.insert("lastVal",arg2());
    else{
        QJsonArray ja;
        ja.append(QJsonValue(arg2()));
        obj.insert("possibleVals",ja);
    }

    obj.insert("pname",patternName());
    obj.insert("type",type());
    return obj;
}
Beispiel #9
0
ref<Expr> ShadowArray::createBinaryOfSameKind(ref<Expr> originalExpr,
                                              ref<Expr> newLhs,
                                              ref<Expr> newRhs) {
  std::vector<Expr::CreateArg> exprs;
  Expr::CreateArg arg1(newLhs);
  Expr::CreateArg arg2(newRhs);
  exprs.push_back(arg1);
  exprs.push_back(arg2);
  return Expr::createFromKind(originalExpr->getKind(), exprs);
}
EXPORT_C TInt RMemSpySession::EndThreadL( TThreadId aId, TMemSpyEndType aType )
	{
	TPckgBuf<TThreadId> arg1( aId );
	TPckgBuf<TMemSpyEndType> arg2( aType );
	TIpcArgs args( &arg1, &arg2 );
	
	TInt error = SendReceive( EMemSpyClientServerOpEndThread, args );
	
	return error;
	}
EXPORT_C TInt RMemSpySession::SwitchToThread( TThreadId aId, TBool aBrought )
	{
	TPckgBuf<TThreadId> arg1( aId );
	TPckgBuf<TBool> arg2( aBrought );
	TIpcArgs args( &arg1, &arg2 );
	
	TInt error = SendReceive( EMemSpyClientServerOpSwitchToThread, args );
	
	return error;	
	}
Beispiel #12
0
/* Allocates memory */
void factor_vm::general_error(vm_error_type error, cell arg1_, cell arg2_) {

  data_root<object> arg1(arg1_, this);
  data_root<object> arg2(arg2_, this);

  faulting_p = true;

  /* If we had an underflow or overflow, data or retain stack
     pointers might be out of bounds, so fix them before allocating
     anything */
  ctx->fix_stacks();

  /* If error was thrown during heap scan, we re-enable the GC */
  gc_off = false;

  /* If the error handler is set, we rewind any C stack frames and
     pass the error to user-space. */
  if (!current_gc && to_boolean(special_objects[ERROR_HANDLER_QUOT])) {
#ifdef FACTOR_DEBUG
    /* Doing a GC here triggers all kinds of funny errors */
    primitive_compact_gc();
#endif

    /* Now its safe to allocate and GC */
    cell error_object =
        allot_array_4(tag_fixnum(KERNEL_ERROR), tag_fixnum(error),
                      arg1.value(), arg2.value());
    ctx->push(error_object);

    /* Clear the data roots since arg1 and arg2's destructors won't be
       called. */
    data_roots.clear();

    /* The unwind-native-frames subprimitive will clear faulting_p
       if it was successfully reached. */
    unwind_native_frames(special_objects[ERROR_HANDLER_QUOT],
                         ctx->callstack_top);
  } /* Error was thrown in early startup before error handler is set, so just
       crash. */
  else {
    std::cout << "You have triggered a bug in Factor. Please report.\n";
    std::cout << "error: " << error << std::endl;
    std::cout << "arg 1: ";
    print_obj(std::cout, arg1.value());
    std::cout << std::endl;
    std::cout << "arg 2: ";
    print_obj(std::cout, arg2.value());
    std::cout << std::endl;
    factorbug();
    abort();
  }
}
Beispiel #13
0
QJsonObject Blink1Input::toJson()
{
    QJsonObject obj;
    obj.insert("name", name());
    obj.insert("type",type());
    obj.insert("arg1",arg1());
    obj.insert("arg2",arg2());
    obj.insert("date",date());
    obj.insert("patternName",patternName());
    obj.insert("freq",freq());
    obj.insert("freqCounter",freqCounter());
    return obj;
}
EXPORT_C TInt RMemSpySession::GetInfoItemType( TInt aIndex, TThreadId aId, TMemSpyThreadInfoItemType &aType )
	{
	TPckgBuf<TInt> arg1( aIndex );
	TPckgBuf<TThreadId> arg2( aId );
	TPckgBuf<TMemSpyThreadInfoItemType> arg3;
	TIpcArgs args( &arg1, &arg2, &arg3 );
		
	TInt error = SendReceive( EMemSpyClientServerOpGetInfoItemType, args );
	
	aType = arg3();
	
	return error;
	}
Beispiel #15
0
Variant c_Exception::ifa___construct(MethodCallPackage &mcp, int count, INVOKE_FEW_ARGS_IMPL_ARGS) {
  if (UNLIKELY(mcp.obj == 0)) {
    return ObjectData::ifa_dummy(mcp, count, INVOKE_FEW_ARGS_PASS_ARGS, ifa___construct, coo_Exception);
  }
  c_Exception *self ATTRIBUTE_UNUSED (static_cast<c_Exception*>(mcp.obj));
  if (UNLIKELY(count > 3)) return throw_toomany_arguments("Exception::__construct", 3, 2);
  if (count <= 0) return (self->t___construct(), null);
  CVarRef arg0(a0);
  if (count <= 1) return (self->t___construct(arg0), null);
  CVarRef arg1(a1);
  if (count <= 2) return (self->t___construct(arg0, arg1), null);
  CVarRef arg2(a2);
  return (self->t___construct(arg0, arg1, arg2), null);
}
Beispiel #16
0
/*!
 *  \brief  範囲指定による順序付きリスト
 *  \param[in]  line      行番号
 *  \param[in]  arg_list  マクロ実引数リスト
 *  \param[in]  p_ctx     マクロコンテキスト
 *  \retval     マクロ返却値
 *  第1マクロ実引数で最初の値を、第2マクロ実引数で最後の値を指定する。
 *  { 最初の値, 最初の値 + 1, ... 最後の値 }
 *  となる順序付きリストを生成する。
 *  引数が正しくない場合は空値を返す。
 */
var_t bf_range( text_line const& line, std::vector< var_t > const& arg_list, context const* p_ctx )
{
    var_t result;
    if ( macro_processor::check_arity( line, arg_list.size(), 2, "RANGE" ) )
    {
        std::tr1::int64_t arg1( get_i( arg_list[0], p_ctx ) );
        std::tr1::int64_t arg2( get_i( arg_list[1], p_ctx ) );

        for ( ; arg1 <= arg2; ++arg1 )
        {
            element e;
            e.i = arg1;
            result.push_back( e );
        }
    }
    return result;
}
int
main()
{
    // construction
    {
        std::string const   s( "test" );
        breath::string_argument
                            arg( s ) ;
        DO_TEST( arg.value() == "test" ) ;

        char const *        s2 = "test-2" ;
        breath::string_argument
                            arg2( s2 ) ;
        DO_TEST(arg2.value() == "test-2" ) ;
    }

}
Beispiel #18
0
Variant NEVER_INLINE c_SoapFault::ifa___construct(MethodCallPackage &mcp, int count, INVOKE_FEW_ARGS_IMPL_ARGS) {
  if (UNLIKELY(mcp.obj == 0)) {
    return ObjectData::ifa_dummy(mcp, count, INVOKE_FEW_ARGS_PASS_ARGS, ifa___construct, coo_SoapFault);
  }
  c_SoapFault *self ATTRIBUTE_UNUSED (static_cast<c_SoapFault*>(mcp.obj));
  if (UNLIKELY(count < 2)) return throw_wrong_arguments("SoapFault::__construct", count, 2, 6, 2);
  CVarRef arg0(a0);
  CVarRef arg1(a1);
  if (count <= 2) return (self->t___construct(arg0, arg1), null);
  CVarRef arg2(a2);
  if (count <= 3) return (self->t___construct(arg0, arg1, arg2), null);
  CVarRef arg3(a3);
  if (count <= 4) return (self->t___construct(arg0, arg1, arg2, arg3), null);
  CVarRef arg4(a4);
  if (count <= 5) return (self->t___construct(arg0, arg1, arg2, arg3, arg4), null);
  CVarRef arg5(a5);
  return (self->t___construct(arg0, arg1, arg2, arg3, arg4, arg5), null);
}
Beispiel #19
0
DEFINE_FUNCTION_DHLX_2(bool_t, bcmp)
{
	T arg0(parse<T>(sc));
	sc.get(SourceTokenDHLX::TT_OP_COMMA);
	std::string arg1(sc.get(SourceTokenDHLX::TT_IDENTIFIER).getData());
	sc.get(SourceTokenDHLX::TT_OP_COMMA);
	T arg2(parse<T>(sc));

	int cmpResult(cmp(arg0, arg2));

	if (arg1 == cmp_name_eq()) return cmpResult == 0;
	if (arg1 == cmp_name_ne()) return cmpResult != 0;
	if (arg1 == cmp_name_gt()) return cmpResult >  0;
	if (arg1 == cmp_name_ge()) return cmpResult >= 0;
	if (arg1 == cmp_name_lt()) return cmpResult <  0;
	if (arg1 == cmp_name_le()) return cmpResult <= 0;

	throw FunctionException("unknown cmp:" + arg1);
}
// ----------------------------------------------------------------------
double f_2g(double *x, double *par) {
  // par[0] -> const
  // par[1] -> mean
  // par[2] -> sigma
  // par[3] -> fraction in second gaussian
  // par[4] -> mean
  // par[5] -> sigma
  Double_t arg1(0.), arg2(0.), fitval1(0.), fitval2(0.); 
  if (par[2] > 0) {
    arg1 = (x[0] - par[1]) / par[2];
    fitval1 =  par[0]*TMath::Exp(-0.5*arg1*arg1);
  }
  if (par[5] > 0.) {
    arg2 = (x[0] - par[4]) / par[5];
    fitval2 =  par[3]*par[0]*TMath::Exp(-0.5*arg2*arg2);
  }
  Double_t fitval = fitval1 + fitval2;
  return fitval;
}
Beispiel #21
0
int main()
{
    Obj   A;
    compare  arg1(boost::bind(&Obj::hello, &A));
    compare  arg2(boost::bind(&Obj::hello, &A));
    std::set<compare>      fset;
    //fset.insert(arg1);
    //fset.insert(arg2);

    //if (boost::function_equal(arg1, arg2))
    if (true/*arg1==arg2*/)
    {
        std::cout << "equal bind" << std::endl;
    }
    else
    {
        std::cout << "not equal bind" << std::endl;
    }
    return 0;
}
Beispiel #22
0
bool           xpathplugin_xbn_or:: operator() (xbn_state &state, xbn_xpath *pxpath )
{
	if( !state.pCurrentNode )
		return false;

	xbn_state arg1(state);
	if( !pxpath->process( arg1, *(state.pCurrent_token) ) )
		return false;

	xbn_state arg2(state);
	if( !pxpath->process( arg2, *(state.pCurrent_token) ) )
		return false;

	if( arg1.ResultNodeList.size()!=arg2.ResultNodeList.size() &&
		(arg1.ResultNodeList.size()>1&&
		 arg2.ResultNodeList.size()>1) )
	{
		pxpath->raiseError( name+"() resultsizes arg1,arg2 does not match",&state, __FILE__, __LINE__ );
		return false;
	}

	for( xbnode_list::iterator pc_arg1=arg1.ResultNodeList.begin(),pe_arg1=arg1.ResultNodeList.end(),
							   pc_arg2=arg2.ResultNodeList.begin(),pe_arg2=arg2.ResultNodeList.end();
			pc_arg1!=pe_arg1 && pc_arg2!=pe_arg2;
			++pc_arg1,++pc_arg2 )
	{
		if( pc_arg1==pe_arg1 ) pc_arg1=arg1.ResultNodeList.begin();
		if( pc_arg2==pe_arg2 ) pc_arg2=arg2.ResultNodeList.begin();

		if( (*pc_arg1)->getBool() || (*pc_arg2)->getBool() )
		{
			state.ResultNodeList.push_back( state.pStack->createTempNode("true") );
		}
		else
		{
			state.ResultNodeList.push_back( state.pStack->createTempNode("false") );
		}
	}
	return true;
}
// ----------------------------------------------------------------------
double f_2G(double *x, double *par) {
  // par[0] -> area
  // par[1] -> mean
  // par[2] -> sigma
  // par[3] -> fraction in second gaussian
  // par[4] -> mean
  // par[5] -> sigma

  double sqrt2pi = 2.506628275;

  Double_t arg1(0.), arg2(0.), fitval1(0.), fitval2(0.); 
  if (par[2] > 0) {
    arg1 = (x[0] - par[1]) / par[2];
    fitval1 =  (par[0]/(sqrt2pi*par[2]))*TMath::Exp(-0.5*arg1*arg1);
  }
  if (par[5] > 0.) {
    arg2 = (x[0] - par[4]) / par[5];
    fitval2 =  (par[3]*par[0]/(sqrt2pi*par[2]))*TMath::Exp(-0.5*arg2*arg2);
  }
  Double_t fitval = fitval1 + fitval2;
  return fitval;
}
Beispiel #24
0
scalar stokesFirstStanding::ddxPd
(
    const point& x,
    const scalar& time,
    const vector& unitVector
) const
{

    scalar Z(returnZ(x));
    scalar arg1(omega_*time - (k_ & x) + phi_);
    scalar arg2(omega_*time + (k_ & x) + phi_);

    scalar ddxPd(0);

    ddxPd = (
                rhoWater_*mag(g_)*K_*H_/2.0*Foam::cosh(K_*(Z + h_))
               /Foam::cosh(K_*h_)*Foam::sin(arg1)
              - rhoWater_*mag(g_)*K_*H_/2.0*Foam::cosh(K_*(Z + h_))
               /Foam::cosh(K_*h_)*Foam::sin(arg2)
            )*factor(time);

    return ddxPd;
}
Beispiel #25
0
// private 
// runs in main thread
bool
MovieLoader::processCompletedRequest(const Request& r)
{
    //GNASH_REPORT_FUNCTION;

    boost::intrusive_ptr<movie_definition> md;
    if (!r.getCompleted(md)) return false; // not completed yet

    const std::string& target = r.getTarget();
    DisplayObject* targetDO = _movieRoot.findCharacterByTarget(target);
    as_object* handler = r.getHandler();

    if (!md) {

        if (targetDO && handler) {
            // Signal load error
            // Tested not to happen if target isn't found at time of loading
            //

            as_value arg1(getObject(targetDO));

            // FIXME: docs suggest the string can be either "URLNotFound" or
            // "LoadNeverCompleted". This is neither of them:
            as_value arg2("Failed to load movie or jpeg");

            // FIXME: The last argument is HTTP status, or 0 if no connection
            // was attempted (sandbox) or no status information is available
            // (supposedly the Adobe mozilla plugin).
            as_value arg3(0.0);

            callMethod(handler, NSV::PROP_BROADCAST_MESSAGE, "onLoadError",
                    arg1, arg2, arg3);
        }
        return true; // nothing to do, but completed
    }

    const URL& url = r.getURL();

	Movie* extern_movie = md->createMovie(*_movieRoot.getVM().getGlobal());
	if (!extern_movie) {
		log_error(_("Can't create Movie instance "
                    "for definition loaded from %s"), url);
		return true; // completed in any case...
	}

	// Parse query string
	MovieClip::MovieVariables vars;
	url.parse_querystring(url.querystring(), vars);
    extern_movie->setVariables(vars);

    if (targetDO) {
        targetDO->getLoadedMovie(extern_movie);
    }
    else {
        unsigned int levelno;
        const int version = _movieRoot.getVM().getSWFVersion();
        if (isLevelTarget(version, target, levelno)) {
            log_debug(_("processCompletedRequest: _level loading "
                    "(level %u)"), levelno);
	        extern_movie->set_depth(levelno + DisplayObject::staticDepthOffset);
            _movieRoot.setLevel(levelno, extern_movie);
        }
        else {
            log_debug("Target %s of a loadMovie request doesn't exist at "
                  "load complete time", target);
            return true;
        }
    }

    if (handler && targetDO) {
        // Dispatch onLoadStart
        // FIXME: should be signalled before starting to load
        //        (0/-1 bytes loaded/total) but still with *new*
        //        display object as target (ie: the target won't
        //        contain members set either before or after loadClip.
        callMethod(handler, NSV::PROP_BROADCAST_MESSAGE, "onLoadStart",
            getObject(targetDO));

        // Dispatch onLoadProgress
        // FIXME: should be signalled on every readNonBlocking()
        //        with a buffer size of 65535 bytes.
        //
        size_t bytesLoaded = md->get_bytes_loaded();
        size_t bytesTotal = md->get_bytes_total();
        callMethod(handler, NSV::PROP_BROADCAST_MESSAGE, "onLoadProgress",
            getObject(targetDO), bytesLoaded, bytesTotal);

        // Dispatch onLoadComplete
        // FIXME: find semantic of last arg
        callMethod(handler, NSV::PROP_BROADCAST_MESSAGE, "onLoadComplete",
            getObject(targetDO), as_value(0.0));


        // Dispatch onLoadInit
        
        // This event must be dispatched when actions
        // in first frame of loaded clip have been executed.
        //
        // Since getLoadedMovie or setLevel above will invoke
        // construct() and thus queue all actions in first
        // frame, we'll queue the
        // onLoadInit call next, so it happens after the former.
        //
        std::auto_ptr<ExecutableCode> code(
                new DelayedFunctionCall(targetDO, handler,
                    NSV::PROP_BROADCAST_MESSAGE, 
                    "onLoadInit", getObject(targetDO)));

        getRoot(*handler).pushAction(code, movie_root::PRIORITY_DOACTION);
    }

    return true;

}
/*** Evaluate this object ***/
Object* SpecialFunction::evaluate()
{
	if(args.size() == 0)
		throw Excep(getLineNumber(), getColumnNumber(), "Expected argument to special function!");

	std::auto_ptr<Object> arg1(args.at(0)->evaluate());

	if(id == SPF_INDEX)
	{
		if(args.size() != 2)
			throw Excep(getLineNumber(), getColumnNumber(), "Invalid number of arguments passed to special function!");

		std::auto_ptr<Object> arg2(args.at(1)->evaluate());

		if(arg2->getType() == OBJ_TEXT)
		{
			if(arg1->getType() != OBJ_TEXT)
				throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_TEXT, arg1->getType(), 1);

			Text* cast1 = static_cast<Text*>(arg1.get());
			Text* cast2 = static_cast<Text*>(arg2.get());

			size_t index = cast2->getValue().find(cast1->getValue());

			if(index != std::string::npos)
				return new Integer(index + 1);

			return new Integer(0);
		}

		if(arg2->getType() == OBJ_SEQUENCE)
		{
				Sequence* cast = dynamic_cast<Sequence*>(arg2.get());

				for(unsigned int i = 0; i < cast->getLength(); i++)
				{
					std::auto_ptr<Logical> eqOp(static_cast<Logical*>(Equal(arg1->clone(), cast->getObject(i)->clone()).evaluate()));
					if(eqOp->getValue() == true)
						return new Integer(i + 1);
				}

				return new Integer(0);
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_TEXT | OBJ_SEQUENCE, arg2->getType(), 2);
	}

	if(args.size() > 1)
		throw Excep(getLineNumber(), getColumnNumber(), "Invalid number of arguments passed to special function!");

	if(id == SPF_ABS)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			if(cast->getValue() < 0)
				return new Integer(-cast->getValue());
			return new Integer(cast->getValue());
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			if(cast->getValue() < 0)
				return new Real(-cast->getValue());
			return new Real(cast->getValue());
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_SIGN)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			if(cast->getValue() < 0)
				return new Integer(-1);
			if(cast->getValue() > 0)
				return new Integer(1);
			return new Integer(0);
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			if(cast->getValue() < 0)
				return new Integer(-1);
			if(cast->getValue() > 0)
				return new Integer(1);
			return new Integer(0);
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_SQRT)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());

			if(cast->getValue() < 0)
				throw NegativeValueException(getLineNumber(), getColumnNumber(), cast->getValue(), 1);

			double res = sqrt((double) cast->getValue());
			if((long) res == res)
				return new Integer((long) res);
			return new Real(res);
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());

			if(cast->getValue() < 0)
				throw NegativeValueException(getLineNumber(), getColumnNumber(), cast->getValue(), 1);

			double res = sqrt((double) cast->getValue());
			return new Real(res);
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_ENTIER)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			return new Integer(cast->getValue());
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			return new Integer(floor(cast->getValue()));
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_ROUND)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			return new Integer(cast->getValue());
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			long rounded = cast->getValue() < 0.0 ? ceil(cast->getValue() - 0.5) : floor(cast->getValue() + 0.5);
			return new Integer(rounded);
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_RAND)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());

			if(cast->getValue() < 0)
				throw NegativeValueException(getLineNumber(), getColumnNumber(), cast->getValue(), 1);

			double f = (double) rand() / RAND_MAX;
			return new Real( f * cast->getValue() );
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());

			if(cast->getValue() < 0)
				throw NegativeValueException(getLineNumber(), getColumnNumber(), cast->getValue(), 1);

			double f = (double) rand() / RAND_MAX;
			return new Real( f * cast->getValue() );
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_INTRAND)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			if(cast->getValue() < 0)
				throw NegativeValueException(getLineNumber(), getColumnNumber(), cast->getValue(), 1);
			return new Integer( rand() % cast->getValue() + 1 );
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			if(cast->getValue() < 0)
				throw NegativeValueException(getLineNumber(), getColumnNumber(), cast->getValue(), 1);
			return new Integer( rand() % (long) cast->getValue() + 1 );
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_ISEMPTY)
	{
		return new Logical(arg1->getType() == OBJ_EMPTY);
	}

	if(id == SPF_ISLOG)
	{
		return new Logical(arg1->getType() == OBJ_LOGICAL);
	}

	if(id == SPF_ISINT)
	{
		return new Logical(arg1->getType() == OBJ_INTEGER);
	}

	if(id == SPF_ISREAL)
	{
		return new Logical(arg1->getType() == OBJ_REAL);
	}

	if(id == SPF_ISTEXT)
	{
		return new Logical(arg1->getType() == OBJ_TEXT);
	}

	if(id == SPF_ISSEQ)
	{
		return new Logical(arg1->getType() == OBJ_SEQUENCE);
	}

	if(id == SPF_ISPROC)
	{
		return new Logical(arg1->getType() == OBJ_PROCEDURE);
	}

	if(id == SPF_ISFUN)
	{
		return new Logical(arg1->getType() == OBJ_FUNCTION || arg1->getType() == OBJ_SPFUNCTION);
	}

	if(id == SPF_SIN)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			return new Real(sin((double) cast->getValue()));
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			return new Real(sin(cast->getValue()));
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_COS)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			return new Real(cos((double) cast->getValue()));
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			return new Real(cos(cast->getValue()));
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_TG)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			return new Real(tan((double) cast->getValue()));
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			return new Real(tan(cast->getValue()));
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_ARCSIN)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			if(errno == EDOM)
				throw new Excep(getLineNumber(), getColumnNumber(), "Invalid value passed to special function!");
			return new Real(exp((double) cast->getValue()));
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			if(errno == EDOM)
				throw new Excep(getLineNumber(), getColumnNumber(), "Invalid value passed to special function!");
			return new Real(exp(cast->getValue()));
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_ARCTG)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			if(errno == EDOM)
				throw new Excep(getLineNumber(), getColumnNumber(), "Invalid value passed to special function!");
			return new Real(exp((double) cast->getValue()));
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			if(errno == EDOM)
				throw new Excep(getLineNumber(), getColumnNumber(), "Invalid value passed to special function!");
			return new Real(exp(cast->getValue()));
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_EXP)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			return new Real(exp((double) cast->getValue()));
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			return new Real(exp(cast->getValue()));
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_LN)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			return new Real(log((double) cast->getValue()));
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			return new Real(log(cast->getValue()));
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	if(id == SPF_LG)
	{
		if(arg1->getType() == OBJ_INTEGER)
		{
			Integer* cast = static_cast<Integer*>(arg1.get());
			return new Real(log10((double) cast->getValue()));
		}

		if(arg1->getType() == OBJ_REAL)
		{
			Real* cast = static_cast<Real*>(arg1.get());
			return new Real(log10(cast->getValue()));
		}

		throw InvalidTypeException(getLineNumber(), getColumnNumber(), OBJ_INTEGER | OBJ_REAL, arg1->getType(), 1);
	}

	throw Excep(getLineNumber(), getColumnNumber(), "Invalid special function!");
}
Beispiel #27
0
int main(int argc, char *argv[])
{
  // Initialize OSPRay.
  ospInit(&argc, (const char **) argv);

  // Initialize Qt.
  QApplication *app = new QApplication(argc, argv);

  // Print the command line usage.
  if (argc < 2) {

    std::cerr << " "                                                                                        << std::endl;
    std::cerr << "  USAGE:  " << argv[0] << " <filename> [filename] ... [options]"                          << std::endl;
    std::cerr << " "                                                                                        << std::endl;
    std::cerr << "  Options:"                                                                               << std::endl;
    std::cerr << " "                                                                                        << std::endl;
    std::cerr << "    -benchmark <warm-up frames> <frames> : run benchmark and report overall frame rate"   << std::endl;
    std::cerr << "    -dt <dt>                             : use ray cast sample step size 'dt'"            << std::endl;
    std::cerr << "    -module <moduleName>                 : load the module 'moduleName'"                  << std::endl;
    std::cerr << "    -ply <filename>                      : load PLY geometry from 'filename'"             << std::endl;
    std::cerr << "    -rotate <rate>                       : automatically rotate view according to 'rate'" << std::endl;
    std::cerr << "    -showframerate                       : show the frame rate in the window title bar"   << std::endl;
    std::cerr << "    -fullscreen                          : enter fullscreen mode"                         << std::endl;
    std::cerr << "    -ownmodelperobject                   : create a separate model for each object"       << std::endl;
    std::cerr << "    -slice <filename>                    : load volume slice from 'filename'"             << std::endl;
    std::cerr << "    -transferfunction <filename>         : load transfer function from 'filename'"        << std::endl;
    std::cerr << "    -viewsize <width>x<height>           : force OSPRay view size to 'width'x'height'"    << std::endl;
    std::cerr << "    -viewup <x> <y> <z>                  : set viewport up vector to ('x', 'y', 'z')"     << std::endl;
    std::cerr << "    -writeframes <filename>              : emit frames to 'filename_xxxxx.ppm'"           << std::endl;
    std::cerr << " "                                                                                        << std::endl;

    return 1;
  }

  // // Parse the OSPRay object file filenames.
  // std::vector<std::string> objectFileFilenames;

  // for (size_t i=1 ; (i < argc) && (argv[i][0] != '-') ; i++)
  //   objectFileFilenames.push_back(std::string(argv[i]));

  // Default values for the optional command line arguments.
  float dt = 0.0f;
  std::vector<std::string> plyFilenames;
  float rotationRate = 0.0f;
  std::vector<std::string> sliceFilenames;
  std::string transferFunctionFilename;
  int benchmarkWarmUpFrames = 0;
  int benchmarkFrames = 0;
  int viewSizeWidth = 0;
  int viewSizeHeight = 0;
  ospcommon::vec3f viewUp(0.f);
  ospcommon::vec3f viewAt(0.f), viewFrom(0.f);
  bool showFrameRate = false;
  bool fullScreen = false;
  bool ownModelPerObject = false;
  std::string renderer = "dvr";
  std::string writeFramesFilename;

  std::vector<std::string> inFileName;
  // Parse the optional command line arguments.
  for (int i=// objectFileFilenames.size() + 
         1 ; i < argc ; i++) {

    const std::string arg = argv[i];

    if (arg == "-dt") {

      if (i + 1 >= argc) throw std::runtime_error("missing <dt> argument");
      dt = atof(argv[++i]);
      std::cout << "got dt = " << dt << std::endl;

    } else if (arg == "-ply") {

      // Note: we use "-ply" since "-geometry" gets parsed elsewhere...
      if (i + 1 >= argc) throw std::runtime_error("missing <filename> argument");
      plyFilenames.push_back(std::string(argv[++i]));
      std::cout << "got PLY filename = " << plyFilenames.back() << std::endl;

    } else if (arg == "-rotate") {

      if (i + 1 >= argc) throw std::runtime_error("missing <rate> argument");
      rotationRate = atof(argv[++i]);
      std::cout << "got rotationRate = " << rotationRate << std::endl;

    } else if (arg == "-slice") {

      if (i + 1 >= argc) throw std::runtime_error("missing <filename> argument");
      sliceFilenames.push_back(std::string(argv[++i]));
      std::cout << "got slice filename = " << sliceFilenames.back() << std::endl;

    } else if (arg == "-showframerate" || arg == "-fps") {

      showFrameRate = true;
      std::cout << "set show frame rate" << std::endl;

    } else if (arg == "-fullscreen") {

      fullScreen = true;
      std::cout << "go full screen" << std::endl;

    } else if (arg == "-ownmodelperobject") {

      ownModelPerObject = true;

    } else if (arg == "-transferfunction") {

      if (i + 1 >= argc) throw std::runtime_error("missing <filename> argument");
      transferFunctionFilename = std::string(argv[++i]);
      std::cout << "got transferFunctionFilename = " << transferFunctionFilename << std::endl;

    } else if (arg == "-benchmark") {

      if (i + 2 >= argc) throw std::runtime_error("missing <warm-up frames> <frames> arguments");
      benchmarkWarmUpFrames = atoi(argv[++i]);
      benchmarkFrames = atoi(argv[++i]);
      std::cout << "got benchmarkWarmUpFrames = " << benchmarkWarmUpFrames << ", benchmarkFrames = " << benchmarkFrames << std::endl;

    }  else if (arg == "-r" || arg == "-renderer") {

      renderer = argv[++i];

    } else if (arg == "-viewsize") {

      if (i + 1 >= argc) throw std::runtime_error("missing <width>x<height> argument");
      std::string arg2(argv[++i]);
      size_t pos = arg2.find("x");

      if (pos != std::string::npos) {

        arg2.replace(pos, 1, " ");
        std::stringstream ss(arg2);
        ss >> viewSizeWidth >> viewSizeHeight;
        std::cout << "got viewSizeWidth = " << viewSizeWidth << ", viewSizeHeight = " << viewSizeHeight << std::endl;

      } else throw std::runtime_error("improperly formatted <width>x<height> argument");

    } else if (arg == "-viewup" || arg == "-vu") {
    /**
     * Generates unconstrained parameter element names in column-major order,
     * e.g., order for 3-d array of matrices: col, row, d3, d2, d1
     * Generated code consists of zero of more for loops, one per dimension,
     * with the specified indentation level writing to the specified stream.
     * If specified, declare named size_t variable for each dimension
     * which avoids re-evaluation of size expression on each iteration.
     *
     * @param[in] var_decl variable declaration
     * @param[in] declare_size_vars if true, generate size_t var decls
     * @param[in] indent indentation level
     * @param[in,out] o stream for generating
     */
    void write_begin_param_elements_loop(const block_var_decl& var_decl,
                                           bool declare_size_vars,
                                           int indent, std::ostream& o) {
      std::string name(var_decl.name());
      expression arg1(var_decl.type().innermost_type().arg1());
      expression arg2(var_decl.type().innermost_type().arg2());
      if (var_decl.type().innermost_type().is_specialized()) {
        // num dims for specialized matrices less than N*M
        arg1 = var_decl.type().innermost_type().params_total();
        arg2 = expression(nil());
      }

      // get values for loop bounds, generate loop bound declarations
      std::vector<expression> ar_var_dims = var_decl.type().array_lens();
      if (!is_nil(arg2)) {
        generate_indent(indent, o);
        if (declare_size_vars)
          o << "size_t ";
        o << name << "_j_2_max__ = ";
        generate_expression(arg2, NOT_USER_FACING, o);
        o << ";" << EOL;
      }
      if (!is_nil(arg1)) {
        generate_indent(indent, o);
        if (declare_size_vars)
          o << "size_t ";
        o << name << "_j_1_max__ = ";
        generate_expression(arg1, NOT_USER_FACING, o);
        o << ";" << EOL;
      }
      for (size_t i = 0; i < ar_var_dims.size(); ++i) {
        generate_indent(indent, o);
        if (declare_size_vars)
          o << "size_t ";
        o << name << "_k_" << i << "_max__ = ";
        generate_expression(ar_var_dims[i], NOT_USER_FACING, o);
        o << ";" << EOL;
      }

      // nested for stmts open, row, col indexes
      if (!is_nil(arg2)) {
        generate_indent(indent++, o);
        o << "for (size_t j_2__ = 0; "
          << "j_2__ < " << name << "_j_2_max__;"
          << " ++j_2__) {" << EOL;
      }
      if (!is_nil(arg1)) {
        generate_indent(indent++, o);
        o << "for (size_t j_1__ = 0; "
          << "j_1__ < " << name << "_j_1_max__;"
          << " ++j_1__) {" << EOL;
      }
      for (size_t i = ar_var_dims.size(); i > 0; --i) {
        int idx = i - 1;   // size == N, indexes run from 0 .. N - 1
        generate_indent(indent++, o);
        o << "for (size_t k_"  << idx << "__ = 0;"
          << " k_" << idx << "__ < "
          << name << "_k_" << idx  << "_max__;"
          << " ++k_" << idx << "__) {" << EOL;
      }
    }
/**
 *  @brief implementation for call java static method
 */
JS_BINDED_FUNC_IMPL(JavascriptJavaBridge, callStaticMethod)
{
    JS::CallArgs argv = JS::CallArgsFromVp(argc, vp);
    if (argc == 3) {
        JSStringWrapper arg0(argv[0]);
        JSStringWrapper arg1(argv[1]);
        JSStringWrapper arg2(argv[2]);

        CallInfo call(arg0.get(), arg1.get(), arg2.get());
        if(call.isValid()){
            bool success = call.execute();
            int errorCode = call.getErrorCode();
            if(errorCode < 0)
                JS_ReportError(cx, "js_cocos2dx_JSJavaBridge : call result code: %d", errorCode);
            argv.rval().set(convertReturnValue(cx, call.getReturnValue(), call.getReturnValueType()));
            return success;	
        }
    }
    else if(argc > 3){
        JSStringWrapper arg0(argv[0]);
        JSStringWrapper arg1(argv[1]);
        JSStringWrapper arg2(argv[2]);
        
        CallInfo call(arg0.get(), arg1.get(), arg2.get());
        if(call.isValid() && call.getArgumentsCount() == (argc - 3)){
            int count = argc - 3;
            jvalue *args = new jvalue[count];
            for (int i = 0; i < count; ++i){
                int index = i + 3;
                switch (call.argumentTypeAtIndex(i))
                {
                    case TypeInteger:
                        double interger;
                        JS::ToNumber(cx, argv.get(index), &interger);
                        args[i].i = (int)interger;
                        break;

                    case TypeFloat:
                        double floatNumber;
                        JS::ToNumber(cx, argv.get(index), &floatNumber);
                        args[i].f = (float)floatNumber;
                        break;

                    case TypeBoolean:
                        args[i].z = JS::ToBoolean(argv.get(index)) ? JNI_TRUE : JNI_FALSE;
                        break;

                    case TypeString:
                    default:
                        JSStringWrapper arg(argv.get(index));
                        args[i].l = call.getEnv()->NewStringUTF(arg.get());
                        break;
                }
            }
            bool success = call.executeWithArgs(args);
            if (args) delete []args;
            int errorCode = call.getErrorCode();
            if(errorCode < 0)
                JS_ReportError(cx, "js_cocos2dx_JSJavaBridge : call result code: %d", errorCode);
            argv.rval().set(convertReturnValue(cx, call.getReturnValue(), call.getReturnValueType()));
            return success;
        }
                
    }else{
    	JS_ReportError(cx, "js_cocos2dx_JSJavaBridge : wrong number of arguments: %d, was expecting more than 3", argc);	
    }
    
    return false;
}
Beispiel #30
-11
void ByteCode::setup(eOpCode opcode, m::u8 A, m::u8 B, m::u8 C)
{
    opCode(opcode);
    res(A);
    arg1(B);
    arg2(C);
}