diff --git a/.cproject b/.cproject
deleted file mode 100644
index acf7de6..0000000
--- a/.cproject
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- cmake
- -E chdir ../build cmake -DCMAKE_INSTALL_PREFIX=${PREFIX} -D CMAKE_BUILD_TYPE=debug ..
-
- true
- false
- true
-
-
- make
-
-
- true
- true
- true
-
-
- make
-
- clean
- true
- true
- true
-
-
- make
-
- install
- true
- true
- true
-
-
- make
-
- test
- true
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
index 0da7e4d..5b80e08 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,31 +1,33 @@
CMakeFiles
Makefile
CMakeCache.txt
cmake_install.cmake
*~
.settings/
.project
.cproject
\#*#
.project
.cproject
CPackConfig.cmake
CPackSourceConfig.cmake
build/*
install_manifest.txt
libOncillaConfig.cmake
test/CTestTestfile.cmake
liboncilla.pc
CTestTestfile.cmake
Testing
test/testconfig.h
testresults/
manual/_build
manual/conf.py
manual/Makefile.sphinx
liboncilla*.pc
gmock*
doxygen-warn.log
liboncillaConfig.cmake
src/liboncillaConfig.h
+.project
+.cproject
diff --git a/.project b/.project
deleted file mode 100644
index c3169bf..0000000
--- a/.project
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
- RCIOncilla
-
-
- RCI
- RCI-RST
- RST
- Webots
-
-
-
- org.eclipse.cdt.managedbuilder.core.genmakebuilder
- clean,full,incremental,
-
-
- ?name?
-
-
-
- org.eclipse.cdt.make.core.append_environment
- true
-
-
- org.eclipse.cdt.make.core.autoBuildTarget
- all
-
-
- org.eclipse.cdt.make.core.buildArguments
-
-
-
- org.eclipse.cdt.make.core.buildCommand
- make
-
-
- org.eclipse.cdt.make.core.buildLocation
- ${workspace_loc:/liboncilla/build}
-
-
- org.eclipse.cdt.make.core.cleanBuildTarget
- clean
-
-
- org.eclipse.cdt.make.core.contents
- org.eclipse.cdt.make.core.activeConfigSettings
-
-
- org.eclipse.cdt.make.core.enableAutoBuild
- false
-
-
- org.eclipse.cdt.make.core.enableCleanBuild
- true
-
-
- org.eclipse.cdt.make.core.enableFullBuild
- true
-
-
- org.eclipse.cdt.make.core.fullBuildTarget
- all
-
-
- org.eclipse.cdt.make.core.stopOnError
- true
-
-
- org.eclipse.cdt.make.core.useDefaultBuildCmd
- true
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
- full,incremental,
-
-
-
-
-
- org.eclipse.cdt.core.cnature
- org.eclipse.cdt.core.ccnature
- org.eclipse.cdt.managedbuilder.core.managedBuildNature
- org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
-
-
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9e3e9c6..ca77087 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,151 +1,152 @@
PROJECT(liboncilla C CXX)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
SET(LIBNAME "oncilla")
SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE)
SET(LIBONCILLA_CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# CMake module path and modules
FIND_PACKAGE(RSC REQUIRED)
SET(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${RSC_CMAKE_MODULE_PATH}")
MESSAGE(STATUS "RSC version: ${RSC_VERSION}")
INCLUDE(CheckIncludeFileCXX)
INCLUDE(InstallFilesRecursive)
INCLUDE(EnableCoverageReport)
INCLUDE(EnableSlocCount)
INCLUDE(GenerateDoxygen)
INCLUDE(GenerateCppcheck)
INCLUDE(PedanticCompilerWarnings)
+INCLUDE(SuperPedanticCompilerWarnings)
FIND_PACKAGE(PkgConfig REQUIRED)
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# --- user options ---
OPTION(BUILD_TESTS "Decide whether unit-tests are built" ON)
OPTION(BUILD_EXAMPLES "Decide whether the examples are built" ON)
OPTION(BUILD_DOCS "Decide whether the docygen documentation is built" OFF)
# Dependencies
FIND_PACKAGE(Threads REQUIRED)
MESSAGE(STATUS "Threading library: ${CMAKE_THREAD_LIBS_INIT}")
set(OLD_CXX_FLAGS ${CMAKE_CXX_FLAGS})
FIND_PACKAGE(NemoMath REQUIRED)
MESSAGE(STATUS "NemoMath version: ${NemoMath_VERSION}")
set(CMAKE_CXX_FLAGS ${OLD_CXX_FLAGS})
FIND_PACKAGE(RCI REQUIRED)
MESSAGE(STATUS "RCI version: ${RCI_VERSION}")
# --- global definitions ---
SET(LIBONCILLA_NAME "${LIBNAME}")
SET(DRIVER_TEST_NAME "OncillaTest")
SET(NODE_TEST_NAME "${DRIVER_TEST_NAME}Nodes")
SET(LIBONCILLA_VERSION_MAJOR 0)
SET(LIBONCILLA_VERSION_MINOR 2)
SET(LIBONCILLA_VERSION_PATCH 0)
SET(LIBONCILLA_VERSION_STRING "${LIBONCILLA_VERSION_MAJOR}.${LIBONCILLA_VERSION_MINOR}.${LIBONCILLA_VERSION_PATCH}")
SET(LIBONCILLA_CMAKE_MODULE_PATH "share/cmake/Modules")
SET(OUTPUT_PATH ${PROJECT_BINARY_DIR}/build)
SET(ARCHIVE_OUTPUT_PATH ${OUTPUT_PATH})
SET(LIBRARY_OUTPUT_PATH ${OUTPUT_PATH})
SET(EXECUTABLE_OUTPUT_PATH ${OUTPUT_PATH})
# Includes
INCLUDE_DIRECTORIES(BEFORE src ${PROJECT_BINARY_DIR}/src)
message(STATUS ${RSC_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(SYSTEM ${RCI_INCLUDE_DIRS} ${RSC_INCLUDE_DIRS} ${NemoMath_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${LIBRARIES_INCLUDE_DIRS})
#INCLUDE_DIRECTORIES(BEFORE SYSTEM ${PROTOBUF_INCLUDE_DIR} ${RST_INCLUDE_DIRS})
LINK_DIRECTORIES(${RCI_LIBRARY_DIR}
${LIBRARIES_LIBRARY_DIRS})
ADD_DEFINITIONS(${NEMOMATH_DEFINITIONS})
ADD_SUBDIRECTORY(src)
IF(BUILD_TESTS)
ENABLE_TESTING()
INCLUDE(ProvideGoogleMock)
MESSAGE(STATUS "Building tests - deactivate by adapting BUILD_TESTS")
IF(GMOCK_AVAILABLE)
ADD_SUBDIRECTORY(test)
ELSE()
MESSAGE(WARNING "Could not build unit tests even though desired because Google Mock could not be installed.")
ENDIF()
ENDIF()
#IF(BUILD_EXAMPLES)
# ADD_SUBDIRECTORY(examples)
#ENDIF()
# --- cmake config file ---
SET(LIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
IF(CMAKE_LINK_LIBRARY_SUFFIX)
SET(LIB_SUFFIX ${CMAKE_LINK_LIBRARY_SUFFIX})
ENDIF()
# --- pkgconfig file ---
set(PKG_CONFIG_FILE lib${LIBONCILLA_NAME}-${LIBONCILLA_VERSION_MAJOR}.pc)
CONFIGURE_FILE(lib${LIBONCILLA_NAME}.pc.in ${PKG_CONFIG_FILE} @ONLY)
INSTALL(FILES ${CMAKE_BINARY_DIR}/${PKG_CONFIG_FILE} DESTINATION lib/pkgconfig)
# --- cmake config file ---
SET(LIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
IF(CMAKE_LINK_LIBRARY_SUFFIX)
SET(LIB_SUFFIX ${CMAKE_LINK_LIBRARY_SUFFIX})
ENDIF()
CONFIGURE_FILE(${CMAKE_PROJECT_NAME}Config.cmake.in ${CMAKE_PROJECT_NAME}Config.cmake @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake DESTINATION share/lib${LIBNAME})
# --- documentation generation ---
IF(BUILD_DOCS)
ADD_SUBDIRECTORY(doc)
ENDIF(BUILD_DOCS)
# --- coverage ---
IF(BUILD_TESTS)
ENABLE_COVERAGE_REPORT(TARGETS ${LIBONCILLA_NAME} TESTS ${DTO_TEST_NAME} ${INTEGRATED_TEST_NAME} FILTER "*3rdparty*" "*test/*")
ENDIF(BUILD_TESTS)
# --- sloccount ---
ENABLE_SLOCCOUNT(FOLDERS src test examples)
# --- cppcheck ---
GENERATE_CPPCHECK(SOURCES src test examples
"${CMAKE_CURRENT_BINARY_DIR}/src" "${CMAKE_CURRENT_BINARY_DIR}/test" "${CMAKE_CURRENT_BINARY_DIR}/examples"
ENABLE_IDS style)
# --- package ---
INCLUDE(CheckLSBTypes)
SET(CPACK_PACKAGE_VERSION_MAJOR ${LIBONCILLA_VERSION_MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${LIBONCILLA_VERSION_MINOR})
SET(CPACK_PACKAGE_VERSION_PATCH ${LIBONCILLA_VERSION_PATCH})
SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
SET(CPACK_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}_${LSB_CODENAME}_${LSB_PROCESSOR_ARCH})
SET(CPACK_GENERATOR "TGZ")
SET(CPACK_PACKAGE_VENDOR "CoR-Lab Bielefeld University")
# IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
# SET(CPACK_GENERATOR "${CPACK_GENERATOR};DEB")
# SET(CPACK_DEBIAN_PACKAGE_NAME "amarsi-liboncilla")
# SET(CPACK_DEBIAN_PACKAGE_VERSION ${LIBONCILLA_VERSION_MAJOR}.${LIBONCILLA_VERSION_MINOR}.${LIBONCILLA_VERSION_PATCH})
# SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Arne Nordmann (anordman@cor-lab.uni-bielefeld.de)")
# SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION "AMARSi RCI representations of the AMARSi quadruped robot 'Oncilla'.")
# SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
# SET(CPACK_DEBIAN_PACKAGE_SECTION "devel")
# SET(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
# SET(CPACK_DEBIAN_PACKAGE_DEPENDS "amarsi-rci-all")
# SET(CPACK_DEBIAN_PACKAGE_SUGGESTS "cmake, cmake-data, doxygen, lcov, cppcheck, sloccount")
# ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
INCLUDE(CPack)
diff --git a/src/BackendFactory.cpp b/src/BackendFactory.cpp
new file mode 100644
index 0000000..78b8449
--- /dev/null
+++ b/src/BackendFactory.cpp
@@ -0,0 +1,36 @@
+/**
+ * \file BackendFactory.cpp
+ *
+ * \date Jun 21, 2012
+ * \author Alexandre Tuleu
+ */
+
+#include "BackendFactory.h"
+
+namespace rci {
+namespace oncilla {
+
+ BackendFactory & BackendFactory::Instance(){
+ static BackendFactory * s_rci_oncilla_backend_factory = new BackendFactory();
+ return *s_rci_oncilla_backend_factory;
+ }
+
+
+ void BackendFactory::RegisterBackend(Priority p, EntryPtr e){
+ EntryByPriority::const_iterator fi = d_entries.find(p);
+ if(fi != d_entries.end()){
+ return;
+ }
+ d_entries.insert(std::make_pair(p,e));
+ }
+
+ BackendFactory::EntryPtr BackendFactory::HighestPriorityBackend() const{
+ EntryByPriority::const_reverse_iterator fi = d_entries.rbegin();
+ if (fi == d_entries.rend()){
+ return 0;
+ }
+ return fi->second;
+ }
+
+} /* namespace oncilla */
+} /* namespace rci */
diff --git a/src/BackendFactory.h b/src/BackendFactory.h
new file mode 100644
index 0000000..9b784c9
--- /dev/null
+++ b/src/BackendFactory.h
@@ -0,0 +1,61 @@
+/**
+ * \file BackendFactory.h
+ *
+ * \date Jun 21, 2012
+ * \author Alexandre Tuleu
+ */
+
+#ifndef LIBONCILLA_BACKENDFACTORY_H_
+#define LIBONCILLA_BACKENDFACTORY_H_
+
+#include