syslib_proto.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2010 NICTA and the authors listed below
00002 // http://nicta.com.au
00003 // 
00004 // Authors:
00005 // - Conrad Sanderson (conradsand at ieee dot org)
00006 // 
00007 // This file is part of the Armadillo C++ library.
00008 // It is provided without any warranty of fitness
00009 // for any purpose. You can redistribute this file
00010 // and/or modify it under the terms of the GNU
00011 // Lesser General Public License (LGPL) as published
00012 // by the Free Software Foundation, either version 3
00013 // of the License or (at your option) any later version.
00014 // (see http://www.opensource.org/licenses for more info)
00015 
00016 
00017 //! \addtogroup syslib
00018 //! @{
00019 
00020 
00021 class syslib
00022   {
00023   public:
00024   
00025   template<typename eT>
00026   arma_hot
00027   inline
00028   static
00029   void
00030   copy_elem(eT* dest, const eT* src, const u32 n_elem)
00031     {
00032     if( n_elem <= (128/sizeof(eT)) )
00033       {
00034       u32 i,j;
00035       
00036       for(i=0, j=1; j<n_elem; i+=2, j+=2)
00037         {
00038         dest[i] = src[i];
00039         dest[j] = src[j];
00040         }
00041       
00042       if(i < n_elem)
00043         {
00044         dest[i] = src[i];
00045         }
00046       }
00047     else
00048       {
00049       std::memcpy(dest, src, n_elem*sizeof(eT));
00050       }
00051     
00052     }
00053   
00054   };
00055 
00056 
00057 
00058 //! @}