This document discusses general conventions and issues when developing for X4.
Source directories for modules typically contain the following folders
The directory structure should be reflected by project folders in the project settings (filters in MSVC). The .vcxproj file is stored in the main directory, which is named the same as the module (both the dir and the .vcxproj file).
moduleName.h files: Every module contains a file "moduleName.h" in the subfolder "module". This file needs to be included in every header / source file of the project. It (should) define the export declaration for dlls and it (should) include "basics/global/X4GlobalDefinitions.h".
.tags.h files: Every loadable module has to provide a file named "ModuleName.tags.h". Files with extension "tags.h" will be parsed automatically for module tag declarations and used for providing pre-load time reflection of module properties and dependencies. Therefore, this extension should never be used for different kinds of files.
Property sheets: Modules should inherit the following property sheets (preferably in this order, later overriding earlier):
The main namespace is "X4" (capital X). The namespace "X3" is used for legacy code. The namespace X4 is not used any longer. Any code containing this namespace (still) needs to be ported.
The namespace std is globally used in the "GlobalDefinitions.h" to simplify coding.