Skip to content

BleedingChips/Potato

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Potato

个人库,用来管理和存储一些常用的功能,采用xmake + c++ module

本库包含以下主要功能:

  1. PotatoTMP —— 模板元编程功能库。

  2. PotatoPointer —— 嵌入式智能指针功能库。

  3. PotatoStrEncode —— Unicode字符之间的编码相互转换的功能库。

  4. PotatoSLRX —— LR(x)的语法分析库,X为可配置。

  5. PotatoReg —— 为词法分析特化实现的,基于DFA的正则表达式分析库,可将多个正则表达式合并到同一个分析表中,以提高速度。

  6. PotatoStrFormat —— std::format类似物,提供数据与Unicode字符之间的相互转化。

  7. PotatoEnbf —— ENBF词法/语法分析库。

  8. PotatoDocument —— 处理带文件BOM头的纯字符串文件读写

  9. PotatoInterval —— 数学概念中的区间运算

  10. PotatoIR —— 动态类型库,支持动态拼接数据类型,并提供动态类型的基础反射

  11. PotatoTaskSystem —— 基于线程池的多线程任务系统

  12. PotatoTaskFlow —— 基于有向无环图的多线程任务图

Todo

  1. PotatoPath 虚拟路径系统,映射代码中的路径和本地文件系统的路径

使用方式

从 Github 上将以下库Clone到本地:

https://github.com/BleedingChips/Potato.git

目前要求C++23以上,且只支持使用xmakewindows下进行构建,可以使用目录下的xmake_install.ps1获取最新版的xmake,并且使用目录下的xmake_generate_vs_project.ps1来生成vs的工程项目。

要作为第三方库引用,只需要在第三方库中的xmake.lua中加入

include("PotatoProectFile/Potato")

其中PotatoProectFile是该项目在本地的路径。然后在xmaketarget中填入:

target(xxx)
	...
	add_deps("Potato")
target_end()

然后在CPP文件中import

import Potato; // 使用所有的Potato模块
import PotatoTaskSystem; // 只使用单独的模块

若不想使用xmake,直接将Potato/下的Potato文件夹复制粘贴到项目中即可。

目录包含

  1. Potato/Potato 所有的代码。
  2. Potato/Test 各模块的测试代码。
  3. README_XXXX.md 各模块的基本介绍