libcommonc++  0.7
ProgressTracker.h++
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------------
2  commonc++ - A C++ Common Class Library
3  Copyright (C) 2005-2014 Mark A Lindner
4 
5  This file is part of commonc++.
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Library General Public
9  License as published by the Free Software Foundation; either
10  version 2 of the License, or (at your option) any later version.
11 
12  This library 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 GNU
15  Library General Public License for more details.
16 
17  You should have received a copy of the GNU Library General Public
18  License along with this library; if not, write to the Free
19  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  ---------------------------------------------------------------------------
21 */
22 
23 #ifndef __ccxx_ProgressTracker_hxx
24 #define __ccxx_ProgressTracker_hxx
25 
26 #include <commonc++/Common.h++>
27 #include <commonc++/String.h++>
28 
29 namespace ccxx {
30 
39 {
40  public:
41 
43  virtual ~ProgressTracker() { }
44 
52  virtual void updateProgress(int percent,
53  const String& status = String::null) = 0;
54 };
55 
62 template<class T> class ProgressTrackerDelegate : public ProgressTracker
63 {
64  public:
65 
73  ProgressTrackerDelegate(T* object, void (T::* func)(int, const String&))
74  : _object(object), _func(func)
75  {
76  }
77 
78  protected:
79 
80  inline void updateProgress(int percent,
81  const String& status = String::null)
82  { (_object->*_func)(percent, status); }
83 
84  private:
85 
86  T* _object;
87  void (T::* _func)(int, const String&);
88 };
89 
90 } // namespace ccxx
91 
92 #endif // __ccxx_ProgressTracker_hxx
An implementation of ProgressTracker that delegates to a method in an object.
Definition: ProgressTracker.h++:62
An interface for tracking the progress of a lengthy operation.
Definition: ProgressTracker.h++:38
void updateProgress(int percent, const String &status=String::null)
Notify the tracker of an update in the progress of a task.
Definition: ProgressTracker.h++:80
ProgressTrackerDelegate(T *object, void(T::*func)(int, const String &))
Construct a new ProgressTrackerDelegate for an object.
Definition: ProgressTracker.h++:73
A flexible, reference counted, copy-on-write, thread-safe, nullable string.
Definition: String.h++:50
virtual ~ProgressTracker()
Destructor.
Definition: ProgressTracker.h++:43
virtual void updateProgress(int percent, const String &status=String::null)=0
Notify the tracker of an update in the progress of a task.
static const String null
The null string.
Definition: String.h++:1128
Definition: AllocationMap.c++:25