libdap  Updated for version 3.20.6
libdap4 is an implementation of OPeNDAP's DAP protocol.
DAS.h
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 1994-1999
27 // Please read the full copyright statement in the file COPYRIGHT_URI.
28 //
29 // Authors:
30 // jhrg,jimg James Gallagher <jgallagher@gso.uri.edu>
31 
32 // Using the DASVHMap class, build a parser for the DAS and add functions
33 // that provide access to the variables, their attributes and values.
34 //
35 // jhrg 7/25/94
36 
37 #ifndef _das_h
38 #define _das_h 1
39 
40 
41 #include <cstdio>
42 #include <string>
43 #include <iostream>
44 
45 #ifndef _attrtable_h
46 #include "AttrTable.h"
47 #endif
48 
49 using std::cout;
50 
51 namespace libdap
52 {
53 
121 class DAS : public DapObj
122 {
123 private:
124  // The DAS support the notion of a current attribute table for a given
125  // container. Containers are used by the BES to support datasets that
126  // are built using several files (but not exactly the same way as
127  // NCML builds them.
128  AttrTable *d_container ;
129  string d_container_name ;
130 
131  // A DAS is a shell around an attribute table. Since tables can be nested,
132  // there is one top-level table and the attribute tables for individual
133  // variables are its children.
134  AttrTable d_attrs ;
135 
136  void duplicate(const DAS &src);
137 
138 public:
139  DAS() : DapObj(), d_container( 0 ) { }
140  DAS(const DAS &das) { duplicate(das); }
141 
142  virtual ~DAS() { }
143 
144  DAS & operator=(const DAS &rhs);
145 
149  virtual string container_name() const {return d_container_name; }
150 
151  virtual void container_name( const string &cn ) ;
152 
158  virtual AttrTable *container() { return d_container; }
159 
167  if (d_container)
168  return d_container;
169  return &d_attrs;
170  }
171 
172  virtual void erase() ;
173 
174  virtual unsigned int get_size() const ;
175 
176  AttrTable::Attr_iter var_begin() ;
177  AttrTable::Attr_iter var_end() ;
178 
179  string get_name(AttrTable::Attr_iter &i);
180  AttrTable *get_table(AttrTable::Attr_iter &i);
181 
182  virtual AttrTable *get_table(const string &name);
183 
184  virtual AttrTable *add_table(const string &name, AttrTable *at);
185 
187  virtual void parse(string fname);
188  virtual void parse(int fd);
189  virtual void parse(FILE *in = stdin);
190 
192  virtual void print(FILE *out, bool dereference = false);
193  virtual void print(ostream &out, bool dereference = false);
194 
195  virtual void dump(ostream &strm) const ;
196 };
197 
198 } // namespace libdap
199 
200 #endif // _das_h
AttrTable * get_table(AttrTable::Attr_iter &i)
Returns the referenced variable attribute table.
Definition: DAS.cc:179
Contains the attributes for a dataset.
Definition: AttrTable.h:142
AttrTable::Attr_iter var_begin()
Returns a reference to the attribute table for the first variable.
Definition: DAS.cc:147
virtual AttrTable * add_table(const string &name, AttrTable *at)
Adds a variable attribute table to the DAS or the current dataset container attribute table...
Definition: DAS.cc:209
virtual void print(FILE *out, bool dereference=false)
Definition: DAS.cc:331
top level DAP object to house generic methods
Definition: AISConnect.cc:30
string get_name(AttrTable::Attr_iter &i)
Returns the name of the referenced variable attribute table.
Definition: DAS.cc:168
virtual AttrTable * get_top_level_attributes()
Returns the top most set of attributes.
Definition: DAS.h:166
virtual unsigned int get_size() const
Returns the number of attributes in the current attribute table.
Definition: DAS.cc:125
virtual void erase()
erase all attributes in this DAS
Definition: DAS.cc:135
virtual string container_name() const
Returns the name of the current attribute container when multiple files used to build this DAS...
Definition: DAS.h:149
AttrTable::Attr_iter var_end()
Definition: DAS.cc:158
virtual void parse(string fname)
Reads a DAS from the named file.
Definition: DAS.cc:232
virtual AttrTable * container()
Returns the current attribute container when multiple files used to build this DAS.
Definition: DAS.h:158
libdap base object for common functionality of libdap objects
Definition: DapObj.h:50
virtual void dump(ostream &strm) const
dumps information about this object
Definition: DAS.cc:369
Hold attribute data for a DAP2 dataset.
Definition: DAS.h:121