include/vm.hpp

Go to the documentation of this file.
00001 
00002 #ifndef _VM_HPP_
00003 #define _VM_HPP_
00004 
00005 #include "module.hpp"
00006 #include "funcptr.hpp"
00007 #include "typeinfo.hpp"
00008 #include "structinfo.hpp"
00009 
00010 #include <string>
00011 #include <vector>
00012 
00013 struct ps_vm_t;
00014 struct struct_info_t;
00015 
00016 namespace ps
00017 {
00018         
00024         class VM
00025         {
00026                 public:
00027                         VM();
00028                         ~VM();
00029                         
00034                         Module *loadModule(const char *filename);
00039                         Module *loadBytecode(const char *filename);
00040                         
00047                         FuncPtr getFunction(const char *name);
00048                         
00055                         void registerFunction(std::string name, void *addr,
00056                                 TypeInfo rettype = TypeInfo(ETC_None),
00057                                 std::vector<TypeInfo> arguments = std::vector<TypeInfo>());
00058                         
00065                         void registerStruct(std::string name, StructInfo info);
00066                         
00067                         void registerBaseFunctions(void);
00068                         
00075                         static void setLoggingOutput(const char *filename);
00076                         
00080                          ps_vm_t *getVM(void);
00081                 private:
00082                         ps_vm_t *vm;
00083                         static void *logfile;
00084                         
00085                         std::vector<Module*> modules;
00086                         std::vector<struct_info_t*> structinfo;
00087         };
00088 }
00089 
00090 #endif
00091 

Generated on Sun Feb 3 21:38:49 2008 for libplusscript++ by  doxygen 1.5.3