From 1c611ec4e25375e5667850c0fde95c3ff96581ec Mon Sep 17 00:00:00 2001 From: William Lee Date: Sun, 23 Jun 2024 19:47:44 +0800 Subject: [PATCH 1/3] (FEA) Compound is now fully featured with literalisation of Status along with its printing! --- CMakeLists.txt | 69 ++++++++++++++++++++++++++++++++++++++- Status/include/status.h | 46 ++++++++++++++++---------- Status/src/status.c | 72 +++++++++++++++++++++++++++++------------ common.h | 2 ++ 4 files changed, 151 insertions(+), 38 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 05e7112..bae425e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,74 @@ project (Compound) set(CMAKE_C_COMPILER gcc) -add_compile_options(-g -std=c99 -Wall -Wextra -D__DEBUG__) +set(WALL -Waddress + -Warray-compare + -Warray-parameter=2 + -Wbool-compare + -Wbool-operation + -Wchar-subscripts + -Wcomment + -Wdangling-else + -Wdangling-pointer=2 + -Wenum-compare + -Wenum-int-mismatch + -Wformat=1 + -Wformat-contains-nul + -Wformat-diag + -Wformat-extra-args + -Wformat-overflow=1 + -Wformat-truncation=1 + -Wformat-zero-length + -Wframe-address + -Wimplicit + -Wimplicit-function-declaration + -Wimplicit-int + -Winfinite-recursion + -Wint-in-bool-context + -Wlogical-not-parentheses + -Wmain + -Wmaybe-uninitialized + -Wmemset-elt-size + -Wmemset-transposed-args + -Wmisleading-indentation + -Wmismatched-dealloc + -Wmissing-attributes + -Wmissing-braces + -Wmultistatement-macros + -Wnonnull + -Wnonnull-compare + -Wopenmp-simd + -Wpacked-not-aligned + -Wparentheses + -Wpointer-sign + -Wrestrict + -Wreturn-type + -Wsequence-point + -Wsizeof-array-div + -Wsizeof-pointer-div + -Wsizeof-pointer-memaccess + -Wstrict-aliasing + -Wstrict-overflow=1 + -Wswitch + -Wtautological-compare + -Wtrigraphs + -Wuninitialized + -Wunknown-pragmas + -Wunused + -Wunused-but-set-variable + -Wunused-const-variable=1 + -Wunused-function + -Wunused-label + -Wunused-local-typedefs + -Wunused-value + -Wunused-variable + -Wuse-after-free=2 + -Wvla-parameter + -Wvolatile-register-var + -Wzero-length-bounds +) + +add_compile_options(-g -std=c99 ${WALL} -Wextra -D__DEBUG__) set(SHARED_SOURCE MemMan/src/memman.c diff --git a/Status/include/status.h b/Status/include/status.h index 245de19..bd11e72 100644 --- a/Status/include/status.h +++ b/Status/include/status.h @@ -187,7 +187,8 @@ bool Location_Equals(Location lc1, Location lc2); Status Status_Literalise(Status *inst, char *buff); Status Status_LiteraliseForReport(Status *inst, char *buff); bool Status_Equal(Status *stat1, Status *stat2); -void StatusUtils_Dump(Status *inst, Status *store, int idx); +// void StatusUtils_Dump(Status *inst, Status **store, int idx); +void StatusUtils_Dump(Status *inst, Status *store); bool StatusUtils_HasPrev(Status inst); bool StatusUtils_IsOkay(Status inst); bool StatusUtils_IsRecursive(Status inst); @@ -406,28 +407,39 @@ static inline Status PrintStatus(Status s) static inline void PrintStatusDump(Status s) { /* Create dump. */ - Status store = s; - const int dump_len = StatusUtils_Depth(&store); + const int dump_len = StatusUtils_Depth(&s); Status dump[dump_len]; - StatusUtils_Dump(&store, dump, dump_len); + Status current = s; + dump[0] = current; // Put self at leading. + for (register int i = 1; i < dump_len; i++) { + // StatusUtils_Dump will only access (storage) the prev. + // It does not include this status itself. + StatusUtils_Dump(¤t, &dump[i]); + current = *current.prev; + } /* Output by iterating. */ for (register int i = 0; i < dump_len; i++) { - seek(PrintStatus(dump[i]), { // Get returning status. + + unsure(PrintStatus(dump[i]), !_.value, { + (void)fprintf(stderr, "Unable to literalise.\n"); + }) + + // seek(PrintStatus(dump[i]), { // Get returning status. - /* Handle TraditionalFunctionReturn. */ - nest(_, __, unsure(__, !__.value, { // No bytes were written to buffer. - (void)fprintf(stderr, "Unable to literalise.\n"); - return; - })); + // /* Handle TraditionalFunctionReturn. */ + // nest(_, __, unsure(__, !__.value, { // No bytes were written to buffer. + // (void)fprintf(stderr, "Unable to literalise.\n"); + // return; + // })); - // Handle abnormal status. - nest(_, __, notok(__, { - /* Output the description as explanation. */ - (void)fprintf(stderr, "%s\n", __.description); - return; - })); - }); + // // Handle abnormal status. + // nest(_, __, notok(__, { + // /* Output the description as explanation. */ + // (void)fprintf(stderr, "%s\n", __.description); + // return; + // })); + // }); } } diff --git a/Status/src/status.c b/Status/src/status.c index f94a3fb..dba2d28 100644 --- a/Status/src/status.c +++ b/Status/src/status.c @@ -6,11 +6,11 @@ Status Location_Literalise(Location *inst, char *buff) nonull(buff, apply(UnavailableBuffer)); /* Literalise line. */ - char line_buff[LITERALISATION_LENGTH_MAXIMUM]; + char line_buff[LITERALISATION_LENGTH_MAXIMUM] = EMPTY; Utils_LiteraliseInteger(inst->line, line_buff); where( - !snprintf(buff, LITERALISATION_LENGTH_MAXIMUM, + snprintf(buff, LITERALISATION_LENGTH_MAXIMUM, LOCATION_LITERALISE_FORMAT,inst->file,inst->line,inst->func), return apply(value(TraditionalFunctionReturn, _)); ); @@ -48,8 +48,10 @@ Status Status_Literalise(Status *inst, char *buff) nonull(buff, apply(UnavailableBuffer)); /* Literalise loc. */ - char loc_buff[LITERALISATION_LENGTH_MAXIMUM]; - notok(Location_Literalise(&inst->loc, loc_buff), { + char loc_buff[LITERALISATION_LENGTH_MAXIMUM] = EMPTY; + (void)printf("%s\n", loc_buff); + unsure(Location_Literalise(&inst->loc, loc_buff), !_.value, { + (void)printf("failed on loc liter.\n"); return apply(_); }); @@ -107,31 +109,61 @@ bool StatusUtils_IsRecursive(Status stat) return (stat.prev && stat.prev == &stat); } -void StatusUtils_Dump(Status *inst, Status *store, int idx) +void StatusUtils_Dump(Status *inst, Status *store) { - /* Skip when either stat or stat.prev is unavailable, or, idx is invalid. */ - svoid((!inst || !store || idx < 0)); - - store[idx] = *inst; + /* Skip when store is unavailable, or, inst is unavailable, + recursive or does not have any predecessor. */ + svoid(!inst || !store + || StatusUtils_IsRecursive(*inst) || !StatusUtils_HasPrev(*inst)); - StatusUtils_Dump(inst->prev, store, --idx); + *store = *inst->prev; } +// void StatusUtils_Dump(Status *inst, Status **store, int idx) +// { +// /* Skip when having invalid inst, store or idx. */ +// svoid(!inst || !store || idx < 0 || StatusUtils_IsRecursive(*inst)); + +// // store[idx] = *inst; +// *store[idx] = (Status){ +// .identity = inst->identity, +// .value = inst->value, +// .description = inst->description, +// .characteristic = inst->characteristic, +// .loc = inst->loc, +// .prev = inst->prev +// }; + +// (void)printf("idx: %d\n", idx); + +// StatusUtils_Dump(inst->prev, store, (idx - 1)); +// } + int StatusUtils_Depth(Status *stat) { /* Skip unavailable stat. */ state((!stat || !stat->prev), -1); - - Status *p = stat; // Include this layer of Status. - register int cnt; - for (cnt = 0; (!StatusUtils_IsRecursive(*p) - && StatusUtils_HasPrev(*p)); cnt++) { - (void)printf("Depth: %d\n", cnt); - p = p->prev; + + /* Set up counter. */ + int cnt = 1; + /* Set up current status indication representor. */ + Status current = *stat; + /* Iterate to accumulate. */ + while (current.prev) { + current = *current.prev; + cnt += 1; } - (void)printf("Depth returns: %d\n", cnt); return cnt; + + // Status *current = stat; // Include this layer of Status. + // register int cnt; + // for (cnt = 0; (!StatusUtils_IsRecursive(*current) + // && StatusUtils_HasPrev(*current)); cnt++) { + // current = current->prev; + // } + + // return cnt; } Status Report_Create(Report *inst, Status *stat, FILE *dest, char *initiator, @@ -199,10 +231,10 @@ Status Report_Literalise(Report *inst, char *buff) nonull(buff, apply(UnavailableBuffer)); /* Report literalisation. */ - char report_literalising[LITERALISATION_LENGTH_MAXIMUM]; + char report_literalising[LITERALISATION_LENGTH_MAXIMUM] = EMPTY; /** Status literalisation. **/ - char status_literalising[LITERALISATION_LENGTH_MAXIMUM]; + char status_literalising[LITERALISATION_LENGTH_MAXIMUM] = EMPTY; /* Fault detection on status literalisation. */ // settle(Status_LiteraliseForReport(&inst->status, status_literalising), diff --git a/common.h b/common.h index 59fe052..fb48fa8 100644 --- a/common.h +++ b/common.h @@ -8,6 +8,8 @@ # include # include +# define EMPTY {0} + /* Get the literal. */ # define nameof(obj) #obj From 73e766eef70162ccdd577781fbf1cd7b32ed9355 Mon Sep 17 00:00:00 2001 From: William Date: Mon, 24 Jun 2024 21:48:15 +0800 Subject: [PATCH 2/3] (MOD) Forbade ignoring test.c for github action. --- .gitignore | 4 ---- Utils/include/utils.h | 4 ---- 2 files changed, 8 deletions(-) diff --git a/.gitignore b/.gitignore index 2c56588..7b8efe2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ *CMakeFiles/* *CMakeCache* cmake_install.cmake -*[tT]est* *~ gitwork work @@ -13,10 +12,7 @@ todo_stack getReady.sh base_type.c sample -<<<<<<< HEAD compile -======= ->>>>>>> refs/remotes/master/master .vscode/ todo vsc* diff --git a/Utils/include/utils.h b/Utils/include/utils.h index 30684e1..bb8df74 100644 --- a/Utils/include/utils.h +++ b/Utils/include/utils.h @@ -2,10 +2,6 @@ # define COMPOUND_UTILS_H # include -# include -# include -# include -# include # include # include From 871bab317b6a0090c24eb2fbaea5d5d746039a87 Mon Sep 17 00:00:00 2001 From: William Date: Mon, 24 Jun 2024 21:59:46 +0800 Subject: [PATCH 3/3] (ADD) Added test.c for testing on github action. --- .gitignore | 1 + CompoundTest | Bin 0 -> 112072 bytes Utils/include/utils.h | 2 ++ test.c | 21 +++++++++++++++++++++ 4 files changed, 24 insertions(+) create mode 100755 CompoundTest create mode 100644 test.c diff --git a/.gitignore b/.gitignore index 7b8efe2..50f0015 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ libcompound.so ccwarn CMakeLists_default.txt genwarn.sh +test.sh diff --git a/CompoundTest b/CompoundTest new file mode 100755 index 0000000000000000000000000000000000000000..6e020d4d471bfc6a7084a4dfecf0847ca642cf74 GIT binary patch literal 112072 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 P +# include # include # include diff --git a/test.c b/test.c new file mode 100644 index 0000000..2dd5968 --- /dev/null +++ b/test.c @@ -0,0 +1,21 @@ +#include +#include + +Status Main(void) +{ + cat("Hello, Compound!"); + + cat("\n"); + + cat("The Status literalisation and printing of \"" + nameof(MaximumLiteralisationLengthExceeded)"\":"); + + PrintStatusDump(apply(MaximumLiteralisationLengthExceeded)); + + return apply(NormalStatus); +} + +int main(void) +{ + return Main().value; +}