+ added some flags to Makefile args
[qpalma.git] / ParaParser / ParaParser.h
index 2a5ba00..d47ed2f 100644 (file)
@@ -2,15 +2,31 @@
 #define __PARAPARSER_H__
 
 #include <Python.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
 #include <map>
+#include <vector>
+#include <utility>
 using namespace std;
 
 struct KeyCmp {
-   bool operator()( unsigned long s1, unsigned long s2 ) const {
-          return ( s1 == s2 );
+   //bool operator()( unsigned long s1, unsigned long s2 ) const {
+   bool operator()( int s1, int s2 ) const {
+          return ( s1 < s2 );
    }
 };
 
+enum storage_mode { IN_VECTOR=0, IN_MAP=1 };
+
+typedef unsigned long map_key_t;
+
+typedef map<map_key_t,char**,KeyCmp> MAP;
+
+typedef vector<char**> VECTOR;
+typedef vector<pair<char*,char*> > PTR_VECTOR;
+
 
 class ParaParser{
 
@@ -20,16 +36,35 @@ class ParaParser{
       size_t num_columns;
       char** types_list;
 
-      map<unsigned long,void**,KeyCmp> *entries;
+      void *reads_area;
+      off_t reads_filesize;
+
+      storage_mode current_mode;
+
+      MAP *entries;
+      VECTOR *v_entries;
+      PTR_VECTOR *v_ptr_entries;
 
    public:
-      ParaParser(const char* fmt, char** _fields, int num_entries);
+      ParaParser(const char* fmt, char** _fields, int num_entries, storage_mode mode);
       int parseFile(char* reads_filename);
-      void create_entry_from_line(const char* current_line, char* format_string);
-      PyObject* fetchEntry(int id);
+      //void create_entry_from_line(const char* current_line, char* format_string);
+      void create_entry_from_line(const char* current_line, char* format_string, char* lineBeginPtr, char* lineEndPtr);
+      PyObject* fetchEntry(map_key_t id);
+      int getSize(storage_mode mode) {
+         if ( current_mode == IN_VECTOR )
+            return v_entries->size();
+
+         if ( current_mode == IN_MAP )
+            return v_entries->size();
+
+         return -1;
+      }
 
-      ~ParaParser(){}
+      ~ParaParser();
 };
 
+
+
 #endif // __PARAPARSER_H__