Example #1
0
void Loop::parse(vector<string> args) {
    assert(args.size() > 0, "-loop requires arguments\n");

    if (args[0].size() > 2 && args[0][0] == '-' && args[0][1] == '-') { // infinite loop mode
        vector<string> newArgs(args.size());

        for (size_t i = 0; i < args.size(); i++) {
            if (args[i].size() > 1 && args[i][0] == '-' && args[i][1] == '-') {
                newArgs[i] = args[i].substr(1, args[i].size() - 1);
            } else {
                newArgs[i] = args[i];
            }
        }

        for (;;) { parseCommands(newArgs); }

    } else { // finite loop mode

        vector<string> newArgs(args.size() - 1);

        for (size_t i = 0; i < newArgs.size(); i++) {
            if (args[i+1].size() > 1 && args[i+1][0] == '-' && args[i+1][1] == '-') {
                newArgs[i] = args[i+1].substr(1, args[i+1].size() - 1);
            } else {
                newArgs[i] = args[i+1];
            }
        }

        for (int i = 0; i < readInt(args[0]); i++) {
            parseCommands(newArgs);
        }
    }
}
Example #2
0
//-------------------------------------------------------------------------------------------------
Args Args::operator+(const Value& arg) const
{
    Args newArgs(*this);
    newArgs += arg;

    return newArgs;
}
Example #3
0
void BinDataInfo::Functions::UUID::call(JSContext* cx, JS::CallArgs args) {
    boost::optional<mongo::UUID> uuid;

    if (args.length() == 0) {
        uuid = mongo::UUID::gen();
    } else {
        uassert(ErrorCodes::BadValue, "UUID needs 0 or 1 arguments", args.length() == 1);
        auto arg = args.get(0);
        std::string str = ValueWriter(cx, arg).toString();

        // For backward compatibility quietly accept and convert 32-character hex strings to
        // BinData(3, ...) as used for the deprecated UUID v3 BSON type.
        if (str.length() == 32) {
            hexToBinData(cx, bdtUUID, arg, args.rval());
            return;
        }
        uuid = uassertStatusOK(mongo::UUID::parse(str));
    };
    ConstDataRange cdr = uuid->toCDR();
    std::string encoded = mongo::base64::encode(cdr.data(), cdr.length());

    JS::AutoValueArray<2> newArgs(cx);
    newArgs[0].setInt32(newUUID);
    ValueReader(cx, newArgs[1]).fromStringData(encoded);
    getScope(cx)->getProto<BinDataInfo>().newInstance(newArgs, args.rval());
}
void ShaderEditASM::LogFunctionPre(uint updateID, const char *funcName, uint funcIndex, const FunctionArgs & args)
{
  //Return if GL calls cannot be made 
  if(!DriverAvailable())
  {
    return;
  }

  //Create a access copy of the arguments
  FunctionArgs newArgs(args);

  //Perform the action
  switch(updateID)
  {
    case(CBI_glGenPrograms) :
      CreateARBShadersPre(newArgs);
      break;

    case(CBI_glDeletePrograms) :
      DeleteARBShaders(newArgs);
      break;

    case(CBI_glBindProgram) :
      BindARBShaderPre(newArgs);
      break;

    case(CBI_glProgramString) :
    case(CBI_glLoadProgram) :
      SetARBShaderReadyPre(updateID,newArgs);
      break;

    default:
       LOGERR(("ShaderEditASM::LogFunctionPre - Unknown update ID"));
  }
}
		void ApplyArgs(const sptr<BShell>& shell, const ICommand::ArgList& args, bool useArg0)
		{
			shell->GetArguments(&m_oldArgs);
			if (useArg0) shell->SetArguments(args);
			else {
				SVector<SValue> newArgs(args);
				if (m_oldArgs.CountItems() > 0)
					newArgs.ReplaceItemAt(m_oldArgs[0], 0);
				shell->SetArguments(newArgs);
			}
		}
