|
Aegis
4.25.D505
|
00001 // 00002 // aegis - project change supervisor 00003 // Copyright (C) 1997, 2002, 2005-2008 Peter Miller 00004 // 00005 // This program is free software; you can redistribute it and/or modify 00006 // it under the terms of the GNU General Public License as published by 00007 // the Free Software Foundation; either version 3 of the License, or 00008 // (at your option) any later version. 00009 // 00010 // This program is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 // GNU General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU General Public License 00016 // along with this program. If not, see 00017 // <http://www.gnu.org/licenses/>. 00018 // 00019 00020 #ifndef AEFIND_TREE_RELATIVE_H 00021 #define AEFIND_TREE_RELATIVE_H 00022 00023 #include <aefind/tree/diadic.h> 00024 00025 class tree_list; // forward 00026 00031 class tree_ge: 00032 public tree_diadic 00033 { 00034 public: 00038 virtual ~tree_ge(); 00039 00040 private: 00050 tree_ge(const pointer &left, const pointer &right); 00051 00052 public: 00062 static pointer create(const pointer &left, const pointer &right); 00063 00064 protected: 00065 // See base class for documentation. 00066 const char *name() const; 00067 00068 // See base class for documentation. 00069 rpt_value::pointer evaluate(string_ty *, string_ty *, string_ty *, 00070 struct stat *) const; 00071 00072 // See base class for documentation. 00073 tree::pointer optimize() const; 00074 00075 private: 00079 tree_ge(); 00080 00084 tree_ge(const tree_ge &); 00085 00089 tree_ge &operator=(const tree_ge &); 00090 }; 00091 00092 00097 class tree_gt: 00098 public tree_diadic 00099 { 00100 public: 00104 virtual ~tree_gt(); 00105 00106 private: 00116 tree_gt(const pointer &left, const pointer &right); 00117 00118 public: 00128 static pointer create(const pointer &left, const pointer &right); 00129 00130 protected: 00131 // See base class for documentation. 00132 const char *name() const; 00133 00134 // See base class for documentation. 00135 rpt_value::pointer evaluate(string_ty *, string_ty *, string_ty *, 00136 struct stat *) const; 00137 00138 // See base class for documentation. 00139 tree::pointer optimize() const; 00140 00141 private: 00145 tree_gt(); 00146 00150 tree_gt(const tree_gt &); 00151 00155 tree_gt &operator=(const tree_gt &); 00156 }; 00157 00158 00163 class tree_le: 00164 public tree_diadic 00165 { 00166 public: 00170 virtual ~tree_le(); 00171 00172 private: 00182 tree_le(const pointer &left, const pointer &right); 00183 00184 public: 00194 static pointer create(const pointer &left, const pointer &right); 00195 00196 protected: 00197 // See base class for documentation. 00198 const char *name() const; 00199 00200 // See base class for documentation. 00201 rpt_value::pointer evaluate(string_ty *, string_ty *, string_ty *, 00202 struct stat *) const; 00203 00204 // See base class for documentation. 00205 tree::pointer optimize() const; 00206 00207 private: 00211 tree_le(); 00212 00216 tree_le(const tree_le &); 00217 00221 tree_le &operator=(const tree_le &); 00222 }; 00223 00224 00229 class tree_lt: 00230 public tree_diadic 00231 { 00232 public: 00236 virtual ~tree_lt(); 00237 00238 private: 00248 tree_lt(const pointer &left, const pointer &right); 00249 00250 public: 00260 static pointer create(const pointer &left, const pointer &right); 00261 00262 protected: 00263 // See base class for documentation. 00264 const char *name() const; 00265 00266 // See base class for documentation. 00267 rpt_value::pointer evaluate(string_ty *, string_ty *, string_ty *, 00268 struct stat *) const; 00269 00270 // See base class for documentation. 00271 tree::pointer optimize() const; 00272 00273 private: 00277 tree_lt(); 00278 00282 tree_lt(const tree_lt &); 00283 00287 tree_lt &operator=(const tree_lt &); 00288 }; 00289 00290 00295 class tree_eq: 00296 public tree_diadic 00297 { 00298 public: 00302 virtual ~tree_eq(); 00303 00304 private: 00314 tree_eq(const pointer &left, const pointer &right); 00315 00316 public: 00326 static pointer create(const pointer &left, const pointer &right); 00327 00328 protected: 00329 // See base class for documentation. 00330 const char *name() const; 00331 00332 // See base class for documentation. 00333 rpt_value::pointer evaluate(string_ty *, string_ty *, string_ty *, 00334 struct stat *) const; 00335 00336 // See base class for documentation. 00337 tree::pointer optimize() const; 00338 00339 private: 00343 tree_eq(); 00344 00348 tree_eq(const tree_eq &); 00349 00353 tree_eq &operator=(const tree_eq &); 00354 }; 00355 00356 00361 class tree_ne: 00362 public tree_diadic 00363 { 00364 public: 00368 virtual ~tree_ne(); 00369 00370 private: 00380 tree_ne(const pointer &left, const pointer &right); 00381 00382 public: 00392 static pointer create(const pointer &left, const pointer &right); 00393 00394 protected: 00395 // See base class for documentation. 00396 const char *name() const; 00397 00398 // See base class for documentation. 00399 rpt_value::pointer evaluate(string_ty *, string_ty *, string_ty *, 00400 struct stat *) const; 00401 00402 // See base class for documentation. 00403 tree::pointer optimize() const; 00404 00405 private: 00409 tree_ne(); 00410 00414 tree_ne(const tree_ne &); 00415 00419 tree_ne &operator=(const tree_ne &); 00420 }; 00421 00422 #endif // AEFIND_TREE_RELATIVE_H
1.7.6.1