<commit_before>#include <iostream>
#include <v8.h>
#include <node.h>
#include <yajl/yajl_parse.h>

#include "callbacks.h"
#include "yajl.h"

using namespace v8;
using namespace node;

namespace yajljs {
int onNull( void *ctx )
{
    Handle *yh = static_cast<Handle *>( ctx );
    yh->Emit( v8::String::New("null"), 0, NULL );
}

int onBoolean( void *ctx, int b )
{
    HandleScope scope;
    Handle *yh = static_cast<Handle *>( ctx );

    Local<Value> args[] = { Integer::New( b ) };
    yh->Emit( v8::String::New("boolean"), 1, args );
}
<commit_msg>Added callback implementations<commit_after>#include <iostream>
#include <v8.h>
#include <node.h>
#include <yajl/yajl_parse.h>

#include "callbacks.h"
#include "yajl.h"

using namespace v8;
using namespace node;

#define INIT_CB( ctx )\
    HandleScope scope;\
    Handle *yh = static_cast<Handle *>( ctx )

namespace yajljs {
int OnNull( void *ctx )
{
    INIT_CB( ctx );
    yh->Emit( v8::String::New("null"), 0, NULL );
    return 1;
}

int OnBoolean( void *ctx, int b )
{
    INIT_CB( ctx );
    Local<Value> args[1] = { Integer::New( b ) };
    yh->Emit( v8::String::New("boolean"), 1, args );
    return 1;
}

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;
}

{'fraction_non_alphanumeric': 0.17924879137225735, 'fraction_numerical': 0.014131647452584604, 'mean_word_length': 3.402618657937807, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 34, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4776902', 'n_tokens_mistral': 1051, 'n_tokens_neox': 1022, 'n_words': 270}