Programming Language

Nocter

A self-contained systems language built around simplicity, encapsulation, and foolproof design.

limits.nct

see ./index.nct

see ./storage.nct

const STANDARD_INPUT_BYTES: usize = 67108864

const STANDARD_OUTPUT_BYTES: u64 = 268435456

const STANDARD_ENTRIES: usize = 4096

const STANDARD_PATH_BYTES: usize = 240

noalloc func invalid_limits(): error {
    return error.new("archive-inspect.invalid_limits", "every archive limit must be nonzero")
}

construct ArchiveLimits {
    noalloc func standard(): Self {
        return ArchiveLimits {
            input_bytes: STANDARD_INPUT_BYTES,
            decoded_bytes: STANDARD_OUTPUT_BYTES,
            entries: STANDARD_ENTRIES,
            path_bytes: STANDARD_PATH_BYTES,
        }
    }

    noalloc func new(
        maximum_input_bytes: usize,
        maximum_decoded_bytes: u64,
        maximum_entries: usize,
        maximum_path_bytes: usize,
    ): Self! {
        if maximum_input_bytes == 0 || maximum_decoded_bytes == 0
        || maximum_entries == 0 || maximum_path_bytes == 0 {
            return invalid_limits()
        }
        return ArchiveLimits {
            input_bytes: maximum_input_bytes,
            decoded_bytes: maximum_decoded_bytes,
            entries: maximum_entries,
            path_bytes: maximum_path_bytes,
        }
    }
}