Пример #1
0
bool decompose(const QString &source, QString &name, std::vector<std::string> *args) {
    QString arg;
    int count = 0;
    int pos = 0, begin = 0, end;
    int brack = 0;
    bool valid = true;

    args->clear();
    while (pos < source.size() && valid) {
        if (source.at(pos).toLatin1() == '(') brack++;
        if (source.at(pos).toLatin1() == ')') brack--;
        if (source.at(pos).toLatin1() == ',' && brack == 0) {
            end = pos - begin;
            if (count == 0) {
                name = source.left(end);
                killEmptyEnds(name);
            }
            else {
                arg = source.mid(begin,end);
                valid = valid && checkArg(arg);
                args->push_back(arg.toUtf8().constData());
            }
            count++;
            begin = pos + 1;
        }
        pos++;
    }
    if (count == 0) name = source.left(end);
    else {
        arg = source.mid(begin,end);
        valid = valid && checkArg(arg);
        args->push_back(arg.toUtf8().constData());
    }
    return valid;
}
Пример #2
0
/// set_device_specs - tcl command to add device information
int set_device_specs(ClientData clientData, Tcl_Interp *interp, int
        argc, const char *argv[]) {
    static char error[100];
    if (argc != 13) {
        sprintf(error, "%s", "Expecting 13 arguments.");
        interp->result = error;
        return(TCL_ERROR);
    }
    LegupConfig *config = (LegupConfig*)clientData;

    if (!checkArg(argv, 2, "-Family", error) ||
        !checkArg(argv, 4, "-Device", error) ||
        !checkArg2(argv, 6, "-MaxLEs", "-MaxALMs", error) ||
        !checkArg2(argv, 8, "-MaxM4Ks", "-MaxM9KMemBlocks", error) ||
        !checkArg(argv, 10, "-MaxRAMBits", error) ||
        !checkArg(argv, 12, "-MaxDSPs", error))
    {
        interp->result = error;
        return(TCL_ERROR);
    }

    int MaxLEs = atoi(argv[6]);
    int MaxM4Ks = atoi(argv[8]);
    int MaxRAMBits = atoi(argv[10]);
    int MaxDSPs = atoi(argv[12]);

    config->setDeviceSpecs(argv[2], argv[4], MaxLEs, MaxM4Ks, MaxRAMBits, MaxDSPs);
    return(TCL_OK);
}
Пример #3
0
int emuCheckResetArgument(char* cmdLine) {
    int i;
    char*   argument;

    for (i = 0; (argument = extractToken(cmdLine, i)) != NULL; i++) {
        if (checkArg(argument, "reset")) {
            return 1;
        }
        if (checkArg(argument, "resetregs")) {
            return 2;
        }
    }

    return 0;
}
Пример #4
0
/// loop_pipeline - tcl command to pipeline a loop. Example:
///      loop_pipeline "loop" -ii 1
/// the ii is optional and specifies an pipeline initiation interval
int loop_pipeline(ClientData clientData, Tcl_Interp *interp, int argc, const
        char *argv[]) {
    static char error[100];
    if (argc != 2 && argc != 4) {
        static char error[] = "wrong # args: should be "
            "\"loop_pipeline \"loop\" [ -ii 1 ]\"";
        interp->result = error;
        assert(0);
        return(TCL_ERROR);
    }

    // check arguments are correct
    bool user_II = false;
    int II = 0;
    if (argc == 4) {
        if (!checkArg(argv, 3, "-ii", error)) {
            interp->result = error;
            return(TCL_ERROR);
        }
        user_II = true;
        II = atoi(argv[3]);
        assert(II >= 0 && "Initiation interval must be non-negative");
    }

    const char *label = argv[1];

    LegupConfig *config = (LegupConfig*)clientData;
    config->addLoopPipeline(label, user_II, II);
    return(TCL_OK);
}
Пример #5
0
int lh_saveimage(lua_State *L) {
  checkArg(L, 2, "saveimage");
  Image *o = luaO(1, Image);
  if(useGL(o)) screenshotGL(luaStr(2));
  else SDL_SaveBMP(o->s, luaStr(2));
  return 0;
  }
