summaryrefslogtreecommitdiff
path: root/indra/llcommon/llunit.h
diff options
context:
space:
mode:
authorRichard Linden <none@none>2012-10-17 20:00:07 -0700
committerRichard Linden <none@none>2012-10-17 20:00:07 -0700
commita52d203a4f1d2988e8ffba16258f3f132f22f56d (patch)
treece95e59210aa9228b92dc2abc8d5a8028e63d4cd /indra/llcommon/llunit.h
parente6ca5471a2a816a24888ae1b38332531b22b7254 (diff)
SH-3405 WIP convert existing stats to lltrace system
started conversion of llviewerassetstats removed old, dead LLViewerStats code made units tracing require units declaration clean up of units handling
Diffstat (limited to 'indra/llcommon/llunit.h')
-rw-r--r--indra/llcommon/llunit.h34
1 files changed, 26 insertions, 8 deletions
diff --git a/indra/llcommon/llunit.h b/indra/llcommon/llunit.h
index d980989c91..e778383959 100644
--- a/indra/llcommon/llunit.h
+++ b/indra/llcommon/llunit.h
@@ -36,7 +36,7 @@ struct LLUnitType : public BASE_UNIT
typedef DERIVED_UNIT unit_t;
typedef typename STORAGE_TYPE storage_t;
- typedef void is_unit_t;
+ typedef void is_unit_tag_t;
LLUnitType()
{}
@@ -57,7 +57,7 @@ struct LLUnitType : public BASE_UNIT
}
template<typename CONVERTED_TYPE>
- storage_t value() const
+ storage_t as() const
{
return CONVERTED_TYPE(*this).value();
}
@@ -80,8 +80,7 @@ struct LLUnitType<STORAGE_TYPE, T, T>
{
typedef T unit_t;
typedef STORAGE_TYPE storage_t;
- typedef void is_unit_t;
- typedef T base_unit_t;
+ typedef void is_unit_tag_t;
LLUnitType()
: mBaseValue()
@@ -105,6 +104,13 @@ struct LLUnitType<STORAGE_TYPE, T, T>
storage_t value() const { return mBaseValue; }
+ template<typename CONVERTED_TYPE>
+ storage_t as() const
+ {
+ return CONVERTED_TYPE(*this).value();
+ }
+
+
static storage_t convertToBase(storage_t derived_value)
{
return (storage_t)derived_value;
@@ -354,10 +360,16 @@ bool operator != (LLUnitType<STORAGE_TYPE, BASE_UNIT, DERIVED_UNIT> first, LLUni
template <typename SOURCE_STORAGE_TYPE, typename SOURCE_TYPE> \
unit_name(LLUnitType<SOURCE_STORAGE_TYPE, unit_name<SOURCE_STORAGE_TYPE>, SOURCE_TYPE> source) \
{ \
- setBaseValue((storage_t)source.unit_name<SOURCE_STORAGE_TYPE>::unit_t::value()); \
+ assignFrom(source); \
} \
\
- };
+ template <typename SOURCE_STORAGE_TYPE, typename SOURCE_TYPE> \
+ void assignFrom(LLUnitType<SOURCE_STORAGE_TYPE, unit_name<SOURCE_STORAGE_TYPE>, SOURCE_TYPE> source) \
+ { \
+ setBaseValue((storage_t)source.unit_name<SOURCE_STORAGE_TYPE>::unit_t::value()); \
+ } \
+ \
+ }; \
#define LL_DECLARE_DERIVED_UNIT(base_unit, derived_unit, conversion_factor) \
template<typename STORAGE> \
@@ -372,12 +384,18 @@ bool operator != (LLUnitType<STORAGE_TYPE, BASE_UNIT, DERIVED_UNIT> first, LLUni
template <typename SOURCE_STORAGE_TYPE, typename SOURCE_TYPE> \
derived_unit(LLUnitType<SOURCE_STORAGE_TYPE, base_unit<SOURCE_STORAGE_TYPE>, SOURCE_TYPE> source) \
{ \
- setBaseValue((storage_t)source.base_unit<SOURCE_STORAGE_TYPE>::unit_t::value()); \
+ assignFrom(source); \
+ } \
+ \
+ template <typename SOURCE_STORAGE_TYPE, typename SOURCE_TYPE> \
+ void assignFrom(LLUnitType<SOURCE_STORAGE_TYPE, base_unit<SOURCE_STORAGE_TYPE>, SOURCE_TYPE> source) \
+ { \
+ setBaseValue((storage_t)source.base_unit<SOURCE_STORAGE_TYPE>::unit_t::value()); \
} \
\
static F32 conversionToBaseFactor() { return (F32)(conversion_factor); } \
\
- };
+ }; \
namespace LLUnit
{