Browse Source

[3015] Added Notes about the use of int64_t, long long, long and int

Kazunori Fujiwara 11 years ago
parent
commit
e5b3471d57
1 changed files with 15 additions and 0 deletions
  1. 15 0
      src/lib/cc/data.h

+ 15 - 0
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: