// File created by POP to compile under VC 5.0
//                     Copyright (C) 1991,1995 by
//  
//                      MATRA DATAVISION, FRANCE
//  
// This software is furnished in accordance with the terms and conditions
// of the contract and with the inclusion of the above copyright notice.
// This software or any other copy thereof may not be provided or otherwise
// be made available to any other person. No title to an ownership of the
// software is hereby transferred.
//  
// At the termination of the contract, the software and all copies of this
// software must be deleted.

#ifndef _Draw_Interpretor_HeaderFile
#define _Draw_Interpretor_HeaderFile

#include <Standard_Boolean.hxx>
#include <Draw_PInterp.hxx>
#include <Standard_CString.hxx>
#include <Draw_CommandFunction.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Real.hxx>


#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif

class Draw_Interpretor  {

public:

 // Methods PUBLIC
 // 
Standard_EXPORT Draw_Interpretor();
Standard_EXPORT   void Init() ;
Standard_EXPORT   void Add(const Standard_CString Command,const Standard_CString Help,const Draw_CommandFunction Function,const Standard_CString Group = "User Commands") ;
Standard_EXPORT   void Add(const Standard_CString Command,const Standard_CString Help,const Standard_CString FileName,const Draw_CommandFunction Function,const Standard_CString Group = "User Commands") ;
Standard_EXPORT   Standard_Boolean Remove(const Standard_CString Command) ;
Standard_EXPORT   Standard_CString Result() const;
Standard_EXPORT   void Reset() ;
Standard_EXPORT   Draw_Interpretor& Append(const Standard_CString Result) ;
  Draw_Interpretor& operator<<(const Standard_CString Result) 
{
  return Append(Result);
}

Standard_EXPORT   Draw_Interpretor& Append(const Standard_Integer Result) ;
  Draw_Interpretor& operator<<(const Standard_Integer Result) 
{
  return Append(Result);
}

Standard_EXPORT   Draw_Interpretor& Append(const Standard_Real Result) ;
  Draw_Interpretor& operator<<(const Standard_Real Result) 
{
  return Append(Result);
}

Standard_EXPORT   void AppendElement(const Standard_CString Result) ;
Standard_EXPORT   Standard_Integer Eval(const Standard_CString Script) ;
Standard_EXPORT   Standard_Integer RecordAndEval(const Standard_CString Script,const Standard_Integer Flags = 0) ;
Standard_EXPORT   Standard_Integer EvalFile(const Standard_CString FileName) ;
Standard_EXPORT static  Standard_Boolean Complete(const Standard_CString Script) ;
Standard_EXPORT   void Destroy() ;
~Draw_Interpretor()
{
  Destroy();
}

Standard_EXPORT Draw_Interpretor(const Draw_PInterp& anInterp);
Standard_EXPORT   void Set(const Draw_PInterp& anInterp) ;
Standard_EXPORT   Draw_PInterp Interp() const;





protected:

 // Methods PROTECTED
 // 


 // Fields PROTECTED
 //


private: 

 // Methods PRIVATE
 // 


 // Fields PRIVATE
 //
Standard_Boolean isAllocated;
Draw_PInterp myInterp;


};





// other Inline functions and methods (like "C++: function call" methods)
//


#endif
