summaryrefslogtreecommitdiff
path: root/ace/Truncate.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Truncate.h')
-rw-r--r--ace/Truncate.h119
1 files changed, 55 insertions, 64 deletions
diff --git a/ace/Truncate.h b/ace/Truncate.h
index a45af94a21a..901e36823de 100644
--- a/ace/Truncate.h
+++ b/ace/Truncate.h
@@ -491,37 +491,14 @@ namespace ACE_Utils
template<typename FROM, typename TO> struct Truncator;
- // Partial specialization for the case where the types are the same.
- // No truncation is necessary.
- template<typename T>
- struct Truncator<T, T>
- {
- static T trunc (T val)
- {
- return val;
- }
- };
-
//----------------------------------------------------------
// sizeof(FROM) > sizeof(TO)
//----------------------------------------------------------
template<>
- struct ACE_Export Truncator<ACE_INT32, ACE_INT8>
- {
- static ACE_INT8 trunc (ACE_INT32 val)
- {
- return
- (val > ACE_Numeric_Limits<ACE_INT8>::max ()
- ? ACE_Numeric_Limits<ACE_INT8>::max ()
- : static_cast<ACE_INT8> (val));
- }
- };
-
- template<>
- struct ACE_Export Truncator<ACE_UINT32, ACE_UINT8>
+ struct Truncator<ACE_INT32, ACE_INT8>
{
- static ACE_UINT8 truncate (ACE_UINT32 val)
+ ACE_INT8 operator() (ACE_INT32 val)
{
return
(val > ACE_Numeric_Limits<ACE_INT8>::max ()
@@ -531,9 +508,9 @@ namespace ACE_Utils
};
template<>
- struct ACE_Export Truncator<ACE_UINT32, ACE_UINT8>
+ struct Truncator<ACE_UINT32, ACE_UINT8>
{
- static ACE_UINT8 trunc (ACE_UINT32 val)
+ ACE_UINT8 operator() (ACE_UINT32 val)
{
return
(val > static_cast<ACE_UINT32> (ACE_Numeric_Limits<ACE_UINT8>::max ())
@@ -543,9 +520,9 @@ namespace ACE_Utils
};
template<>
- struct ACE_Export Truncator<ACE_INT32, ACE_UINT8>
+ struct Truncator<ACE_INT32, ACE_UINT8>
{
- static ACE_UINT8 trunc (ACE_INT32 val)
+ ACE_UINT8 operator() (ACE_INT32 val)
{
return
(val > static_cast<ACE_INT32> (ACE_Numeric_Limits<ACE_UINT8>::max ())
@@ -555,9 +532,9 @@ namespace ACE_Utils
};
template<>
- struct ACE_Export Truncator<ACE_UINT32, ACE_INT8>
+ struct Truncator<ACE_UINT32, ACE_INT8>
{
- static ACE_INT8 trunc (ACE_UINT32 val)
+ ACE_INT8 operator() (ACE_UINT32 val)
{
return
(val > static_cast<ACE_UINT32> (ACE_Numeric_Limits<ACE_INT8>::max ())
@@ -567,9 +544,9 @@ namespace ACE_Utils
};
template<>
- struct ACE_Export Truncator<ACE_INT64, ACE_INT32>
+ struct Truncator<ACE_INT64, ACE_INT32>
{
- static ACE_INT32 trunc (ACE_INT64 val)
+ ACE_INT32 operator() (ACE_INT64 val)
{
return
(val > ACE_Numeric_Limits<ACE_INT32>::max ()
@@ -579,9 +556,9 @@ namespace ACE_Utils
};
template<>
- struct ACE_Export Truncator<ACE_INT64, ACE_UINT32>
+ struct Truncator<ACE_INT64, ACE_UINT32>
{
- static ACE_UINT32 trunc (ACE_INT64 val)
+ ACE_UINT32 operator() (ACE_INT64 val)
{
return
(val > static_cast<ACE_INT64> (ACE_Numeric_Limits<ACE_UINT32>::max ())
@@ -591,10 +568,11 @@ namespace ACE_Utils
};
template<>
- struct ACE_Export Truncator<ACE_UINT64, ACE_UINT32>
+ struct Truncator<ACE_UINT64, ACE_UINT32>
{
- static ACE_UINT32 trunc (ACE_UINT64 val)
+ ACE_UINT32 operator() (ACE_UINT64 val)
{
+ return
(val > static_cast<ACE_UINT64> (ACE_Numeric_Limits<ACE_UINT32>::max ())
? ACE_Numeric_Limits<ACE_UINT32>::max ()
: static_cast<ACE_UINT32> (val));
@@ -602,9 +580,9 @@ namespace ACE_Utils
};
template<>
- struct ACE_Export Truncator<ACE_UINT64, ACE_INT32>
+ struct Truncator<ACE_UINT64, ACE_INT32>
{
- static ACE_INT32 trunc (ACE_UINT64 val)
+ ACE_INT32 operator() (ACE_UINT64 val)
{
return
(val > static_cast<ACE_UINT64> (ACE_Numeric_Limits<ACE_INT32>::max ())
@@ -618,18 +596,18 @@ namespace ACE_Utils
//----------------------------------------------------------
template<>
- struct ACE_Export Truncator<ACE_INT32, ACE_UINT32>
+ struct Truncator<ACE_INT32, ACE_UINT32>
{
- static ACE_UINT32 trunc (ACE_INT32 val)
+ ACE_UINT32 operator() (ACE_INT32 val)
{
return static_cast<ACE_UINT32> (val);
}
};
template<>
- struct ACE_Export Truncator<ACE_UINT32, ACE_INT32>
+ struct Truncator<ACE_UINT32, ACE_INT32>
{
- static ACE_INT32 trunc (ACE_UINT32 val)
+ ACE_INT32 operator() (ACE_UINT32 val)
{
return
(val > static_cast<ACE_UINT32> (ACE_Numeric_Limits<ACE_INT32>::max ())
@@ -639,18 +617,18 @@ namespace ACE_Utils
};
template<>
- struct ACE_Export Truncator<ACE_INT64, ACE_UINT64>
+ struct Truncator<ACE_INT64, ACE_UINT64>
{
- static ACE_UINT64 trunc (ACE_INT64 val)
+ ACE_UINT64 operator() (ACE_INT64 val)
{
return static_cast<ACE_UINT64> (val);
}
};
template<>
- struct ACE_Export Truncator<ACE_UINT64, ACE_INT64>
+ struct Truncator<ACE_UINT64, ACE_INT64>
{
- static ACE_INT64 trunc (ACE_UINT64 val)
+ ACE_INT64 operator() (ACE_UINT64 val)
{
return
(val > static_cast<ACE_UINT64> (ACE_Numeric_Limits<ACE_INT64>::max ())
@@ -664,82 +642,95 @@ namespace ACE_Utils
//----------------------------------------------------------
template<>
- struct ACE_Export Truncator<ACE_INT8, ACE_INT32>
+ struct Truncator<ACE_INT8, ACE_INT32>
{
- static ACE_INT32 trunc (ACE_INT8 val)
+ ACE_INT32 operator() (ACE_INT8 val)
{
return static_cast<ACE_INT32> (val);
}
};
template<>
- struct ACE_Export Truncator<ACE_UINT8, ACE_UINT32>
+ struct Truncator<ACE_UINT8, ACE_UINT32>
{
- static ACE_UINT32 trunc (ACE_UINT8 val)
+ ACE_UINT32 operator() (ACE_UINT8 val)
{
return static_cast<ACE_UINT32> (val);
}
};
template<>
- struct ACE_Export Truncator<ACE_UINT8, ACE_INT32>
+ struct Truncator<ACE_UINT8, ACE_INT32>
{
- static ACE_INT32 trunc (ACE_UINT8 val)
+ ACE_INT32 operator() (ACE_UINT8 val)
{
return static_cast<ACE_INT32> (val);
}
};
template<>
- struct ACE_Export Truncator<ACE_INT8, ACE_UINT32>
+ struct Truncator<ACE_INT8, ACE_UINT32>
{
- static ACE_UINT32 trunc (ACE_INT8 val)
+ ACE_UINT32 operator() (ACE_INT8 val)
{
return static_cast<ACE_UINT32> (val);
}
};
template<>
- struct ACE_Export Truncator<ACE_INT32, ACE_INT64>
+ struct Truncator<ACE_INT32, ACE_INT64>
{
- static ACE_INT64 trunc (ACE_INT32 val)
+ ACE_INT64 operator() (ACE_INT32 val)
{
return static_cast<ACE_INT64> (val);
}
};
template<>
- struct ACE_Export Truncator<ACE_INT32, ACE_UINT64>
+ struct Truncator<ACE_INT32, ACE_UINT64>
{
- static ACE_UINT64 trunc (ACE_INT32 val)
+ ACE_UINT64 operator() (ACE_INT32 val)
{
return static_cast<ACE_UINT64> (val);
}
};
template<>
- struct ACE_Export Truncator<ACE_UINT32, ACE_UINT64>
+ struct Truncator<ACE_UINT32, ACE_UINT64>
{
- static ACE_UINT64 trunc (ACE_UINT32 val)
+ ACE_UINT64 operator() (ACE_UINT32 val)
{
return static_cast<ACE_UINT64> (val);
}
};
template<>
- struct ACE_Export Truncator<ACE_UINT32, ACE_INT64>
+ struct Truncator<ACE_UINT32, ACE_INT64>
{
- static ACE_INT64 trunc (ACE_UINT32 val)
+ ACE_INT64 operator() (ACE_UINT32 val)
{
return static_cast<ACE_INT64> (val);
}
};
+ // Partial specialization for the case where the types are the same.
+ // No truncation is necessary.
+ template<typename T>
+ struct Truncator<T, T>
+ {
+ T operator() (T val)
+ {
+ return val;
+ }
+ };
+
// -------------------------------------
template<typename TO, typename FROM>
inline TO Truncate (FROM val)
{
- return Truncator<FROM, TO>::trunc (val);
+ typedef Truncator<FROM, TO> truncator;
+
+ return truncator() (val);
}
#endif /* !__BORLANDC__ || __BORLANDC__ > 0x582 */