Diana  0.8.3
DianaUtil.hpp
00001 #include <CapeOpen.hpp>
00002 
00003 #ifndef DIANA_UTIL_HPP
00004 #define DIANA_UTIL_HPP
00005 namespace Diana{
00006     namespace Util{
00007 
00008         using Common::Types::CapeArrayDouble;
00009         using Common::Types::CapeLong;
00010         using Common::Types::CapeDouble;
00017         inline void copyVec(double * dst, const Common::Types::CapeArrayDouble& src, 
00018                             CapeLong len=-1, CapeLong ssrc=0, CapeLong sdst=0)
00019         {
00020             if(len<0)
00021                 len=src.size()-ssrc;
00022             Common::Types::CapeArrayDouble::const_iterator srci=src.begin()+ssrc,
00023                 end=srci+len;
00024             dst+=sdst;
00025             for(;srci<end;srci++){
00026                 *dst=*srci;dst++;
00027             }
00028         }
00035         inline void copyVec(CapeArrayDouble& dst, const CapeArrayDouble& src, 
00036                             CapeLong len=-1, CapeLong ssrc=0, CapeLong sdst=0)
00037         {
00038             if(len<0)
00039                 len=src.size()-ssrc;
00040             CapeArrayDouble::const_iterator srci=src.begin()+ssrc,
00041                 end=srci+len;
00042             CapeArrayDouble::iterator dsti=dst.begin()+sdst;
00043             for(;srci<end;srci++){
00044                 *dsti=*srci;dsti++;
00045             }
00046         }
00047 
00048         inline CapeDouble* vecPtr(CapeArrayDouble& v){
00049             return static_cast<CapeDouble*>(&v[0]);
00050         }
00051 
00052     }
00053 }
00054 #endif //DIANA_UTIL_HPP
00055