|
@@ -15,32 +15,6 @@ void sError(Script* sc, const char* format, ...) {
|
|
|
va_end(args);
|
|
|
}
|
|
|
|
|
|
-static void sIntPrinter(int i) {
|
|
|
- printf("%d\n", i);
|
|
|
-}
|
|
|
-
|
|
|
-static void sLongPrinter(long l) {
|
|
|
- printf("%ld\n", l);
|
|
|
-}
|
|
|
-
|
|
|
-static void sFloatPrinter(float f) {
|
|
|
- printf("%.2f\n", f);
|
|
|
-}
|
|
|
-
|
|
|
-static void sBoolPrinter(bool b) {
|
|
|
- puts(b ? "true" : "false");
|
|
|
-}
|
|
|
-
|
|
|
-static void sPointerPrinter(Pointer* b) {
|
|
|
- printf("(%d, %d)\n", b->array, b->offset);
|
|
|
-}
|
|
|
-
|
|
|
-static IntPrinter intPrinter = sIntPrinter;
|
|
|
-static LongPrinter longPrinter = sLongPrinter;
|
|
|
-static FloatPrinter floatPrinter = sFloatPrinter;
|
|
|
-static BoolPrinter boolPrinter = sBoolPrinter;
|
|
|
-static PointerPrinter pointerPrinter = sPointerPrinter;
|
|
|
-
|
|
|
static bool sRead(Script* sc, void* buffer, int length) {
|
|
|
if(sc->readIndex + length > sc->code->length) {
|
|
|
sError(sc, "cannot read expected %d bytes of data from bytecode");
|
|
@@ -169,13 +143,6 @@ static void sPushNullPointer(Script* sc) {
|
|
|
sPushPointer(sc, &p);
|
|
|
}
|
|
|
|
|
|
-static void sPrintPointer(Script* sc) {
|
|
|
- Pointer p;
|
|
|
- if(sPopPointer(sc, &p)) {
|
|
|
- pointerPrinter(&p);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
#define PRINT(type, Type, printer) \
|
|
|
{ \
|
|
|
type value; \
|
|
@@ -494,7 +461,6 @@ static void sCall(Script* sc) {
|
|
|
#define CASE_TYPE(TYPE, Type, type) \
|
|
|
case OP_STORE_##TYPE: sStore(sc, sizeof(type)); break; \
|
|
|
case OP_RETURN_##TYPE: RETURN(type, Type); break; \
|
|
|
- case OP_PRINT_##TYPE: PRINT(type, Type, type##Printer); break; \
|
|
|
case OP_EQUAL_##TYPE: BOOL_OP(type, Type, ==); break; \
|
|
|
case OP_LOAD_##TYPE: sLoad(sc, sizeof(type)); break;
|
|
|
|
|
@@ -559,7 +525,6 @@ static void sConsumeInstruction(Script* sc) {
|
|
|
case OP_DELETE: sDeleteArray(sc); break;
|
|
|
case OP_LENGTH: sLength(sc); break;
|
|
|
case OP_STORE_POINTER: sStore(sc, sizeof(Pointer)); break;
|
|
|
- case OP_PRINT_POINTER: sPrintPointer(sc); break;
|
|
|
case OP_EQUAL_POINTER: sEqualPointer(sc); break;
|
|
|
case OP_INT_TO_FLOAT: CAST(Int, int, Float); break;
|
|
|
case OP_FLOAT_TO_INT: CAST(Float, float, Int); break;
|
|
@@ -603,24 +568,4 @@ void sRun(Script* sc) {
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
-
|
|
|
-void sSetIntPrinter(IntPrinter p) {
|
|
|
- intPrinter = p;
|
|
|
-}
|
|
|
-
|
|
|
-void sSetLongPrinter(LongPrinter p) {
|
|
|
- longPrinter = p;
|
|
|
-}
|
|
|
-
|
|
|
-void sSetFloatPrinter(FloatPrinter p) {
|
|
|
- floatPrinter = p;
|
|
|
-}
|
|
|
-
|
|
|
-void sSetBoolPrinter(BoolPrinter p) {
|
|
|
- boolPrinter = p;
|
|
|
-}
|
|
|
-
|
|
|
-void sSetPointerPrinter(PointerPrinter p) {
|
|
|
- pointerPrinter = p;
|
|
|
}
|