swig/Source/Modules/javascript_v8.h

90 lines
1.9 KiB
C++

#ifndef JAVASCRIPT_V8_H
#define JAVASCRIPT_V8_H
#include "javascript_emitter.h"
class V8Emitter: public JSEmitter {
public:
V8Emitter();
virtual ~V8Emitter();
virtual int Initialize(Node *n);
virtual int Dump(Node *n);
virtual int Close();
virtual int SwitchContext(Node *n);
virtual int EnterClass(Node *n);
virtual int ExitClass(Node *n);
virtual int EnterVariable(Node *n);
virtual int ExitVariable(Node *n);
virtual int EnterFunction(Node *n);
virtual int ExitFunction(Node *n);
protected:
int CreateNamespace(String* scope);
virtual int EmitCtor(Node *n);
virtual int EmitDtor(Node *n);
virtual int EmitFunction(Node *n, bool is_member);
virtual int EmitGetter(Node *n, bool is_member);
virtual int EmitSetter(Node *n, bool is_member);
void marshalInputArgs(Node *n, ParmList *parms, int numarg, Wrapper *wrapper);
void marshalOutput(Node *n, String *actioncode, Wrapper *wrapper);
Parm *skipIgnoredArgs(Parm *p);
private:
File *f_runtime;
File *f_header;
File *f_class_templates;
File *f_wrapper;
File *f_init_namespaces;
File *f_init_class_templates;
File *f_init_wrappers;
File *f_init_inheritance;
File *f_init_class_instances;
File *f_init_static_wrappers;
File *f_init_register_classes;
File *f_init_register_namespaces;
// the output cpp file
File *f_wrap_cpp;
// state variables
String* current_context;
String* current_class_type;
String* current_classname_mangled;
String* current_classname_unqualified;
String* current_variable_mangled;
String* current_variable_unqualified;
String* current_getter;
String* current_setter;
String* current_function_mangled;
String* current_function_unqualified;
String* GLOBAL;
String* NULL_STR;
Hash* namespaces;
};
#endif // JAVASCRIPT_V8_H