This commit is contained in:
William
2024-06-25 22:19:27 +08:00
13 changed files with 717 additions and 140 deletions

View File

@@ -1,77 +0,0 @@
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: CMake on multiple platforms
on:
schedule:
- cron: "0 2 * * 1-5"
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false
# Set up a matrix to run the following 3 configurations:
# 1. <Windows, Release, latest MSVC compiler toolchain on the default runner image, default generator>
# 2. <Linux, Release, latest GCC compiler toolchain on the default runner image, default generator>
# 3. <Linux, Release, latest Clang compiler toolchain on the default runner image, default generator>
#
# To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list.
matrix:
os: [ubuntu-latest, windows-latest]
build_type: [Release]
c_compiler: [gcc, clang, cl]
include:
- os: windows-latest
c_compiler: cl
cpp_compiler: cl
- os: ubuntu-latest
c_compiler: gcc
cpp_compiler: g++
- os: ubuntu-latest
c_compiler: clang
cpp_compiler: clang++
exclude:
- os: windows-latest
c_compiler: gcc
- os: windows-latest
c_compiler: clang
- os: ubuntu-latest
c_compiler: cl
steps:
- uses: actions/checkout@v4
- name: Set reusable strings
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
id: strings
shell: bash
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-S ${{ github.workspace }}
- name: Build
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}
- name: Test
working-directory: ${{ steps.strings.outputs.build-output-dir }}
# Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --build-config ${{ matrix.build_type }}

View File