Пример #6
0
int lh_internal(lua_State *L) {
  checkArg(L, 3, "internal");

  P = new InternalProcess(luaO(1, Screen), luaO(2, Font), luaStr(3));
  
  return retObjectEv(L, P);
  }
Пример #7
0
std::string CommandParser::getArg(const std::string& f_arg,
																	const std::string& defaultVal,
                                  const std::string& description)
{
	std::vector<std::string> names;
	tokenize(f_arg,names,",;:");
	std::vector<std::string>::const_iterator namesIter = names.begin();
	std::string found = (*(names.begin()));
	for (;namesIter!=names.end();++namesIter) {
		argIter_ = argMap_.find((*namesIter));
		if(argIter_ != argMap_.end() ) {
			found = (*namesIter);
		}
	}
	checkArg(found,defaultVal,description);
	requestedArgs_.push_back((*(names.begin())));
	argIter_ = argMap_.find(found);
	for (namesIter = names.begin();namesIter!=names.end();++namesIter) {
		argIter_->second->addAlt(*namesIter);
		if (found.compare((*namesIter)) != 0) {
			argMap_.insert(std::pair<std::string,ArgInfo*> 
										 ((*namesIter),argIter_->second));
		}
	}
  return argIter_->second->value;
}
Пример #8
0
int lh_hydrainfo(lua_State *L) {
  checkArg(L, 2, "hydramap");
  int x = luaInt(1);
  int y = luaInt(2);
  helpAbout(x, y);
  return 0;
  }
Пример #9
0
int lh_hydracache(lua_State *L) {
  checkArg(L, 2, "hydracache");
  int id = luaInt(1);
  int val = luaInt(2);
  cacheMap(id, val);
  return 1;
  }
Пример #10
0
int lh_imggetsize(lua_State *L) {
  checkArg(L, 1, "imggetsize");
  Image *img = luaO(1, Image);
  lua_newtable(L);
  setfield(L, "x", img->s->w);
  setfield(L, "y", img->s->h);
  return 1;
  }
Пример #11
0
int lh_hydramap(lua_State *L) {
  checkArg(L, 3, "hydramap");
  int x = luaInt(1);
  int y = luaInt(2);
  int m = luaInt(3);
  drawMapLua(L, x, y, m);
  return 1;
  }
Пример #12
0
int lh_isosizes(lua_State *L) {
  checkArg(L, 1, "isosizes");
  IsoParam *P = luaO(1, IsoParam);
  lua_newtable(L);
  setfield(L, "floor", P->floor);
  setfield(L, "x", P->sx);
  setfield(L, "y", P->sy);
  return 1;
  }
Пример #13
0
int lh_logopen(lua_State *L) {
  checkArg(L, 1, "argv");
  logfile && logfile != stdin && fclose(logfile);
  const char *buf = luaStr(1);
  if(strcmp(buf, "-") == 0) logfile = stdout;
  else logfile = fopen(buf, "wt");
  errfile = logfile;
  return 0;
  }
Пример #14
0
        std::pair<T, bool> checkArg(int i, Checker checker, Accessor acc) const
        {
            if (!checkArg(i, checker))
            {
                return std::make_pair(T(), false);
            }

            return std::make_pair((this->*acc)(i), true);
        }
Пример #15
0
// Command line parser
int parseCmdLine(int argc, char *argv[], const char *optString, struct arguments *arguments){
	int status = 0;
	int c=0;
	while (c != -1) {
		c=getopt(argc,argv,optString);
		switch(c){
			case 'd':
				arguments->scale=true;
				sscanf(optarg,"%lf:%lf",&(arguments->dMin),&(arguments->dMax));
				break;
			case 's':
				arguments->resize=true;
				sscanf(optarg,"%i:%i",&(arguments->NX),&(arguments->NY));
				if (checkUserSize(arguments)) return 1;
				break;
			case 'f':
				arguments->fpsU=true;
				sscanf(optarg,"%i",&(arguments->fps));
				break;
			case 'h':
				arguments->hFlag=true;
				printHelp(argv[0]);
				break;
			case '?':
				if (optopt == 'd' || optopt == 's' || optopt == 'f'){
					fprintf(stderr,"\033[31mOption %c requires an arguments.\033[0m\n",optopt);
					return 1;
				} else if (isprint(optopt)){
					fprintf(stderr,"\033[31mUnknown options -%c.\033[0m\n",optopt);
					return 1;
				} else {
					fprintf(stderr,"\033[31mUnknown option Character '\\x%x'.\033[0m\n",optopt);
					return 1;
				}
				break;
			// default:
			//      printUsage(argv[0]);
			//      return 1;
		}
	}

	if (arguments->hFlag) return 1;

	if (c == -1 && optind != argc-1) {
		arguments->argInd=optind;
		if (checkArg(argv[optind])){
			arguments->output=argv[optind];
			arguments->itStart=optind+1;
			return 0;
		} else {
			return 1;
		}
	} else {
		return c;
	}
}
Пример #16
0
int lh_delete(lua_State *L) {
  checkArg(L, 1, "delete");
  int i = luaInt(1);
  if(i < 0 || i > size(objs)) {
    noteyeError(17, "delete: no such object", NULL, i);
    return 0;
    }
  deleteobj(i); // todo: reuse this index?
  return 0;
  }
