]> git.stg.codes - stg.git/blobdiff - include/stg/user_traff.h
Merge remote-tracking branch 'origin/ticket52' into stg-2.409
[stg.git] / include / stg / user_traff.h
index 1b9e2035ce9e8466457bf4c2857ff61cf1451367..d820588e3702d412436635474996da7d1a78b2c1 100644 (file)
@@ -45,12 +45,16 @@ public:
     typedef ContainerType::size_type IndexType;
 
     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]; }
     IndexType size() const { return traff.size(); }
 
+    void Reset()
+    {
+    for (IndexType i = 0; i < traff.size(); ++i)
+        traff[i] = 0;
+    }
+
 private:
     ContainerType traff;
 };
@@ -79,12 +83,18 @@ public:
     typedef ContainerType::size_type IndexType;
 
     DIR_TRAFF_RES() : traff(DIR_NUM) {}
-    DIR_TRAFF_RES(const DIR_TRAFF & ts)
+    explicit DIR_TRAFF_RES(const DIR_TRAFF & ts)
         : traff(ts.size())
     {
     for (IndexType i = 0; i < ts.size(); ++i)
         traff[i] = ts[i];
     }
+    DIR_TRAFF_RES & operator=(const DIR_TRAFF & ts)
+    {
+        for (IndexType i = 0; i < ts.size(); ++i)
+            traff[i] = ts[i];
+        return *this;
+    }
     const ValueType & operator[](IndexType idx) const { return traff[idx]; }
     ValueType & operator[](IndexType idx) { return traff[idx]; }
     DIR_TRAFF GetData() const