umn-drone / project / libs / routing / src / routing_api.cc
routing_api.cc
Raw
#include "routing_api.h"
#include "parsers/osm/osm_graph_factory.h"
#include "parsers/obj/obj_graph_factory.h"

namespace routing {

RoutingAPI::RoutingAPI() {
    factories.push_back(new OSMGraphFactory());
    factories.push_back(new ObjGraphFactory());
}

RoutingAPI::~RoutingAPI() {
    for (int i = 0; i < factories.size(); i++) {
        delete factories[i];
    }
}

IGraph* RoutingAPI::LoadFromFile(const std::string& file) const {
    for (int i = 0; i < factories.size(); i++) {
        IGraph* graph = factories[i]->Create(file);
        if (graph) {
            return graph;
        }
    }

    return NULL;
}

void RoutingAPI::AddFactory(const IGraphFactory* factory) {
    factories.push_back(factory);
}

}