Пример #17
0
int lh_sethydrabox(lua_State *L) {
  checkArg(L, 2, "sethydrabox");
  extern SDL_Surface *hydrabox, *hydraheads;
  extern int *hydraboxc;
  Image *I1 = luaO(1, Image);
  Image *I2 = luaO(2, Image);
  hydrabox = I1->s;
  hydraheads = I2->s;
  hydraboxc = &I1->changes;
  return 0;
  }
Пример #18
0
int lh_hydramain(lua_State *L) {
  checkArg(L, 2, "hydramain");

  InternalProcess *P = luaO(1, InternalProcess);
  noteye_setinternal(P, L, 2);

  P->exitcode = hydraMain(gargc, gargv);
  P->isActive = false;

  return 0;
  }
Пример #19
0
int lh_getpixel(lua_State *L) {
  checkArg(L, 3, "getpixel");

  Image *srcI = luaO(1, Image);
  int srcX = luaInt(2);
  int srcY = luaInt(3);
#ifdef OPENGL
  if(useGL(srcI)) return retInt(L, getpixelGL(srcX, srcY));
#endif
  srcI->setLock(true);
  int res = qpixel(srcI->s, srcX, srcY);
  return retInt(L, res);
  }
Пример #20
0
int lh_isoparam(lua_State *L) {
  checkArg(L, 4, "isoparam");
  
  IsoParam *P = new IsoParam;
  P->floor = luaInt(1);
  P->wall  = luaInt(2);
  P->icon  = luaInt(3);
  P->iconh = luaInt(4);
  
  P->build();
  
  return retObject(L, P);
  }
Пример #21
0
bool decompose(const QString &source, std::vector<std::string> &args) {
    QString midString;
    int pos = 0, begin = 0, end;
    int brack = 0;
    bool valid = true;

    args.clear();
    while (pos < source.size() && valid) {
        if (source.at(pos).toLatin1() == '(') brack++;
        if (source.at(pos).toLatin1() == ')') brack--;
        if (source.at(pos).toLatin1() == ',' && brack == 0) {
            end = pos - begin;
            midString = source.mid(begin,end);
            valid = valid && checkArg(midString);
            args.push_back(midString.toUtf8().constData());
            begin = pos + 1;
        }
        pos++;
    }
    midString = source.mid(begin,end);
    valid = valid && checkArg(midString);
    args.push_back(midString.toUtf8().constData());
    return valid;
}
Пример #22
0
int lh_setfont(lua_State *L) {
  checkArg(L, 2, "setfont");
  Font *f = luaO(2, Font);
  Process *p = dluaO(1, Process);
  if(p) {
    p->f = f;
    }
  Screen *s= p ? p->s : dluaO(1, Screen);
  if(s) {
    for(int y=0; y<s->sx * s->sy; y++)
      s->v[y] = tileSetFont(s->v[y], f);
    }
  Tile *t = dluaO(1, Tile);
  if(t) return retInt(L, tileSetFont(t->id, f));
  return 0;
  }
Пример #23
0
int lh_setpixel(lua_State *L) {
  checkArg(L, 4, "setpixel");

  Image *srcI = luaO(1, Image);
  int srcX = luaInt(2);
  int srcY = luaInt(3);
  
#ifdef OPENGL
  if(useGL(srcI)) return 0;
#endif

  srcI->setLock(true);
  qpixel(srcI->s, srcX, srcY) = luaInt(4);
  srcI->changes++;
  return 0;
  }