@@ -5,16 +5,16 @@ project (Compound)
set(CMAKE_C_COMPILER gcc) set(CMAKE_C_COMPILER gcc)
set(WALL -Waddress set(WALL -Waddress
-Warray-compare # -Warray-compare
-Warray-parameter=2 -Warray-parameter=2
-Wbool-compare -Wbool-compare
-Wbool-operation -Wbool-operation
-Wchar-subscripts -Wchar-subscripts
-Wcomment -Wcomment
-Wdangling-else -Wdangling-else
-Wdangling-pointer=2 # -Wdangling-pointer=2
-Wenum-compare -Wenum-compare
-Wenum-int-mismatch # -Wenum-int-mismatch
-Wformat=1 -Wformat=1
-Wformat-contains-nul -Wformat-contains-nul
-Wformat-diag -Wformat-diag
@@ -26,7 +26,7 @@ set(WALL -Waddress
-Wimplicit -Wimplicit
-Wimplicit-function-declaration -Wimplicit-function-declaration
-Wimplicit-int -Wimplicit-int
-Winfinite-recursion # -Winfinite-recursion
-Wint-in-bool-context -Wint-in-bool-context
-Wlogical-not-parentheses -Wlogical-not-parentheses
-Wmain -Wmain
@@ -65,7 +65,7 @@ set(WALL -Waddress
-Wunused-local-typedefs -Wunused-local-typedefs
-Wunused-value -Wunused-value
-Wunused-variable -Wunused-variable
-Wuse-after-free=2 # -Wuse-after-free=2
-Wvla-parameter -Wvla-parameter
-Wvolatile-register-var -Wvolatile-register-var
-Wzero-length-bounds -Wzero-length-bounds

View File

@@ -5,12 +5,9 @@ Generally, Compound is a library for general-purposes programming which you will
It is worth noticing that, this library is completely aimed for creating another language. That means, every feature update is supposedly to serve the language. It is worth noticing that, this library is completely aimed for creating another language. That means, every feature update is supposedly to serve the language.
--- ---
## BUILDING ## Building
To build Compound, all you need is to type as follow in a terminal:
```shell ```shell
cmake . # Generate "Makefile" cmake . && make
make # Build
``` ```
> *PLEASE NOTICE* > *PLEASE NOTICE*
@@ -35,12 +32,25 @@ Compound, now, roughly divides platform compatibilities into 2 major parts, the
This idea is ready for refinements, you can put up such suggestions and they're welcomed. This idea is ready for refinements, you can put up such suggestions and they're welcomed.
## Installation ## Installation
To install Compound, all you need to do is to run `install`, something like below.
```shell ```shell
./install # (Require root privilege) ./preinstall # (Require root privilege)
./postinstall # (Require root privilege)
``` ```
If you cannot execute ./install script, try to add permission for execution: > *I TELL YOU WHAT*
> *It is for the convenience of project building automation that the installation procedure being devided into two different parts.*
> *In general, the "preinstall" copies the header files into system "include" directory,*
> *while the "postinstall" copies the compiled library into system library directory.*
And if you cannot execute the scripts, try to add permission for execution:
```shell ```shell
chmod +x ./install # (Require root privilege) chmod +x ./the_file_lacks_of_permission_to_execute_and_to_be_honest_i_dont_know_why_do_i_have_to_put_the_name_so_long_that_none_of_you_would_like_to_read_it_through_but_since_you_have_gotten_this_far_congrats_you_are_my_big_star_now_oh_by_the_way_do_you_know_that_the_cat_of_mine_can_actually_talk_cause_last_sunday_when_i_head_to_kitchen_for_some_drinks_and_i_heard_something_mumbling_behind_the_door_and_i_went_up_to_check_what_it_was_and_it_turns_out_that_it_was_my_cat_speaking_and_what_it_said_was_meow
``` ```
## Troubleshoot
For now, we wish more of you to put up issues so that the problems can be spotted.
> *NOT SO FAST*
> *If you got a problem, try to look up for similar or same issues that had been put up already,*
> *'cause you don't want to have your reply simply written something like "ah yeah yeah, we've been through that sometime earlier".*

BIN
Status/StatusTest Executable file

Binary file not shown.

View File

@@ -76,7 +76,7 @@ typedef struct _Status {
# define LOCATION_LITERALISE_FORMAT "at %s:%d, in function `%s\'" # define LOCATION_LITERALISE_FORMAT "at %s:%d, in function `%s\'"
# define STATUS_LITERALISE_FORMAT \ # define STATUS_LITERALISE_FORMAT \
"%s: \"%s\"\n\tpredecessor=<%s> value=(%d) characteristic=[%d]\n\t%s\n" "%s: \"%s\"\n\tpredecessor=<%s> value=(%d) characteristic=(%d)\n\t%s\n"
typedef enum { typedef enum {
REPORT_SENDING_PRIORITY_ALL = 0, // Highest level; least value. REPORT_SENDING_PRIORITY_ALL = 0, // Highest level; least value.
@@ -420,7 +420,10 @@ static inline void PrintStatusDump(Status s)
/* Output by iterating. */ /* Output by iterating. */
for (register int i = 0; i < dump_len; i++) { for (register int i = 0; i < dump_len; i++) {
/* Print out indexer. */
(void)printf("\e[1m[%d/%d]\e[0m", (dump_len - i), dump_len);
/* Print dumped status. */
unsure(PrintStatus(dump[i]), !_.value, { unsure(PrintStatus(dump[i]), !_.value, {
(void)fprintf(stderr, "Unable to literalise.\n"); (void)fprintf(stderr, "Unable to literalise.\n");
}) })

213
Status/status_test.c Normal file
View File

@@ -0,0 +1,213 @@
#include <stdio.h>
#include <time.h>
#include <Compound/status.h>
int main(void) {
Status Example1Status = {.description = "Example1 Status",
.characteristic = STATUS_NORMAL,
.prev = &NormalStatus};
Status Example2Status = {.description = "Example2 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example1Status};
Status Example3Status = {.description = "Example3 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example2Status};
Status Example4Status = {.description = "Example4 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example3Status};
Status Example5Status = {.description = "Example5 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example4Status};
Status Example6Status = {.description = "Example6 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example5Status};
Status Example7Status = {.description = "Example7 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example6Status};
Status Example8Status = {.description = "Example8 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example7Status};
Status Example9Status = {.description = "Example9 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example8Status};
Status Example10Status = {.description = "Example10 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example9Status};
Status Example11Status = {.description = "Example11 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example10Status};
Status Example12Status = {.description = "Example12 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example11Status};
Status Example13Status = {.description = "Example13 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example12Status};
Status Example14Status = {.description = "Example14 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example13Status};
Status Example15Status = {.description = "Example15 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example14Status};
Status Example16Status = {.description = "Example16 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example15Status};
Status Example17Status = {.description = "Example17 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example16Status};
Status Example18Status = {.description = "Example18 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example17Status};
Status Example19Status = {.description = "Example19 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example18Status};
Status Example20Status = {.description = "Example20 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example19Status};
Status Example21Status = {.description = "Example21 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example20Status};
Status Example22Status = {.description = "Example22 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example21Status};
Status Example23Status = {.description = "Example23 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example22Status};
Status Example24Status = {.description = "Example24 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example23Status};
Status Example25Status = {.description = "Example25 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example24Status};
Status Example26Status = {.description = "Example26 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example25Status};
Status Example27Status = {.description = "Example27 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example26Status};
Status Example28Status = {.description = "Example28 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example27Status};
Status Example29Status = {.description = "Example29 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example28Status};
Status Example30Status = {.description = "Example30 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example29Status};
Status Example31Status = {.description = "Example31 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example30Status};
Status Example32Status = {.description = "Example32 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example31Status};
Status Example33Status = {.description = "Example33 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example32Status};
Status Example34Status = {.description = "Example34 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example33Status};
Status Example35Status = {.description = "Example35 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example34Status};
Status Example36Status = {.description = "Example36 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example35Status};
Status Example37Status = {.description = "Example37 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example36Status};
Status Example38Status = {.description = "Example38 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example37Status};
Status Example39Status = {.description = "Example39 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example38Status};
Status Example40Status = {.description = "Example40 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example39Status};
Status Example41Status = {.description = "Example41 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example40Status};
Status Example42Status = {.description = "Example42 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example41Status};
Status Example43Status = {.description = "Example43 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example42Status};
Status Example44Status = {.description = "Example44 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example43Status};
Status Example45Status = {.description = "Example45 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example44Status};
Status Example46Status = {.description = "Example46 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example45Status};
Status Example47Status = {.description = "Example47 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example46Status};
Status Example48Status = {.description = "Example48 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example47Status};
Status Example49Status = {.description = "Example49 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example48Status};
Status Example50Status = {.description = "Example50 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example49Status};
Status Example51Status = {.description = "Example51 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example50Status};
Status Example52Status = {.description = "Example52 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example51Status};
Status Example53Status = {.description = "Example53 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example52Status};
Status Example54Status = {.description = "Example54 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example53Status};
Status Example55Status = {.description = "Example55 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example54Status};
Status Example56Status = {.description = "Example56 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example55Status};
Status Example57Status = {.description = "Example57 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example56Status};
Status Example58Status = {.description = "Example58 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example57Status};
Status Example59Status = {.description = "Example59 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example58Status};
Status Example60Status = {.description = "Example60 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example59Status};
Status Example61Status = {.description = "Example61 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example60Status};
Status Example62Status = {.description = "Example62 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example61Status};
Status Example63Status = {.description = "Example63 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example62Status};
Status Example64Status = {.description = "Example64 Status",
.characteristic = STATUS_NORMAL,
.prev = &Example63Status};
Status statbuff[64] = {{0}};
status_dump(Example64Status, statbuff, 0);
Status *p = &Example64Status;
int cnt = 0;
while (p != NULL) {
(void)printf("%d:%d %s\n", cnt++, p->characteristic, p->description);
p = p->prev;
};
return 0;
}

BIN
Var/VarTest Executable file

Binary file not shown.

26
Var/test.c Normal file
View File

@@ -0,0 +1,26 @@
#include <Compound/var.h>
int main(void)
{
Var v1 = {
.addr = malloc(sizeof(int)),
.sz = sizeof(int)
};
Var v2 = (Var){v1.addr, v1.sz};
wchar_t wbuff[UINT8_MAX + 1] = {};
wchar_t *wp = wbuff;
(void)var_literalise(v1, &wp);
(void)wprintf(L"%ls\n", wp);
(void)var_literalise(v2, &wp);
(void)wprintf(L"%ls\n", wp);
free(v1.addr);
return 0;
}

View File

@@ -1,4 +1,3 @@
#include "Status/include/status.h"
#include <Compound/common.h> #include <Compound/common.h>
#include <Compound/status.h> #include <Compound/status.h>
#include <Compound/catlog.h> #include <Compound/catlog.h>

43
install
View File

@@ -1,43 +0,0 @@
#!/bin/sh
if [ "`whoami`" != "root" ]; then
echo "The script require root privilege to execute properly."
exit 1
fi
# echo "Please ensure the current work directory is the home directory to the project Compound!
# Press enter key to continue..."
# read
SRC="$PWD"
DST=/usr/include/Compound
PROJ=("Array" "Paper" "Pen" "Render" "Status" "Var" "MemMan" "Stack" "Utils"\
"String" "Object")
PROJLEN=${#PROJ[*]}
echo "======== $PROJLEN projects in total ========"
idx=0
while :; do
if [[ $idx -eq $PROJLEN || $idx -gt $PROJLEN ]]; then
break;
fi
p="${PROJ[$idx]}"
cd "$p"
echo "`date` >>> Installing $p"
cp -v include/*.h "$DST"
cd "$SRC"
((idx++))
echo
done
cp -v "common.h" "const.h" "platform.h"\
"name.h" "namescope.h" "type.h" "catlog.h"\
"attr.h" "registry.h" "class.h" "function.h" "$DST"
echo "Installing libcompound:"
cp -v "libcompound.so" "/usr/lib"
printf "\nDone\n"

11
postinstall Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/sh
if [ "$(whoami)" != "root" ]; then
echo "The script require root privilege to execute properly. Current identity: $(whoami)"
exit 1
fi
# Install Compound library.
echo "Installing libcompound:"
cp -v "libcompound.so" "/usr/lib"

35
preinstall Executable file
View File

@@ -0,0 +1,35 @@
#!/bin/sh
if [ "$(whoami)" != "root" ]; then
echo "The script require root privilege to execute properly. Current identity: $(whoami)"
exit 1
fi
SRC="$PWD"
DST=/usr/include/Compound
set -- Array Paper Pen Render Status Var MemMan Stack Utils String Object
# Create directory.
if [ ! -d "$DST" ]; then
mkdir -pv "$DST"
fi
# Install project-like headers.
while :; do
p="$1"
if [ -z "$1" ]; then break; fi
cd "$p" || exit 1
echo "$(date) >>> Installing $p"
cp -v include/*.h "$DST"
cd "$SRC" || exit 1
shift 1
echo
done
# Install individual headers.
cp -v "common.h" "const.h" "platform.h"\
"name.h" "namescope.h" "type.h" "catlog.h"\
"attr.h" "registry.h" "class.h" "function.h" "$DST"
printf "\nDone\n"

408
test.c
View File

@@ -43,7 +43,410 @@ Status Main(void)
// PrintStatusDump(unknown(normal(MaximumLiteralisationLengthExceeded, ":O"), "OMGIDKWTD", 1)); // PrintStatusDump(unknown(normal(MaximumLiteralisationLengthExceeded, ":O"), "OMGIDKWTD", 1));
// PrintStatusDump(apply(extend(MaximumLiteralisationLengthExceeded, normal(UnavailableBuffer, "OMGIDKWTD")))); // PrintStatusDump(apply(extend(MaximumLiteralisationLengthExceeded, normal(UnavailableBuffer, "OMGIDKWTD"))));
PrintStatusDump(MaximumLiteralisationLengthExceeded); // PrintStatusDump(MaximumLiteralisationLengthExceeded);
DEFSTATUS(TestStatus0, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &MaximumLiteralisationLengthExceeded);
DEFSTATUS(TestStatus1, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus0);
DEFSTATUS(TestStatus2, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus1);
DEFSTATUS(TestStatus3, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus2);
DEFSTATUS(TestStatus4, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus3);
DEFSTATUS(TestStatus5, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus4);
DEFSTATUS(TestStatus6, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus5);
DEFSTATUS(TestStatus7, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus6);
DEFSTATUS(TestStatus8, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus7);
DEFSTATUS(TestStatus9, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus8);
DEFSTATUS(TestStatus10, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus9);
DEFSTATUS(TestStatus11, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus10);
DEFSTATUS(TestStatus12, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus11);
DEFSTATUS(TestStatus13, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus12);
DEFSTATUS(TestStatus14, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus13);
DEFSTATUS(TestStatus15, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus14);
DEFSTATUS(TestStatus16, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus15);
DEFSTATUS(TestStatus17, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus16);
DEFSTATUS(TestStatus18, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus17);
DEFSTATUS(TestStatus19, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus18);
DEFSTATUS(TestStatus20, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus19);
DEFSTATUS(TestStatus21, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus20);
DEFSTATUS(TestStatus22, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus21);
DEFSTATUS(TestStatus23, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus22);
DEFSTATUS(TestStatus24, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus23);
DEFSTATUS(TestStatus25, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus24);
DEFSTATUS(TestStatus26, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus25);
DEFSTATUS(TestStatus27, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus26);
DEFSTATUS(TestStatus28, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus27);
DEFSTATUS(TestStatus29, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus28);
DEFSTATUS(TestStatus30, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus29);
DEFSTATUS(TestStatus31, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus30);
DEFSTATUS(TestStatus32, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus31);
DEFSTATUS(TestStatus33, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus32);
DEFSTATUS(TestStatus34, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus33);
DEFSTATUS(TestStatus35, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus34);
DEFSTATUS(TestStatus36, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus35);
DEFSTATUS(TestStatus37, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus36);
DEFSTATUS(TestStatus38, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus37);
DEFSTATUS(TestStatus39, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus38);
DEFSTATUS(TestStatus40, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus39);
DEFSTATUS(TestStatus41, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus40);
DEFSTATUS(TestStatus42, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus41);
DEFSTATUS(TestStatus43, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus42);
DEFSTATUS(TestStatus44, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus43);
DEFSTATUS(TestStatus45, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus44);
DEFSTATUS(TestStatus46, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus45);
DEFSTATUS(TestStatus47, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus46);
DEFSTATUS(TestStatus48, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus47);
DEFSTATUS(TestStatus49, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus48);
DEFSTATUS(TestStatus50, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus49);
DEFSTATUS(TestStatus51, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus50);
DEFSTATUS(TestStatus52, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus51);
DEFSTATUS(TestStatus53, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus52);
DEFSTATUS(TestStatus54, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus53);
DEFSTATUS(TestStatus55, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus54);
DEFSTATUS(TestStatus56, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus55);
DEFSTATUS(TestStatus57, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus56);
DEFSTATUS(TestStatus58, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus57);
DEFSTATUS(TestStatus59, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus58);
DEFSTATUS(TestStatus60, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus59);
DEFSTATUS(TestStatus61, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus60);
DEFSTATUS(TestStatus62, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus61);
DEFSTATUS(TestStatus63, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus62);
DEFSTATUS(TestStatus64, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus63);
DEFSTATUS(TestStatus65, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus64);
DEFSTATUS(TestStatus66, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus65);
DEFSTATUS(TestStatus67, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus66);
DEFSTATUS(TestStatus68, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus67);
DEFSTATUS(TestStatus69, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus68);
DEFSTATUS(TestStatus70, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus69);
DEFSTATUS(TestStatus71, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus70);
DEFSTATUS(TestStatus72, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus71);
DEFSTATUS(TestStatus73, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus72);
DEFSTATUS(TestStatus74, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus73);
DEFSTATUS(TestStatus75, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus74);
DEFSTATUS(TestStatus76, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus75);
DEFSTATUS(TestStatus77, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus76);
DEFSTATUS(TestStatus78, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus77);
DEFSTATUS(TestStatus79, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus78);
DEFSTATUS(TestStatus80, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus79);
DEFSTATUS(TestStatus81, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus80);
DEFSTATUS(TestStatus82, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus81);
DEFSTATUS(TestStatus83, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus82);
DEFSTATUS(TestStatus84, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus83);
DEFSTATUS(TestStatus85, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus84);
DEFSTATUS(TestStatus86, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus85);
DEFSTATUS(TestStatus87, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus86);
DEFSTATUS(TestStatus88, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus87);
DEFSTATUS(TestStatus89, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus88);
DEFSTATUS(TestStatus90, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus89);
DEFSTATUS(TestStatus91, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus90);
DEFSTATUS(TestStatus92, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus91);
DEFSTATUS(TestStatus93, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus92);
DEFSTATUS(TestStatus94, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus93);
DEFSTATUS(TestStatus95, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus94);
DEFSTATUS(TestStatus96, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus95);
DEFSTATUS(TestStatus97, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus96);
DEFSTATUS(TestStatus98, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus97);
DEFSTATUS(TestStatus99, 1,
"This status is used for displaying multi-layer of status dumping.",
STATUS_NORMAL, &TestStatus98);
PrintStatusDump(apply(TestStatus99));
return apply(NormalStatus); return apply(NormalStatus);
} }
@@ -52,6 +455,3 @@ int main(void)
{ {
return Main().value; return Main().value;
} }