(SOC) Storage Only Commit Sat 22 Jun 15:03:45 CST 2024

This commit is contained in:
William
2024-06-22 15:03:45 +08:00
commit 6d55003f9b
3 changed files with 93 additions and 0 deletions

58
main.c Normal file
View File

@@ -0,0 +1,58 @@
#include <Compound/status.h>
#include <Compound/string.h>
#include <Compound/var.h>
Status Main(Array type(String) *args)
{
nonull(args, apply(UnavailableParameter));
return apply(NormalStatus);
}
int main(int argc, const char **argv)
{
state(!argc || !argv, Main(NULL).value);
/* Construct argv. */
Array type(String) Arguments;
notok(Array_Create(&Arguments, argc, sizeof(String)), {
PrintStatusDump(apply(annot(_,
"Failed to create array for argv.")));
return _.value;
});
/* Assigning contents from argv. */
for (register int i = 0; i < Arguments.len; i++) {
String Current;
notok(String_Create(&Current, strlen(argv[i])), {
PrintStatusDump(apply(annot(_,
"Failed to create string instance for contents from argv.")));
return _.value;
})
notok(StringUtils_FromCharBuff(&Current, argv[i]), {
PrintStatusDump(apply(annot(_,
"Failed to convert char buffer into string.")));
(void)String_Delete(&Current);
return _.value;
})
/* Set value with Current. */
notok(Array_SetIdx(&Arguments, &Current.data.members[0], i), {
PrintStatusDump(apply(annot(_,
"Failed to set member for "nameof(Arguments)".")));
return _.value;
})
(void)String_Delete(&Current);
}
/* Start the programme. */
int rtn;
notok(Main(&Arguments), {
PrintStatusDump(_);
rtn = _.value;
})
/* Destruct argv. */
(void)Array_Delete(&Arguments);
return rtn;
}