Aegis  4.25.D505
aefind/tree/relative.h
Go to the documentation of this file.
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