00001 #ifndef SharedArray_H_
00002 #define SharedArray_H_
00003
00004 #include <cstdlib>
00005 #include <vector>
00006 using std::vector;
00007
00008 #include <boost/shared_ptr.hpp>
00009
00010 typedef boost::shared_ptr<vector<double> > shared_dbl_vector_ptr;
00011
00012 template<typename T>
00013 class SharedArray
00014 {
00015 public:
00016 SharedArray(const T v[], size_t size);
00017
00018 SharedArray(const std::vector<T> &v = std::vector<T>());
00019
00020 const T operator[] (size_t n) const;
00021
00022 size_t size() const;
00023
00024 const vector<T> * get() const
00025 {
00026 return &el_vec;
00027 }
00028
00029 protected:
00030 vector<T> el_vec;
00031 };
00032
00033 template<typename T>
00034 SharedArray<T>::SharedArray(const T v[], size_t size)
00035 : el_vec(v,v+size)
00036 {}
00037
00038 template<typename T>
00039 SharedArray<T>::SharedArray(const std::vector<T> &v)
00040 : el_vec(v){ }
00041
00042
00043 template<typename T>
00044 const T SharedArray<T>::operator[] (size_t n) const
00045 {
00046 return el_vec[n];
00047 }
00048
00049 template<typename T>
00050 size_t SharedArray<T>::size() const
00051 {
00052 return el_vec.size();
00053 }
00054
00055
00056 #endif