libdap++  Updated for version 3.12.0
Clause.h
Go to the documentation of this file.
1 
2 // -*- mode: c++; c-basic-offset:4 -*-
3 
4 // This file is part of libdap, A C++ implementation of the OPeNDAP Data
5 // Access Protocol.
6 
7 // Copyright (c) 2002,2003 OPeNDAP, Inc.
8 // Author: James Gallagher <jgallagher@opendap.org>
9 //
10 // This library is free software; you can redistribute it and/or
11 // modify it under the terms of the GNU Lesser General Public
12 // License as published by the Free Software Foundation; either
13 // version 2.1 of the License, or (at your option) any later version.
14 //
15 // This library is distributed in the hope that it will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 // Lesser General Public License for more details.
19 //
20 // You should have received a copy of the GNU Lesser General Public
21 // License along with this library; if not, write to the Free Software
22 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 //
24 // You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
25 
26 // (c) COPYRIGHT URI/MIT 1995-1999
27 // Please first read the full copyright statement in the file COPYRIGHT_URI.
28 //
29 // Authors:
30 // jhrg,jimg James Gallagher <jgallagher@gso.uri.edu>
31 
32 // Interface for the CE Clause class.
33 
34 #ifndef _clause_h
35 #define _clause_h
36 
37 
38 #ifndef _expr_h
39 #include "expr.h"
40 #endif
41 
42 #ifndef _rvalue_h
43 #include "RValue.h"
44 #endif
45 
46 namespace libdap
47 {
48 
90 struct Clause
91 {
92 
93 private:
95  int _op;
97  bool_func _b_func;
98 
101  btp_func _bt_func;
102 
103  int _argc; // arg count
104  rvalue *_arg1; // only for operator
105  rvalue_list *_args; // vector arg
106 
107  Clause(const Clause &)
108  {}
109  Clause &operator=(const Clause &)
110  {
111  throw InternalErr(__FILE__, __LINE__, "Unimplemented method");
112  }
113 
114 public:
115  Clause(const int oper, rvalue *a1, rvalue_list *rv);
116  Clause(bool_func func, rvalue_list *rv);
117  Clause(btp_func func, rvalue_list *rv);
118  Clause();
119 
120  virtual ~Clause();
121 
122  bool OK();
123 
124  bool boolean_clause();
125 
126  bool value_clause();
127 
128  bool value(DDS &dds);
129 
130  bool value(DDS &dds, BaseType **value);
131 };
132 
133 } // namespace libdap
134 
135 #endif // _clause_h
std::vector< rvalue * > rvalue_list
Definition: RValue.h:67
A class for software fault reporting.
Definition: InternalErr.h:64
bool value(DDS &dds)
Evaluate a clause which returns a boolean value This method must only be evaluated for clauses with r...
Definition: Clause.cc:157
The basic data type for the DODS DAP types.
Definition: BaseType.h:199
bool OK()
Checks the "representation invariant" of a clause.
Definition: Clause.cc:107
Holds a fragment of a constraint expression.
Definition: Clause.h:90
bool value_clause()
Return true if the clause returns a value in a BaseType pointer.
Definition: Clause.cc:139
bool boolean_clause()
Return true if the clause returns a boolean value.
Definition: Clause.cc:130
virtual ~Clause()
Definition: Clause.cc:91