Note
The library is now stored within
namespace h3to help in preventing conflicts. If you do not wish to typeh3::every time you use H3API, add theusing namespace h3;line to your code.
To use these options, either add these preprocessor definitions to your project's preprocessor definitions, or #define them prior to including H3API.
| Preprocessor option | Description |
|---|---|
| _H3API_STD_CONVERSIONS_ | allows conversion between the following formatsstd::string <<==>> h3::H3Stringstd::vector <<==>> h3::H3Vector |
| _H3API_STD_VECTOR_ | allows use of H3StdVector<>, inherited from std::vector<> with H3ObjectAllocator<> uses conditional padding to match H3Vector format |
| _H3API_EXCEPTION_ | tells the library to include the H3Exception exception handler within your project which is derived from std::exception and may catch SEH errors. your project needs to use /EHa compiler flag to use it. |
| _H3API_UNPREFIXED_NAMES_ | most types created by H3API get a typedef without the H3 prefixe.g. H3String has an equivalent String which may be more convenient. |
| _H3API_DONT_USE_MACROS_ | tells the library to exclude some macros that can pollute the global namespace when defined. these macros are then replaced by typedefs so extra parentheses may be required. if you would like the convenience of switching between both modes, always add parentheses at the end. |
| _H3API_NO_VALIDATION_ | there are compile-time asserts in H3API to verify structures' sizes and validate some template parameters. define this macro if you do not wish to perform these validations. |
| _H3API_PATCHER_X86_ | tells the library to include its own "patcher_x86.hpp" header within your project don't use this if you prefer having your own patcher_x86 header. |
| _H3API_PLUGINS_ | tells the library to include the necessary headers to interact with H3Plugins projects in most cases you won't need this. |