{"repo":"focus-creative-games/luban","free":true,"listed":false,"github":"https://github.com/focus-creative-games/luban","clone":"git clone https://github.com/focus-creative-games/luban.git","description":"luban是一个强大、易用、优雅、稳定的游戏配置解决方案。luban is a powerful, easy-to-use, elegant and stable game configuration solution. ","language":"C#","stars":4531,"topics":["cocos2d-x","config","csv","datatable","excel","flatbuffers","game","godot","hybridclr","json","lua","msgpack","protobuf","unity","xls2json","xls2lua","xlsx2json","xlsx2lua","xml","yaml"],"license":"MIT","category":"game_engine_tool","readme_excerpt":"\n- [README 中文](./README.md)\n- [README English](./README_EN.md)\n\n# Luban\n\n![icon](docs/images/logo.png)\n\n[![license](http://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://opensource.org/licenses/MIT) ![star](https://img.shields.io/github/stars/focus-creative-games/luban?style=flat-square)\n\n\nluban是一个强大、易用、优雅、稳定的游戏配置解决方案。它设计目标为满足从小型到超大型游戏项目的简单到复杂的游戏配置工作流需求。\n\nluban可以处理丰富的文件类型，支持主流的语言，可以生成多种导出格式，支持丰富的数据检验功能，具有良好的跨平台能力，并且生成极快。\nluban有清晰优雅的生成管线设计，支持良好的模块化和插件化，方便开发者进行二次开发。开发者很容易就能将luban适配到自己的配置格式，定制出满足项目要求的强大的配置工具。\n\nluban标准化了游戏配置开发工作流，可以极大提升策划和程序的工作效率。\n\n## 核心特性\n\n- 丰富的源数据格式。支持excel族(csv,xls,xlsx,xlsm)、json、xml、yaml、lua等\n- 丰富的导出格式。 支持生成binary、json、bson、xml、lua、yaml等格式数据\n- 增强的excel格式。可以简洁地配置出像简单列表、子结构、结构列表，以及任意复杂的深层次的嵌套结构\n- 完备的类型系统。不仅能表达常见的规范行列表，由于**支持OOP类型继承**，能灵活优雅表达行为树、技能、剧情、副本之类复杂GamePlay数据\n- 支持多种的语言。内置支持生成c#、java、go、cpp、lua、python、javascript、typescript、rust、php、erlang、godot 等语言代码，同时还能通过protobuf之类消息方案支持其他语言\n- 支持主流的消息方案。 protobuf(schema + binary + json)、flatbuffers(schema + json)、msgpack(binary)\n- 强大的数据校验能力。ref引用检查、path资源路径、range范围检查等等\n- 完善的本地化支持\n- 支持所有主流的游戏引擎和平台。支持Unity、Unreal、Cocos2x、Godot、微信小游戏等\n- 良好的跨平台能力。能在Win,Linux,Mac平台良好运行。\n- 支持所有主流的热更新方案。hybridclr、ilruntime、{x,t,s}lua、puerts等\n- 生成的代码未调用任何反射接口，兼容[Obfuz](https://github.com/focus-creative-games/obfuz)、Obfuscator、Confuser、.Net Refactor等常见代码混淆和加固工具。\n- 清晰优雅的生成管线，很容易在luban基础上进行二次开发，定制出适合自己项目风格的配置工具。\n\n## 文档\n\n- [官方文档](https://www.datable.cn/docs/intro)\n- [快速上手](https://www.datable.cn/docs/guide/install)\n- **示例项目** ([github](https://github.com/focus-creative-games/luban_examples)) ([gitee](https://gitee.com/focus-creative-games/luban_examples))\n\n## 支持与联系\n\n- QQ群: 692890842 （Luban开发交流群）\n- discord: <https://discord.gg/dGY4zzGMJ4>\n- 邮箱: <luban@code-philosophy.com>\n\n## license\n\nLuban is licensed under the [MIT](https://github.com/focus-creative-games/luban/blob/main/LICENSE) license\n","default_branch":"main","files":726,"tree":[".editorconfig",".gitattributes",".github/FUNDING.yml",".github/workflows/sync_gitee.yml",".gitignore",".travis.yml","LICENSE","README.md","README_EN.md","docs/_config.yml","docs/images/Client_Server.png","docs/images/adv/def_01.png","docs/images/adv/def_02.png","docs/images/adv/def_03.png","docs/images/adv/def_04.png","docs/images/adv/def_05.png","docs/images/adv/def_06.png","docs/images/adv/def_07.png","docs/images/adv/def_08.png","docs/images/adv/def_09.png","docs/images/adv/def_10.png","docs/images/adv/def_11.png","docs/images/adv/def_12.png","docs/images/adv/def_13.png","docs/images/adv/def_14.png","docs/images/adv/def_15.png","docs/images/adv/def_16.png","docs/images/adv/def_17.png","docs/images/adv/def_18.png","docs/images/adv/def_19.png","docs/images/adv/def_20.png","docs/images/adv/def_21.png","docs/images/adv/def_22.png","docs/images/adv/def_23.png","docs/images/adv/def_24.png","docs/images/adv/def_25.png","docs/images/adv/def_26.png","docs/images/adv/def_27.png","docs/images/adv/def_28.png","docs/images/adv/def_29.png","docs/images/adv/def_30.png","docs/images/adv/def_31.png","docs/images/adv/def_32.png","docs/images/adv/def_33.png","docs/images/adv/def_34.png","docs/images/adv/def_35.png","docs/images/adv/def_36.png","docs/images/adv/def_37.png","docs/images/adv/def_38.png","docs/images/adv/def_39.png","docs/images/adv/def_40.png","docs/images/adv/def_41.png","docs/images/adv/def_42.png","docs/images/adv/def_43.png","docs/images/adv/def_44.png","docs/images/adv/def_45.png","docs/images/adv/def_46.png","docs/images/adv/def_47.png","docs/images/adv/def_48.png","docs/images/adv/def_49.png","docs/images/adv/def_50.png","docs/images/cases/bean.jpg","docs/images/cases/bean2.jpg","docs/images/cases/collection.jpg","docs/images/cases/enum.jpg","docs/images/cases/ignorefield.jpg","docs/images/cases/l10n_text.jpg","docs/images/cases/multileveltitle.jpg","docs/images/cases/multiline.jpg","docs/images/cases/nullable.jpg","docs/images/cases/primitive_type.jpg","docs/images/cases/quickstart_reward.jpg","docs/images/cases/quickstart_table.jpg","docs/images/cases/sep_bean.jpg","docs/images/cases/sep_container1.jpg","docs/images/cases/sep_container2.jpg","docs/images/cases/simple1.jpg","docs/images/cases/singleton.jpg","docs/images/cases/singleton2.jpg","docs/images/cases/stream.jpg","docs/images/cases/table_list_indep_key.jpg","docs/images/cases/table_list_not_key.jpg","docs/images/cases/table_list_union_key.jpg","docs/images/cases/tag.jpg","docs/images/cases/tag2.jpg","docs/images/cases/title_dynamic_bean.jpg","docs/images/cases/title_enum.jpg","docs/images/cases/title_map.jpg","docs/images/cases/titlelimit.jpg","docs/images/docusaurus-social-card.jpg","docs/images/docusaurus.png","docs/images/dots_release.png","docs/images/easy.svg","docs/images/efficient.svg","docs/images/excel_bean.jpg","docs/images/excel_enum.jpg","docs/images/excel_table.jpg","docs/images/favicon.ico","docs/images/favicon.png","docs/images/flying-seagull.jpg","docs/images/icon.png","docs/images/install/install_01.png","docs/images/install/install_02.png","docs/images/install/install_03.png","docs/images/install/install_04.png","docs/images/install/install_05.png","docs/images/install/install_06.png","docs/images/install/install_07.png","docs/images/install/install_08.png","docs/images/install/install_09.png","docs/images/install/install_10.png","docs/images/logo.png","docs/images/logo.svg","docs/images/luban_edit_tool.png","docs/images/more.png","docs/images/other.png","docs/images/panda-waving.png","docs/images/pipeline.jpg","docs/images/process.jpg","docs/images/python.png","docs/images/reliable-dark.svg","docs/images/reliable.svg","docs/images/ui.png","docs/images/undraw_docusaurus_mountain.svg","docs/images/undraw_docusaurus_react.svg","docs/images/undraw_docusaurus_tree.svg","docs/images/web.png","docs/images/weixin.jpg","docs/images/zhifubao.jpg","docs/sponsor/weixin.JPG","docs/sponsor/zhifubao.JPG","scripts/format.bat","scripts/format.sh","src/.dockerignore","src/.editorconfig","src/Luban.Bson/AssemblyInfo.cs","src/Luban.Bson/BsonDataTarget.cs","src/Luban.Bson/BsonDataVisitor.cs","src/Luban.Bson/Luban.Bson.csproj","src/Luban.CSharp/AssemblyInfo.cs","src/Luban.CSharp/CodeTarget/CsharpBinCodeTarget.cs","src/Luban.CSharp/CodeTarget/CsharpCodeTargetBase.cs","src/Luban.CSharp/CodeTarget/CsharpDotnetJsonCodeTarget.cs","src/Luban.CSharp/CodeTarget/CsharpEditorJsonCodeTarget.cs","src/Luban.CSharp/CodeTarget/CsharpNewtonSoftJsonCodeTarget.cs","src/Luban.CSharp/CodeTarget/CsharpSimpleJsonCodeTarget.cs","src/Luban.CSharp/ConstStrings.cs","src/Luban.CSharp/Luban.CSharp.csproj","src/Luban.CSharp/TemplateExtensions/CsharpBinTemplateExtension.cs","src/Luban.CSharp/TemplateExtensions/CsharpDotNetJsonTemplateExtension.cs","src/Luban.CSharp/TemplateExtensions/CsharpEditorJsonTemplateExtension.cs","src/Luban.CSharp/TemplateExtensions/CsharpNewtonSoftJsonTemplateExtension.cs","src/Luban.CSharp/TemplateExtensions/CsharpSimpleJsonTemplateExtension.cs","src/Luban.CSharp/TemplateExtensions/CsharpTemplateExtension.cs","src/Luban.CSharp/Templates/common/cs/enum.sbn","src/Luban.CSharp/Templates/cs-bin/bean.sbn","src/Luban.CSharp/Templates/cs-bin/table.sbn","src/Luban.CSharp/Templates/cs-bin/tables.sbn","src/Luban.CSharp/Templates/cs-dotnet-json/bean.sbn","src/Luban.CSharp/Templates/cs-dotnet-json/table.sbn","src/Luban.CSharp/Templates/cs-dotnet-json/tables.sbn","src/Luban.CSharp/Templates/cs-editor-json/bean.sbn","src/Luban.CSharp/Templates/cs-editor-json/enum.sbn","src/Luban.CSharp/Templates/cs-newtonsoft-json/bean.sbn","src/Luban.CSharp/Templates/cs-newtonsoft-json/table.sbn","src/Luban.CSharp/Templates/cs-newtonsoft-json/tables.sbn","src/Luban.CSharp/Templates/cs-simple-json/bean.sbn","src/Luban.CSharp/Templates/cs-simple-json/table.sbn","src/Luban.CSharp/Templates/cs-simple-json/tables.sbn","src/Luban.CSharp/TypeUtil.cs","src/Luban.CSharp/TypeVisitors/BinaryDeserializeVisitor.cs","src/Luban.CSharp/TypeVisitors/BinaryUnderlyingDeserializeVisitor.cs","src/Luban.CSharp/TypeVisitors/ConstValueVisitor.cs","src/Luban.CSharp/TypeVisitors/CtorDefaultValueVisitor.cs","src/Luban.CSharp/TypeVisitors/DataToStringVisitor.cs","src/Luban.CSharp/TypeVisitors/DeclaringCollectionRefNameVisitor.cs","src/Luban.CSharp/TypeVisitors/DeclaringTypeNameVisitor.cs","src/Luban.CSharp/TypeVisitors/DotNetJsonDeserializeVisitor.cs","src/Luban.CSharp/TypeVisitors/EditorDeclaringTypeNameVisitor.cs","src/Luban.CSharp/TypeVisitors/EditorInitValueVisitor.cs","src/Luban.CSharp/TypeVisitors/EditorIsRawNullableTypeVisitor.cs","src/Luban.CSharp/TypeVisitors/EditorJsonLoad.cs","src/Luban.CSharp/TypeVisitors/EditorJsonSave.cs","src/Luban.CSharp/TypeVisitors/EditorJsonSaveUnderlying.cs","src/Luban.CSharp/TypeVisitors/EditorJsonSaveUnderlying2.cs","src/Luban.CSharp/TypeVisitors/EditorNeedInitVisitor.cs","src/Luban.CSharp/TypeVisitors/EditorUnderlyingTypeNameVisitor.cs","src/Luban.CSharp/TypeVisitors/IsRawNullableTypeVisitor.cs","src/Luban.CSharp/TypeVisitors/NeedInitFieldVisitor.cs","src/Luban.CSharp/TypeVisitors/NewtonSoftJsonDeserializeVisitor.cs","src/Luban.CSharp/TypeVisitors/RecursiveResolveVisitor.cs","src/Luban.CSharp/TypeVisitors/SimpleJsonDeserializeVisitor.cs","src/Luban.CSharp/TypeVisitors/StringDeserializeVisitor.cs","src/Luban.CSharp/TypeVisitors/UnderlyingDeclaringTypeNameVisitor.cs","src/Luban.Core/AssemblyInfo.cs","src/Luban.Core/BuiltinOptionNames.cs","src/Luban.Core/CodeFormat/CodeFormatManager.cs","src/Luban.Core/CodeFormat/CodeStyleAttribute.cs","src/Luban.Core/CodeFormat/CodeStyles/CodeStyleBase.cs","src/Luban.Core/CodeFormat/CodeStyles/ConfigurableCodeStyle.cs","src/Luban.Core/CodeFormat/CodeStyles/OverlayCodeStyle.cs","src/Luban.Core/CodeFormat/ICodeStyle.cs","src/Luban.Core/CodeFormat/INamingConventionFormatter.cs","src/Luban.Core/CodeFormat/NamingConventionAttribute.cs","src/Luban.Core/CodeFormat/NamingConventionFormatters/CamelCaseFormatter.cs","src/Luban.Core/CodeFormat/NamingConventionFormatters/NoneFormatter.cs","src/Luban.Core/CodeFormat/NamingConventionFormatters/PascalCaseFormatter.cs","src/Luban.Core/CodeFormat/NamingConventionFormatters/SnakeCaseFormatter.cs","src/Luban.Core/CodeFormat/NamingConventionFormatters/UpperCaseFormatter.cs","src/Luban.Core/CodeTarget/AllInOneTemplateCodeTargetBase.cs","src/Luban.Core/CodeTarget/CodeTargetAttribute.cs","src/Luban.Core/CodeTarget/CodeTargetBase.cs","src/Luban.Core/CodeTarget/CodeTargetManager.cs","src/Luban.Core/CodeTarget/CodeWriter.cs","src/Luban.Core/CodeTarget/CommonFileHeaders.cs","src/Luban.Core/CodeTarget/ICodeTarget.cs","src/Luban.Core/CodeTarget/NameLocation.cs","src/Luban.Core/CodeTarget/TemplateCodeTargetBase.cs","src/Luban.Core/CustomBehaviour/BehaviourBaseAttribute.cs","src/Luban.Core/CustomBehaviour/CustomBehaviourManager.cs","src/Luban.Core/CustomBehaviour/ICustomBehaviour.cs","src/Luban.Core/CustomBehaviour/IPriorityBehaviour.cs","src/Luban.Core/DataLoader/DataCreateException.cs","src/Luban.Core/DataLoader/DataLoaderAttribute.cs","src/Luban.Core/DataLoader/DataLoaderBase.cs","src/Luban.Core/DataLoader/DataLoaderManager.cs","src/Luban.Core/DataLoader/FieldNames.cs","src/Luban.Core/DataLoader/IDataLoader.cs","src/Luban.Core/DataTarget/DataExporterAttribute.cs","src/Luban.Core/DataTarget/DataExporterBase.cs","src/Luban.Core/DataTarget/DataTargetAttribute.cs","src/Luban.Core/DataTarget/DataTargetBase.cs","src/Luban.Core/DataTarget/DataTargetManager.cs","src/Luban.Core/DataTarget/IDataExporter.cs","src/Luban.Core/DataTarget/IDataTarget.cs","src/Luban.Core/DataTransformer/DataTransfomerBase.cs","src/Luban.Core/DataTransformer/DataTransformerAttribute.cs","src/Luban.Core/DataTransformer/IDataTransformer.cs","src/Luban.Core/DataVisitors/DataActionHelpVisitor.cs","src/Luban.Core/DataVisitors/DataActionHelpVisitor2.cs","src/Luban.Core/DataVisitors/IDataActionVisitor.cs","src/Luban.Core/DataVisitors/IDataActionVisitor2.cs","src/Luban.Core/DataVisitors/IDataFuncVisitor.cs","src/Luban.Core/DataVisitors/IDataFuncVisitor2.cs","src/Luban.Core/DataVisitors/IsDefaultValueVisitor.cs","src/Luban.Core/DataVisitors/IsSimpleLiteralDataVisitor.cs","src/Luban.Core/DataVisitors/TableVisitor.cs","src/Luban.Core/DataVisitors/ToLiteralVisitorBase.cs","src/Luban.Core/DataVisitors/ToStringVisitor.cs","src/Luban.Core/DataVisitors/ToStringVisitor2.cs","src/Luban.Core/Datas/DArray.cs","src/Luban.Core/Datas/DBean.cs","src/Luban.Core/Datas/DBool.cs","src/Luban.Core/Datas/DByte.cs","src/Luban.Core/Datas/DDateTime.cs","src/Luban.Core/Datas/DDouble.cs","src/Luban.Core/Datas/DEnum.cs","src/Luban.Core/Datas/DFloat.cs","src/Luban.Core/Datas/DInt.cs","src/Luban.Core/Datas/DList.cs","src/Luban.Core/Datas/DLong.cs","src/Luban.Core/Datas/DMap.cs","src/Luban.Core/Datas/DSet.cs","src/Luban.Core/Datas/DShort.cs","src/Luban.Core/Datas/DString.cs","src/Luban.Core/Datas/DType.cs","src/Luban.Core/Defs/DefAssembly.cs","src/Luban.Core/Defs/DefBean.cs","src/Luban.Core/Defs/DefEnum.cs","src/Luban.Core/Defs/DefField.cs","src/Luban.Core/Defs/DefRefGroup.cs","src/Luban.Core/Defs/DefTable.cs","src/Luban.Core/Defs/DefTypeBase.cs","src/Luban.Core/Defs/LoadDefException.cs","src/Luban.Core/Defs/Record.cs","src/Luban.Core/Defs/TableDataInfo.cs","src/Luban.Core/Defs/TableMode.cs","src/Luban.Core/EnvManager.cs","src/Luban.Core/GenerationContext.cs","src/Luban.Core/GlobalConfigLoader.cs","src/Luban.Core/IGenerationContext.cs","src/Luban.Core/L10N/ITextProvider.cs","src/Luban.Core/L10N/L10NManager.cs","src/Luban.Core/L10N/TextProviderAttribute.cs","src/Luban.Core/Luban.Core.csproj","src/Luban.Core/OutputFile.cs","src/Luban.Core/OutputFileManifest.cs","src/Luban.Core/OutputSaver/IOutputSaver.cs","src/Luban.Core/OutputSaver/LocalFileSaver.cs","src/Luban.Core/OutputSaver/NullSaver.cs","src/Luban.Core/OutputSaver/OutputSaverAttribute.cs","src/Luban.Core/OutputSaver/OutputSaverBase.cs","src/Luban.Core/OutputSaver/OutputSaverManager.cs","src/Luban.Core/Pipeline/DefaultPipeline.cs","src/Luban.Core/Pipeline/IPipeline.cs","src/Luban.Core/Pipeline/PipelineArguments.cs","src/Luban.Core/Pipeline/PipelineAttribute.cs","src/Luban.Core/Pipeline/PipelineManager.cs","src/Luban.Core/PostProcess/IPostProcess.cs","src/Luban.Core/PostProcess/PostProcessAttribute.cs","src/Luban.Core/PostProcess/PostProcessBase.cs","src/Luban.Core/PostProcess/PostProcessManager.cs","src/Luban.Core/RawDefs/RawAssembly.cs","src/Luban.Core/RawDefs/RawBean.cs","src/Luban.Core/RawDefs/RawEnum.cs","src/Luban.Core/RawDefs/RawField.cs","src/Luban.Core/RawDefs/RawGroup.cs","src/Luban.Core/RawDefs/RawRefGroup.cs","src/Luban.Core/RawDefs/RawTable.cs","src/Luban.Core/RawDefs/RawTarget.cs","src/Luban.Core/RawDefs/TypeMapper.cs","src/Luban.Core/RegisterBehaviourAttribute.cs","src/Luban.Core/Schema/BeanSchemaLoaderAttribute.cs","src/Luban.Core/Schema/IBeanSchemaLoader.cs","src/Luban.Core/Schema/IConfigLoader.cs","src/Luban.Core/Schema/ISchemaCollector.cs","src/Luban.Core/Schema/ISchemaLoader.cs","src/Luban.Core/Schema/ITableImporter.cs","src/Luban.Core/Schema/LubanConfig.cs","src/Luban.Core/Schema/SchemaCollectorAttribute.cs","src/Luban.Core/Schema/SchemaCollectorBase.cs","src/Luban.Core/Schema/SchemaFileInfo.cs","src/Luban.Core/Schema/SchemaLoaderAttribute.cs","src/Luban.Core/Schema/SchemaLoaderBase.cs","src/Luban.Core/Schema/SchemaManager.cs","src/Luban.Core/Schema/TableImporterAttribute.cs","src/Luban.Core/Serialization/BeanBase.cs","src/Luban.Core/Serialization/ByteBuf.cs","src/Luban.Core/Serialization/ByteBufPool.cs","src/Luban.Core/Serialization/EUnmarshalError.cs","src/Luban.Core/Serialization/FieldTag.cs","src/Luban.Core/Serialization/ISerializable.cs","src/Luban.Core/Serialization/ITypeId.cs","src/Luban.Core/Serialization/SerializationException.cs","src/Luban.Core/Serialization/ThreadLocalTemporalByteBufPool.cs","src/Luban.Core/SimpleLauncher.cs","src/Luban.Core/TemplateExtensions/ContextTemplateExtension.cs","src/Luban.Core/TemplateExtensions/TypeTemplateExtension.cs","src/Luban.Core/Tmpl/TemplateManager.cs","src/Luban.Core/TypeVisitors/AllFalseVisitor.cs","src/Luban.Core/TypeVisitors/AllTrueVisitor.cs","src/Luban.Core/TypeVisitors/DecoratorActionVisitor.cs","src/Luban.Core/TypeVisitors/DecoratorFuncVisitor.cs","src/Luban.Core/TypeVisitors/DeepCompareTypeDefine.cs","src/Luban.Core/TypeVisitors/ITypeActionVisitor.cs","src/Luban.Core/TypeVisitors/ITypeFuncVisitor.cs","src/Luban.Core/TypeVisitors/IsValidTableKeyTypeVisitor.cs","src/Luban.Core/TypeVisitors/RawDefineTypeNameVisitor.cs","src/Luban.Core/TypeVisitors/RefTypeVisitor.cs","src/Luban.Core/TypeVisitors/TypeActionVisitorAdaptor.cs","src/Luban.Core/Types/TArray.cs","src/Luban.Core/Types/TBean.cs","src/Luban.Core/Types/TBool.cs","src/Luban.Core/Types/TByte.cs","src/Luban.Core/Types/TDateTime.cs","src/Luban.Core/Types/TDouble.cs","src/Luban.Core/Types/TEnum.cs","src/Luban.Core/Types/TFloat.cs","src/Luban.Core/Types/TInt.cs","src/Luban.Core/Types/TList.cs","src/Luban.Core/Types/TLong.cs","src/Luban.Core/Types/TMap.cs","src/Luban.Core/Types/TSet.cs","src/Luban.Core/Types/TShort.cs","src/Luban.Core/Types/TString.cs","src/Luban.Core/Types/TType.cs","src/Luban.Core/Utils/AtomicLong.cs","src/Luban.Core/Utils/CollectionExtensions.cs","src/Luban.Core/Utils/DataExtensions.cs","src/Luban.Core/Utils/DataUtil.cs","src/Luban.Core/Utils/DefExtensions.cs","src/Luban.Core/Utils/DefUtil.cs","src/Luban.Core/Utils/ExceptionUtil.cs","src/Luban.Core/Utils/ExternalTypeUtil.cs","src/Luban.Core/Utils/FileCleaner.cs","src/Luban.Core/Utils/FileUtil.cs","src/Luban.Core/Utils/ListEqualityComparer.cs","src/Luban.Core/Utils/LoadXmlException.cs","src/Luban.Core/Utils/StringUtil.cs","src/Luban.Core/Utils/TemplateUtil.cs","src/Luban.Core/Utils/TimeUtil.cs","src/Luban.Core/Utils/TimeZoneUtil.cs","src/Luban.Core/Utils/TypeUtil.cs","src/Luban.Core/Utils/XmlUtil.cs","src/Luban.Core/Validator/DataValidatorBase.cs","src/Luban.Core/Validator/DataValidatorContext.cs","src/Luban.Core/Validator/DataValidatorVisitor.cs","src/Luban.Core/Validator/IDataValidator.cs","src/Luban.Core/Validator/ITableValidator.cs","src/Luban.Core/Validator/ValidatorAttribute.cs","src/Luban.Core/Validator/ValidatorManager.cs","src/Luban.Core/Validator/ValidatorType.cs","src/Luban.Cpp/AssemblyInfo.cs","src/Luban.Cpp/CodeTarget/CppBinRawptrCodeTarget.cs","src/Luban.Cpp/CodeTarget/CppBinSharedptrCodeTarget.cs","src/Luban.Cpp/CodeTarget/CppCodeTargetBase.cs","src/Luban.Cpp/Luban.Cpp.csproj","src/Luban.Cpp/TemplateExtensions/CppRawptrBinTemplateExtension.cs","src/Luban.Cpp/TemplateExtensions/CppSharedptrBinTemplateExtension.cs","src/Luban.Cpp/TemplateExtensions/CppTemplateExtension.cs"],"storefront":"/r/focus-creative-games","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/focus-creative-games/luban/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}