]> git.stg.codes - stg.git/blobdiff - include/stg/user_traff.h
Fixed compilation issues.
[stg.git] / include / stg / user_traff.h
index f186d00a5a66f75dc4d160b0f5492b82ab441db5..48843a49945a38c2472c390063ea7cf7300b08ef 100644 (file)
@@ -43,12 +43,11 @@ public:
     typedef std::vector<uint64_t> ContainerType;
     typedef ContainerType::size_type IndexType;
 
     typedef std::vector<uint64_t> ContainerType;
     typedef ContainerType::size_type IndexType;
 
-    DIR_TRAFF() {}
+    DIR_TRAFF() : traff(DIR_NUM) {}
     DIR_TRAFF(const DIR_TRAFF & ts) : traff(ts.traff) {}
     DIR_TRAFF & operator=(const DIR_TRAFF & ts) { traff = ts.traff; return *this; }
     const uint64_t & operator[](IndexType idx) const { return traff[idx]; }
     uint64_t & operator[](IndexType idx) { return traff[idx]; }
     DIR_TRAFF(const DIR_TRAFF & ts) : traff(ts.traff) {}
     DIR_TRAFF & operator=(const DIR_TRAFF & ts) { traff = ts.traff; return *this; }
     const uint64_t & operator[](IndexType idx) const { return traff[idx]; }
     uint64_t & operator[](IndexType idx) { return traff[idx]; }
-    DIR_TRAFF operator+(const DIR_TRAFF & ts);
     IndexType size() const { return traff.size(); }
 
 private:
     IndexType size() const { return traff.size(); }
 
 private:
@@ -57,19 +56,10 @@ private:
 
 //-----------------------------------------------------------------------------
 inline
 
 //-----------------------------------------------------------------------------
 inline
-DIR_TRAFF DIR_TRAFF::operator+(const DIR_TRAFF & ts)
-{
-for (IndexType i = 0; i < DIR_NUM; i++)
-    {
-    traff[i] = traff[i] + ts.traff[i];
-    }
-return *this;
-}
-//-----------------------------------------------------------------------------
-inline std::ostream & operator<<(std::ostream & o, const DIR_TRAFF & traff)
+std::ostream & operator<<(std::ostream & o, const DIR_TRAFF & traff)
 {
 bool first = true;
 {
 bool first = true;
-for (DIR_TRAFF::IndexType i = 0; i < DIR_NUM; ++i)
+for (DIR_TRAFF::IndexType i = 0; i < traff.size(); ++i)
     {
     if (first)
         first = false;
     {
     if (first)
         first = false;
@@ -83,10 +73,12 @@ return o;
 class DIR_TRAFF_RES
 {
 public:
 class DIR_TRAFF_RES
 {
 public:
+    typedef RESETABLE<uint64_t> value_type;
     typedef RESETABLE<uint64_t> ValueType;
     typedef std::vector<ValueType> ContainerType;
     typedef ContainerType::size_type IndexType;
 
     typedef RESETABLE<uint64_t> ValueType;
     typedef std::vector<ValueType> ContainerType;
     typedef ContainerType::size_type IndexType;
 
+    DIR_TRAFF_RES() : traff(DIR_NUM) {}
     DIR_TRAFF_RES(const DIR_TRAFF & ts)
         : traff(ts.size())
     {
     DIR_TRAFF_RES(const DIR_TRAFF & ts)
         : traff(ts.size())
     {
@@ -95,6 +87,15 @@ public:
     }
     const ValueType & operator[](IndexType idx) const { return traff[idx]; }
     ValueType & operator[](IndexType idx) { return traff[idx]; }
     }
     const ValueType & operator[](IndexType idx) const { return traff[idx]; }
     ValueType & operator[](IndexType idx) { return traff[idx]; }
+    IndexType size() const { return traff.size(); }
+    DIR_TRAFF GetData() const
+    {
+    DIR_TRAFF res;
+    for (IndexType i = 0; i < traff.size(); ++i)
+        if (!traff[i].empty())
+            res[i] = traff[i].data();
+    return res;
+    }
 
 private:
     ContainerType traff;
 
 private:
     ContainerType traff;