00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef _gseclause_h
00035 #define _gseclause_h 1
00036
00037
00038 #include <string>
00039 #include <sstream>
00040
00041 #ifndef _basetype_h
00042 #include "BaseType.h"
00043 #endif
00044
00045 #ifndef _array_h
00046 #include "Array.h"
00047 #endif
00048
00049 #ifndef _grid_h
00050 #include "Grid.h"
00051 #endif
00052
00053 enum relop {
00054 dods_nop_op,
00055 dods_greater_op,
00056 dods_greater_equal_op,
00057 dods_less_op,
00058 dods_less_equal_op,
00059 dods_equal_op,
00060 dods_not_equal_op
00061 };
00062
00071 class GSEClause
00072 {
00073 private:
00074 Array *d_map;
00075
00076
00077
00078
00079 double d_value1, d_value2;
00080 relop d_op1, d_op2;
00081 int d_start;
00082 int d_stop;
00083
00084 string d_map_min_value, d_map_max_value;
00085
00086 GSEClause();
00087
00088 GSEClause(const GSEClause ¶m);
00089 GSEClause &operator=(GSEClause &rhs);
00090
00091 template<class T> void set_start_stop();
00092 template<class T> void set_map_min_max_value(T min, T max);
00093
00094 void compute_indices();
00095
00096 public:
00099 GSEClause(Grid *grid, const string &map, const double value,
00100 const relop op);
00101
00102 GSEClause(Grid *grid, const string &map, const double value1,
00103 const relop op1, const double value2, const relop op2);
00105
00106 bool OK() const;
00107
00110 Array *get_map() const;
00111
00112 string get_map_name() const;
00113
00114 int get_start() const;
00115
00116 int get_stop() const;
00117
00118 string get_map_min_value() const;
00119
00120 string get_map_max_value() const;
00122
00125 void set_map(Array *map);
00126
00127 void set_start(int start);
00128
00129 void set_stop(int stop);
00131 };
00132
00133 #endif // _gseclause_h
00134