CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
register_dataproxybuilder_macro.h
Go to the documentation of this file.
1 #ifndef Fireworks_Core_register_dataproxybuilder_macro_h
2 #define Fireworks_Core_register_dataproxybuilder_macro_h
3 // -*- C++ -*-
4 //
5 // Package: Core
6 // Class : register_dataproxybuilder_macro
7 //
16 //
17 // Original Author: Chris Jones
18 // Created: Thu Jun 5 15:31:20 EDT 2008
19 // $Id: register_dataproxybuilder_macro.h,v 1.8 2012/08/03 18:20:27 wmtan Exp $
20 //
21 
22 // system include files
23 #include <stdlib.h>
24 #include "boost/lexical_cast.hpp"
26 
27 // forward declarations
28 
29 #define REGISTER_PROXYBUILDER_METHODS() \
30  const std::string& typeName() const { return classTypeName(); } \
31  const std::string& view() const { return classView();} \
32  const std::string& purpose() const { return classPurpose();} \
33  static const std::string& classRegisterTypeName(); \
34  static const std::string& classTypeName(); \
35  static const std::string& classPurpose(); \
36  static const std::string& classView() \
37 
38 #define CONCATENATE_HIDDEN(a,b) a ## b
39 #define CONCATENATE(a,b) CONCATENATE_HIDDEN(a,b)
40 
41 #define DEFINE_PROXYBUILDER_METHODS(_builder_,_type_,_purpose_,_view_) \
42  const std::string& _builder_::classTypeName() { \
43  static std::string s_type = edm::TypeWithDict(typeid(_type_)).name(); \
44  return s_type;} \
45  const std::string& _builder_::classRegisterTypeName() { \
46  static std::string s_type( typeid(_type_).name() ); \
47  return s_type;} \
48  const std::string& _builder_::classView(){ \
49  static std::string s_view( boost::lexical_cast<std::string>(_view_)); \
50  return s_view;} \
51  const std::string& _builder_::classPurpose(){ \
52  static std::string s_purpose(_purpose_); return s_purpose;} enum {CONCATENATE(dummy_proxybuilder_methods_, __LINE__)}
53 
54 #endif
55