New tgfdata library, a high level API to access to the data in the XML files (work in progress)

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@3173 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 00dcfde4e35244f23c5ee7b4470ceba902b2db04
Former-commit-id: cf199b77cfe66c017b6c2df2b9b61d7c3ccfe13f
This commit is contained in:
pouillot 2010-12-12 16:27:38 +00:00
parent ea1541a083
commit af88ef1cca
9 changed files with 579 additions and 197 deletions

View file

@ -395,52 +395,7 @@ MACRO(ADD_SDLIB_INCLUDEDIR)
FOREACH(SDLIB_LIB ${ARGN})
SET(SDLIB_FOUND_LIB TRUE)
SET(SDLIB_EXTRA_INCLUDEDIR "")
IF(SDLIB_LIB STREQUAL "client")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/client)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_CLIENT_INCLUDE_DIR client.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_CLIENT_INCLUDE_DIR client.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_CLIENT_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "confscreens")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/confscreens)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_CONFSCREENS_INCLUDE_DIR confscreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_CONFSCREENS_INCLUDE_DIR confscreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_CONFSCREENS_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "learning")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/learning)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_LEARNING_INCLUDE_DIR learn_debug.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" learning NO_DEFAULT_PATH)
FIND_PATH(SDLIB_LEARNING_INCLUDE_DIR learn_debug.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" learning)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_LEARNING_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "math")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/math)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_MATH_INCLUDE_DIR linalg_t.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" math tmath NO_DEFAULT_PATH)
FIND_PATH(SDLIB_MATH_INCLUDE_DIR linalg_t.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" math tmath)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_MATH_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "networking")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/modules/networking)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_NETWORKING_INCLUDE_DIR network.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_NETWORKING_INCLUDE_DIR network.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_NETWORKING_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "portability")
IF(SDLIB_LIB STREQUAL "portability")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/portability)
ELSE(IN_SOURCETREE)
@ -449,33 +404,6 @@ MACRO(ADD_SDLIB_INCLUDEDIR)
FIND_PATH(SDLIB_PORTABILITY_INCLUDE_DIR portability.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_PORTABILITY_INCLUDE_DIR portability.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_PORTABILITY_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "raceengineclient")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/raceengineclient)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_RACEENGINECLIENT_INCLUDE_DIR raceengineclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_RACEENGINECLIENT_INCLUDE_DIR raceengineclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_RACEENGINECLIENT_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "racescreens")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/racescreens)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_RACESCREENS_INCLUDE_DIR racescreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_RACESCREENS_INCLUDE_DIR racescreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_RACESCREENS_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "robottools")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/robottools)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_ROBOTTOOLS_INCLUDE_DIR robottools.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_ROBOTTOOLS_INCLUDE_DIR robottools.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_ROBOTTOOLS_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "tgf")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/tgf)
@ -494,6 +422,24 @@ MACRO(ADD_SDLIB_INCLUDEDIR)
FIND_PATH(SDLIB_TGFCLIENT_INCLUDE_DIR tgfclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_TGFCLIENT_INCLUDE_DIR tgfclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_TGFCLIENT_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "tgfdata")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/tgfdata)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_TGFDATA_INCLUDE_DIR tgfdata.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_TGFDATA_INCLUDE_DIR tgfdata.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_TGFDATA_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "math")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/math)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_MATH_INCLUDE_DIR linalg_t.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" math tmath NO_DEFAULT_PATH)
FIND_PATH(SDLIB_MATH_INCLUDE_DIR linalg_t.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" math tmath)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_MATH_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "txml")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/txml)
@ -503,12 +449,75 @@ MACRO(ADD_SDLIB_INCLUDEDIR)
FIND_PATH(SDLIB_TXML_INCLUDE_DIR xml.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_TXML_INCLUDE_DIR xml.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_TXML_INCLUDE_DIR)
ELSE(SDLIB_LIB STREQUAL "client")
ELSEIF(SDLIB_LIB STREQUAL "robottools")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/robottools)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_ROBOTTOOLS_INCLUDE_DIR robottools.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_ROBOTTOOLS_INCLUDE_DIR robottools.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_ROBOTTOOLS_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "learning")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/learning)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_LEARNING_INCLUDE_DIR learn_debug.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" learning NO_DEFAULT_PATH)
FIND_PATH(SDLIB_LEARNING_INCLUDE_DIR learn_debug.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" learning)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_LEARNING_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "client")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/client)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_CLIENT_INCLUDE_DIR client.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_CLIENT_INCLUDE_DIR client.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_CLIENT_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "confscreens")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/confscreens)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_CONFSCREENS_INCLUDE_DIR confscreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_CONFSCREENS_INCLUDE_DIR confscreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_CONFSCREENS_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "networking")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/modules/networking)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_NETWORKING_INCLUDE_DIR network.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_NETWORKING_INCLUDE_DIR network.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_NETWORKING_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "raceengineclient")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/raceengineclient)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_RACEENGINECLIENT_INCLUDE_DIR raceengineclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_RACEENGINECLIENT_INCLUDE_DIR raceengineclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_RACEENGINECLIENT_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "racescreens")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/racescreens)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_RACESCREENS_INCLUDE_DIR racescreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_RACESCREENS_INCLUDE_DIR racescreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_RACESCREENS_INCLUDE_DIR)
ELSE(SDLIB_LIB STREQUAL "portability")
SET(SDLIB_FOUND_LIB FALSE)
IF(NOT SDLIB_LIB STREQUAL "OPTIONAL")
MESSAGE(WARNING ": ${SDLIB_LIB} is not a Speed Dreams library")
ENDIF(NOT SDLIB_LIB STREQUAL "OPTIONAL")
ENDIF(SDLIB_LIB STREQUAL "client")
ENDIF(SDLIB_LIB STREQUAL "portability")
IF(SDLIB_FOUND_LIB)
IF(${SDLIB_EXTRA_INCLUDEDIR})
SET(SDLIB_INCLUDE_DIRS ${SDLIB_INCLUDE_DIRS} ${${SDLIB_EXTRA_INCLUDEDIR}})
@ -551,13 +560,63 @@ MACRO(ADD_SDLIB_LIBRARY TARGET)
IF(NOT SDLIB_IGNORE)
SET(SDLIB_FOUND_LIB TRUE)
SET(SDLIB_EXTRA_LIBRARY "")
#Use IF(TARGET ${TOCSLIB_LIB}) from CMake 2.6
#Use IF(TARGET ${SDLIB_LIB}) from CMake 2.6
GET_TARGET_PROPERTY(SDLIB_TARGET_LOCATION ${SDLIB_LIB}${SDLIB_TARGET_SUFFIX} LOCATION)
IF(NOT SDLIB_TARGET_LOCATION STREQUAL "NOTFOUND")
SET(SDLIB_LIBRARIES ${SDLIB_LIBRARIES} ${SDLIB_LIB}${SDLIB_TARGET_SUFFIX})
ELSE(NOT SDLIB_TARGET_LOCATION STREQUAL "NOTFOUND")
MESSAGE(WARNING "Warning: didn't found target ${SDLIB_LIB}")
IF(SDLIB_LIB STREQUAL "client")
IF(SDLIB_LIB STREQUAL "tgf")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/tgf)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_TGF_LIBRARY tgf${SDLIB_TARGET_SUFFIX} PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib
PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_TGF_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "tgfclient")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/tgfclient)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_TGFCLIENT_LIBRARY tgfclient PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_TGFCLIENT_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "tgfdata")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/tgfdata)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_TGFDATA_LIBRARY tgfdata PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_TGFDATA_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "txml")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/txml)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_TXML_LIBRARY txml${SDLIB_TARGET_SUFFIX} PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib
PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_TXML_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "robottools")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/robottools)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_ROBOTTOOLS_LIBRARY robottools PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_ROBOTTOOLS_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "learning")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/learning)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_LEARNING_LIBRARY learning PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_LEARNING_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "client")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/client)
ELSE(IN_SOURCETREE)
@ -573,14 +632,6 @@ MACRO(ADD_SDLIB_LIBRARY TARGET)
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_CONFSCREENS_LIBRARY confscreens PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_CONFSCREENS_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "learning")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/learning)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_LEARNING_LIBRARY learning PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_LEARNING_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "networking")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/modules/networking)
@ -605,40 +656,6 @@ MACRO(ADD_SDLIB_LIBRARY TARGET)
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_RACESCREENS_LIBRARY racescreens ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_RACESCREENS_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "robottools")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/robottools)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_ROBOTTOOLS_LIBRARY robottools PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_ROBOTTOOLS_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "tgf")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/tgf)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_TGF_LIBRARY tgf${SDLIB_TARGET_SUFFIX} PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib
PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_TGF_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "tgfclient")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/tgfclient)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_TGFCLIENT_LIBRARY tgfclient PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_TGFCLIENT_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "txml")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/txml)
ELSE(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_TXML_LIBRARY txml${SDLIB_TARGET_SUFFIX} PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib
PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_TXML_LIBRARY)
ELSEIF(SDLIB_LIB STREQUAL "ssggraph")
IF(IN_SOURCETREE)
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/modules/graphic/ssggraph)
@ -655,12 +672,12 @@ MACRO(ADD_SDLIB_LIBRARY TARGET)
ENDIF(IN_SOURCETREE)
FIND_LIBRARY(SDLIB_TRACK_LIBRARY track PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
SET(SDLIB_EXTRA_LIBRARY SDLIB_TRACK_LIBRARY)
ELSE(SDLIB_LIB STREQUAL "client")
ELSE(SDLIB_LIB STREQUAL "tgf")
SET(SDLIB_FOUND_LIB FALSE)
IF(NOT SDLIB_LIB STREQUAL "OPTIONAL" AND NOT SDLIB_LIB STREQUAL "STATIC")
MESSAGE(WARNING ": ${SDLIB_LIB} is not a Speed Dreams library")
ENDIF(NOT SDLIB_LIB STREQUAL "OPTIONAL" AND NOT SDLIB_LIB STREQUAL "STATIC")
ENDIF(SDLIB_LIB STREQUAL "client")
ENDIF(SDLIB_LIB STREQUAL "tgf")
IF(SDLIB_FOUND_LIB)
IF(${SDLIB_EXTRA_LIBRARY})
SET(SDLIB_LIBRARIES ${SDLIB_LIBRARIES} ${${SDLIB_EXTRA_LIBRARY}})

View file

@ -3,6 +3,7 @@ INCLUDE("../../cmake/macros.cmake")
ADD_SUBDIRECTORY(txml)
ADD_SUBDIRECTORY(tgf)
ADD_SUBDIRECTORY(tgfclient)
ADD_SUBDIRECTORY(tgfdata)
ADD_SUBDIRECTORY(robottools)
ADD_SUBDIRECTORY(racescreens)
ADD_SUBDIRECTORY(confscreens)

View file

@ -7,11 +7,11 @@ ADD_SDL_INCLUDEDIR()
ADD_OSSPEC_INCLUDEDIR()
ADD_SDLIB_INCLUDEDIR(txml portability)
SET(TGF_HEADERS os.h tgf.h modinfo.h carinfo.h)
SET(TGF_HEADERS os.h tgf.h modinfo.h)
SET(TGF_SOURCES directory.cpp file.cpp filesetup.cpp
formula.cpp hash.cpp module.cpp modinfo.cpp os.cpp
params.cpp profiler.cpp schedulespy.cpp tgf.cpp trace.cpp
carinfo.cpp ${TGF_HEADERS})
${TGF_HEADERS})
IF(WIN32)
# DLL export stuff under Windows (to avoid .def file)
@ -38,5 +38,7 @@ IF(WIN32)
ELSE(WIN32)
SD_INSTALL_FILES(LIB lib TARGETS tgf)
ENDIF(WIN32)
SD_INSTALL_FILES(INCLUDE FILES ${TGF_HEADERS})
SD_INSTALL_FILES(DATA config FILES params.dtd)

