cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
cmnGenericObjectProxy.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3 
4 /*
5 
6  Author(s): Ankur Kapoor, Anton Deguet
7  Created on: 2006-05-05
8 
9  (C) Copyright 2006-2007 Johns Hopkins University (JHU), All Rights
10  Reserved.
11 
12 --- begin cisst license - do not edit ---
13 
14 This software is provided "as is" under an open source license, with
15 no warranty. The complete license can be found in license.txt and
16 http://www.cisst.org/cisst/license.txt.
17 
18 --- end cisst license ---
19 */
20 
21 #pragma once
22 
23 #ifndef _cmnGenericObjectProxy_h
24 #define _cmnGenericObjectProxy_h
25 
30 #include <cisstCommon/cmnExport.h>
31 
72 template <class _elementType>
74 {
75  CMN_DECLARE_SERVICES_EXPORT(CMN_DYNAMIC_CREATION, CMN_LOG_ALLOW_DEFAULT);
76 
77 public:
79  typedef _elementType value_type;
81 
84  inline cmnGenericObjectProxy(void)
85  {}
86 
89  inline cmnGenericObjectProxy(const value_type & data):
90  Data(data)
91  {}
92 
93  inline ~cmnGenericObjectProxy(void) {}
94 
98  inline ThisType & operator=(value_type data) {
99  Data = data;
100  return *this;
101  }
102 
107  inline operator value_type & (void) {
108  return Data;
109  }
110  inline operator const value_type & (void) const {
111  return this->Data;
112  }
114 
117  inline void SerializeRaw(std::ostream & outputStream) const {
118  cmnSerializeRaw(outputStream, this->Data);
119  }
120 
123  inline void DeSerializeRaw(std::istream & inputStream) {
124  cmnDeSerializeRaw(inputStream, this->Data);
125  }
126 
129  inline virtual void ToStream(std::ostream & outputStream) const {
130  outputStream << Data;
131  }
132 
134  inline virtual void ToStreamRaw(std::ostream & outputStream, const char CMN_UNUSED(delimiter) = ' ',
135  bool headerOnly = false, const std::string & headerPrefix = "") const {
136  if (headerOnly) {
137  outputStream << headerPrefix << "-data";
138  } else {
139  outputStream << this->Data;
140  }
141  }
142 
144  inline virtual bool FromStreamRaw(std::istream & inputStream, const char CMN_UNUSED(delimiter) = ' ') {
145  inputStream >> this->Data; // assumes that operator >> is defined for _elementType
146  bool valid = inputStream.good();
147  if (!valid) inputStream.clear();
148  return valid;
149  }
150 
151 };
152 
153 /* Some basic types defined here for now, could move somewhere
154  else. */
157 
160 
163 
166 
169 
172 
175 
178 
181 
184 
187 
190 
191 
192 #endif
193 
cmnGenericObjectProxy< double > cmnDouble
Definition: cmnGenericObjectProxy.h:155
CMN_DECLARE_SERVICES_INSTANTIATION(cmnDouble)
cmnGenericObjectProxy< _elementType > ThisType
Definition: cmnGenericObjectProxy.h:78
void DeSerializeRaw(std::istream &inputStream)
Definition: cmnGenericObjectProxy.h:123
cmnGenericObjectProxy< unsigned int > cmnUInt
Definition: cmnGenericObjectProxy.h:173
#define CMN_UNUSED(argument)
Definition: cmnPortability.h:479
Declaration of cmnSerializer and functions cmnSerializeRaw.
Definition: cmnGenericObjectProxy.h:73
cmnGenericObjectProxy< bool > cmnBool
Definition: cmnGenericObjectProxy.h:188
cmnGenericObjectProxy< long > cmnLong
Definition: cmnGenericObjectProxy.h:158
void SerializeRaw(std::ostream &outputStream) const
Definition: cmnGenericObjectProxy.h:117
Base class for high level objects.
Definition: cmnGenericObject.h:51
Class register definitions and log macros.
virtual void ToStream(std::ostream &outputStream) const
Definition: cmnGenericObjectProxy.h:129
ThisType & operator=(value_type data)
Definition: cmnGenericObjectProxy.h:98
Macros to export the symbols of cisstCommon (in a Dll).
void cmnDeSerializeRaw(std::istream &inputStream, _elementType &data)
Definition: cmnDeSerializer.h:82
Defines cmnGenericObject.
cmnGenericObjectProxy< unsigned short > cmnUShort
Definition: cmnGenericObjectProxy.h:179
cmnGenericObjectProxy< short > cmnShort
Definition: cmnGenericObjectProxy.h:176
void cmnSerializeRaw(std::ostream &outputStream, const _elementType &data)
Definition: cmnSerializer.h:78
cmnGenericObjectProxy(void)
Definition: cmnGenericObjectProxy.h:84
cmnGenericObjectProxy< char > cmnChar
Definition: cmnGenericObjectProxy.h:182
virtual bool FromStreamRaw(std::istream &inputStream, const char CMN_UNUSED(delimiter)= ' ')
Definition: cmnGenericObjectProxy.h:144
_elementType value_type
Definition: cmnGenericObjectProxy.h:79
value_type Data
Definition: cmnGenericObjectProxy.h:80
cmnGenericObjectProxy< unsigned long long > cmnULongLong
Definition: cmnGenericObjectProxy.h:167
~cmnGenericObjectProxy(void)
Definition: cmnGenericObjectProxy.h:93
virtual void ToStreamRaw(std::ostream &outputStream, const char CMN_UNUSED(delimiter)= ' ', bool headerOnly=false, const std::string &headerPrefix="") const
Definition: cmnGenericObjectProxy.h:134
cmnGenericObjectProxy< unsigned char > cmnUChar
Definition: cmnGenericObjectProxy.h:185
Declaration of cmnDeSerializer and functions cmnDeSerializeRaw.
const int CMN_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:331
cmnGenericObjectProxy< long long > cmnLongLong
Definition: cmnGenericObjectProxy.h:164
cmnGenericObjectProxy< int > cmnInt
Definition: cmnGenericObjectProxy.h:170
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76
cmnGenericObjectProxy< unsigned long > cmnULong
Definition: cmnGenericObjectProxy.h:161
cmnGenericObjectProxy(const value_type &data)
Definition: cmnGenericObjectProxy.h:89