00001 // Copyright (C) 2001, 2002, 2003, 2004 EPITA Research and Development Laboratory 00002 // 00003 // This file is part of the Olena Library. This library is free 00004 // software; you can redistribute it and/or modify it under the terms 00005 // of the GNU General Public License version 2 as published by the 00006 // Free Software Foundation. 00007 // 00008 // This library is distributed in the hope that it will be useful, 00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00011 // General Public License for more details. 00012 // 00013 // You should have received a copy of the GNU General Public License 00014 // along with this library; see the file COPYING. If not, write to 00015 // the Free Software Foundation, 59 Temple Place - Suite 330, Boston, 00016 // MA 02111-1307, USA. 00017 // 00018 // As a special exception, you may use this file as part of a free 00019 // software library without restriction. Specifically, if other files 00020 // instantiate templates or use macros or inline functions from this 00021 // file, or you compile this file and link it with other files to 00022 // produce an executable, this file does not by itself cause the 00023 // resulting executable to be covered by the GNU General Public 00024 // License. This exception does not however invalidate any other 00025 // reasons why the executable file might be covered by the GNU General 00026 // Public License. 00027 00028 #ifndef OLENA_UTILS_COPY_HH 00029 # define OLENA_UTILS_COPY_HH 00030 00031 /* \file olena/oln/utils/copy.hh 00032 ** 00033 ** \warning This file contains implementations of image's copy constructors. 00034 **\verbatim 00035 ** / \ NEVER include this file unless you understand what 00036 ** / ! \ it does and why you need it. 00037 ** `-----' 00038 **\endverbatim 00039 ** \todo FIXME: should be replaced soon by a correct const image handling. 00040 ** a detailed problem description can be found on: 00041 ** http://www.lrde.epita.fr/cgi-bin/twiki/view/Projects/OlenaConstImages 00042 */ 00043 00044 namespace oln { 00045 00046 # define OLENA_UTILS_IMAGE_DEEP_COPY \ 00047 mlc_init_static_hierarchy(Exact); \ 00048 if (rhs.has_impl()) \ 00049 *this = rhs.clone() 00050 00051 # ifdef OLENA_CORE_IMAGE1D_HH 00052 00053 template<class T, class Exact> 00054 image1d<T,Exact>::image1d(const self_type& rhs) 00055 { 00056 OLENA_UTILS_IMAGE_DEEP_COPY; 00057 } 00058 00059 # endif 00060 00061 00062 # ifdef OLENA_CORE_IMAGE2D_HH 00063 00064 template<class T, class Exact> 00065 image2d<T,Exact>::image2d(const self_type& rhs) 00066 { 00067 OLENA_UTILS_IMAGE_DEEP_COPY; 00068 } 00069 00070 # endif 00071 00072 00073 # ifdef OLENA_CORE_IMAGE3D_HH 00074 00075 template<class T, class Exact> 00076 image3d<T,Exact>::image3d(const self_type& rhs) 00077 { 00078 OLENA_UTILS_IMAGE_DEEP_COPY; 00079 } 00080 00081 # endif 00082 00083 } // end of namespace oln 00084 00085 #endif // ! OLENA_UTILS_COPY_HH