bes Updated for version 3.21.1
The Backend Server (BES) is the lower two tiers of the Hyrax data server
FONcInt8.cc
1// FONcInt8.cc
2
3// This file is part of BES Netcdf File Out Module
4
5// Copyright (c) 2004,2005 University Corporation for Atmospheric Research
6// Author: Patrick West <pwest@ucar.edu> and Jose Garcia <jgarcia@ucar.edu>
7//
8// This library is free software; you can redistribute it and/or
9// modify it under the terms of the GNU Lesser General Public
10// License as published by the Free Software Foundation; either
11// version 2.1 of the License, or (at your option) any later version.
12//
13// This library is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16// Lesser General Public License for more details.
17//
18// You should have received a copy of the GNU Lesser General Public
19// License along with this library; if not, write to the Free Software
20// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21//
22//
23// Authors:
24// kyang Kent Yang <myang6@hdfgroup.org>
25// Note: The code follows FONcByte.cc.
26
27
28
29#include <BESInternalError.h>
30#include <BESDebug.h>
31
32#include "FONcInt8.h"
33#include "FONcUtils.h"
34#include "FONcAttributes.h"
35
44FONcInt8::FONcInt8( BaseType *b )
45 : FONcBaseType(), _b( 0 )
46{
47 _b = dynamic_cast<Int8 *>(b) ;
48 if( !_b )
49 {
50 string s = (string)"File out netcdf, FONcInt8 was passed a "
51 + "variable that is not a DAP4 int8" ;
52 throw BESInternalError( s, __FILE__, __LINE__ ) ;
53 }
54}
55
64
75void
77{
78 FONcBaseType::define( ncid ) ;
79
80 if( !d_defined )
81 {
82
83 if(d_is_dap4) {
84 D4Attributes *d4_attrs = _b->attributes();
85 updateD4AttrType(d4_attrs,NC_BYTE);
86 }
87 else {
88 AttrTable &attrs = _b->get_attr_table();
89 updateAttrType(attrs,NC_BYTE);
90 }
91
92 FONcAttributes::add_variable_attributes(ncid, d_varid, _b, isNetCDF4_ENHANCED(), d_is_dap4 ) ;
94 d_varname, d_orig_varname ) ;
95
96 d_defined = true ;
97 }
98}
99
109void
111{
112 BESDEBUG( "fonc", "FOncInt8::write for var " << d_varname << endl ) ;
113 size_t var_index[] = {0} ;
114 //char *data = new char ;
115 signed char data_value[1];
116
117 if (d_is_dap4)
118 _b->intern_data();
119 else
120 _b->intern_data(*get_eval(), *get_dds());
121
122 data_value[0] = _b->value();
123
124 //_b->buf2val( (void**)&data ) ;
125 int stax = nc_put_var1_schar(ncid, d_varid, var_index, data_value ) ;
126 if( stax != NC_NOERR )
127 {
128 string err = (string)"fileout.netcdf - "
129 + "Failed to write byte data for "
130 + d_varname ;
131 FONcUtils::handle_error( stax, err, __FILE__, __LINE__ ) ;
132 }
133 //delete data ;
134}
135
140string
142{
143 return _b->name() ;
144}
145
150nc_type
152{
153 return NC_BYTE ;
154}
155
162void
164{
165 strm << BESIndent::LMarg << "FONcInt8::dump - ("
166 << (void *)this << ")" << endl ;
167 BESIndent::Indent() ;
168 strm << BESIndent::LMarg << "name = " << _b->name() << endl ;
169 BESIndent::UnIndent() ;
170}
171
exception thrown if internal error encountered
static void add_original_name(int ncid, int varid, const string &var_name, const string &orig)
Adds an attribute for the variable if the variable name had to be modified in any way.
static void add_variable_attributes(int ncid, int varid, BaseType *b, bool is_netCDF_enhanced, bool is_dap4)
Add the attributes for an OPeNDAP variable to the netcdf file.
virtual void define(int ncid)
Define the variable in the netcdf file.
virtual void define(int ncid)
define the DAP4 int8 in the netcdf file
Definition FONcInt8.cc:76
FONcInt8(libdap::BaseType *b)
Constructor for FONcInt8 that takes a DAP4 int8.
Definition FONcInt8.cc:44
virtual void write(int ncid)
Write the DAP4 int8 out to the netcdf file.
Definition FONcInt8.cc:110
virtual void dump(ostream &strm) const
dumps information about this object for debugging purposes
Definition FONcInt8.cc:163
virtual string name()
returns the name of the DAP4 int8
Definition FONcInt8.cc:141
virtual ~FONcInt8()
Destructor that cleans up the DAP4 int8.
Definition FONcInt8.cc:61
virtual nc_type type()
returns the netcdf type of the DAP4 int8
Definition FONcInt8.cc:151
static void handle_error(int stax, const string &err, const string &file, int line)
handle any netcdf errors
Definition FONcUtils.cc:429
STL class.
STL class.