00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef TEUCHOS_STANDARD_COMPOSITION_MACROS_HPP
00030 #define TEUCHOS_STANDARD_COMPOSITION_MACROS_HPP
00031
00036 #include "Teuchos_RCP.hpp"
00037
00064 #define STANDARD_COMPOSITION_MEMBERS( TYPE, NAME ) \
00065 void set_ ## NAME (const Teuchos::RCP< TYPE >& NAME ) \
00066 { NAME ## _ = NAME ; } \
00067 Teuchos::RCP< TYPE > get_ ## NAME() const \
00068 { return NAME ## _; } \
00069 TYPE& NAME() \
00070 { return *NAME ## _; } \
00071 const TYPE& NAME() const \
00072 { return *NAME ## _; } \
00073 private: \
00074 Teuchos::RCP< TYPE > NAME ## _; \
00075 public: \
00076 typedef Teuchos::RCP< TYPE > NAME ## _ptr_t
00077
00104 #define STANDARD_NONCONST_COMPOSITION_MEMBERS( TYPE, NAME ) \
00105 void set_ ## NAME ( const Teuchos::RCP< TYPE >& NAME ) \
00106 { NAME ## _ = NAME ; } \
00107 Teuchos::RCP< TYPE > get_ ## NAME() const \
00108 { return NAME ## _; } \
00109 TYPE& NAME() const \
00110 { return *NAME ## _; } \
00111 private: \
00112 Teuchos::RCP< TYPE > NAME ## _; \
00113 public: \
00114 typedef Teuchos::RCP< TYPE > NAME ## _ptr_t
00115
00143 #define STANDARD_CONST_COMPOSITION_MEMBERS( TYPE, NAME ) \
00144 public: \
00145 void set_ ## NAME ( const Teuchos::RCP< const TYPE >& NAME ) \
00146 { NAME ## _ = NAME ; } \
00147 Teuchos::RCP< const TYPE > get_ ## NAME() const \
00148 { return NAME ## _; } \
00149 const TYPE& NAME() const \
00150 { return *NAME ## _; } \
00151 private: \
00152 Teuchos::RCP< const TYPE > NAME ## _; \
00153 public: \
00154 typedef Teuchos::RCP< const TYPE > NAME ## _ptr_t
00155
00156 #endif // TEUCHOS_STANDARD_COMPOSITION_MACROS_HPP