cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
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 
22 #pragma once
23 
24 #ifndef _cmnObjectRegister_h
25 #define _cmnObjectRegister_h
26 
34 
35 #include <map>
36 #include <iostream>
37 #include <sstream>
38 #include <string>
39 
40 #include <cisstCommon/cmnExport.h>
41 
42 
63 
66  typedef std::map<std::string, cmnGenericObject *> ContainerType;
67  typedef ContainerType::iterator iterator;
68  typedef ContainerType::reverse_iterator reverse_iterator;
69 
70 public:
71  typedef ContainerType::const_iterator const_iterator;
72  typedef ContainerType::const_reverse_iterator const_reverse_iterator;
74 
75 private:
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 
124 protected:
128 
130  virtual ~cmnObjectRegister() {};
131 
132  public:
133 
141  static cmnObjectRegister * Instance(void);
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 
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
static bool Register(const std::string &objectName, cmnGenericObject *objectPointer)
Definition: cmnObjectRegister.h:155
ContainerType::const_iterator const_iterator
Definition: cmnObjectRegister.h:71
static cmnGenericObject * FindObject(const std::string &objectName)
Definition: cmnObjectRegister.h:181
static std::string ToString(void)
Definition: cmnObjectRegister.h:198
cmnObjectRegister()
Definition: cmnObjectRegister.h:127
ContainerType::const_reverse_iterator const_reverse_iterator
Definition: cmnObjectRegister.h:72
static const_iterator begin(void)
Definition: cmnObjectRegister.h:212
Base class for high level objects.
Definition: cmnGenericObject.h:51
Class register definitions and log macros.
Macros to export the symbols of cisstCommon (in a Dll).
Object Register.
Definition: cmnObjectRegister.h:62
Defines cmnGenericObject.
static std::string FindName(cmnGenericObject *objectPointer)
Definition: cmnObjectRegister.h:191
static void ToStream(std::ostream &outputStream)
Definition: cmnObjectRegister.h:206
virtual ~cmnObjectRegister()
Definition: cmnObjectRegister.h:130
static bool Remove(const std::string &objectName)
Definition: cmnObjectRegister.h:168
static const_iterator end(void)
Definition: cmnObjectRegister.h:218