UNPKG

1.8 kBtext/x-cView Raw
1#include "PDFObjectParserDriver.h"
2#include "PDFObjectParser.h"
3#include "PDFObjectDriver.h"
4#include "RefCountPtr.h"
5#include "PDFObject.h"
6#include "ConstructorsHolder.h"
7
8using namespace v8;
9
10
11
12PDFObjectParserDriver::PDFObjectParserDriver()
13{
14 PDFObjectParserInstance = NULL;
15}
16
17PDFObjectParserDriver::~PDFObjectParserDriver() {
18 delete PDFObjectParserInstance;
19}
20
21DEF_SUBORDINATE_INIT(PDFObjectParserDriver::Init)
22{
23 CREATE_ISOLATE_CONTEXT;
24
25 Local<FunctionTemplate> t = NEW_FUNCTION_TEMPLATE_EXTERNAL(New);
26
27 t->SetClassName(NEW_STRING("PDFObjectParserDriver"));
28 t->InstanceTemplate()->SetInternalFieldCount(1);
29
30 SET_PROTOTYPE_METHOD(t, "parseNewObject", ParseNewObject);
31
32 // save in factory
33 EXPOSE_EXTERNAL_FOR_INIT(ConstructorsHolder, holder)
34 SET_CONSTRUCTOR(holder->PDFObjectParser_constructor, t);
35 SET_CONSTRUCTOR_TEMPLATE(holder->PDFObjectParser_constructor_template,t);
36}
37
38METHOD_RETURN_TYPE PDFObjectParserDriver::New(const ARGS_TYPE& args)
39{
40 CREATE_ISOLATE_CONTEXT;
41 CREATE_ESCAPABLE_SCOPE;
42 EXPOSE_EXTERNAL_ARGS(ConstructorsHolder, externalHolder)
43
44 PDFObjectParserDriver* driver = new PDFObjectParserDriver();
45 driver->holder = externalHolder;
46 driver->Wrap(args.This());
47 SET_FUNCTION_RETURN_VALUE(args.This())
48}
49
50METHOD_RETURN_TYPE PDFObjectParserDriver::ParseNewObject(const ARGS_TYPE& args)
51{
52 CREATE_ISOLATE_CONTEXT;
53 CREATE_ESCAPABLE_SCOPE;
54
55 PDFObjectParserDriver* self = ObjectWrap::Unwrap<PDFObjectParserDriver>(args.This());
56
57 RefCountPtr<PDFObject> newObject = self->PDFObjectParserInstance->ParseNewObject();
58
59 if(!newObject)
60 SET_FUNCTION_RETURN_VALUE(UNDEFINED)
61 else
62 SET_FUNCTION_RETURN_VALUE(self->holder->GetInstanceFor(newObject.GetPtr()))
63}
\No newline at end of file