summaryrefslogtreecommitdiffstats
path: root/src/lib/cc
diff options
context:
space:
mode:
authorKazunori Fujiwara <fujiwara@wide.ad.jp>2013-08-07 11:56:42 +0200
committerKazunori Fujiwara <fujiwara@wide.ad.jp>2013-08-07 11:56:42 +0200
commite5b3471d579937f19e446f8a380464e0fc059567 (patch)
tree33d68ac6e843a04a3e4aced1f3345a2f5b81b0d0 /src/lib/cc
parent[3015] Updated comments and tests (diff)
downloadkea-e5b3471d579937f19e446f8a380464e0fc059567.tar.xz
kea-e5b3471d579937f19e446f8a380464e0fc059567.zip
[3015] Added Notes about the use of int64_t, long long, long and int
Diffstat (limited to 'src/lib/cc')
-rw-r--r--src/lib/cc/data.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/lib/cc/data.h b/src/lib/cc/data.h
index ca1c5eff65..805060752c 100644
--- a/src/lib/cc/data.h
+++ b/src/lib/cc/data.h
@@ -166,6 +166,8 @@ public:
/// the right type. Set the value and return true if the Elements
/// is of the correct type
///
+ /// Notes: Read notes of IntElement definition about the use of
+ /// long long int, long int and int.
//@{
virtual bool setValue(const long long int v);
bool setValue(const long int i) { return (setValue(static_cast<long long int>(i))); };
@@ -273,6 +275,9 @@ public:
/// underlying system).
/// (Note that that is different from an NullElement, which
/// represents an empty value, and is created with Element::create())
+ ///
+ /// Notes: Read notes of IntElement definition about the use of
+ /// long long int, long int and int.
//@{
static ElementPtr create();
static ElementPtr create(const long long int i);
@@ -373,6 +378,16 @@ public:
//@}
};
+/// Notes: IntElement type is changed to int64_t.
+/// Due to C++ problems on overloading and automatic type conversion,
+/// (C++ tries to convert integer type values and reference/pointer
+/// if value types do not match exactly)
+/// We decided the storage as int64_t,
+/// three (long long, long, int) override function defintions
+/// and cast int/long/long long to int64_t via long long.
+/// Therefore, call by value methods (create, setValue) have three
+/// (int,long,long long) definitions. Others use int64_t.
+///
class IntElement : public Element {
int64_t i;
private: