cisst-saw
Loading...
Searching...
No Matches
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 Author(s): Ankur Kapoor, Anton Deguet
6 Created on: 2006-05-05
7
8 (C) Copyright 2006-2023 Johns Hopkins University (JHU), All Rights Reserved.
9
10--- begin cisst license - do not edit ---
11
12This software is provided "as is" under an open source license, with
13no warranty. The complete license can be found in license.txt and
14http://www.cisst.org/cisst/license.txt.
15
16--- end cisst license ---
17*/
18
19#pragma once
20
21#ifndef _cmnGenericObjectProxy_h
22#define _cmnGenericObjectProxy_h
23
29
70template <class _elementType>
72{
73 CMN_DECLARE_SERVICES_EXPORT(CMN_DYNAMIC_CREATION, CMN_LOG_ALLOW_DEFAULT);
74
75public:
77 typedef _elementType value_type;
79
83 {}
84
87 inline cmnGenericObjectProxy(const value_type & data):
88 Data(data)
89 {}
90
91 inline ~cmnGenericObjectProxy(void) {}
92
96 inline ThisType & operator=(value_type data) {
97 Data = data;
98 return *this;
99 }
100
105 inline operator value_type & (void) {
106 return Data;
107 }
108 inline operator const value_type & (void) const {
109 return this->Data;
110 }
111
112
115 inline void SerializeRaw(std::ostream & outputStream) const override {
116 cmnSerializeRaw(outputStream, this->Data);
117 }
118
121 inline void DeSerializeRaw(std::istream & inputStream) override {
122 cmnDeSerializeRaw(inputStream, this->Data);
123 }
124
127 inline void ToStream(std::ostream & outputStream) const override {
128 outputStream << Data;
129 }
130
132 inline void ToStreamRaw(std::ostream & outputStream, const char CMN_UNUSED(delimiter) = ' ',
133 bool headerOnly = false, const std::string & headerPrefix = "") const override {
134 if (headerOnly) {
135 outputStream << headerPrefix << "-data";
136 } else {
137 outputStream << this->Data;
138 }
139 }
140
142 inline bool FromStreamRaw(std::istream & inputStream, const char CMN_UNUSED(delimiter) = ' ') override {
143 inputStream >> this->Data; // assumes that operator >> is defined for _elementType
144 bool valid = inputStream.good();
145 if (!valid) inputStream.clear();
146 return valid;
147 }
148
149};
150
151/* Some basic types defined here for now, could move somewhere
152 else. */
155
158
161
164
167
170
173
176
179
182
185
188
189
190#endif
Base class for high level objects.
Definition cmnGenericObject.h:53
Definition cmnGenericObjectProxy.h:72
void ToStreamRaw(std::ostream &outputStream, const char CMN_UNUSED(delimiter)=' ', bool headerOnly=false, const std::string &headerPrefix="") const override
Definition cmnGenericObjectProxy.h:132
value_type Data
Definition cmnGenericObjectProxy.h:78
void ToStream(std::ostream &outputStream) const override
Definition cmnGenericObjectProxy.h:127
void DeSerializeRaw(std::istream &inputStream) override
Definition cmnGenericObjectProxy.h:121
cmnGenericObjectProxy(void)
Definition cmnGenericObjectProxy.h:82
cmnGenericObjectProxy< _elementType > ThisType
Definition cmnGenericObjectProxy.h:76
_elementType value_type
Definition cmnGenericObjectProxy.h:77
void SerializeRaw(std::ostream &outputStream) const override
Definition cmnGenericObjectProxy.h:115
bool FromStreamRaw(std::istream &inputStream, const char CMN_UNUSED(delimiter)=' ') override
Definition cmnGenericObjectProxy.h:142
ThisType & operator=(value_type data)
Definition cmnGenericObjectProxy.h:96
~cmnGenericObjectProxy(void)
Definition cmnGenericObjectProxy.h:91
cmnGenericObjectProxy(const value_type &data)
Definition cmnGenericObjectProxy.h:87
Class register definitions and log macros.
#define CMN_DECLARE_SERVICES_INSTANTIATION(className)
Definition cmnClassRegisterMacros.h:199
const int CMN_DYNAMIC_CREATION
Definition cmnClassRegisterMacros.h:328
Declaration of cmnDeSerializer and functions cmnDeSerializeRaw.
void cmnDeSerializeRaw(std::istream &inputStream, _elementType &data) CISST_THROW(std
Definition cmnDeSerializer.h:82
Macros to export the symbols of cisstCommon (in a Dll).
Defines cmnGenericObject.
cmnGenericObjectProxy< long long > cmnLongLong
Definition cmnGenericObjectProxy.h:162
cmnGenericObjectProxy< unsigned int > cmnUInt
Definition cmnGenericObjectProxy.h:171
cmnGenericObjectProxy< unsigned char > cmnUChar
Definition cmnGenericObjectProxy.h:183
cmnGenericObjectProxy< double > cmnDouble
Definition cmnGenericObjectProxy.h:153
cmnGenericObjectProxy< unsigned short > cmnUShort
Definition cmnGenericObjectProxy.h:177
cmnGenericObjectProxy< unsigned long long > cmnULongLong
Definition cmnGenericObjectProxy.h:165
cmnGenericObjectProxy< short > cmnShort
Definition cmnGenericObjectProxy.h:174
cmnGenericObjectProxy< char > cmnChar
Definition cmnGenericObjectProxy.h:180
cmnGenericObjectProxy< bool > cmnBool
Definition cmnGenericObjectProxy.h:186
cmnGenericObjectProxy< unsigned long > cmnULong
Definition cmnGenericObjectProxy.h:159
cmnGenericObjectProxy< int > cmnInt
Definition cmnGenericObjectProxy.h:168
cmnGenericObjectProxy< long > cmnLong
Definition cmnGenericObjectProxy.h:156
#define CMN_LOG_ALLOW_DEFAULT
Definition cmnLogLoD.h:76
#define CMN_UNUSED(argument)
Definition cmnPortability.h:497
Declaration of cmnSerializer and functions cmnSerializeRaw.
void cmnSerializeRaw(std::ostream &outputStream, const _elementType &data) CISST_THROW(std
Definition cmnSerializer.h:76