OSDN Git Service

5622d484eb90e02229437be7d5258c0dc275fb49
[moflib/moflib.git] / moflib-1.0 / moflib / moflib / mof / stream / Minimum.hpp
1 #pragma once
2 #include "mof/stream/Manipulator.hpp"
3
4 namespace mof
5 {
6         template< typename T >
7         class Minimum : public Manipulator< T >
8     {
9         public:
10                 typedef typename std::shared_ptr< mof::Minimum<T> > Handler;
11
12                 Minimum() {}
13         
14         virtual ~Minimum() {}
15
16                 virtual T value( FrameNumber frame ) const
17         {
18                         T min;
19                         if(list_.empty())return min;
20                         min = list_.at(0)->value(frame);
21                         for (size_t i = 1; i < list_.size(); ++i)
22                         {
23                                 T current = list_.at(i)->value(frame);
24                                 if (min > current)min = current;
25                         }
26             return min;
27         }
28
29         
30         const std::vector<Handler>& getList( ) const { return list_; }
31
32         void add( const typename Handler& handler ){ list_.push_back(handler); }
33
34     private:
35                 std::vector<Handler> list_;
36
37         }; // class Minimum
38
39
40 } // namespace mof