00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __CLASSAD_LITERALS_H__
00022 #define __CLASSAD_LITERALS_H__
00023
00024 #include <vector>
00025
00026 BEGIN_NAMESPACE( classad )
00027
00028 typedef std::vector<ExprTree*> ArgumentList;
00029
00033 class Literal : public ExprTree
00034 {
00035 public:
00037 virtual ~Literal ();
00038
00040 Literal(const Literal &literal);
00041
00043 Literal &operator=(const Literal &literal);
00044
00050 static Literal* MakeAbsTime( abstime_t *now=NULL );
00051
00052
00053
00054
00055
00056
00057
00058 static Literal* MakeAbsTime( std::string timestr);
00059
00065 static Literal* MakeRelTime( time_t secs=-1 );
00066
00074 static Literal* MakeRelTime( time_t t1, time_t t2 );
00075
00076
00077
00078
00079
00080 static Literal* MakeRelTime(std::string str);
00081
00082 static Literal* MakeReal(std::string realstr);
00083
00085 virtual ExprTree* Copy( ) const;
00086
00087 void CopyFrom(const Literal &literal);
00088
00096 static Literal*MakeLiteral( const Value& v, Value::NumberFactor f=
00097 Value::NO_FACTOR );
00098
00103 void GetComponents( Value& v, Value::NumberFactor &f ) const;
00104
00108 void GetValue( Value& v ) const;
00109
00110
00111
00112
00113 static int findOffset(time_t epochsecs);
00114
00115 virtual bool SameAs(const ExprTree *tree) const;
00116
00117 friend bool operator==(Literal &literal1, Literal &literal2);
00118
00119 protected:
00121 Literal ();
00122
00123 private:
00124 friend class FunctionCall;
00125 friend class ClassAd;
00126 friend class ExprList;
00127 friend class Operation;
00128
00129 virtual void _SetParentScope( const ClassAd* ){ }
00130 virtual bool _Flatten( EvalState&, Value&, ExprTree*&, int* ) const;
00131 virtual bool _Evaluate (EvalState &, Value &) const;
00132 virtual bool _Evaluate (EvalState &, Value &, ExprTree *&) const;
00133
00134
00135 Value value;
00136 Value::NumberFactor factor;
00137 };
00138
00139 END_NAMESPACE
00140
00141 #endif//__CLASSAD_LITERALS_H__