39
src/libs/tgfdata/CMakeLists.txt Executable file
View file

@ -0,0 +1,39 @@
INCLUDE(../../../cmake/macros.cmake)
#PROJECT(tgfdata)
ADD_INTERFACE_INCLUDEDIR()
ADD_OSSPEC_INCLUDEDIR()
ADD_SDLIB_INCLUDEDIR(portability txml math tgf)
SET(TGFDATA_HEADERS tgfdata.h carinfo.h racemanagers.h)
SET(TGFDATA_SOURCES carinfo.cpp racemanagers.cpp ${TGFDATA_HEADERS})
IF(WIN32)
# DLL export stuff under Windows (to avoid .def file)
ADD_DEFINITIONS(-DTGFDATA_DLL)
ENDIF(WIN32)
# Disable developer warning
IF (COMMAND CMAKE_POLICY)
CMAKE_POLICY(SET CMP0003 NEW)
ENDIF(COMMAND CMAKE_POLICY)
ADD_LIBRARY(tgfdata SHARED ${TGFDATA_SOURCES})
IF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH)
ADD_LIBRARY(tgfdata_static STATIC ${TGFDATA_SOURCES})
ENDIF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH)
ADD_SDLIB_LIBRARY(tgfdata txml tgf)
ADD_SDL_LIBRARY(tgfdata)
IF(WIN32)
SD_INSTALL_FILES(BIN TARGETS tgfdata)
ELSE(WIN32)
SD_INSTALL_FILES(LIB lib TARGETS tgfdata)
ENDIF(WIN32)
SD_INSTALL_FILES(INCLUDE FILES ${TGFDATA_HEADERS})

