00001 #ifndef _TRUBY_H_ 00002 #define _TRUBY_H_ 00003 00004 #include "aa_config.h" 00005 00006 #ifdef HAVE_LIBRUBY 00007 00008 #include <ruby.h> 00009 #include <intern.h> 00010 #include <stdexcept> 00011 #include <string> 00012 #include "tDirectories.h" 00013 00014 namespace tRuby 00015 { 00019 void CheckStatus(int status); 00020 00024 void InitializeInterpreter(); 00025 00029 void CleanupInterpreter(); 00030 00036 void Require(const char * file); 00037 00044 void Load(const tPath & path, const char * filename, bool wrap=false); 00045 00053 VALUE Eval(std::string code); 00054 00063 class Sandbox 00064 { 00065 public: 00070 Sandbox(float timeout=0); 00071 00072 virtual ~Sandbox(); 00073 00084 VALUE Eval(std::string code); 00085 00093 void Import(const char * constant); 00094 00103 void Load(const tPath & path, const char * filename); 00104 protected: 00105 VALUE sandbox_; 00106 VALUE & GetSandbox(); 00107 static VALUE EvalProtect(VALUE data); 00108 static VALUE ConstGetProtect(VALUE file); 00109 static VALUE LoadProtect(VALUE file); 00110 }; 00111 00118 class Safe : public Sandbox 00119 { 00120 public: 00121 Safe(float timeout=0); 00122 virtual ~Safe(); 00123 }; 00124 } 00125 #endif // HAVE_LIBRUBY 00126 00127 #endif // ! _TRUBY_H_