Example #6
0
void QmitkCommonExtPlugin::startNewInstance(const QStringList &args, const QStringList& files)
{
  QStringList newArgs(args);
#ifdef Q_OS_UNIX
  newArgs << QString("--") +berry::Platform::ARG_NEWINSTANCE;
#else
  newArgs << QString("/") + berry::Platform::ARG_NEWINSTANCE;
#endif
  newArgs << files;
  QProcess::startDetached(qApp->applicationFilePath(), newArgs);
}
Example #7
0
void Time::parse(vector<string> args) {
    if (args.size() == 0) {
        printf("%3.3f s\n", currentTime());
        return;
    }

    vector<string> newArgs(args.size());

    for (size_t i = 0; i < args.size(); i++) {
        if (args[i].size() > 1 && args[i][0] == '-' && args[i][1] == '-') {
            newArgs[i] = args[i].substr(1, args[i].size() - 1);
        } else {
            newArgs[i] = args[i];
        }
    }

    float t1 = currentTime();
    parseCommands(newArgs);
    float t2 = currentTime();
    printf("%3.3f s\n", t2 - t1);
}
Example #8
0
std::unique_ptr<GrFragmentProcessor> Gr2PtConicalGradientEffect::Make(
        const GrGradientEffect::CreateArgs& args) {
    const SkTwoPointConicalGradient& shader =
        *static_cast<const SkTwoPointConicalGradient*>(args.fShader);

    SkMatrix matrix;
    if (!shader.getLocalMatrix().invert(&matrix)) {
        return nullptr;
    }
    if (args.fMatrix) {
        SkMatrix inv;
        if (!args.fMatrix->invert(&inv)) {
            return nullptr;
        }
        matrix.postConcat(inv);
    }

    GrGradientEffect::CreateArgs newArgs(args.fContext, args.fShader, &matrix, args.fWrapMode,
        args.fDstColorSpace);
    // Data and matrix has to be prepared before constructing TwoPointConicalEffect so its parent
    // class can have the right matrix to work with during construction.
    TwoPointConicalEffect::Data data(shader, matrix);
    return TwoPointConicalEffect::Make(newArgs, data);
}
bool GLRenderCallCache::SetRenderCall(uint updateID, const char *funcName, const FunctionArgs & args)
{
    //Check if setting a new render call while one is "active"
    if(isRenderCallSet)
    {
        LOGERR(("GLRenderCallCache::SetRenderCall - Setting a render call while an existing call is active?"));
        isRenderCallSet = false;
    }

    //Create a access copy of the arguments
    FunctionArgs newArgs(args);

    //Switch based on the render type
    switch(updateID)
    {
    case(CBI_glDrawArrays) :
        newArgs.Get(iMode);
        newArgs.Get(iFirst);
        newArgs.Get(iCount);
        break;

    case(CBI_glDrawElements) :
        newArgs.Get(iMode);
        newArgs.Get(iCount);
        newArgs.Get(iType);
        newArgs.Get(iPtrIndices);
        break;

    case(CBI_glDrawRangeElements) :
        newArgs.Get(iMode);
        newArgs.Get(iStart);
        newArgs.Get(iEnd);
        newArgs.Get(iCount);
        newArgs.Get(iType);
        newArgs.Get(iPtrIndices);
        break;

    case(CBI_glMultiDrawArrays) :
        newArgs.Get(iMode);
        newArgs.Get(iPtrFirst);
        newArgs.Get(iPtrCount);
        newArgs.Get(iPrimcount);
        break;

    case(CBI_glMultiDrawElements) :
        newArgs.Get(iMode);
        newArgs.Get(iPtrCount);
        newArgs.Get(iType);
        newArgs.Get(iPtrIndices);
        newArgs.Get(iPrimcount);

        //Manually assign the pointer to index arrays
        iPtrPtrIndices = (const GLvoid **)iPtrIndices;
        break;

    default:
        LOGERR(("GLRenderCallCache::SetRenderCall - Unknown render call %s",funcName));
        return false;
        break;
    }

    //Store the current render type
    currRenderType = updateID;

    //Flag that a rendre call is set
    isRenderCallSet = true;

    return true;
}
Example #10
0
void InterceptLog::GetFunctionString(const FunctionData *funcData,uint index, const FunctionArgs & args, string &retString)
{
  //Append the function name first
  retString = funcData->GetName() + "(";

  //Get a copy of the arguments
  FunctionArgs newArgs(args);

  //Loop for all the parameters
  for(uint i=0;i<funcData->parameterArray.size();i++)
  {
//	  LOGERR(("arg.size()=%d\n",funcData->parameterArray.size()));
    //Get the parameter
    const ParameterData * paramData = &funcData->parameterArray[i];
	LOGERR(("The paramDateName:%d, %s\n",paramData->type,paramData->paramName.c_str()));

    //Determine if we are processing pointers
    bool isPointer=false;
    if(paramData->pointerCount > 0 || paramData->length != -1)
    {
      isPointer=true;
    }
	//Get the value	
	ParamValue value;
	
	////¼Ó²âÊÔÖ¸Õë
	if(strcmp((funcData->GetName()).c_str(),"glLightfv")==0&&isPointer){
		 const GLfloat* V; newArgs.Get(V);
		value.pointerValue =(void*) V;
		LOGERR(("The length of this parametre is : lengh = %d\n ,Count = %d\n ", paramData->length,paramData->pointerCount));
		LOGERR(("glLightfv:%f,%f,%f,%f\n",V[0],V[1],V[2],V[3]));
		//LOGERR(("²ÎÊýÐòºÅ%d\n",i))

	}
	////²âÊÔÖ¸ÕëÍê±Ï
    else if(!GetNextValue(paramData->GetGLType(),newArgs,isPointer, value))
    {
      break;
    }


    //Test if this is an array value
    if(paramData->length != -1)
    {
      bool isArrayOfPointers = false;

      //Test for an array of pointers
      if(paramData->pointerCount > 0)
      {
        isArrayOfPointers = true;
      }

      //Assign the array
      void * array =  value.pointerValue;

      //Loop and print the array
      retString += "[";
      for(uint i2=0;i2<(uint)paramData->length;i2++)
      {
        //Get the value from the array
        if(!GetNextArrayValue(paramData->GetGLType(),&array,isArrayOfPointers, value))
        {
          break;
        }
       
        //Convert and print the value
        retString += ConvertParam(value,isArrayOfPointers,paramData);
        
        //Add a comma
        if(i2 != (uint)(paramData->length - 1))
        {
          retString += ",";
        }
      }
      retString += "]";
    }
    else
    {
      //Just get the single value
      retString += ConvertParam(value,isPointer,paramData);
    }

    //Add a comma if there are more parameters
    if(i != funcData->parameterArray.size() - 1)
    {
      retString += ",";
    }
  }

  //If there are no parameters (unknown function)
  if(funcData->parameterArray.size() == 0)
  {
    retString += " ??? ";
  }

  //Close the bracket
  retString += ")";
}