60 lines
2.3 KiB
C++
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"
|
||
|
|
||
|
|
||
|
|