/* * sharedobj.h * * Created on: Oct 3, 2016 * Author: nullifiedcat */ #ifndef SHAREDOBJ_HPP_ #define SHAREDOBJ_HPP_ #include #include #include #include struct link_map; typedef void *(*fn_CreateInterface_t)(const char*, int*); namespace sharedobj { bool LocateSharedObject(std::string& name, std::string& out_full_path); class SharedObject { public: SharedObject(const char* _file, bool _factory); void Load(); char* Pointer(uintptr_t offset) const; void* CreateInterface(const std::string& interface); public: std::string file; std::string path; bool factory { false }; bool constructed { false }; fn_CreateInterface_t fptr { nullptr }; link_map* lmap { nullptr }; }; SharedObject& steamclient(); SharedObject& client(); SharedObject& engine(); SharedObject& vstdlib(); SharedObject& tier0(); SharedObject& inputsystem(); SharedObject& materialsystem(); #if ENABLE_VISUALS == 1 SharedObject& vguimatsurface(); SharedObject& vgui2(); SharedObject& studiorender(); SharedObject& libsdl(); #endif void LoadAllSharedObjects(); } #endif /* SHAREDOBJ_HPP_ */