ViSP  2.8.0
vpFeatureMomentDatabase.h
1 /****************************************************************************
2  *
3  * $Id: vpFeatureMomentDatabase.h 4056 2013-01-05 13:04:42Z fspindle $
4  *
5  * This file is part of the ViSP software.
6  * Copyright (C) 2005 - 2013 by INRIA. All rights reserved.
7  *
8  * This software is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * ("GPL") version 2 as published by the Free Software Foundation.
11  * See the file LICENSE.txt at the root directory of this source
12  * distribution for additional information about the GNU GPL.
13  *
14  * For using ViSP with software that can not be combined with the GNU
15  * GPL, please contact INRIA about acquiring a ViSP Professional
16  * Edition License.
17  *
18  * See http://www.irisa.fr/lagadic/visp/visp.html for more information.
19  *
20  * This software was developed at:
21  * INRIA Rennes - Bretagne Atlantique
22  * Campus Universitaire de Beaulieu
23  * 35042 Rennes Cedex
24  * France
25  * http://www.irisa.fr/lagadic
26  *
27  * If you have questions regarding the use of this file, please contact
28  * INRIA at visp@inria.fr
29  *
30  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
31  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
32  *
33  *
34  * Description:
35  * Pseudo-database used to handle dependencies between moment features.
36  *
37  * Authors:
38  * Filip Novotny
39  *
40  *****************************************************************************/
41 
47 #ifndef __FEATUREMOMENTDATABASE_H__
48 #define __FEATUREMOMENTDATABASE_H__
49 
50 #include <visp/vpConfig.h>
51 #include <map>
52 #include <iostream>
53 #include <cstring>
54 
55 class vpFeatureMoment;
56 class vpMomentObject;
103 
153 class VISP_EXPORT vpFeatureMomentDatabase{
154  private:
155  struct cmp_str {
156  bool operator()(const char *a, const char *b) const{
157  return std::strcmp(a, b) < 0;
158  }
159  char* operator=(const char *){ return NULL;} // Only to avoid a warning under Visual with /Wall flag
160  };
161  std::map<const char*,vpFeatureMoment*,cmp_str> featureMomentsDataBase;
162  void add(vpFeatureMoment& featureMoment,char* name);
163  public:
168  virtual void updateAll(double A=0.0, double B=0.0, double C=1.0);
169 
170  vpFeatureMoment& get(const char* type, bool& found);
171 
172  //friend std::ostream & operator<<(ostream & os, const vpFeatureMomentDatabase& v);
173  friend class vpFeatureMoment;
174 };
175 
176 #endif
Class for generic objects.
This class defines shared system methods/attributes for 2D moment features but no functional code...
This class allows to register all feature moments (implemented in vpFeatureMoment... classes) so they can access each other according to their dependencies.