bes Updated for version 3.21.1
The Backend Server (BES) is the lower two tiers of the Hyrax data server
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
38static char rcsid[] not_used = {"$Id$"};
39
40#include <iostream>
41#include <string>
42
43#include <libdap/DAS.h>
44#include <libdap/InternalErr.h>
45
46#include "WWWSequence.h"
47#include "WWWOutput.h"
48#include "get_html_form.h"
49
50using namespace dap_html_form;
51
52BaseType *
53WWWSequence::ptr_duplicate()
54{
55 return new WWWSequence(*this);
56}
57
58WWWSequence::WWWSequence(const string &n) :
59 Sequence(n)
60{
61}
62
63WWWSequence::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
75WWWSequence::~WWWSequence()
76{
77}
78
79int WWWSequence::size() const
80{
81 return -1;
82}
83
84bool 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
103void
104WWWSequence::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);
111 wo->write_variable_attributes(*i);
112 fprintf(os, "<p><p>\n");
113 }
114
115 fprintf(os, "</dd></dl>\n");
116}
117#endif
118
119void
120WWWSequence::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);
127 wo->write_variable_attributes(*i);
128 strm << "<p><p>\n";
129 }
130
131 strm << "</dd></dl>\n";
132}
133
STL class.