ACT-CV - Machine Vision for Cognitive Modeling
ActCvSource.h
Go to the documentation of this file.
1 // -*- mode: c++; indent-tabs-mode: nil; c-basic-offset: 4; coding: iso-8859-1; -*-
2 
3 /*
4 ACT-CV - Machine Vision for Cognitive Modeling
5 Copyright (c) 2008 Marc Halbruegge
6 
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11 
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21 
22 
31 #ifndef ACTCVSOURCE_H_
32 #define ACTCVSOURCE_H_
33 
34 #include <garbagecoll.h>
35 #include <vector>
36 #include <algorithm>
37 #include <functional>
38 
40 class ActCvSource {
41 public:
46  virtual const char* GetResult() const = 0;
58  virtual const char* GetTypeName() const = 0;
59 };
60 
63 public:
64  virtual void NewVisionNotification(const ActCvSource &src) = 0;
65 };
66 
68 class ActCvObsSupport : private std::vector<ActCvObserver*> {
69  typedef std::vector<ActCvObserver*>::iterator iterator;
70 protected:
73  for (iterator i=begin();i!=end();i++) {
74  (*i)->NewVisionNotification(src);
75  }
76  }
77 public:
80  push_back(obs);
81  }
84  erase(
85  std::remove_if(begin(), end(),
86  std::bind2nd(std::equal_to<ActCvObserver*>(), obs)),
87  end());
88  }
89 };
90 
91 
92 #endif /*ACTCVSOURCE_H_*/


ACT-CV - Machine Vision for Cognitive Modeling
© 2015 Marc Halbruegge (actcvlibrary@googlemail.com)