cisst-saw
Loading...
Searching...
No Matches
cmnClassRegister.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): Alvin Liem, Anton Deguet
7 Created on: 2002-08-01
8
9 (C) Copyright 2002-2010 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
27#pragma once
28
29#ifndef _cmnClassRegister_h
30#define _cmnClassRegister_h
31
35
36#include <iostream>
37#include <sstream>
38#include <string>
39#include <map>
40#include <typeinfo>
41#include <fstream>
42
44
45
98 public:
101 typedef std::map<std::string, cmnClassServicesBase*> ServicesContainerType;
102 typedef ServicesContainerType::value_type EntryType;
103
104 typedef ServicesContainerType::const_iterator const_iterator;
105 typedef ServicesContainerType::const_reverse_iterator const_reverse_iterator;
106
107 typedef ServicesContainerType::size_type size_type;
108
109 private:
110 typedef ServicesContainerType::iterator iterator;
111 typedef ServicesContainerType::reverse_iterator reverse_iterator;
113
115 ServicesContainerType ServicesContainer;
116
117 public:
123 cmnClassServicesBase * FindClassServicesInstance(const std::string & className);
124
130 cmnClassServicesBase * FindClassServicesInstance(const std::type_info & typeInfo);
131
134 const std::string *
136 const std::string & className);
137
141
144 bool SetLogMaskClassMatchingInstance(const std::string & stringToMatch, cmnLogMask mask);
145
148 std::string ToStringInstance(void) const;
149
152 void ToStreamInstance(std::ostream & outputStream) const;
153
156 inline size_type sizeInstance(void) const {
157 return ServicesContainer.size();
158 }
159
162 inline const_iterator beginInstance(void) const {
163 return ServicesContainer.begin();
164 }
165
168 inline const_iterator endInstance(void) const {
169 return ServicesContainer.end();
170 }
171
172protected:
175 inline cmnClassRegister(void) {};
176
177 public:
178
187
188
207 static inline const std::string *
208 Register(cmnClassServicesBase * classServicesPointer,
209 const std::string & className)
210 {
211 return Instance()->RegisterInstance(classServicesPointer,
212 className);
213 }
214
215
226 static bool SetLogMaskClass(const std::string & className, cmnLogMask mask);
227
228 static inline bool CISST_DEPRECATED SetLoD(const std::string & className, cmnLogMask mask) {
229 return SetLogMaskClass(className, mask);
230 }
231
232
241 static inline bool SetLogMaskClassAll(cmnLogMask mask) {
242 return Instance()->SetLogMaskClassAllInstance(mask);
243 }
244
246 return SetLogMaskClassAll(mask);
247 }
248
249
260 static inline bool SetLogMaskClassMatching(const std::string & stringToMatch, cmnLogMask mask) {
261 return Instance()->SetLogMaskClassMatchingInstance(stringToMatch, mask);
262 }
263
264 static inline bool CISST_DEPRECATED SetLoDForMatchingClasses(const std::string & stringToMatch, cmnLogMask mask) {
265 return Instance()->SetLogMaskClassMatching(stringToMatch, mask);
266 }
267
268
277 static inline cmnClassServicesBase * FindClassServices(const std::string & className) {
278 return Instance()->FindClassServicesInstance(className);
279 }
280
292 static inline cmnClassServicesBase * FindClassServices(const std::type_info & typeInfo) {
293 return Instance()->FindClassServicesInstance(typeInfo);
294 }
295
296
303 static cmnGenericObject * Create(const std::string & className);
304
313 static cmnGenericObject * Create(const std::string & className,
314 const cmnGenericObject & other);
315
316
319 static std::string ToString(void);
320
321
323 static void ToStream(std::ostream & outputStream) {
324 Instance()->ToStreamInstance(outputStream);
325 }
326
327
329 static size_type size(void) {
330 return Instance()->sizeInstance();
331 }
332
334 static const_iterator begin(void) {
335 return Instance()->beginInstance();
336 }
337
338
340 static const_iterator end(void) {
341 return Instance()->endInstance();
342 }
343
344};
345
346
348inline
349std::ostream & operator << (std::ostream & output,
350 const cmnClassRegister & classRegister) {
351 classRegister.ToStream(output);
352 return output;
353}
354
355
356#endif // _cmnClassRegister_h
357
Main register for classes.
Definition cmnClassRegister.h:97
static cmnGenericObject * Create(const std::string &className, const cmnGenericObject &other)
const std::string * RegisterInstance(cmnClassServicesBase *classServicesPointer, const std::string &className)
static cmnClassRegister * Instance(void)
static bool CISST_DEPRECATED SetLoDForMatchingClasses(const std::string &stringToMatch, cmnLogMask mask)
Definition cmnClassRegister.h:264
static cmnClassServicesBase * FindClassServices(const std::type_info &typeInfo)
Definition cmnClassRegister.h:292
cmnClassServicesBase * FindClassServicesInstance(const std::type_info &typeInfo)
static std::string ToString(void)
cmnClassServicesBase * FindClassServicesInstance(const std::string &className)
static size_type size(void)
Definition cmnClassRegister.h:329
bool SetLogMaskClassMatchingInstance(const std::string &stringToMatch, cmnLogMask mask)
static const std::string * Register(cmnClassServicesBase *classServicesPointer, const std::string &className)
Definition cmnClassRegister.h:208
static cmnGenericObject * Create(const std::string &className)
void ToStreamInstance(std::ostream &outputStream) const
const_iterator endInstance(void) const
Definition cmnClassRegister.h:168
cmnClassRegister(void)
Definition cmnClassRegister.h:175
std::string ToStringInstance(void) const
static const_iterator begin(void)
Definition cmnClassRegister.h:334
static bool SetLogMaskClass(const std::string &className, cmnLogMask mask)
static bool CISST_DEPRECATED SetLoDForAllClasses(cmnLogMask mask)
Definition cmnClassRegister.h:245
ServicesContainerType::const_iterator const_iterator
Definition cmnClassRegister.h:104
static bool SetLogMaskClassAll(cmnLogMask mask)
Definition cmnClassRegister.h:241
ServicesContainerType::value_type EntryType
Definition cmnClassRegister.h:102
size_type sizeInstance(void) const
Definition cmnClassRegister.h:156
ServicesContainerType::size_type size_type
Definition cmnClassRegister.h:107
const_iterator beginInstance(void) const
Definition cmnClassRegister.h:162
static bool CISST_DEPRECATED SetLoD(const std::string &className, cmnLogMask mask)
Definition cmnClassRegister.h:228
static cmnClassServicesBase * FindClassServices(const std::string &className)
Definition cmnClassRegister.h:277
static void ToStream(std::ostream &outputStream)
Definition cmnClassRegister.h:323
static const_iterator end(void)
Definition cmnClassRegister.h:340
std::map< std::string, cmnClassServicesBase * > ServicesContainerType
Definition cmnClassRegister.h:101
bool SetLogMaskClassAllInstance(cmnLogMask mask)
static bool SetLogMaskClassMatching(const std::string &stringToMatch, cmnLogMask mask)
Definition cmnClassRegister.h:260
ServicesContainerType::const_reverse_iterator const_reverse_iterator
Definition cmnClassRegister.h:105
Base class for class services.
Definition cmnClassServicesBase.h:46
Base class for high level objects.
Definition cmnGenericObject.h:53
std::ostream & operator<<(std::ostream &output, const cmnClassRegister &classRegister)
Definition cmnClassRegister.h:349
Macros to export the symbols of cisstCommon (in a Dll).
#define CISST_EXPORT
Definition cmnExportMacros.h:50
short cmnLogMask
Definition cmnLogLoD.h:67
Declaration of cmnLogger amd macros for human readable logging.
Portability across compilers and operating systems tools.
#define CISST_DEPRECATED
Definition cmnPortability.h:314