From 6785966327add184bfd2db046f9a365ce6a363d7 Mon Sep 17 00:00:00 2001 From: impressionyang Date: Wed, 21 Aug 2024 16:26:55 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=F0=9F=93=9D=20ok=20test=20with=20uti?= =?UTF-8?q?lities:=20queue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .clang-format | 174 ++++++++++++++++++++++++++++++++++ .gitmodules | 3 + Makefile | 1 + core | Bin 0 -> 442368 bytes main.c | 2 + test.h | 47 +++++++++ utilities/imp_types | 1 + utilities/imp_util_ring_queue | 2 +- 8 files changed, 229 insertions(+), 1 deletion(-) create mode 100644 .clang-format create mode 100644 core create mode 100644 test.h create mode 160000 utilities/imp_types diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..fbd0313 --- /dev/null +++ b/.clang-format @@ -0,0 +1,174 @@ +--- +# 语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto +Language: Cpp +# BasedOnStyle: LLVM +# 访问说明符(public、private等)的偏移 +AccessModifierOffset: -4 +# 开括号(开圆括号、开尖括号、开方括号)后的对齐: Align, DontAlign, AlwaysBreak(总是在开括号后换行) +AlignAfterOpenBracket: Align +# 连续赋值时,对齐所有等号 +AlignConsecutiveAssignments: true +# 连续声明时,对齐所有声明的变量名 +AlignConsecutiveDeclarations: true +# 左对齐逃脱换行(使用反斜杠换行)的反斜杠 +AlignEscapedNewlinesLeft: true +# 水平对齐二元和三元表达式的操作数 +AlignOperands: true +# 对齐连续的尾随的注释 +AlignTrailingComments: true +# 允许函数声明的所有参数在放在下一行 +AllowAllParametersOfDeclarationOnNextLine: true +# 允许短的块放在同一行 +AllowShortBlocksOnASingleLine: false +# 允许短的case标签放在同一行 +AllowShortCaseLabelsOnASingleLine: false +# 允许短的函数放在同一行: None, InlineOnly(定义在类中), Empty(空函数), Inline(定义在类中,空函数), All +AllowShortFunctionsOnASingleLine: None +# 允许短的if语句保持在同一行 +AllowShortIfStatementsOnASingleLine: false +# 允许短的循环保持在同一行 +AllowShortLoopsOnASingleLine: false +# 总是在定义返回类型后换行(deprecated) +AlwaysBreakAfterDefinitionReturnType: None +# 总是在返回类型后换行: None, All, TopLevel(顶级函数,不包括在类中的函数), +# AllDefinitions(所有的定义,不包括声明), TopLevelDefinitions(所有的顶级函数的定义) +AlwaysBreakAfterReturnType: None +# 总是在多行string字面量前换行 +AlwaysBreakBeforeMultilineStrings: false +# 总是在template声明后换行 +AlwaysBreakTemplateDeclarations: false +# false表示函数实参要么都在同一行,要么都各自一行 +BinPackArguments: true +# false表示所有形参要么都在同一行,要么都各自一行 +BinPackParameters: true +# 大括号换行,只有当BreakBeforeBraces设置为Custom时才有效 +BraceWrapping: + # class定义后面 + AfterClass: true + # 控制语句后面 + AfterControlStatement: false + # enum定义后面 + AfterEnum: true + # 函数定义后面 + AfterFunction: true + # 命名空间定义后面 + AfterNamespace: true + # ObjC定义后面 + AfterObjCDeclaration: false + # struct定义后面 + AfterStruct: true + # union定义后面 + AfterUnion: false + # catch之前 + BeforeCatch: true + # else之前 + BeforeElse: false + # 缩进大括号 + IndentBraces: false +# 在二元运算符前换行: None(在操作符后换行), NonAssignment(在非赋值的操作符前换行), All(在操作符前换行) +BreakBeforeBinaryOperators: NonAssignment +# 在大括号前换行: Attach(始终将大括号附加到周围的上下文), Linux(除函数、命名空间和类定义,与Attach类似), +# Mozilla(除枚举、函数、记录定义,与Attach类似), Stroustrup(除函数定义、catch、else,与Attach类似), +# Allman(总是在大括号前换行), GNU(总是在大括号前换行,并对于控制语句的大括号增加额外的缩进), WebKit(在函数前换行), Custom +# 注:这里认为语句块也属于函数 +BreakBeforeBraces: Custom +# 在三元运算符前换行 +BreakBeforeTernaryOperators: true +# 在构造函数的初始化列表的逗号前换行 +BreakConstructorInitializersBeforeComma: false +# 每行字符的限制,0表示没有限制 +ColumnLimit: 80 +# 描述具有特殊意义的注释的正则表达式,它不应该被分割为多行或以其它方式改变 +CommentPragmas: '^ IWYU pragma:' +# 构造函数的初始化列表要么都在同一行,要么都各自一行 +ConstructorInitializerAllOnOneLineOrOnePerLine: false +# 构造函数的初始化列表的缩进宽度 +ConstructorInitializerIndentWidth: 4 +# 延续的行的缩进宽度 +ContinuationIndentWidth: 4 +# 去除C++11的列表初始化的大括号{后和}前的空格 +Cpp11BracedListStyle: false +# 继承最常用的指针和引用的对齐方式 +DerivePointerAlignment: false +# 关闭格式化 +DisableFormat: false +# 自动检测函数的调用和定义是否被格式为每行一个参数(Experimental) +ExperimentalAutoDetectBinPacking: false +# 需要被解读为foreach循环而不是函数调用的宏 +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +# 对#include进行排序,匹配了某正则表达式的#include拥有对应的优先级,匹配不到的则默认优先级为INT_MAX(优先级越小排序越靠前), +# 可以定义负数优先级从而保证某些#include永远在最前面 +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +# 缩进case标签 +IndentCaseLabels: true +# 缩进宽度 +IndentWidth: 4 +# 函数返回类型换行时,缩进函数声明或函数定义的函数名 +IndentWrappedFunctionNames: false +# 保留在块开始处的空行 +KeepEmptyLinesAtTheStartOfBlocks: true +# 开始一个块的宏的正则表达式 +MacroBlockBegin: '' +# 结束一个块的宏的正则表达式 +MacroBlockEnd: '' +# 连续空行的最大数量 +MaxEmptyLinesToKeep: 1 +# 命名空间的缩进: None, Inner(缩进嵌套的命名空间中的内容), All +NamespaceIndentation: Inner +# 使用ObjC块时缩进宽度 +ObjCBlockIndentWidth: 4 +# 在ObjC的@property后添加一个空格 +ObjCSpaceAfterProperty: false +# 在ObjC的protocol列表前添加一个空格 +ObjCSpaceBeforeProtocolList: true +# 在call(后对函数调用换行的penalty +PenaltyBreakBeforeFirstCallParameter: 19 +# 在一个注释中引入换行的penalty +PenaltyBreakComment: 300 +# 第一次在<<前换行的penalty +PenaltyBreakFirstLessLess: 120 +# 在一个字符串字面量中引入换行的penalty +PenaltyBreakString: 1000 +# 对于每个在行字符数限制之外的字符的penalty +PenaltyExcessCharacter: 1000000 +# 将函数的返回类型放到它自己的行的penalty +PenaltyReturnTypeOnItsOwnLine: 60 +# 指针和引用的对齐: Left, Right, Middle +PointerAlignment: Left +# 允许重新排版注释 +ReflowComments: false +# 允许排序#include +SortIncludes: false +# 在C风格类型转换后添加空格 +SpaceAfterCStyleCast: false +# 在赋值运算符之前添加空格 +SpaceBeforeAssignmentOperators: true +# 开圆括号之前添加一个空格: Never, ControlStatements, Always +SpaceBeforeParens: ControlStatements +# 在空的圆括号中添加空格 +SpaceInEmptyParentheses: false +# 在尾随的评论前添加的空格数(只适用于//) +SpacesBeforeTrailingComments: 2 +# 在尖括号的<后和>前添加空格 +SpacesInAngles: false +# 在容器(ObjC和JavaScript的数组和字典等)字面量中添加空格 +SpacesInContainerLiterals: true +# 在C风格类型转换的括号中添加空格 +SpacesInCStyleCastParentheses: false +# 在圆括号的(后和)前添加空格 +SpacesInParentheses: false +# 在方括号的[后和]前添加空格,lamda表达式和未指明大小的数组的声明不受影响 +SpacesInSquareBrackets: false +# 标准: Cpp03, Cpp11, Auto +Standard: Cpp11 +# tab宽度 +TabWidth: 4 +# 使用tab字符: Never, ForIndentation, ForContinuationAndIndentation, Always +UseTab: Never +... diff --git a/.gitmodules b/.gitmodules index 7a33afb..5a4d6df 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "utilities/imp_util_ring_queue"] path = utilities/imp_util_ring_queue url = ssh://git@192.168.124.18:222/Utilities/imp_util_ring_queue.git +[submodule "utilities/imp_types"] + path = utilities/imp_types + url = ssh://git@192.168.124.18:222/Utilities/imp_types.git diff --git a/Makefile b/Makefile index ddac678..e6f7a1d 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,7 @@ HDR_FILES_SUFFIX := %.h # add build flags CFLAGS += -fdiagnostics-color=always -g CFLAGS += -lm +CFLAGS += -DIMP_PRINT_ON -DIMP_PLATFORM=1 # define func to remove_same_str for debug: $(info get seen ${seen}) define remove_same_str = diff --git a/core b/core new file mode 100644 index 0000000000000000000000000000000000000000..510b3e82d7396b6380a8fff5ae4a834e1a22cc01 GIT binary patch literal 442368 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 literal 0 HcmV?d00001 diff --git a/main.c b/main.c index c3a1df3..80ff44a 100644 --- a/main.c +++ b/main.c @@ -1,9 +1,11 @@ #include "test_funcs.h" #include +#include "test.h" int main(int argc, char const *argv[]) { printf("start c test\r\n"); hello(); + run_ring_queue_test(argc, argv); return 0; } diff --git a/test.h b/test.h new file mode 100644 index 0000000..ed0e8ab --- /dev/null +++ b/test.h @@ -0,0 +1,47 @@ +/** + * @file test.h + * @author Alvin Young (impressionyang@outlook.com) + * @brief + * @version 0.1 + * @date 2024-08-21 + * + * _ _ + * (_)_ _ ___ _______ ___ ___ (_)__ ___ __ _____ ____ ___ _ + * / / ' \/ _ \/ __/ -_|_-<(_- + * Date Version Author Description + * 2024-08-21 v1.0 Alvin Young 首次创建 + * + * + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __TEST_H__ +#define __TEST_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include +/* define --------------------------------------------------------------------*/ +/* typedef -------------------------------------------------------------------*/ +/* variables -----------------------------------------------------------------*/ +/* Private function(only *.c) -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +extern int run_ring_queue_test(int argc, char const* argv[]); + +#ifdef __cplusplus +} +#endif +#endif //__TEST_H__ + +/* + * EOF + */ \ No newline at end of file diff --git a/utilities/imp_types b/utilities/imp_types new file mode 160000 index 0000000..6cf82b2 --- /dev/null +++ b/utilities/imp_types @@ -0,0 +1 @@ +Subproject commit 6cf82b2d2c8f3c944dd93f079f9cc7f0eef6018c diff --git a/utilities/imp_util_ring_queue b/utilities/imp_util_ring_queue index 0fe7ebe..19038b9 160000 --- a/utilities/imp_util_ring_queue +++ b/utilities/imp_util_ring_queue @@ -1 +1 @@ -Subproject commit 0fe7ebee80fcdbb980503d5f3007b1456ffe9f4a +Subproject commit 19038b914b7d472556ab7e8445596a14d9fc038f