/** * @file DNDBrief.h * @brief 说明 * * * @version 1.1 * @author lveyou * @date 21-08-08 */ /** * @brief 为什么使用标准库? * 为开源世界和C++标准做贡献,所以使用标准库。 */ /** * @brief 为什么不使用C++20模块 * 我尝试过模块,但编译期支持始终不完善,之好延后 */ /** * @brief 各系统的全局变量接口使用指针,以便控制生命周期,且不占用全局空间 */ /** * @brief 命名风格 * ?? 全局函数使用小写加下划线命名,例如 calc_n * ?? 非泛用型的全局函数只开头小写,例如 createQuad * 除了dl命令空间的全局函数都大写开头,例如Math::SetSeed * 宏由于没有命令空间,所以必须dl开头防止冲突 * 不需要别处的资源的初始化叫init,而使用别处资源的初始化叫load * 缩写只有首字母大写(命名空间除外) * Add的含义是添加一个已有对象,而不是创建 * 除了dl命名空间,其他都首字母大小,例如dnd::Math,缩写除外比如dnd::UI * 优先使用枚举类,如果只使用枚举,则使用Struct包含,枚举统一取名为Var(参见LogicType的实现) * 冒号(:)作为特殊对象的命令,例如默认精灵、默认音效 * 对于多个元素,不使用单复数,而是加mul修饰。例如 _mulSpr,它可以是数组,也可以是链表。 * 加减乘除如下:Addition(add)、Subtraction(sub)、multiplication(mul)、division(div) * 求和、求积:sum、?? * func为回调函数,fn为局部lambda函数 * small <-> large */ /** * @brief 对象创建与释放 * 特殊物件通过g_factory创建 * 用户层面,一般情况不出现new关键字 * 资源名称:由于/不能作为文件名,故使用.替换/。 */ /** * @brief 关于绘制顺序 * 用order表示绘制遮挡顺序,越小则越靠近屏幕 * 对于UI来说,传入x,则所有子元素的order均大于等于x。 * 越先添加到Panel的Group,order越大(详细参见Panel::SetOrder)。 */ /** * @brief 常用成员函数命名 * Refresh代表刷新、Set代表设置。前者含义带有不保存数据。 * Update为时间片逻辑、Render代表绘制、Run代表前二者合一(一般不使用Run)。 * Init代表初始化、Load代表加载、Create代表创建,一般用于静态函数创建对象。 * Reset代表重置、Delete代表删除、Clear代表清除、Release代表释放(Delete更表示不可逆的)、Click用于按钮按下)。 * Clone代表复制,Copy代表复制。前者为新建元素,后者为已有元素复制另外一个元素属性。 * GetBuffer返回byte流,GetData返回实际类型指针。 * */ /** * @brief 越界时IsOutRange返回真,CheckRange返回假。 */ /** * @brief 类成员顺序 * 1.嵌套类 * 2.构造函数 * 3.操作符重载 * 4.主要函数 * 5.Set函数 * 5.Get函数 * 6.功能性函数 * 7.析构函数 * 8.私有成员 * 9.私有函数 */ /** * @brief 右值引用 * 右值引用一般用于移动语义,默认不使用移动语义,性能瓶颈再作优化,所以“const T&& a”没有实用意义。 */ /** * @brief 关于文件 * 优先使用fstream,由于大部分库都是用C语言的FILE文件句柄,故作兼容。 * 接口统一使用UTF-8编码,代码内容与代码文件皆使用utf8 */ /** * @brief C++标签 * deprecated 废弃接口 */ /** * @brief 应该优先使用以下基础类型 * int、unsigned、float * 字节流使用std::byte */ /** * @brief 复制dll命令 * xcopy / r / y $(SolutionDir)$(PlatformName)\$(Configuration)\DND3D.dll $(SolutionDir)bin\$(Configuration) */ /* MS-DOS-style lines that end with (CR/LF) characters (optional for the last line) Jiger: {使用回车换行(两个字符)作为行分隔符,最后一行数据可以没有这两个字符。} An optional header record (there is no sure way to detect whether it is present, so care is required when importing). Jiger:{标题行是否需要,要双方显示约定}. Each record "should" contain the same number of comma-separated fields. Jiger:{每行记录的字段数要相同,使用逗号分隔。} 逗号是默认使用的值,双方可以约定别的。 Any field may be quoted (with double quotes). Jiger:{任何字段的值都可以使用双引号括起来}. 为简单期间,可以要求都使用双引号。 Fields containing a line-break, double-quote, and/or commas should be quoted. (If they are not, the file will likely be impossible to process correctly). Jiger:{字段值中如果有换行符,双引号,逗号的,必须要使用双引号括起来。这是必须的。} A (double) quote character in a field must be represented by two (double) quote characters. Jiger:{如果值中有双引号,使用一对双引号来表示原来的一个双引号} */ /** * @brief 基础定义与算法分类 * dl_type.h 类型定义、类型转换 * dl_algorithm.h 与类型无关的算法,操作容器的算法 * dl_math.h 数学相关、需要输出日志 */ /** * @brief 注释示例 * * @detail 详细说明-------------------------------------aa * * @note 注释 * @attention 注意 * @warning 警告 * @exception 异常 * @remarks 备注说明 * * @return 返回值 * @retval 返回值的说明 * * @bug 有bug * @todo 还没做完呢 * @see 参考一下 * @pre 前置条件 * @deprecated 过时了 */ int this_is_doxygen_test() {} /** * @example 例子 */ /*! \mainpage dl库 * * \section intro_sec 介绍 * * 基于C++20、vulkan的工具库。 * by略游 更新于2024-12-23 * * 链接:https://gitee.com/lveyou/dl * * @image html framework.png "架构图" */