Пример #24
0
int lh_fillimage(lua_State *L) {
  checkArg(L, 6, "fillimage");
  SDL_Rect rect;
  rect.x = luaInt(2);
  rect.y = luaInt(3);
  rect.w = luaInt(4);
  rect.h = luaInt(5);
  int col = luaInt(6);
  Image *img = luaO(1,Image);
#ifdef OPENGL
  if(useGL(img)) fillRectGL(rect.x, rect.y, rect.w, rect.h, col); else
#endif
  SDL_FillRect(img->s, &rect, col);
  img->changes++;
  return 0;
  }
Пример #25
0
void emuCheckFullscreenArgument(Properties* properties, char* cmdLine){
    int i;
    char* argument;

    if (NULL == extractToken(cmdLine, 0)) {
        return;
    }

//    properties->video.windowSize = P_VIDEO_SIZEX2;

    for (i = 0; (argument = extractToken(cmdLine, i)) != NULL; i++) {
        if (checkArg(argument, "fullscreen")) {
            properties->video.windowSize = P_VIDEO_SIZEFULLSCREEN;
        }
    }
}
Пример #26
0
int lh_iso(lua_State *L) {
  checkArg(L, 2, "isoproject");
  IsoParam *P = luaO(2, IsoParam);
  
  int t0;
  int ti = luaInt(1);
  t0 = addFreeform(distill(ti, spIFloor), P->Floor);
  t0 = addMerge(t0, addFreeform(addRecolor(distill(ti, spIWallL), 0xFF808080, recMult), P->WalL), false);
  t0 = addMerge(t0, addFreeform(addRecolor(distill(ti, spIWallR), 0xFFC0C0C0, recMult), P->WalR), false);
//t0 = addMerge(t0, addFreeform(distill(ti, spIWallL), P->WalL), false);
//t0 = addMerge(t0, addFreeform(distill(ti, spIWallR), P->WalR), false);
  t0 = addMerge(t0, addFreeform(distill(ti, spICeil), P->Ceil), false);
  t0 = addMerge(t0, addFreeform(distill(ti, spIItem), P->Item), false);
  
  return retInt(L, t0);
  // return retInt(L, renderAsIso(luaInt(1), spIFloor | spIItem | spIWallL | spIWallR | spICeil, luaO(2, IsoParam)));
  }
Пример #27
0
char* emuCheckThemeArgument(char* cmdLine){
    static char themeName[PROP_MAXPATH];
    int i;
    char* argument;

    themeName[0] = 0;

    for (i = 0; (argument = extractToken(cmdLine, i)) != NULL; i++) {
        if (checkArg(argument, "theme")) {
            argument = extractToken(cmdLine, i + 1);
            if (argument != NULL) {
                strcat(themeName, argument);
            }
            return themeName;
        }
    }

    return NULL;
}
Пример #28
0
/// set_operation_attributes - tcl command to add hardware operation data
int set_operation_attributes(ClientData clientData, Tcl_Interp *interp, int
        argc, const char *argv[]) {
    static char error[100];
    if (argc != 21) {
        sprintf(error, "%s", "Expecting 21 arguments.");
        interp->result = error;
        return(TCL_ERROR);
    }
    LegupConfig *config = (LegupConfig*)clientData;

    // check arguments are correct
    if (!checkArg(argv, 2, "-Name", error) ||
        !checkArg(argv, 4, "-Fmax", error) ||
        !checkArg(argv, 6, "-CritDelay", error) ||
        !checkArg(argv, 8, "-StaticPower", error) ||
        !checkArg(argv, 10, "-DynamicPower", error) ||
        !checkArg2(argv, 12, "-LUTs", "-ALUTs", error) ||
        !checkArg(argv, 14, "-Registers", error) ||
        !checkArg2(argv, 16, "-LEs", "-ALMs", error) ||
        !checkArg(argv, 18, "-DSP", error) ||
        !checkArg(argv, 20, "-Latency", error))
    {
        interp->result = error;
        return(TCL_ERROR);
    }

    float FMax=atof(argv[4]);
    float CritDelay=atof(argv[6]);
    float StaticPower=atof(argv[8]);
    float DynamicPower=atof(argv[10]);
    int LUTs=atoi(argv[12]);
    int Registers=atoi(argv[14]);
    int LogicElements=atoi(argv[16]);
    int DSPElements=atoi(argv[18]);
    int Latency=atoi(argv[20]);

    config->addOperation(argv[2], FMax, CritDelay, StaticPower, DynamicPower,
            LUTs, Registers, LogicElements, DSPElements, Latency);
    return(TCL_OK);
}
Пример #29
0
int lh_imgcopy(lua_State *L) {
  checkArg(L, 8, "fillimage");

  Image *srcI = luaO(1, Image);
  int srcX = luaInt(2);
  int srcY = luaInt(3);

  Image *tgtI = luaO(4, Image);
  int tgtX = luaInt(5);
  int tgtY = luaInt(6);
  
  int six = luaInt(7);
  int siy = luaInt(8);
  
  srcI->setLock(false);
  tgtI->setLock(false);
  
  SDL_Rect srcR; srcR.x = srcX; srcR.y = srcY; srcR.w = six; srcR.h = siy;
  SDL_Rect tgtR; tgtR.x = tgtX; tgtR.y = tgtY; 
  
  SDL_BlitSurface(srcI->s, &srcR, tgtI->s, &tgtR);
  tgtI->changes++;
  return 0;
  }
