Beispiel #1
0
void solve() {
    int64 argument;
    {
        FILE  *in = fopen("function.in" ,"r");
        fscanf(in,"%lld",&argument);
        fclose(in );
    }

    cache = (int32*)malloc(sizeof(int32*)*(argument+1));
    memset(cache,0,argument+1);

    {
        //todo: realloc
        request **stack  = (request**)malloc(sizeof(request*)*INIT_STACK);
               ( *stack) = (request* )malloc(sizeof(request ));
               (**stack) = create_request(argument);

        request **bottom = stack;
        do {
            request current = **bottom;
            int64   value   = current.argument;

            if (value < 3 || cache[value] != 0) {
                incCounter(value);
                free(*bottom);
                bottom--;
            } else {
                int64 left, right;
                if (value % 2 == 0) {
                    left  = value - 1;
                    right = value - 3;
                } else {
                    left  = (value / 7)*6 + ((value % 7)*6)/7;
                    right = (value / 3)*2 + ((value % 3)*2)/3;
                }
                if (cache[left] == 0 || cache[right] == 0) {
                    //left and right will be computed twice =/
                    processArg(left, &bottom);
                    processArg(right,&bottom);
                } else {
                    cache[value] = (cache[left] + cache[right]) % two32;
                }
            }
        } while (bottom != stack);
    }

    {
        FILE *out = fopen("function.out","w");
        fprintf(out,"%lld",counter);
        fclose(out);
    }
}
void FMUCodeGen::genModelVariables(FMI::ModelVariables &mvars)
{
	set<SFC::Program> programs = _sfprj.Program_kind_children();
	for(set<SFC::Program>::iterator it=programs.begin();it!=programs.end();++it)
	{
		set<SFC::Class> clss = (*it).Class_kind_children();
		for(set<SFC::Class>::iterator clss_it=clss.begin();clss_it!=clss.end();++clss_it)
		{
			set<SFC::Function> funcs = (*clss_it).Function_kind_children();
			for(set<SFC::Function>::iterator funcs_it=funcs.begin();funcs_it!=funcs.end();++funcs_it)
			{
				SFC::Function func = *funcs_it;
				set<SFC::FunctionCall> func_calls = func.caller();
				if(func_calls.empty())
				{
					set<SFC::Arg, ArgIndexPredicate> args = func.Arg_kind_children_sorted(ArgIndexPredicate());
					for(set<SFC::Arg, ArgIndexPredicate>::iterator args_it=args.begin();args_it!=args.end();++args_it)
					{
						const SFC::Arg &arg = *args_it;
						if((std::string)arg.type()!="")
							processArg(mvars, arg);
					}
				}
			}
		}
	}
}
Beispiel #3
0
/*
 * -----------------------------------------------------------------------------
 *  Main
 * -----------------------------------------------------------------------------
 */
