cisst-saw
Loading...
Searching...
No Matches
cmnObjectRegister.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): Andy LaMora, Anton Deguet
7 Created on: 2004-05-11
8
9 (C) Copyright 2004-2007 Johns Hopkins University (JHU), All Rights
10 Reserved.
11
12--- begin cisst license - do not edit ---
13
14This software is provided "as is" under an open source license, with
15no warranty. The complete license can be found in license.txt and
16http://www.cisst.org/cisst/license.txt.
17
18--- end cisst license ---
19
20*/
21
22#pragma once
23
24#ifndef _cmnObjectRegister_h
25#define _cmnObjectRegister_h
26
31
34
35#include <map>
36#include <iostream>
37#include <sstream>
38#include <string>
39
41
42
63
66 typedef std::map<std::string, cmnGenericObject *> ContainerType;
67 typedef ContainerType::iterator iterator;
68 typedef ContainerType::reverse_iterator reverse_iterator;
69
70public:
71 typedef ContainerType::const_iterator const_iterator;
72 typedef ContainerType::const_reverse_iterator const_reverse_iterator;
74
75private:
76
78 ContainerType ObjectContainer;
79
80
83 bool RegisterInstance(const std::string & objectName,
84 cmnGenericObject * objectPointer);
85
86
89 bool RemoveInstance(const std::string & objectName);
90
91
97 cmnGenericObject* FindObjectInstance(const std::string & objectName) const;
98
99
105 std::string FindNameInstance(cmnGenericObject * objectPointer) const;
106
107
110 void ToStreamInstance(std::ostream & outputStream) const;
111
114 const_iterator beginInstance(void) const {
115 return ObjectContainer.begin();
116 }
117
120 const_iterator endInstance(void) const {
121 return ObjectContainer.end();
122 }
123
124protected:
128
130 virtual ~cmnObjectRegister() {};
131
132 public:
133
142
143
155 static inline bool Register(const std::string & objectName,
156 cmnGenericObject * objectPointer) {
157 return Instance()->RegisterInstance(objectName, objectPointer);
158 }
159
160
168 static inline bool Remove(const std::string & objectName) {
169 return Instance()->RemoveInstance(objectName);
170 }
171
172
181 static inline cmnGenericObject * FindObject(const std::string & objectName) {
182 return Instance()->FindObjectInstance(objectName);
183 }
184
185
191 static inline std::string FindName(cmnGenericObject * objectPointer) {
192 return Instance()->FindNameInstance(objectPointer);
193 }
194
195
198 static std::string ToString(void) {
199 std::stringstream outputStream;
200 ToStream(outputStream);
201 return outputStream.str();
202 }
203
204
206 static inline void ToStream(std::ostream & outputStream) {
207 return Instance()->ToStreamInstance(outputStream);
208 }
209
210
212 static const_iterator begin(void) {
213 return Instance()->beginInstance();
214 }
215
216
218 static const_iterator end(void) {
219 return Instance()->endInstance();
220 }
221
222};
223
224
225#endif // _cmnObjectRegister_h
226
Base class for high level objects.
Definition cmnGenericObject.h:53
cmnObjectRegister()
Definition cmnObjectRegister.h:127
static bool Register(const std::string &objectName, cmnGenericObject *objectPointer)
Definition cmnObjectRegister.h:155
static void ToStream(std::ostream &outputStream)
Definition cmnObjectRegister.h:206
static cmnGenericObject * FindObject(const std::string &objectName)
Definition cmnObjectRegister.h:181
static const_iterator end(void)
Definition cmnObjectRegister.h:218
static std::string ToString(void)
Definition cmnObjectRegister.h:198
static const_iterator begin(void)
Definition cmnObjectRegister.h:212
virtual ~cmnObjectRegister()
Definition cmnObjectRegister.h:130
ContainerType::const_iterator const_iterator
Definition cmnObjectRegister.h:71
static cmnObjectRegister * Instance(void)
static bool Remove(const std::string &objectName)
Definition cmnObjectRegister.h:168
ContainerType::const_reverse_iterator const_reverse_iterator
Definition cmnObjectRegister.h:72
static std::string FindName(cmnGenericObject *objectPointer)
Definition cmnObjectRegister.h:191
Class register definitions and log macros.
Macros to export the symbols of cisstCommon (in a Dll).
#define CISST_EXPORT
Definition cmnExportMacros.h:50
Defines cmnGenericObject.
OwnerType::const_iterator const_iterator
Definition vctDynamicConstMatrixBase.h:95