Listing 1
class CInterpreter
{
public:
typedef std::list<std::string> STRING_ARRAY;
typedef std::map<std::string, std::string> STRING_HASH;
virtual std::string Call(const std::string subroutine) = 0;
virtual std::string Call(const std::string subroutine,
const std::string argument) = 0;
virtual std::string Call(const std::string subroutine,
const std::string argument1,
const std::string argument2) = 0;
virtual std::auto_ptr<STRING_ARRAY> Call(const std::string perlSubroutine,
std::auto_ptr<STRING_ARRAY>& arrayOfString) = 0;
virtual void CallVoid(const std::string subroutine) = 0;
virtual void Eval(const std::string codeBlock) = 0;
virtual void SetFloat(const std::string variable, const double value) = 0;
virtual double GetFloat(const std::string variable) = 0;
virtual void SetInt(const std::string variable, const int value) = 0;
virtual int GetInt(const std::string variable) = 0;
virtual void SetString(const std::string variable,
const std::string value) = 0;
virtual std::string GetString(const std::string variable,
const int length) = 0;
virtual void SetArray(const std::string array,
const STRING_ARRAY& arrayOfString) = 0;
virtual std::auto_ptr<STRING_ARRAY>
GetArray(const std::string arrayOfString) = 0;
virtual void SetHash(const std::string hash,
const STRING_HASH& hashOfString) = 0;
virtual std::auto_ptr<STRING_HASH>
GetHash(const std::string hashOfString) = 0;
virtual void RedirectOutputStreams() = 0;
virtual void RestoreOutputStreams() = 0;
virtual void ClearOutputBuffers() = 0;
virtual std::string ReadStdoutBuffer() = 0;
virtual std::string ReadStderrBuffer() = 0;
};