summaryrefslogtreecommitdiff
path: root/tools/fileDataProvider.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/fileDataProvider.h')
-rw-r--r--tools/fileDataProvider.h25
1 files changed, 21 insertions, 4 deletions
diff --git a/tools/fileDataProvider.h b/tools/fileDataProvider.h
index 9ce78e6..6ccf28f 100644
--- a/tools/fileDataProvider.h
+++ b/tools/fileDataProvider.h
@@ -3,21 +3,38 @@
#include "dataProvider.h"
#include <string>
+#include <iostream>
+#include <fstream>
class FileDP:public DataProvider
{
private:
std::string fname;
+ std::ifstream fin;
public:
FileDP(std::string fn=""):fname(fn){};
void setFname(std::string fn){fname=fn;};
virtual int getDataSet(DataList &out){
+ DataEntry* e;
+ out.clear();
+ int fsize;
+ out.setfSize(fsize);
+ fin>>fsize;
+ while (!fin.eof()) {
+ e= new DataEntry;
+ fin>>e->rank;
+ fin>>e->qid;
+ e->feature.resize(fsize);
+ for (int i=0;i<fsize;++i) {
+ fin>>e->feature(i);
+ }
+ out.addEntry(e);
+ }
+ eof=true;
return 0;
}
- int getDataSet(DataSet &D) {return 0;}
- int getLabel(Labels &l) {return 0;}
- virtual int open(){eof=true;return 0;};
- virtual int close(){return 0;};
+ virtual int open(){fin.open(fname); eof=false;return 0;};
+ virtual int close(){fin.close();return 0;};
};
#endif \ No newline at end of file