datamap object passed around while loading
[laserbrain_demo] / src / datamap.cc
index ee7de51..e466082 100644 (file)
@@ -1,10 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <vector>
-#include <map>
-#include <string>
-//#include <regex>
 #include "datamap.h"
 
 #ifdef WIN32
 
 static char *clean_line(char *s);
 
-//static std::vector<std::pair<std::regex, std::string>> dmap;
-static std::vector<std::pair<std::string, std::string>> dmap;
-static std::map<std::string, std::string> cache;
-static std::string root;
-
-void datamap_reset()
+void DataMap::clear()
 {
        dmap.clear();
        cache.clear();
 }
 
-void datamap_set_path(const char *path)
+void DataMap::set_path(const char *path)
 {
        root = std::string(path);
 }
 
-bool datamap_load_map(const char *fname)
+bool DataMap::load_map(const char *fname)
 {
        std::string path = root.empty() ? fname : root + std::string("/") + fname;
        fname = path.c_str();
@@ -49,7 +40,7 @@ bool datamap_load_map(const char *fname)
                return false;
        }
 
-       datamap_reset();
+       clear();
 
        char *line;
        int nline = 0;
@@ -83,22 +74,20 @@ bool datamap_load_map(const char *fname)
 
 err:
        fprintf(stderr, "error while parsing %s, invalid line %d: %s\n", fname, nline, line);
-       datamap_reset();
+       clear();
        fclose(fp);
        return false;
 }
 
-void datamap_map(const char *re, const char *path)
+void DataMap::map(const char *match, const char *path)
 {
-       //std::pair<std::regex, std::string> mapping;
-       //mapping.first = std::regex(re);
        std::pair<std::string, std::string> mapping;
-       mapping.first = std::string(re);
+       mapping.first = std::string(match);
        mapping.second = std::string(path);
        dmap.push_back(std::move(mapping));
 }
 
-int datamap_lookup(const char *in, char *buf, int bsz)
+int DataMap::lookup(const char *in, char *buf, int bsz) const
 {
        std::string res;
 
@@ -135,9 +124,9 @@ int datamap_lookup(const char *in, char *buf, int bsz)
        return res.length() + 1;
 }
 
-int datamap_path_size(const char *in)
+int DataMap::path_size(const char *in) const
 {
-       return datamap_lookup(in, 0, 0);
+       return lookup(in, 0, 0);
 }
 
 static char *clean_line(char *s)