// This may look like C code, but it is really -*- C++ -*- // Classe CxxExecutor : Dynamic C++ compile/execution in piapp // (c) DAPNIA (CEA) LAL (IN2P3/CNRS) // C. Magneville 10/2000 #ifndef CXXEXECUTOR_H_SEEN #define CXXEXECUTOR_H_SEEN #include "machdefs.h" #include #include #include #include #include #include "piacmd.h" #include "nobjmgr.h" class CxxExecutor : public CmdExecutor { public: CxxExecutor(PIACmd* piac, PIStdImgApp* app); virtual ~CxxExecutor(); virtual int Execute(string& keyw,vector& args, string& toks); inline void SetPrtLevel(uint_2 lp=2) {mPrtLevel = lp;} int ExecuteCXX(string usercode,string userfct=""); int CrFile(string cfilename="",string func=""); void PutInclude(ofstream& os); void PutIncludeUser(ofstream& os); void PutObject(ofstream& os); void PutVar(ofstream& os); int FillUserCode(string& usercode,uint_4 first); int FillUserCode(string filename); int FillUserFctFrS(string userfctcode=""); int FillUserFctFrF(string filefctname=""); int Compile(string rootfilename=""); /* int CrMakefile(void); */ int Link(string libname="",string func=""); int Call(string func=""); void FillArgs(vector& args); void FillArgs(string& args); string GetArgs(void); void FillInclude(vector& inc); void FillInclude(string& inc); string GetInclude(void); void FillCompileOpt(vector& copt); void FillCompileOpt(string& copt); string GetCompileOpt(void); void FillLinkOpt(vector& lopt); void FillLinkOpt(string& lopt); string GetLinkOpt(void); void FillLinkLibs(vector& llibs); void FillLinkLibs(string& llibs); string GetLinkLibs(void); private: string mUserCodeFn; string mUserFctFn; string mCompOpt; string mLinkOpt; string mMyLibs; vector mIncList; vector mCallArgs; string mDefTmp; string mDefRoot; string mDefFunc; uint_2 mPrtLevel; }; #endif