diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/dataProvider.h | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/tools/dataProvider.h b/tools/dataProvider.h index 5a2f3e9..a8a5448 100644 --- a/tools/dataProvider.h +++ b/tools/dataProvider.h @@ -35,6 +35,14 @@ public:              delete data[i];          data.clear();      } +    static DataEntry* copyEntry(DataEntry* d) +    { +        DataEntry* dat = new DataEntry; +        dat->rank = d->rank; +        dat->qid = d->qid; +        dat->feature = d->feature; +        return dat; +    }      inline std::vector<DataEntry*>& getData(){          return data;      } @@ -57,8 +65,12 @@ public:          while (!EOFile())          {              getDataSet(buf); -            out.getData().insert(out.getData().end(),buf.getData().begin(),buf.getData().end()); +            // won't work as data are discarded with every call to getDataSet +            // out.getData().insert(out.getData().end(),buf.getData().begin(),buf.getData().end()); +            for (int i=0;i<buf.getSize();++i) +                out.addEntry(out.copyEntry(buf.getData()[i]));          } +        out.setfSize(buf.getfSize());      }      virtual int getDataSet(DataList &out) = 0;      virtual int open()=0;  | 
