00001 #ifndef SCIL_VARIABLE_H
00002 #define SCIL_VARIABLE_H
00003
00004 #include <scil/global.h>
00005 #include <LEDA/memory.h>
00006 #define nil 0
00007
00008 namespace SCIL {
00009
00010 class row;
00011 class var_obj;
00012 class var;
00013 class ABA_Variable;
00014
00016 class var {
00017
00018 private:
00019
00020 var_obj* VS;
00021
00022 public:
00023 LEDA_MEMORY(var)
00024
00025 var(var_obj* VS_) { VS=VS_; }
00026
00027 var() { VS=nil; }
00028
00029 var(const var& v) { VS=v.VS; }
00030
00031 ABA_Variable* Avar_pointer();
00032
00034 var_obj* var_pointer() const;
00035
00037 double obj();
00038
00040 double lower_bound();
00041
00043 double upper_bound();
00044
00046 Vartype type();
00047
00048 row operator+ (const row& r);
00049
00050 var& operator=(const var& v) { VS=v.VS; return *this; }
00051
00052 bool operator< (const var& v1) const;
00053 bool operator<= (const var& v1) const;
00054 bool operator!= (const var& v1) const;
00055 bool operator== (const var& v1) const;
00056 bool operator> (const var& v1) const;
00057 row operator* (double d);
00058 };
00059
00060
00061 int Hash(SCIL::var v);
00062
00063 int compare(const SCIL::var& v1, const SCIL::var& v2);
00064
00065 };
00066
00067 #endif