Exemplo n.º 1
0
int main(int argc, char * argv[]){
	int dev;
	int i;
	
	init_member(); // init

	int re_input = 0; // 1이면 재입력 로직

	printf(MY_STRING "argc : %d\n",argc);

	if(argc != 4){
		printf(MY_STRING "Please Input the right parameter! \n");
		printf(MY_STRING "ex) %s -> 1 + 2\n", argv[0]);
		return -1;
	}
	do{
		if(re_input == 0){
			str_size = strlen(argv[1]);
			operator = argv[2][0];
			if(str_size > MAX_DIGIT){
				printf(MY_STRING "Warning! 4 Digit number only\n");
				str_size = MAX_DIGIT;
			}

			for(i=0; i<str_size; i++){
				data[i] = argv[1][i];
				temp[i] = argv[1][i];
				data2[i] = argv[3][i];
				temp2[i] = argv[3][i];
			}
		}else{
			init_member(); // init
			scanf("%s", data);
			str_size = strlen(data);
			strcpy(temp, data);
			scanf("%c", &operator);
			getchar();
			sacnf("%s", data2);
			strcpy(temp2, data2);
		}

		n1 = atoi(temp);
		n2 = atoi(temp2);
		if(operator=='+')
		{
			sprintf(data,"%04d",(atoi(data)+atoi(data2)));
			answer = n1 + n2;
		}
		else if(operator=='-')
		{
			sprintf(data,"%04d",(atoi(data)-atoi(data2)));
			answer = n1 - n2;
		}
		else if(operator=='x')
		{
			sprintf(data,"%04d",(atoi(data)*atoi(data2)));
			answer = n1 * n2;
		}
		else if(operator=='/')
		{
			sprintf(data,"%04d",(atoi(data)/atoi(data2)));
			answer = n1 / n2;
		}
		else if(operator=='%')
		{
			sprintf(data,"%04d",(atoi(data)%atoi(data2)));
			answer = n1 % n2;
		}
		else
		{
			printf("OPERATOR ERROR!\n");
			return -1;
		}
		if(answer <0 || answer > 9999){
			re_input = 1; // 범위가 넘어가는 경우에 재 입력 작업
		}else{
			re_input = 0; // 범위가 넘어가지 않으면 재입력 작업 하지 않는다
		}
		strcpy(ans,data);
		for(i=0; i<str_size; i++){
			if((argv[1][i] < 0x30) || (argv[1][i] > 0x39) ){
				printf(MY_STRING "Error! Invalid Value!\n");
				return -1;
			}
			data[i] = data[i] - 0x30;
		}
	}while(re_input);
	
	

	dev = open(FND_DEVICE, O_RDWR);
	if(dev < 0){
		printf(MY_STRING "Device open error! : %s\n", FND_DEVICE);
		exit(1);
	}

	retval = write(dev, &data, 4);

	if(retval <0){
		printf(MY_STRING "Write Error!\n");
		return -1;
	}

	memset(data, 0, sizeof(data));
	memset(data2, 0, sizeof(data2));
	sleep(1);
	retval = read(dev, &data, 4);

	if(retval < 0){
		printf(MY_STRING "Read Error!\n");
		return -1;
	}

	printf(MY_STRING "Current FND Value : ");
	printf("%d %c %d = %d\n",n1,operator,n2,answer);
	close(dev);
	return 0;
	
}
Exemplo n.º 2
0
void
Global_as::registerClasses()
{
    registerNatives(*this);

    function_class_init(*this, NSV::CLASS_FUNCTION);
    initObjectClass(_objectProto, *this, NSV::CLASS_OBJECT); 

    string_class_init(*this, NSV::CLASS_STRING); 
    array_class_init(*this, NSV::CLASS_ARRAY); 

    // No idea why, but it seems there's a NULL _global.o 
    // defined at player startup...
    // Probably due to the AS-based initialization 
    // Not enumerable but overridable and deletable.
    //
    as_value nullVal; nullVal.set_null();
    init_member("o", nullVal, PropFlags::dontEnum);


    VM& vm = getVM();

    // _global functions.            
    // These functions are only available in SWF6+, but this is just
    // because SWF5 or lower did not have a "_global"
    // reference at all.
    init_member("ASnative", createFunction(global_asnative));
    init_member("ASconstructor", createFunction(global_asconstructor));
    init_member("ASSetPropFlags", vm.getNative(1, 0));
    init_member("ASSetNative", vm.getNative(4, 0));
    init_member("ASSetNativeAccessor", vm.getNative(4, 1));
    init_member("AsSetupError", createFunction(global_assetuperror));
    init_member("updateAfterEvent", vm.getNative(9, 0));
    init_member("trace", vm.getNative(100, 4));

    init_member("setInterval", vm.getNative(250, 0));
    init_member("clearInterval", vm.getNative(250, 1));
    init_member("setTimeout", vm.getNative(250, 2));
 
    // This is an odd function with no properties. There ought to be
    // a better way of implementing this. See also TextFormat.getTextExtent.
    as_function* edc = createFunction(global_enableDebugConsole);
    edc->clearProperties();
    init_member("enableDebugConsole", edc);
    init_member("showRedrawRegions", vm.getNative(1021, 1));
    
    init_member("clearTimeout", getMember(*this, getURI(vm, "clearInterval")));

    _classes.declareAll(avm1Classes());

    // SWF8 visibility:
    const ObjectURI& flash = getURI(vm, "flash");
    flash_package_init(*this, flash); 

    init_member("escape", vm.getNative(100, 0));
    init_member("unescape", vm.getNative(100, 1));
    init_member("parseInt", vm.getNative(100, 2));
    init_member("parseFloat", vm.getNative(100, 3));
    init_member("isNaN", vm.getNative(200, 18));
    init_member("isFinite", vm.getNative(200, 19));

    init_member("NaN", as_value(NaN));
    init_member("Infinity", as_value(
                std::numeric_limits<double>::infinity()));

    loadExtensions();
}