int32_t main(int32_t aArgc, char *aArgv[])
{
    perfContext     sContext;

    struct timeval  sStart, sEnd;
    int32_t         sSeconds, sUseconds;

    uint32_t       *sArray;

    /*
     * Init
     */
    perfContextInit(&sContext);

    processArg(aArgc, aArgv, &sContext);

    /*
     * Allocate memory and load data
     */
    (void)fprintf(stderr, "Reading data...\n");
    createAndFillArray(&sContext);

    sArray = sContext.mArrayToSort;

    /*
     * Sort it!
     */
    (void)fprintf(stderr, "Start sorting...\n");
    (void)gettimeofday(&sStart, NULL);

    (*sContext.mSortFunc)(sArray, sContext.mCount, sizeof(uint32_t), compareFunc);

    (void)gettimeofday(&sEnd, NULL);
    (void)fprintf(stderr, "Completed sorting.\n");

    /*
     * Calculate time
     */
    sSeconds  = sEnd.tv_sec - sStart.tv_sec;
    sUseconds = sEnd.tv_usec - sStart.tv_usec;

    if (sUseconds < 0)
    {
        sSeconds--;
        sUseconds += 1000000;
    }

    (void)fprintf(stderr, "\nIt took %d.%06d seconds to sort %d elements.\n\n",
                  sSeconds, sUseconds, sContext.mCount);

    /*
     * Verify if option is set
     */
    if (sContext.mDoVerify == 1)
    {
        (void)fprintf(stderr, "Checking if resulting array is correctly sorted...... ");

        if (verifyArrayIsSorted(sArray, sContext.mCount) == 0)
        {
            (void)fprintf(stderr, "OK\n");
        }
        else
        {
            (void)fprintf(stderr, "FAIL\n");
        }
    }

    /*
     * Free memory
     */
    destroyArray(sArray);

    return 0;
}
configuration_t *clparser(int argc, char ** argv) {
	configuration_t *conf;
	char *aOpt[] = {"aes128", "aes192", "aes256", "des"};
	char *mOpt[] = {"ecb", "cfb", "ofb", "cbc"};
	char *stegOpt[] = {"LSB1", "LSB4", "LSBE", "WANTED"};


	if((conf = calloc(sizeof(configuration_t),1)) == NULL){
		return NULL;
	}

	parserADT parser = newParser(argc, argv);

	setArg(parser, arg_in, "-in", 0, 1, ARG_TYPE1, 0, NULL);
	setArg(parser, arg_out, "-out", 0, 1, ARG_TYPE1, 0, NULL);
	setArg(parser, arg_porter, "-p", 0, 1, ARG_TYPE1, 0, NULL);
	setArg(parser, arg_embed, "-embed", 1, 1, ARG_TYPE0, 0, NULL);
	setArg(parser, arg_extract, "-extract", 1, 1, ARG_TYPE0, 0, NULL);
	setArg(parser, arg_pass, "-pass", 1, 1, ARG_TYPE1, 0, NULL);
	setArg(parser, arg_algorithm, "-a", 1, 1, ARG_TYPE1, SIZE_OF_ARRAY(aOpt), aOpt);
	setArg(parser, arg_ciphermode, "-m", 1, 1, ARG_TYPE1, SIZE_OF_ARRAY(mOpt) , mOpt);
	setArg(parser, arg_steg, "-steg", 1, 1, ARG_TYPE1, SIZE_OF_ARRAY(stegOpt), stegOpt);
	setArg(parser, arg_help, "-h", 1, 1, ARG_TYPE0, 0, NULL); //help

	int error = 0;
	while(!noMoreArgs(parser) && !error){
		switch(getArg(parser)){
		case arg_out:
			error = !processArg(&conf->targetFile, getValue(parser), "target file");
			break;
		case arg_in:
			error = !processArg(&conf->sourceFile, getValue(parser), "source file");
			break;
		case arg_porter:
			error = !processArg(&conf->carrierFile, getValue(parser), "carrier file");
			break;
		case arg_embed:
			if(conf->embed == steg_notSet){
				LOG("embed/extract is embed\n");
				conf->embed = steg_embed;

				if(conf->encriptation != NULL) {
					conf->encriptation->encrypOrDecrypt = encrypOrDecrypt_encrypt;
				}

			}
			else {
				printf("embed/extract already set\n");
				error = 1;
			}
			break;
		case arg_extract:
			if(conf->embed == steg_notSet){
				LOG("embed/extract is extract\n");
				conf->embed = steg_extract;

				if(conf->encriptation != NULL) {
					conf->encriptation->encrypOrDecrypt = encrypOrDecrypt_decrypt;
				}


			} else {
				printf("embed/extract already set\n");
				error = 1;
			}
			break;
		case arg_pass:
			if(!initEncrypt(conf)){
				error = 1;
			} else {
			error = !processArg((char**)&conf->encriptation->passKeyIv.password, getValue(parser), "password");
			}
			break;
		case arg_algorithm:
			if(!initEncrypt(conf)){
				error = 1;
			} else {
				algorithm_t alg = getCryptoAlgorithm(getValue(parser));
				if(alg != algorithm_none){
					setCryptoAlgorithm(conf->encriptation, alg);
				} else {
					printf("encryptation algorithm not reconized: %s\n", getValue(parser));
					error = 1;
				}
			}
			break;
		case arg_ciphermode:
			if(!initEncrypt(conf)){
				error = 1;
			} else {
				ciphermode_t cipherm = getCipherMode(getValue(parser));
				if(cipherm != ciphermode_none){
					setCryptoCiphermode(conf->encriptation, cipherm);
				} else {
					printf("ciphermode not reconized: %s\n", getValue(parser));
					error = 1;
				}
			}
			break;
		case arg_steg:
			if(conf->stegMode != stegMode_none){
				printf("steg already set\n");
				error = 1;
			} else {
				stegMode_t mode = getStegMode(getValue(parser));
				if(mode == stegMode_none){
					printf("steg mode not reconized: %s\n", getValue(parser));
					error = 1;
				} else {
					conf->stegMode = mode;
				}
			}
			break;
		case arg_help:
			showHelp();
			return NULL;
			break;
		default:
			error = 1;
			break;
		}

	}

	return conf;

}
int loggerJavacParserCollectActions(
  const char* prog_,
  const char* toolName_,
  const char* const argv_[],
  LoggerVector* actions_)
{
  ParserData data;
  size_t i;

  assert(prog_ == prog_); /* suppress unused variable */

  data.hasSourcePath = 0;
  data.state = Normal;
  loggerVectorInit(&data.commonArgs);
  loggerVectorInit(&data.sources);
  memset(data.classdir, 0, sizeof(data.classdir));

  loggerVectorAdd(&data.commonArgs, loggerStrDup(toolName_));

  for (i = 1; argv_[i]; ++i)
  {
    if (argv_[i][0] == '@')
    {
      size_t j;
      LoggerVector fargs;

      loggerVectorInit(&fargs);
      
      readArgumentsFromFile(argv_[i] + 1, &fargs);
      for (j = 0; j < fargs.size; ++j)
      {
        processArg((const char*) fargs.data[j], &data);
      }

      loggerVectorClear(&fargs);
    }
    else
    {
      processArg(argv_[i], &data);
    }
  }

  if (!data.hasSourcePath)
  {
    char workdir[PATH_MAX];
    if (loggerMakePathAbs(".", workdir, 0))
    {
      loggerVectorAdd(&data.commonArgs, loggerStrDup("-sourcepath"));
      loggerVectorAdd(&data.commonArgs, loggerStrDup(workdir));
    }
  }

  for (i = 0; i < data.sources.size; ++i)
  {
    char outputFile[PATH_MAX];
    const char* src = (char*) data.sources.data[i];
    LoggerAction* action = loggerActionNew(toolName_);
    if (!action)
    {
      continue;
    }

    loggerVectorAddFrom(&action->arguments, &data.commonArgs,
      NULL, (LoggerDupFuc) &loggerStrDup);
    loggerVectorAdd(&action->arguments, loggerStrDup(src));
    loggerVectorAdd(&action->sources, loggerStrDup(src));

    if (data.classdir[0] != 0)
    {
      char* fname = loggerGetFileName(src, 1);
      strcpy(outputFile, data.classdir);
      strcat(outputFile, "/");
      strcat(outputFile, fname);
      strcat(outputFile, ".class");
      free(fname);
    }
    else
    {
      char* path = loggerGetFilePathWithoutExt(src);
      strcpy(outputFile, path);
      strcat(outputFile, ".class");
      free(path);
    }

    loggerFileInitFromPath(&action->output, outputFile);
    loggerVectorAdd(actions_, action);
  }

  loggerVectorClear(&data.commonArgs);
  loggerVectorClear(&data.sources);

  return 1;
}