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 THYRA_SPMD_VECTOR_STD_DECL_HPP
00030 #define THYRA_SPMD_VECTOR_STD_DECL_HPP
00031
00032 #include "Thyra_SpmdVectorBaseDecl.hpp"
00033
00034 namespace Thyra {
00035
00053 template<class Scalar>
00054 class DefaultSpmdVector : virtual public SpmdVectorBase<Scalar> {
00055 public:
00056
00059
00060
00062 DefaultSpmdVector();
00063
00065 DefaultSpmdVector(
00066 const Teuchos::RefCountPtr<const SpmdVectorSpaceBase<Scalar> > &spmdSpace
00067 ,const Teuchos::RefCountPtr<Scalar> &localValues
00068 ,const Index stride
00069 );
00070
00096 void initialize(
00097 const Teuchos::RefCountPtr<const SpmdVectorSpaceBase<Scalar> > &spmdSpace
00098 ,const Teuchos::RefCountPtr<Scalar> &localValues
00099 ,const Index stride
00100 );
00101
00107 void uninitialize(
00108 Teuchos::RefCountPtr<const SpmdVectorSpaceBase<Scalar> > *spmdSpace = NULL
00109 ,Teuchos::RefCountPtr<Scalar> *localValues = NULL
00110 ,Index *stride = NULL
00111 );
00112
00114
00117
00119 Teuchos::RefCountPtr<Scalar> getRCPtr();
00121 Teuchos::RefCountPtr<const Scalar> getRCPtr() const;
00123 Scalar* getPtr();
00125 const Scalar* getPtr() const;
00127 Index getStride() const;
00128
00130
00134 std::string description() const;
00136
00139
00141 Teuchos::RefCountPtr<const SpmdVectorSpaceBase<Scalar> > spmdSpace() const;
00143 void getLocalData( Scalar** localValues, Index* stride );
00145 void commitLocalData( Scalar* localValues );
00147 void getLocalData( const Scalar** localValues, Index* stride ) const;
00149 void freeLocalData( const Scalar* localValues ) const;
00150
00152
00153 private:
00154
00155
00156
00157
00158 Teuchos::RefCountPtr<const SpmdVectorSpaceBase<Scalar> > spmdSpace_;
00159 Teuchos::RefCountPtr<Scalar> localValues_;
00160 Index stride_;
00161
00162 };
00163
00164
00165
00166
00167 template<class Scalar>
00168 inline
00169 Teuchos::RefCountPtr<Scalar>
00170 DefaultSpmdVector<Scalar>::getRCPtr()
00171 {
00172 return localValues_;
00173 }
00174
00175 template<class Scalar>
00176 inline
00177 Teuchos::RefCountPtr<const Scalar>
00178 DefaultSpmdVector<Scalar>::getRCPtr() const
00179 {
00180 return localValues_;
00181 }
00182
00183 template<class Scalar>
00184 inline
00185 Scalar* DefaultSpmdVector<Scalar>::getPtr()
00186 {
00187 return localValues_.get();
00188 }
00189
00190 template<class Scalar>
00191 inline
00192 const Scalar* DefaultSpmdVector<Scalar>::getPtr() const
00193 {
00194 return localValues_.get();
00195 }
00196
00197 template<class Scalar>
00198 inline
00199 Index DefaultSpmdVector<Scalar>::getStride() const
00200 {
00201 return stride_;
00202 }
00203
00204 }
00205
00206 #endif // THYRA_SPMD_VECTOR_STD_DECL_HPP