]> git.saurik.com Git - cycript.git/blobdiff - Execute.cpp
Add typedef-expressions syntax to replace @encode.
[cycript.git] / Execute.cpp
index 2123b3fa96d6abde869377ece9a13421bf23dd89..bb337ba79a62728221794fd128f157563bcd7739 100644 (file)
@@ -346,13 +346,17 @@ void CYArrayPush(JSContextRef context, JSObjectRef array, JSValueRef value) {
 }
 
 static JSValueRef System_print(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
 }
 
 static JSValueRef System_print(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
+    FILE *file(stdout);
+
     if (count == 0)
     if (count == 0)
-        printf("\n");
+        fputc('\n', file);
     else {
         CYPool pool;
     else {
         CYPool pool;
-        printf("%s\n", CYPoolCString(pool, context, arguments[0]));
+        CYUTF8String string(CYPoolUTF8String(pool, context, CYJSString(context, arguments[0])));
+        fwrite(string.data, string.size, 1, file);
     }
 
     }
 
+    fflush(file);
     return CYJSUndefined(context);
 } CYCatch(NULL) }
 
     return CYJSUndefined(context);
 } CYCatch(NULL) }
 
@@ -364,9 +368,10 @@ _visible void CYGarbageCollect(JSContextRef context) {
 
 static JSValueRef Cycript_compile_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
     CYPool pool;
 
 static JSValueRef Cycript_compile_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
     CYPool pool;
-    std::stringstream value(CYPoolCString(pool, context, arguments[0]));
-    CYUTF8String code(CYPoolCode(pool, value));
-    return CYCastJSValue(context, CYJSString(code));
+    CYUTF8String before(CYPoolUTF8String(pool, context, CYJSString(context, arguments[0])));
+    std::stringstream value(std::string(before.data, before.size));
+    CYUTF8String after(CYPoolCode(pool, value));
+    return CYCastJSValue(context, CYJSString(after));
 } CYCatch_(NULL, "SyntaxError") }
 
 static JSValueRef Cycript_gc_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
 } CYCatch_(NULL, "SyntaxError") }
 
 static JSValueRef Cycript_gc_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
@@ -1479,7 +1484,7 @@ static JSValueRef Type_callAsFunction_toCYON(JSContextRef context, JSObjectRef o
     std::stringbuf out;
     CYOptions options;
     CYOutput output(out, options);
     std::stringbuf out;
     CYOptions options;
     CYOutput output(out, options);
-    (new(pool) CYEncodedType(Decode(pool, internal->type_)))->Output(output, CYNoFlags);
+    (new(pool) CYTypeExpression(Decode(pool, internal->type_)))->Output(output, CYNoFlags);
     return CYCastJSValue(context, CYJSString(out.str().c_str()));
 } CYCatch(NULL) }
 
     return CYCastJSValue(context, CYJSString(out.str().c_str()));
 } CYCatch(NULL) }