diff options
author | Kazunori Fujiwara <fujiwara@wide.ad.jp> | 2013-08-07 11:56:42 +0200 |
---|---|---|
committer | Kazunori Fujiwara <fujiwara@wide.ad.jp> | 2013-08-07 11:56:42 +0200 |
commit | e5b3471d579937f19e446f8a380464e0fc059567 (patch) | |
tree | 33d68ac6e843a04a3e4aced1f3345a2f5b81b0d0 /src/lib/cc/data.h | |
parent | [3015] Updated comments and tests (diff) | |
download | kea-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/data.h')
-rw-r--r-- | src/lib/cc/data.h | 15 |
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: |