aimsalgo 6.0.0
Neuroimaging image processing
linearfilterfactory_d.h
Go to the documentation of this file.
1/* This software and supporting documentation are distributed by
2 * Institut Federatif de Recherche 49
3 * CEA/NeuroSpin, Batiment 145,
4 * 91191 Gif-sur-Yvette cedex
5 * France
6 *
7 * This software is governed by the CeCILL-B license under
8 * French law and abiding by the rules of distribution of free software.
9 * You can use, modify and/or redistribute the software under the
10 * terms of the CeCILL-B license as circulated by CEA, CNRS
11 * and INRIA at the following URL "http://www.cecill.info".
12 *
13 * As a counterpart to the access to the source code and rights to copy,
14 * modify and redistribute granted by the license, users are provided only
15 * with a limited warranty and the software's author, the holder of the
16 * economic rights, and the successive licensors have only limited
17 * liability.
18 *
19 * In this respect, the user's attention is drawn to the risks associated
20 * with loading, using, modifying and/or developing or reproducing the
21 * software by the user in light of its specific status of free software,
22 * that may mean that it is complicated to manipulate, and that also
23 * therefore means that it is reserved for developers and experienced
24 * professionals having in-depth computer knowledge. Users are therefore
25 * encouraged to load and test the software's suitability as regards their
26 * requirements in conditions enabling the security of their systems and/or
27 * data to be ensured and, more generally, to use and operate it in the
28 * same conditions as regards security.
29 *
30 * The fact that you are presently reading this means that you have had
31 * knowledge of the CeCILL-B license and that you accept its terms.
32 */
33
34#ifndef AIMS_SIGNALFILTER_LINEARFILTERFACTORY_D_H
35#define AIMS_SIGNALFILTER_LINEARFILTERFACTORY_D_H
36
37//--- aims -------------------------------------------------------------------
39//--- registered algo --------------------------------------------------------
41//----------------------------------------------------------------------------
42
43namespace aims {
44
45 template <typename T>
46 void LinearFilterFactory<T>::init()
47 {
48 static bool initialized = false;
49 if( !initialized )
50 {
51 initialized = true;
52 registerFilter( "gab", GaborFilter<T>() );
53 registerFilter( "gabor", GaborFilter<T>() );
54 }
55 }
56
57 template <typename T>
58 std::map<std::string,carto::rc_ptr<LinearFilteringImageAlgorithm<T> > > & LinearFilterFactory<T>::_map()
59 {
60 static std::map<std::string,carto::rc_ptr<LinearFilteringImageAlgorithm<T> > > m;
61 return m;
62 }
63
64 template <typename T>
65 void LinearFilterFactory<T>::registerFilter(
66 const std::string & name,
68 )
69 {
70 init();
71 _map()[ name ] = carto::rc_ptr<LinearFilteringImageAlgorithm<T> >( func.clone() );
72 }
73
74 template <typename T>
75 std::set<std::string> LinearFilterFactory<T>::names()
76 {
77 init();
78 std::set<std::string> s;
79 typename std::map<std::string,carto::rc_ptr<LinearFilteringImageAlgorithm<T> > >::const_iterator i, e = _map().end();
80 for( i=_map().begin(); i!=e; ++i )
81 s.insert( i->first );
82 return( s );
83 }
84
85 template <typename T>
86 LinearFilteringImageAlgorithm<T>* LinearFilterFactory<T>::create(
87 const std::string & name,
88 carto::Object options
89 )
90 {
91 init();
92 typename std::map<std::string,carto::rc_ptr<LinearFilteringImageAlgorithm<T> > >::const_iterator i;
93 i = _map().find( name );
94 if( i == _map().end() )
95 return( 0 );
96 LinearFilteringImageAlgorithm<T> * new_func = i->second->clone();
97 new_func->setOptions( options );
98 return new_func;
99 }
100
101} // namespace aims
102
103#endif