Пример #30
0
int main(int argc, char** argv)
{
#if 0
    testRandomShit();
    exit(1);
#endif
    int index = checkArg(argc, argv, "-w");
    if(index && index < argc-1){
        WIDTH = std::stoi(argv[index+1]);
    }
    index = checkArg(argc, argv, "-h");
    if(index && index < argc-1){
        HEIGHT = std::stoi(argv[index+1]);
    }

    Window win(TITLE, WIDTH, HEIGHT); 
    win.setClearColor(0.01f, 0.01f, 0.2f, 1.f);
    win.setVSync(VSYNC_MODE::OFF);
    myCheckForGlErrors(); // some casual error lmao

    index = checkArg(argc, argv, "-full_screen");
    if(index){
        win.setVideoMode(VIDEO_MODE::FULLSCREEN_DESKTOP);
        glViewport(0, 0, win.getWidth(), win.getHeight());
    }

    index = checkArg(argc, argv, "-tick_rate");
    if(index && index < argc-1){
        TICK_RATE = std::stoi(argv[index+1]);
    }

    printf("\tUsing glew %s\n", glewGetString(GLEW_VERSION));
    printf("\tVendor: %s\n", glGetString (GL_VENDOR));
    printf("\tRenderer: %s\n", glGetString (GL_RENDERER));
    printf("\tVersion: %s\n", glGetString (GL_VERSION));
    printf("\tGLSL: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
    printf("%s %d %d\n", win.getTitle(), win.getWidth(), win.getHeight());
    glEnable(GL_DEBUG_OUTPUT);
    glDebugMessageCallbackARB(myErrorCallback, nullptr);

    GameState game;
    Graphics graphics;

    Time    dt = Time::seconds(1.f/TICK_RATE);
    Time    accumulator = Time::zero();
    Time    accum_time = Time::zero();
    
    u32     frames = 0;

    Clock   perf_clock;
    Clock   clk;

    game.init();
    game.win = &win;
    graphics.init();
    perf_clock.restart();
    clk.restart();

    while(game.running){
        accumulator = clk.time();
        if(accumulator.microseconds() >= dt.microseconds()){
            accum_time += clk.restart();
            tick(&game, dt);
            win.clear();
            draw(&graphics, &game);
            win.update();
            accumulator -= dt;
            ++frames;
        }else{
            SDL_Delay((dt-accumulator).milliseconds());
        }
        if(perf_clock.time().seconds() > 1.f){
            Time avg_time = accum_time/frames;
            char title[128];
            sprintf(title, "Game time: %.2fs\tAverage frame took %ldus\tFPS: %d",
                    game.game_time.seconds(), avg_time.microseconds(), frames);
            win.setTitle(title);
            accum_time = Time::zero();
            frames = 0;
            perf_clock.restart();
        }
    }
    game.quit();
    graphics.uninit();
}