libdap++
Updated for version 3.8.2
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
Str.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 1995-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
// Interface for Str type.
33
//
34
// jhrg 9/7/94
35
36
#ifndef _str_h
37
#define _str_h 1
38
39
#include <string>
40
41
#include "
dods-limits.h
"
42
#include "
BaseType.h
"
43
44
#define FILE_METHODS 1
45
46
namespace
libdap
47
{
48
49
// max_str_len should be large since we always send strings with length bytes
50
// as a prefix (so xdr_string will always know how much memory to malloc) but
51
// if deserialize gets confused and thinks a ctor (in particular) is a string
52
// xdr_string in turn will max_str_len if it cannot get a length byte. A long
53
// term solution is to fix libdap, but strings should not routinely be > 32k
54
// for the time being... jhrg 4/30/97
55
56
const
unsigned
int
max_str_len
=
DODS_USHRT_MAX
- 1;
57
64
class
Str
:
public
BaseType
65
{
66
67
protected
:
68
string
_buf
;
69
70
public
:
71
Str
(
const
string
&n);
72
Str
(
const
string
&n,
const
string
&d);
73
74
virtual
~Str
()
75
{}
76
77
Str
(
const
Str
©_from);
78
79
Str
&
operator=
(
const
Str
&rhs);
80
81
virtual
BaseType
*
ptr_duplicate
();
82
83
virtual
unsigned
int
width
();
84
85
// Return the length of the stored string or zero if no string has been
86
// stored in the instance's internal buffer.
87
unsigned
int
length
();
88
89
virtual
bool
serialize
(
ConstraintEvaluator
&eval,
DDS
&dds,
90
Marshaller
&m,
bool
ce_eval =
true
);
91
virtual
bool
deserialize
(
UnMarshaller
&um,
DDS
*dds,
bool
reuse =
false
);
92
93
virtual
unsigned
int
val2buf
(
void
*val,
bool
reuse =
false
);
94
virtual
unsigned
int
buf2val
(
void
**val);
95
96
virtual
bool
set_value
(
const
string
&
value
);
97
virtual
string
value
()
const
;
98
#if FILE_METHODS
99
virtual
void
print_val
(FILE *out,
string
space =
""
,
100
bool
print_decl_p =
true
);
101
#endif
102
virtual
void
print_val
(ostream &out,
string
space =
""
,
103
bool
print_decl_p =
true
);
104
105
virtual
bool
ops
(
BaseType
*b,
int
op);
106
107
virtual
void
dump
(ostream &strm)
const
;
108
};
109
110
}
// namespace libdap
111
112
#endif // _str_h
113
Str.h
Generated on Wed Jul 10 2013 09:34:52 for libdap++ by
1.8.4