/** * @file RDI.hpp * @date 24/09/2022 * @author JackCarterSmith * @copyright GPL-v3.0 * @brief Rogue Data Interface library main entry file. * */ #include #include #include "RDI_Datatypes.h" #ifndef RDI_HPP_ #define RDI_HPP_ #if defined(_MSC_VER) # define RDI_ABI_EXPORT __declspec(dllexport) # define RDI_ABI_IMPORT __declspec(dllimport) #elif __GNUC__ >= 4 # define RDI_ABI_EXPORT __attribute__ ((visibility("default"))) # define RDI_ABI_IMPORT __attribute__ ((visibility("default"))) #else # define RDI_ABI_EXPORT # define RDI_ABI_IMPORT #endif #if defined(RDI_DLL) # if defined(WIN32) # if defined(RDI_DLLBUILD) # define RDI_EXTERN RDI_ABI_EXPORT # else # define RDI_EXTERN RDI_ABI_IMPORT # endif # endif #endif #ifndef RDI_EXTERN # define RDI_EXTERN #endif namespace RDI { /** * @brief Get the current library version. * @return String of the version. */ RDI_EXTERN std::string RDI_getLibVersion( void ); /** * @brief Allocate memory and create default structure to access datas. * @details Try to open DATA.DAT file at location specified by roguePath. * If file can be opened, it's mapped in memory and process files list. * @param[in] roguePath Path to DATA.DAT and DATA.HDR location. */ RDI_EXTERN void RDI_Init( std::string roguePath ); /* Erso specific methods */ RDI_EXTERN unsigned char RDI_getSectionCount( void ); RDI_EXTERN std::string RDI_getSectionName( unsigned char id ); RDI_EXTERN unsigned int RDI_getSectionOffset( unsigned char id ); RDI_EXTERN unsigned int RDI_getDirectoryElementCount( std::string path ); RDI_EXTERN std::vector RDI_getDirectoryElements( std::string path ); RDI_EXTERN bool RDI_isElementDirectory( std::string path ); /* Krennic specific methods */ RDI_EXTERN std::vector RDI_getLevelsName( void ); RDI_EXTERN std::vector RDI_getModelsName( void ); RDI_EXTERN std::vector RDI_getTexturesName( void ); RDI_EXTERN std::vector RDI_getMusicsName( void ); /** * @brief Clean up global resources. */ RDI_EXTERN void RDI_CleanUp( void ); } #endif /* RDI_HPP_ */