Nikhil Marathe avatar Nikhil Marathe committed d49ee06

Added callback implementations

Comments (0)

Files changed (1)

 using namespace v8;
 using namespace node;
 
+#define INIT_CB( ctx )\
+    HandleScope scope;\
+    Handle *yh = static_cast<Handle *>( ctx )
+
 namespace yajljs {
-int onNull( void *ctx )
+int OnNull( void *ctx )
 {
-    Handle *yh = static_cast<Handle *>( ctx );
+    INIT_CB( ctx );
     yh->Emit( v8::String::New("null"), 0, NULL );
+    return 1;
 }
 
-int onBoolean( void *ctx, int b )
+int OnBoolean( void *ctx, int b )
 {
-    HandleScope scope;
-    Handle *yh = static_cast<Handle *>( ctx );
+    INIT_CB( ctx );
+    Local<Value> args[1] = { Integer::New( b ) };
+    yh->Emit( v8::String::New("boolean"), 1, args );
+    return 1;
+}
 
-    Local<Value> args[] = { Integer::New( b ) };
-    yh->Emit( v8::String::New("boolean"), 1, args );
+int OnInteger( void *ctx, long b )
+{
+    INIT_CB( ctx );
+
+    Local<Value> args[1] = { Integer::New( b ) };
+    yh->Emit( String::New("integer"), 1, args );
+    return 1;
+}
+
+int OnDouble( void *ctx, double b )
+{
+    INIT_CB( ctx );
+
+    Local<Value> args[1] = { Number::New( b ) };
+    yh->Emit( String::New("double"), 1, args );
+    return 1;
+}
+
+int OnNumber( void *ctx, const char *numberVal, unsigned int numberLen )
+{
+    INIT_CB( ctx );
+
+    Local<Value> args[1] = { String::New( numberVal, numberLen ) };
+    yh->Emit( String::New("number"), 1, args );
+    return 1;
+}
+
+int OnString( void *ctx, const unsigned char *stringVal, unsigned int stringLen )
+{
+    INIT_CB( ctx );
+    Local<Value> args[1] = { String::New( (char *)stringVal, stringLen ) };
+    yh->Emit( String::New("string"), 1, args );
+    return 1;
+}
+
+int OnStartMap( void *ctx )
+{
+    INIT_CB( ctx );
+    yh->Emit( String::New("startMap"), 0, NULL );
+    return 1;
+}
+
+int OnMapKey( void *ctx, const unsigned char *key, unsigned int stringLen )
+{
+    INIT_CB( ctx );
+    Local<Value> args[1] = { String::New( (char *)key, stringLen ) };
+    yh->Emit( String::New("mapKey"), 1, args );
+    return 1;
+}
+
+int OnEndMap( void *ctx )
+{
+    INIT_CB( ctx );
+    yh->Emit( String::New("endMap"), 0, NULL );
+    return 1;
+}
+
+int OnStartArray( void *ctx )
+{
+    INIT_CB( ctx );
+    yh->Emit( String::New("startArray"), 0, NULL );
+    return 1;
+}
+
+int OnEndArray( void *ctx )
+{
+    INIT_CB( ctx );
+    yh->Emit( String::New("endArray"), 0, NULL );
+    return 1;
 }
 
 void
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.