diff --git a/tpie/array_view.h b/tpie/array_view.h
index 43b3d2410..56834b52d 100644
--- a/tpie/array_view.h
+++ b/tpie/array_view.h
@@ -17,6 +17,9 @@
// You should have received a copy of the GNU Lesser General Public License
// along with TPIE. If not, see
+#ifndef __ARRAY_VIEW_H__
+#define __ARRAY_VIEW_H__
+
#include
#include
#include
@@ -81,7 +84,7 @@ class array_view_base {
/////////////////////////////////////////////////////////
inline bool empty() const {return m_end == m_start;}
- inline bool size() const {return m_end - m_start;}
+ inline size_t size() const {return m_end - m_start;}
/////////////////////////////////////////////////////////
/// \brief Return a referense to an array entry
@@ -148,12 +151,12 @@ class array_view: public array_view_base {
public:
inline array_view(const array_view & o):
array_view_base(o) {}
-
+
inline array_view(std::vector & v):
- array_view_base(&*v.begin(), &*v.end()) {}
+ array_view_base(&*(v.begin()), &(*v.end())) {}
inline array_view(tpie::array & v):
- array_view_base(&*v.begin(), &*v.end()) {}
+ array_view_base(&*(v.begin()), &(*v.end())) {}
inline array_view(std::vector & v, size_t start, size_t end):
array_view_base(&v[start], &v[end]) {}
@@ -163,11 +166,11 @@ class array_view: public array_view_base {
inline array_view(typename std::vector::iterator start, typename std::vector::iterator end):
array_view_base(&*start, &*end) {}
-
+
inline array_view(typename array::iterator start, typename array::iterator end):
array_view_base(&*start, &*end) {}
-
- inline array_view(T * start, T * end):
+
+ inline array_view(T * start, T * end):
array_view_base(start, end) {}
inline array_view(T * start, size_t size):
@@ -178,13 +181,13 @@ template
class array_view: public array_view_base {
public:
inline array_view(array_view o):
- array_view_base(&*o.begin(), &*o.end()) {}
+ array_view_base(&*(o.begin()), &*(o.end())) {}
inline array_view(const std::vector & v):
- array_view_base(&*v.const_begin(), &*v.const_end()) {}
+ array_view_base(&*(v.begin()), &*(v.end())) {}
inline array_view(const tpie::array & v):
- array_view_base(&*v.begin(), &*v.end()) {}
+ array_view_base(&*(v.begin()), &*(v.end())) {}
inline array_view(const std::vector & v, size_t start, size_t end):
array_view_base(&v[start], &v[end]) {}
@@ -206,3 +209,5 @@ class array_view: public array_view_base {
};
} //namespace tpie
+
+#endif // __ARRAY_VIEW_H__
diff --git a/tpie/fractional_progress.cpp b/tpie/fractional_progress.cpp
index f1e848441..4ea556ed7 100644
--- a/tpie/fractional_progress.cpp
+++ b/tpie/fractional_progress.cpp
@@ -187,6 +187,10 @@ inline std::string fname(const char * file, const char * function, const char *
}
+
+fractional_subindicator::fractional_subindicator(
+ fractional_progress & fp): m_fp(fp) {}
+
fractional_subindicator::fractional_subindicator(
fractional_progress & fp,
const char * id,
@@ -195,23 +199,37 @@ fractional_subindicator::fractional_subindicator(
TPIE_OS_OFFSET n,
const char * crumb,
description_importance importance,
- bool enabled):
- progress_indicator_subindicator(fp.m_pi, 42, crumb, importance),
+ bool enabled): m_fp(fp) {
+ setup(id, file, function, n, crumb, importance, enabled);
+}
+
+void fractional_subindicator::setup(
+ const char * id,
+ const char * file,
+ const char * function,
+ TPIE_OS_OFFSET n,
+ const char * crumb,
+ description_importance importance,
+ bool enabled) {
+ progress_indicator_subindicator::setup(m_fp.m_pi, 42, crumb, importance);
#ifndef TPIE_NDEBUG
- m_init_called(false), m_done_called(false),
+ m_init_called = false;
+ m_done_called = false;
#endif
- m_fraction(enabled?fdb->getFraction(fname(file, function, id)):0.0), m_estimate(-1), m_n(enabled?n:0), m_fp(fp), m_predict(fp.m_id() + ";" + id)
+ m_fraction = enabled?fdb->getFraction(fname(file, function, id)):0.0;
+ m_estimate = -1;
+ m_n = enabled?n:0;
+ m_predict = m_fp.m_id() + ";" + id;
#ifdef TPIE_FRACTION_STATS
- ,m_stat(fname(file, function, id))
+ m_stat = fname(file, function, id);
#endif
-{
if (enabled)
m_estimate = m_predict.estimate_execution_time(n, m_confidence);
else {
m_estimate = 0;
m_confidence = 1;
}
- fp.add_sub_indicator(*this);
+ m_fp.add_sub_indicator(*this);
};
void fractional_subindicator::init(TPIE_OS_OFFSET range) {
diff --git a/tpie/fractional_progress.h b/tpie/fractional_progress.h
index 5c51d1784..4e4fc0fb0 100644
--- a/tpie/fractional_progress.h
+++ b/tpie/fractional_progress.h
@@ -34,6 +34,8 @@ class fractional_progress;
class fractional_subindicator: public progress_indicator_subindicator {
public:
+ fractional_subindicator(fractional_progress & fp);
+
fractional_subindicator(fractional_progress & fp,
const char * id,
const char * file,
@@ -43,6 +45,14 @@ class fractional_subindicator: public progress_indicator_subindicator {
description_importance importance=IMPORTANCE_MAJOR,
bool enabled=true);
+ void setup(const char * id,
+ const char * file,
+ const char * function,
+ TPIE_OS_OFFSET n,
+ const char * crumb=0,
+ description_importance importance=IMPORTANCE_MAJOR,
+ bool enabled=true);
+
~fractional_subindicator();
virtual void init(TPIE_OS_OFFSET range);
virtual void done();
diff --git a/tpie/progress_indicator_subindicator.cpp b/tpie/progress_indicator_subindicator.cpp
index 32c0775ee..5567dc9ec 100644
--- a/tpie/progress_indicator_subindicator.cpp
+++ b/tpie/progress_indicator_subindicator.cpp
@@ -42,12 +42,26 @@ progress_indicator_subindicator::progress_indicator_subindicator(progress_indica
TPIE_OS_OFFSET outerRange,
const char * crumb,
description_importance importance):
- progress_indicator_base(0), m_parent(parent), m_outerRange(outerRange),
- m_oldValue(0), m_importance(importance)
+ progress_indicator_base(0) {
+ setup(parent, outerRange, crumb, importance);
+}
+
+
+progress_indicator_subindicator::progress_indicator_subindicator():
+ progress_indicator_base(0) {}
+
+void progress_indicator_subindicator::setup(progress_indicator_base * parent,
+ TPIE_OS_OFFSET outerRange,
+ const char * crumb,
+ description_importance importance) {
+ m_parent = parent;
+ m_outerRange = outerRange;
+ m_importance = importance;
+ m_oldValue = 0;
#ifndef TPIE_NDEBUG
- ,m_init_called(false), m_done_called(false)
+ m_init_called = false;
+ m_done_called = false;
#endif
-{
if (crumb == 0)
m_crumb[0] = 0;
else {
@@ -56,6 +70,7 @@ progress_indicator_subindicator::progress_indicator_subindicator(progress_indica
}
}
+
#ifndef TPIE_NDEBUG
progress_indicator_subindicator::~progress_indicator_subindicator() {
if (m_init_called && !m_done_called && !std::uncaught_exception()) {
diff --git a/tpie/progress_indicator_subindicator.h b/tpie/progress_indicator_subindicator.h
index 876083519..5067460f8 100644
--- a/tpie/progress_indicator_subindicator.h
+++ b/tpie/progress_indicator_subindicator.h
@@ -31,6 +31,14 @@ class progress_indicator_subindicator: public progress_indicator_base {
virtual void pop_breadcrumb();
virtual void init(TPIE_OS_OFFSET range);
virtual void done();
+
+ void setup(progress_indicator_base * parent,
+ TPIE_OS_OFFSET outerRange,
+ const char * crumb=0,
+ description_importance importance=IMPORTANCE_MAJOR);
+
+ progress_indicator_subindicator();
+
progress_indicator_subindicator(progress_indicator_base * parent,
TPIE_OS_OFFSET outerRange,
const char * crumb=0,