#include #include #include 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; }