libcmo21/LibCmo/VTInternal.hpp
yyc12345 e682a87d25 refactor: refactor project
- rename LIBCMO_DISABLE_COPY_MOVE -> YYCC_DEL_CLS_COPY_MOVE and LIBCMO_DEFAULT_COPY_MOVE -> YYCC_DEF_CLS_COPY_MOVE.
- fix Vector declaration generator. throw exception when operator[] face invalid index, instead of do fallback.
- rename VTAll.hpp -> VTInternal.hpp and VYUserAll -> VTAll.hpp for easy to understand.
- fix project name error in Doxygen template.
- replace all LIBCMO_OS_WIN32 to YYCC_OS == YYCC_OS_WINDOWS.
- fix some compile error (involving utf8 encoding) but not the final result.
- use correct way to include std-image library (use <> instead of "")
- finish documentation for VTUtils.hpp and VTEncoding.hpp.
2024-08-17 20:43:27 +08:00

60 lines
2.3 KiB
C++

#pragma once
/**
* \file
* The top header file for LibCom self development.
* Every C++ header or source file located in this project should include this first
* except the headers including this file.
* The header files included by this header should be carefully managed,
* to make sure there are no include loop and each header files can works correctly.
*
* This header should only be used as internal header file.
* It only contains all necessary stuff used by this project self.
* Any other program linked to this library should not include this header file directly.
* The best way to include this library is include VTAll.hpp which include this header file at the first position.
*
* All \c VT started files are not a part of Virtools SDK. They just assist Virtools SDK.
* So they will use native type, not CK type for declaration and implementation.
* Take VTEncoding.hpp for example, All string used in it is \c std::u8string, not LibCmo::XContainer::XString.
* The file starts with \c CK, \c Vx, and \c X is a part of Virtools SDK.
* They should use Virtools type anywhere, except that Virtools type can not fulfill their requirement.
*/
// The base header of LibCmo.
// It provides various convenient stuff, for example:
// - General LibCmo specific custom exception.
// - Enum Helper for convenient C++ enum class type logic operations.
#include "VTUtils.hpp"
// Platform independent encoding system.
// Use native Win32 functions in Windows,
// or Iconv in non-Windows to provide encoding convertion services.
#include "VTEncoding.hpp"
// Include CK2 types first.
// Because it also include some types or structs used by other module.
#include "CK2/CKTypes.hpp"
// Then include all XContainer types.
#include "XContainer/XTypes.hpp"
// Then include all VxMath types.
#include "VxMath/VxTypes.hpp"
// Now all basic types are included.
// Include CKGlobals which including various essential functions
#include "CK2/CKGlobals.hpp"
// Then load VxMath functions
#include "VxMath/VxMath.hpp"
// OK, all essential functions loaded.
// Load various enums, constant values
// Load CK2 Enums and CKStateChunk Identifier.
#include "CK2/CKEnums.hpp"
#include "CK2/CKIdentifiers.hpp"
// Load VxMath Enums
#include "VxMath/VxEnums.hpp"
// Last, load some custom struct used in program.
#include "CK2/CKDefines.hpp"