libdap++
Updated for version 3.8.2
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
Array.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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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
// Class for array variables. The dimensions of the array are stored in the
33
// list SHAPE.
34
//
35
// jhrg 9/6/94
36
37
#ifndef _array_h
38
#define _array_h 1
39
40
#include <string>
41
#include <vector>
42
43
#ifndef _dods_limits_h
44
#include "
dods-limits.h
"
45
#endif
46
47
#ifndef _vector_h
48
#include "
Vector.h
"
49
#endif
50
51
#define FILE_METHODS 1
52
53
namespace
libdap
54
{
55
56
const
int
DODS_MAX_ARRAY
=
DODS_INT_MAX
;
57
101
class
Array
:
public
Vector
102
{
103
public
:
114
struct
dimension
115
{
116
int
size
;
117
string
name
;
118
int
start
;
119
int
stop
;
120
int
stride
;
121
int
c_size
;
122
};
123
124
private
:
125
std::vector<dimension> _shape;
// list of dimensions (i.e., the shape)
126
127
friend
class
ArrayTest
;
128
129
protected
:
130
void
_duplicate
(
const
Array
&a);
131
132
#if FILE_METHODS
133
unsigned
int
print_array
(FILE *out,
unsigned
int
index,
134
unsigned
int
dims,
unsigned
int
shape[]);
135
#endif
136
unsigned
int
print_array
(ostream &out,
unsigned
int
index,
137
unsigned
int
dims,
unsigned
int
shape[]);
138
139
public
:
145
typedef
std::vector<dimension>::const_iterator
Dim_citer
;
152
typedef
std::vector<dimension>::iterator
Dim_iter
;
153
154
Array
(
const
string
&n,
BaseType
*v);
155
Array
(
const
string
&n,
const
string
&d,
BaseType
*v);
156
Array
(
const
Array
&rhs);
157
virtual
~Array
();
158
159
Array
&
operator=
(
const
Array
&rhs);
160
virtual
BaseType
*
ptr_duplicate
();
161
162
void
add_var
(
BaseType
*v,
Part
p =
nil
);
163
164
void
append_dim
(
int
size,
string
name
=
""
);
165
void
prepend_dim
(
int
size,
const
string
&
name
=
""
);
166
167
virtual
void
add_constraint
(
Dim_iter
i,
int
start,
int
stride,
int
stop);
168
virtual
void
reset_constraint
();
169
170
virtual
void
clear_constraint
();
171
172
virtual
void
update_length
(
int
size);
173
174
Dim_iter
dim_begin
() ;
175
Dim_iter
dim_end
() ;
176
177
virtual
int
dimension_size
(
Dim_iter
i,
bool
constrained =
false
);
178
virtual
int
dimension_start
(
Dim_iter
i,
bool
constrained =
false
);
179
virtual
int
dimension_stop
(
Dim_iter
i,
bool
constrained =
false
);
180
virtual
int
dimension_stride
(
Dim_iter
i,
bool
constrained =
false
);
181
virtual
string
dimension_name
(
Dim_iter
i);
182
183
virtual
unsigned
int
dimensions
(
bool
constrained =
false
);
184
185
virtual
void
print_decl
(ostream &out,
string
space =
" "
,
186
bool
print_semi =
true
,
187
bool
constraint_info =
false
,
188
bool
constrained =
false
);
189
190
virtual
void
print_xml
(ostream &out,
string
space =
" "
,
191
bool
constrained =
false
);
192
193
#if FILE_METHODS
194
virtual
void
print_xml_core
(FILE *out,
string
space,
bool
constrained,
string
tag);
195
#endif
196
virtual
void
print_xml_core
(ostream &out,
string
space,
bool
constrained,
string
tag);
197
198
// not used (?)
199
virtual
void
print_as_map_xml
(ostream &out,
string
space =
" "
,
200
bool
constrained =
false
);
201
202
virtual
void
print_val
(ostream &out,
string
space =
""
,
203
bool
print_decl_p =
true
);
204
205
#if FILE_METHODS
206
virtual
void
print_xml
(FILE *out,
string
space =
" "
,
207
bool
constrained =
false
);
208
virtual
void
print_as_map_xml
(FILE *out,
string
space =
" "
,
209
bool
constrained =
false
);
210
virtual
void
print_val
(FILE *out,
string
space =
""
,
211
bool
print_decl_p =
true
);
212
virtual
void
print_decl
(FILE *out,
string
space =
" "
,
213
bool
print_semi =
true
,
214
bool
constraint_info =
false
,
215
bool
constrained =
false
);
216
#endif
217
218
virtual
bool
check_semantics
(
string
&msg,
bool
all =
false
);
219
220
virtual
void
dump
(ostream &strm)
const
;
221
};
222
223
}
// namespace libdap
224
225
#endif // _array_h
Array.h
Generated on Wed Jul 10 2013 17:26:30 for libdap++ by
1.8.4