2011-07-15 02:50:47 +01:00
|
|
|
/* -*- Mode: Javascript -*-
|
|
|
|
* -*- coding: UTF-8 -*-
|
|
|
|
* Copyright (C) 2011 by Artur Ventura
|
|
|
|
*
|
|
|
|
* File: types.js
|
|
|
|
* Time-stamp: Fri Jul 15 02:46:27 2011
|
|
|
|
*
|
|
|
|
* Author: Artur Ventura
|
|
|
|
*
|
|
|
|
*/
|
2011-07-18 00:56:41 +01:00
|
|
|
|
|
|
|
#ifndef _TYPES_JS_
|
|
|
|
#define _TYPES_JS_
|
2011-07-15 02:50:47 +01:00
|
|
|
|
2011-07-06 16:30:18 +01:00
|
|
|
// Local Variables Types
|
2011-07-17 18:42:58 +01:00
|
|
|
#define LOC_VAR_boolean 0x001;
|
|
|
|
#define LOC_VAR_byte 0x002;
|
|
|
|
#define LOC_VAR_char 0x004;
|
|
|
|
#define LOC_VAR_short 0x008;
|
|
|
|
#define LOC_VAR_int 0x010;
|
|
|
|
#define LOC_VAR_float 0x020;
|
|
|
|
#define LOC_VAR_reference 0x040;
|
|
|
|
#define LOC_VAR_returnAddress 0x080;
|
|
|
|
#define LOC_VAR_long 0x100;
|
|
|
|
#define LOC_VAR_double 0x200;
|
2011-07-06 16:30:18 +01:00
|
|
|
|
|
|
|
// Reference Types
|
2011-07-17 18:42:58 +01:00
|
|
|
#define REF_TYPE_class 0x1
|
|
|
|
#define REF_TYPE_interface 0x2
|
|
|
|
#define REF_TYPE_array 0x4
|
2011-07-06 16:30:18 +01:00
|
|
|
|
2011-07-17 18:42:58 +01:00
|
|
|
//primitive max Max values
|
|
|
|
#define CHAR_MAX_VALUE 0x0000
|
|
|
|
#define CHAR_MIN_VALUE 0xFFFF
|
|
|
|
|
|
|
|
#define BYTE_MAX_VALUE 127
|
|
|
|
#define BYTE_MIN_VALUE -128
|
|
|
|
#define BYTE_USIZE 128
|
|
|
|
|
|
|
|
#define SHORT_MAX_VALUE 32767
|
|
|
|
#define SHORT_MIN_VALUE -32768
|
|
|
|
#define SHORT_USIZE 32768
|
|
|
|
|
|
|
|
#define INT_MAX_VALUE 2147483647
|
|
|
|
#define INT_MIN_VALUE -2147483648
|
|
|
|
#define INT_USIZE 2147483648
|
|
|
|
|
|
|
|
#define LONG_MAX_VALUE 9223372036854776000
|
|
|
|
#define LONG_MIN_VALUE -9223372036854776000
|
|
|
|
#define LONG_USIZE 9223372036854776000
|
|
|
|
|
|
|
|
#define FLOAT_MAX_VALUE (2-Math.pow(2,-23))*Math.pow(2,127)
|
|
|
|
#define FLOAT_MIN_VALUE (2-Math.pow(2,-149))
|
|
|
|
|
|
|
|
#define DOUBLE_MAX_VALUE (2-Math.pow(2,-52))*Math.pow(2,1023)
|
|
|
|
#define DOUBLE_MIN_VALUE Math.pow(2,-1074)
|
|
|
|
|
|
|
|
#define NULL null
|
|
|
|
|
|
|
|
#define CHAR_OVERFLOW(value) ((value % (2*CHAR_MIN_VALUE)) - (CHAR_MIN_VALUE))
|
|
|
|
#define BYTE_OVERFLOW(value) ((value % (2*BYTE_USIZE)) - (BYTE_USIZE))
|
|
|
|
#define SHORT_OVERFLOW(value) ((value % (2*SHORT_USIZE)) - (SHORT_USIZE))
|
|
|
|
#define INT_OVERFLOW(value) ((value % (2*INT_USIZE)) - (INT_USIZE))
|
|
|
|
#define LONG_OVERFLOW(value) ((value % (2*LONG_USIZE)) - (LONG_USIZE))
|
|
|
|
#define POSITIVE_INF Number.POSITIVE_INFINITY
|
|
|
|
#define NEGATIVE_INF Number.NEGATIVE_INFINITY
|
|
|
|
|
|
|
|
#define IS_OVERFLOW(value,mark) (value > mark)
|
|
|
|
#define IS_UNDERFLOW(value,mark) (value < mark)
|
|
|
|
|
|
|
|
#define ADD(value1,value2) (value1)+(value2)
|
|
|
|
#define AND(value1,value2) (value1)&(value2)
|
|
|
|
#define DIV(value1,value2) (value1)/(value2)
|
|
|
|
#define MUL(value1,value2) (value1)*(value2)
|
|
|
|
#define NEG(value1) -(value1)
|
|
|
|
#define OR(value1,value2) (value1)|(value2)
|
|
|
|
#define REM(value1,value2) (value1)%(value2)
|
|
|
|
#define SHL(value1,value2) (value1)<<(0x001f&(value2))
|
|
|
|
#define SHR(value1,value2) (value1)>>(0x001f&(value2))
|
|
|
|
#define SUB(value1,value2) ((value1)-(value2))
|
|
|
|
#define USHR(value1,value2) ((value1)>0?(value1)>>s:((value1)>>s) + (2<<~s))
|
|
|
|
#define XOR(value1,value2) ((value1)^(value2))
|
2011-07-06 16:30:18 +01:00
|
|
|
|
|
|
|
function getRefClass(ref){
|
|
|
|
if (ref.type == REF_TYPE_array){
|
|
|
|
return getArrayClass();
|
|
|
|
}else{
|
|
|
|
return ref.classRef;
|
|
|
|
}
|
|
|
|
}
|
2011-07-18 00:56:41 +01:00
|
|
|
#endif //_TYPES_JS_
|
2011-07-17 18:42:58 +01:00
|
|
|
|
2011-07-06 16:30:18 +01:00
|
|
|
|