source: flair-src/trunk/lib/FlairMeta/src/UgvFactory.cpp @ 377

Last change on this file since 377 was 377, checked in by Sanahuja Guillaume, 9 months ago

ugv update

  • Property svn:eol-style set to native
File size: 1.9 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5//  created:    2020/12/16
6//  filename:   UgvFactory.cpp
7//
8//  author:     Guillaume Sanahuja
9//              Copyright Heudiasyc UMR UTC/CNRS 7253
10//
11//  version:    $Id: $
12//
13//  purpose:   construct a Ugv based on the type name
14//
15//
16/*********************************************************************/
17
18#include "UgvFactory.h"
19#include "FrameworkManager.h"
20#include "SimuUgv.h"
21
22
23using namespace std;
24using namespace flair::core;
25using namespace flair::meta;
26
27namespace { // anonymous
28     vector<flair::meta::Ugv* (*)(string,string,string)> *vectoroffunctions=NULL;
29}
30
31
32Ugv *CreateUgv(string name, string type,string options) {
33
34  Ugv *ugv;
35
36  if(vectoroffunctions!=NULL) {
37    for(int i=0;i<vectoroffunctions->size();i++) {
38      ugv=vectoroffunctions->at(i)(name,type,options);
39      if(ugv!=NULL) {
40        free(vectoroffunctions);
41        vectoroffunctions=NULL;
42        return ugv;
43      }
44    }
45  }
46
47#ifdef CORE2_64
48  if (type.compare(0, 8, "ugv_simu") == 0) {
49    int simu_id = 0;
50    if (type.size() > 8) {
51      simu_id = atoi(type.substr(8, type.size() - 8).c_str());
52    }
53    return new SimuUgv(name, simu_id);
54  }/* else if (type.compare(0, 7, "x8_simu") == 0) {
55    int simu_id = 0;
56    if (type.size() > 7) {
57      simu_id = atoi(type.substr(7, type.size() - 7).c_str());
58    }
59    return new SimuX8(name, simu_id,options, multiplex);
60  }*/ else {
61    getFrameworkManager()->Err("UGV type %s unknown\n", type.c_str());
62    return NULL;
63  }
64#endif
65}
66
67void RegisterUgvCreator(flair::meta::Ugv*(*func)(string,string,string)) {
68  if(vectoroffunctions==NULL) vectoroffunctions=(vector<flair::meta::Ugv* (*)(string,string,string)>*)malloc(sizeof(vector<flair::meta::Ugv* (*)(string,string,string)>));
69
70  vectoroffunctions->push_back(func);
71}
Note: See TracBrowser for help on using the repository browser.