bes  Updated for version 3.20.6
WWWSequence.cc
1 
2 // -*- mode: c++; c-basic-offset:4 -*-
3 
4 // This file is part of www_int, software which returns an HTML form which
5 // can be used to build a URL to access data from a DAP data server.
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 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 // Implementation for the class WWWSequence. See WWWByte.cc
33 //
34 // 4/7/99 jhrg
35 
36 #include "config.h"
37 
38 static char rcsid[] not_used = {"$Id$"};
39 
40 #include <iostream>
41 #include <string>
42 
43 #include "DAS.h"
44 #include "InternalErr.h"
45 
46 #include "WWWSequence.h"
47 #include "WWWOutput.h"
48 #include "get_html_form.h"
49 
50 using namespace dap_html_form;
51 
52 BaseType *
53 WWWSequence::ptr_duplicate()
54 {
55  return new WWWSequence(*this);
56 }
57 
58 WWWSequence::WWWSequence(const string &n) :
59  Sequence(n)
60 {
61 }
62 
63 WWWSequence::WWWSequence(Sequence *bt) : Sequence(bt->name())
64 {
65  Vars_iter p = bt->var_begin();
66  while (p != bt->var_end()) {
67  BaseType *new_bt = basetype_to_wwwtype(*p);
68  new_bt->set_attr_table((*p)->get_attr_table());
69  add_var(new_bt);
70  delete new_bt;
71  p++;
72  }
73 }
74 
75 WWWSequence::~WWWSequence()
76 {
77 }
78 
79 int WWWSequence::length() const
80 {
81  return -1;
82 }
83 
84 bool WWWSequence::is_simple_sequence()
85 {
86  for (Vars_iter i = var_begin(); i != var_end(); ++i) {
87  if ((*i)->type() == dods_sequence_c) {
88  if (!dynamic_cast<WWWSequence *> ((*i))->is_simple_sequence())
89  return false;
90  }
91  else {
92  if (!(*i)->is_simple_type())
93  return false;
94  }
95  }
96 
97  return true;
98 }
99 #ifdef FILE_METHODS
100 // As is the case with geturl, use print_all_vals to print all the values of
101 // a sequence.
102 
103 void
104 WWWSequence::print_val(FILE *os, string /*space*/, bool print_decls)
105 {
106  fprintf(os, "<b>Sequence %s</b><br>\n", name().c_str());
107  fprintf(os, "<dl><dd>\n");
108 
109  for (Vars_iter i = var_begin(); i != var_end(); ++i) {
110  (*i)->print_val(os, "", print_decls);
112  fprintf(os, "<p><p>\n");
113  }
114 
115  fprintf(os, "</dd></dl>\n");
116 }
117 #endif
118 
119 void
120 WWWSequence::print_val(ostream &strm, string /*space*/, bool print_decls)
121 {
122  strm << "<b>Sequence " << name() << "</b><br>\n";
123  strm << "<dl><dd>\n";
124 
125  for (Vars_iter i = var_begin(); i != var_end(); ++i) {
126  (*i)->print_val(strm, "", print_decls);
128  strm << "<p><p>\n";
129  }
130 
131  strm << "</dd></dl>\n";
132 }
133 
WWWSequence
Definition: WWWSequence.h:43
WWWOutput::write_variable_attributes
void write_variable_attributes(BaseType *btp)
Definition: WWWOutput.cc:181