View file

@ -4,6 +4,7 @@
created : July 2009
copyright : (C) 2009 Brian Gavin
web : speed-dreams.sourceforge.net
version : $Id$
***************************************************************************/

View file

@ -4,7 +4,7 @@
created : July 2009
copyright : (C) 2009 Brian Gavin
web : speed-dreams.sourceforge.net
version : $Id$
***************************************************************************/
/***************************************************************************
@ -15,6 +15,7 @@
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef __CARINFO__H__
#define __CARINFO__H__
@ -23,8 +24,10 @@
#include "tgf.h"
/* Singleton holding information on available cars and categories */
/** @file
Singleton holding information on available cars and categories
*/
class TGF_API CarData
{

181
src/libs/tgfdata/racemanagers.cpp Executable file
View file

@ -0,0 +1,181 @@
/***************************************************************************
file : racemanagers.cpp
created : December 2010
copyright : (C) 2010 Jean-Philippe Meuret
web : speed-dreams.sourceforge.net
version : $Id$
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <map>
#include <sstream>
#include <algorithm>
#include <raceman.h>
#include "racemanagers.h"
struct Private
{
// One GfRaceManager structure for each car (no special order).
std::vector<GfRaceManager> vecRaceMans;
// Map for quick access to GfRaceManager by id
std::map<std::string, GfRaceManager*> mapRaceMansById;
// Vector of type names, ordered by decreasing priority.
std::vector<std::string> vecTypes;
};
GfRaceManagers* GfRaceManagers::_pSelf = 0;
GfRaceManagers *GfRaceManagers::self()
{
if (!_pSelf)
_pSelf = new GfRaceManagers;
return _pSelf;
}
static bool hasHigherPriority(const GfRaceManager& left, const GfRaceManager& right)
{
return left.getPriority() > right.getPriority();
}
GfRaceManagers::GfRaceManagers()
{
_pPrivate = new Private;
// Get the list of racemans from the xml files available in GetDataDir()/config/raceman folder
tFList* lstFiles = GfDirGetListFiltered("config/raceman", "", PARAMEXT);
if (!lstFiles)
{
GfLogFatal("No race manager available in %sconfig/raceman\n", GetDataDir());
return;
}
// For each found XML file :
tFList* pFile = lstFiles;
do
{
GfLogDebug("GfRaceManagers::GfRaceManagers() : Examining %s\n", pFile->name);
// Open the XML descriptor file (look first in user settings, then in the install folder).
std::ostringstream ossRaceManFileName;
ossRaceManFileName << GetLocalDir() << "config/raceman/" << pFile->name;
void* hparmRaceMan = GfParmReadFile(ossRaceManFileName.str().c_str(), GFPARM_RMODE_STD);
if (!hparmRaceMan)
{
ossRaceManFileName.str("");
ossRaceManFileName << "config/raceman/" << pFile->name;
hparmRaceMan = GfParmReadFile(ossRaceManFileName.str().c_str(), GFPARM_RMODE_STD);
// We got if from the data folder : write it to the user settings.
if (hparmRaceMan)
{
ossRaceManFileName.str("");
ossRaceManFileName << GetLocalDir() << "config/raceman/" << pFile->name;
GfParmWriteFile(ossRaceManFileName.str().c_str(), hparmRaceMan, NULL);
}
}
std::string strRaceManId(pFile->name, strlen(pFile->name) - strlen(PARAMEXT));
if (!hparmRaceMan) {
GfLogWarning("GfRaceManagers : Ignoring race manager %s (failed to read from config/raceman/%s in %s and %s)\n",
strRaceManId.c_str(), pFile->name, GetLocalDir(), GetDataDir());
continue;
}
// Read race manager info and store it in the GfRaceManager structure.
GfRaceManager raceMan;
raceMan.setId(strRaceManId);
raceMan.setName(GfParmGetStr(hparmRaceMan, RM_SECT_HEADER, RM_ATTR_NAME, "<unknown>"));
raceMan.setType(GfParmGetStr(hparmRaceMan, RM_SECT_HEADER, RM_ATTR_TYPE, "<unknown>"));
raceMan.setSubType(GfParmGetStr(hparmRaceMan, RM_SECT_HEADER, RM_ATTR_SUBTYPE, ""));
//raceMan.setDescriptorFileName(ossRaceManFileName.str());
raceMan.setPriority((int)GfParmGetNum(hparmRaceMan, RM_SECT_HEADER, RM_ATTR_PRIO, NULL, 10000));
raceMan.setDescriptorHandle(hparmRaceMan);
// Update the GfRaceManagers singleton.
_pPrivate->vecRaceMans.push_back(raceMan);
_pPrivate->mapRaceMansById[strRaceManId] = &_pPrivate->vecRaceMans.back();
if (std::find(_pPrivate->vecTypes.begin(), _pPrivate->vecTypes.end(), raceMan.getType())
== _pPrivate->vecTypes.end())
_pPrivate->vecTypes.push_back(raceMan.getType());
}
while ((pFile = pFile->next) != lstFiles);
GfDirFreeList(lstFiles, NULL, true, true);
// Sort the race manager vector by priority.
std::sort(_pPrivate->vecRaceMans.begin(), _pPrivate->vecRaceMans.end(), hasHigherPriority);
print();
}
const std::vector<std::string>& GfRaceManagers::getTypes() const
{
return _pPrivate->vecTypes;
}
GfRaceManager* GfRaceManagers::getRaceManager(const std::string& strId) const
{
std::map<std::string, GfRaceManager*>::const_iterator itRaceMan =
_pPrivate->mapRaceMansById.find(strId);
if (itRaceMan != _pPrivate->mapRaceMansById.end())
return itRaceMan->second;
return 0;
}
GfRaceManager* GfRaceManagers::getRaceManagerWithName(const std::string& strName) const
{
std::vector<GfRaceManager>::iterator itRaceMan;
for (itRaceMan = _pPrivate->vecRaceMans.begin(); itRaceMan != _pPrivate->vecRaceMans.end(); itRaceMan++)
if (itRaceMan->getName() == strName)
return &(*itRaceMan);
return 0;
}
const std::vector<GfRaceManager*> GfRaceManagers::getRaceManagersWithType(const std::string& strType) const
{
std::vector<GfRaceManager*> vecRaceMans;
std::vector<GfRaceManager>::iterator itRaceMan;
for (itRaceMan = _pPrivate->vecRaceMans.begin(); itRaceMan != _pPrivate->vecRaceMans.end(); itRaceMan++)
if (strType.empty() || itRaceMan->getType() == strType)
vecRaceMans.push_back(&(*itRaceMan));
return vecRaceMans;
}
void GfRaceManagers::print() const
{
GfLogDebug("GfRaceManagers : %d race managers, %d types\n",
_pPrivate->vecRaceMans.size(), _pPrivate->vecTypes.size());
std::vector<std::string>::const_iterator itType;
for (itType = _pPrivate->vecTypes.begin();
itType != _pPrivate->vecTypes.end(); itType++)
{
GfLogDebug(" %s type :\n", itType->c_str());
const std::vector<GfRaceManager*> vecRaceMans =
getRaceManagersWithType(itType->c_str());
std::vector<GfRaceManager*>::const_iterator itRaceMan;
for (itRaceMan = vecRaceMans.begin(); itRaceMan != vecRaceMans.end(); itRaceMan++)
GfLogDebug(" %s : subtype='%s', name='%s'\n", (*itRaceMan)->getId().c_str(),
(*itRaceMan)->getSubType().c_str(), (*itRaceMan)->getName().c_str());
}
}

94
src/libs/tgfdata/racemanagers.h Executable file
View file

@ -0,0 +1,94 @@
/***************************************************************************
file : racemanagers.h
created : December 2010
copyright : (C) 2010 Jean-Philippe Meuret
web : speed-dreams.sourceforge.net
version : $Id$
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef __TGFRACEMANAGERS__H__
#define __TGFRACEMANAGERS__H__
#include <string>
#include <vector>
#include "tgfdata.h"
/** @file
Singleton holding information on the available race managers
*/
class TGFDATA_API GfRaceManager
{
public:
const std::string& getId() const { return _strId; }; // TODO: => file name ?
const std::string& getName() const { return _strName; };
const std::string& getType() const { return _strType; };
const std::string& getSubType() const { return _strSubType; };
const int getPriority() const { return _nPriority; };
//const std::string& getDescriptorFileName() const { return _strDescFile; }; //
void* getDescriptorHandle() const { return _hparmHandle; }; //
void setId(const std::string& strId) { _strId = strId; };
void setName(const std::string& strName) { _strName = strName; };
void setType(const std::string& strType) { _strType = strType ; };
void setSubType(const std::string& strSubType) { _strSubType = strSubType; };
void setPriority(int nPriority) { _nPriority = nPriority; };
//void setDescriptorFileName(const std::string& strDescFile) { _strDescFile = strDescFile; };
void setDescriptorHandle(void* hparmHandle) { _hparmHandle = hparmHandle; };
protected:
std::string _strId; // XML file name (ex: quickrace, singleevent-endurance, championship-sc)
std::string _strName; // User friendly full name (ex: Quick Race, Supercar Championship).
std::string _strType; // User friendly type name (ex: Quick Race, Single Event, Championship).
std::string _strSubType; // User friendly sub-type name (ex: "", Endurance, Challenge, Supercars").
std::string _strDescFile; // Path-name of the XML descriptor file.
int _nPriority; // Gives the order of the buttons in the race select menu
void* _hparmHandle; // Params handle to the descriptor file.
};
class TGFDATA_API GfRaceManagers
{
public:
// Accessor to the unique instance of the singleton.
static GfRaceManagers* self();
const std::vector<std::string>& getTypes() const;
GfRaceManager* getRaceManager(const std::string& strId) const;
GfRaceManager* getRaceManagerWithName(const std::string& strName) const;
const std::vector<GfRaceManager*> getRaceManagersWithType(const std::string& strType = "") const;
void print() const;
protected:
// Protected constructor : clients cannot use it (singleton pattern).
GfRaceManagers();
protected:
// The singleton itself.
static GfRaceManagers* _pSelf;
// Its private data.
struct Private* _pPrivate;
};
#endif /* __TGFRACEMANAGERS__H__ */

44
src/libs/tgfdata/tgfdata.h Executable file
View file

@ -0,0 +1,44 @@
/***************************************************************************
tgfdata.h -- The Gaming Framework Data Manager API
-------------------
created : Sat Dec 11 22:32:14 CEST 2010
copyright : (C) 2010 Jean-Philippe Meuret
web : http:://www.speed-dreams.org
version : $Id$
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
/** @file
The Gaming Framework Data Manager API.
@version $Id$
*/
#ifndef __TGFDATA__H__
#define __TGFDATA__H__
// DLL exported symbols declarator for Windows.
#ifdef WIN32
# ifdef TGFDATA_DLL
# define TGFDATA_API __declspec(dllexport)
# else
# define TGFDATA_API __declspec(dllimport)
# endif
#else
# define TGFDATA_API
#endif
#include "carinfo.h"
#include "racemanagers.h"
#endif /* __TGFDATA__H__ */