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_RefCountPtr.hpp"
00037
00063 #define STANDARD_COMPOSITION_MEMBERS( TYPE, NAME ) \
00064 void set_ ## NAME (const Teuchos::RefCountPtr< TYPE >& NAME ) \
00065 { NAME ## _ = NAME ; } \
00066 Teuchos::RefCountPtr< TYPE > get_ ## NAME() const \
00067 { return NAME ## _; } \
00068 TYPE& NAME() \
00069 { return *NAME ## _; } \
00070 const TYPE& NAME() const \
00071 { return *NAME ## _; } \
00072 private: \
00073 Teuchos::RefCountPtr< TYPE > NAME ## _; \
00074 public: \
00075 typedef Teuchos::RefCountPtr< TYPE > NAME ## _ptr_t;
00076
00102 #define STANDARD_NONCONST_COMPOSITION_MEMBERS( TYPE, NAME ) \
00103 void set_ ## NAME ( const Teuchos::RefCountPtr< TYPE >& NAME ) \
00104 { NAME ## _ = NAME ; } \
00105 Teuchos::RefCountPtr< TYPE > get_ ## NAME() const \
00106 { return NAME ## _; } \
00107 TYPE& NAME() const \
00108 { return *NAME ## _; } \
00109 private: \
00110 Teuchos::RefCountPtr< TYPE > NAME ## _; \
00111 public: \
00112 typedef Teuchos::RefCountPtr< TYPE > NAME ## _ptr_t;
00113
00139 #define STANDARD_CONST_COMPOSITION_MEMBERS( TYPE, NAME ) \
00140 public: \
00141 void set_ ## NAME ( const Teuchos::RefCountPtr< const TYPE >& NAME ) \
00142 { NAME ## _ = NAME ; } \
00143 Teuchos::RefCountPtr< const TYPE > get_ ## NAME() const \
00144 { return NAME ## _; } \
00145 const TYPE& NAME() const \
00146 { return *NAME ## _; } \
00147 private: \
00148 Teuchos::RefCountPtr< const TYPE > NAME ## _; \
00149 public: \
00150 typedef Teuchos::RefCountPtr< const TYPE > NAME ## _ptr_t;
00151
00152 #endif // TEUCHOS_STANDARD_COMPOSITION_MACROS_HPPx