====== std.result ====== Result- und Option-Typen für explizite Fehlerbehandlung ohne Exceptions — nach dem Vorbild von Rust's ''Result'' und ''Option''. Konkrete Typen: ''ResultInt64'' (ok/err mit Wert und Fehlercode), ''ResultVec2'', ''ResultBool'', ''OptionInt64'', ''OptionVec2''. Methoden: ''IsOk''/''IsErr'', ''Unwrap'', ''UnwrapOr'', ''Map'', ''MapErr'', ''AndThen''. Sichere Arithmetik: ''SafeAdd'', ''SafeSub'', ''SafeMul'', ''SafeDiv'', ''SafeMod'' und sichere Array-Zugriffe. Einsatzbereiche: fehlerresistente Bibliotheks-APIs, DO-178C-konforme Programmierung, Funktionen die zwischen Erfolg und Fehler unterscheiden müssen ohne globale Fehlervariablen. **Autor:** Andreas Röne\\ **Copyright:** 2024-2025 Andreas Röne ---- ===== Imports ===== * ''std.math'' * ''std.vector'' ---- ===== Konstanten ===== ^ Name ^ Typ ^ Wert ^ Sichtbarkeit ^ | ''ERR_NONE'' | ''int64'' | ''0'' | priv | | ''ERR_UNKNOWN'' | ''int64'' | ''1'' | priv | | ''ERR_INVALID_INPUT'' | ''int64'' | ''2'' | priv | | ''ERR_OUT_OF_BOUNDS'' | ''int64'' | ''3'' | priv | | ''ERR_DIVISION_BY_ZERO'' | ''int64'' | ''4'' | priv | | ''ERR_OVERFLOW'' | ''int64'' | ''5'' | priv | | ''ERR_UNDERFLOW'' | ''int64'' | ''6'' | priv | | ''ERR_PARSE_ERROR'' | ''int64'' | ''7'' | priv | | ''ERR_NOT_FOUND'' | ''int64'' | ''8'' | priv | | ''ERR_ALREADY_EXISTS'' | ''int64'' | ''9'' | priv | | ''ERR_PERMISSION_DENIED'' | ''int64'' | ''10'' | priv | | ''ERR_IO'' | ''int64'' | ''11'' | priv | | ''ERR_OUT_OF_MEMORY'' | ''int64'' | ''12'' | priv | | ''ERR_NOT_IMPLEMENTED'' | ''int64'' | ''13'' | priv | ---- ===== Typen ===== ==== ResultInt64 (struct) ==== ^ Feld ^ Typ ^ | ''success'' | ''bool'' | | ''value'' | ''int64'' | | ''error_code'' | ''int64'' | ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''OkInt64(value: int64): ResultInt64'' | pub | Erzeugt erfolgreiches ResultInt64 mit Wert | | ''ErrInt64(error_code: int64): ResultInt64'' | pub | Erzeugt fehlgeschlagenes ResultInt64 mit Fehlercode | | ''ErrInt64WithValue(error_code: int64, value: int64): ResultInt64'' | pub | Erzeugt Fehler-Result mit Fehlercode und Wert | | ''ResultInt64IsOk(r: ResultInt64): bool'' | pub | Prüft ob ResultInt64 erfolgreich ist | | ''ResultInt64IsErr(r: ResultInt64): bool'' | pub | Prüft ob ResultInt64 einen Fehler enthält | | ''ResultInt64Unwrap(r: ResultInt64): int64'' | pub | Gibt Wert zurück oder bricht bei Fehler ab | | ''ResultInt64UnwrapOr(r: ResultInt64, fallback: int64): int64'' | pub | Gibt Wert oder Fallback bei Fehler zurück | | ''ResultInt64UnwrapOrElse(r: ResultInt64, default_fn: int64): int64'' | pub | Gibt Wert oder Ergebnis der Fallback-Funktion zurück | | ''ResultInt64Expect(r: ResultInt64, msg: pchar): int64'' | pub | Gibt Wert zurück oder bricht mit Nachricht ab | | ''ResultInt64Error(r: ResultInt64): int64'' | pub | Gibt Fehlercode des Results zurück | | ''ResultInt64Map(r: ResultInt64, fn_val: int64): ResultInt64'' | pub | Transformiert Wert bei Erfolg per Funktion | | ''ResultInt64MapErr(r: ResultInt64, fn_err: int64): ResultInt64'' | pub | Transformiert Fehlercode per Funktion | | ''ResultInt64AndThen(r: ResultInt64, fn_op: int64): ResultInt64'' | pub | Kettet Operationen bei Erfolg weiter | ==== ResultVec2 (struct) ==== ^ Feld ^ Typ ^ | ''success'' | ''bool'' | | ''value'' | ''Vec2'' | | ''error_code'' | ''int64'' | ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''OkVec2(value: Vec2): ResultVec2'' | pub | Erzeugt erfolgreiches ResultVec2 mit Wert | | ''ErrVec2(error_code: int64): ResultVec2'' | pub | Erzeugt fehlgeschlagenes ResultVec2 mit Fehlercode | | ''ResultVec2IsOk(r: ResultVec2): bool'' | pub | Prüft ob ResultVec2 erfolgreich ist | | ''ResultVec2IsErr(r: ResultVec2): bool'' | pub | Prüft ob ResultVec2 einen Fehler enthält | | ''ResultVec2Unwrap(r: ResultVec2): Vec2'' | pub | Gibt Vec2-Wert zurück oder bricht bei Fehler ab | | ''ResultVec2UnwrapOr(r: ResultVec2, fallback: Vec2): Vec2'' | pub | Gibt Vec2-Wert oder Fallback bei Fehler zurück | | ''ResultVec2Error(r: ResultVec2): int64'' | pub | Gibt Fehlercode des Vec2-Results zurück | ==== ResultBool (struct) ==== ^ Feld ^ Typ ^ | ''success'' | ''bool'' | | ''value'' | ''bool'' | | ''error_code'' | ''int64'' | ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''OkBool(value: bool): ResultBool'' | pub | Erzeugt erfolgreiches ResultBool mit Wert | | ''ErrBool(error_code: int64): ResultBool'' | pub | Erzeugt fehlgeschlagenes ResultBool mit Fehlercode | | ''ResultBoolIsOk(r: ResultBool): bool'' | pub | Prüft ob ResultBool erfolgreich ist | | ''ResultBoolIsErr(r: ResultBool): bool'' | pub | Prüft ob ResultBool einen Fehler enthält | | ''ResultBoolUnwrap(r: ResultBool): bool'' | pub | Gibt Bool-Wert zurück oder bricht bei Fehler ab | | ''ResultBoolError(r: ResultBool): int64'' | pub | Gibt Fehlercode des Bool-Results zurück | ==== OptionInt64 (struct) ==== ^ Feld ^ Typ ^ | ''has_value'' | ''bool'' | | ''value'' | ''int64'' | ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''SomeInt64(value: int64): OptionInt64'' | pub | Erzeugt OptionInt64 mit vorhandenem Wert | | ''NoneInt64(): OptionInt64'' | pub | Erzeugt leeres OptionInt64 ohne Wert | | ''OptionInt64IsSome(opt: OptionInt64): bool'' | pub | Prüft ob OptionInt64 einen Wert enthält | | ''OptionInt64IsNone(opt: OptionInt64): bool'' | pub | Prüft ob OptionInt64 leer ist | | ''OptionInt64Unwrap(opt: OptionInt64): int64'' | pub | Gibt Wert zurück oder bricht bei None ab | | ''OptionInt64UnwrapOr(opt: OptionInt64, fallback: int64): int64'' | pub | Gibt Wert oder Fallback bei None zurück | | ''OptionInt64Map(opt: OptionInt64, fn_val: int64): OptionInt64'' | pub | Transformiert Wert bei Some per Funktion | ==== OptionVec2 (struct) ==== ^ Feld ^ Typ ^ | ''has_value'' | ''bool'' | | ''value'' | ''Vec2'' | ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''SomeVec2(value: Vec2): OptionVec2'' | pub | Erzeugt OptionVec2 mit vorhandenem Wert | | ''NoneVec2(): OptionVec2'' | pub | Erzeugt leeres OptionVec2 ohne Wert | | ''OptionVec2IsSome(opt: OptionVec2): bool'' | pub | Prüft ob OptionVec2 einen Wert enthält | | ''OptionVec2IsNone(opt: OptionVec2): bool'' | pub | Prüft ob OptionVec2 leer ist | | ''OptionVec2Unwrap(opt: OptionVec2): Vec2'' | pub | Gibt Vec2-Wert zurück oder bricht bei None ab | | ''OptionVec2UnwrapOr(opt: OptionVec2, fallback: Vec2): Vec2'' | pub | Gibt Vec2-Wert oder Fallback bei None zurück | | ''ErrorCodeToString(code: int64): pchar'' | pub | Gibt deutschen Fehlertext für Fehlercode zurück | | ''SafeAdd(a: int64, b: int64): ResultInt64'' | pub | Addiert zwei Zahlen mit Überlaufprüfung | | ''SafeSub(a: int64, b: int64): ResultInt64'' | pub | Subtrahiert zwei Zahlen mit Unterlaufprüfung | | ''SafeMul(a: int64, b: int64): ResultInt64'' | pub | Multipliziert zwei Zahlen mit Überlaufprüfung | | ''SafeDiv(a: int64, b: int64): ResultInt64'' | pub | Dividiert mit Prüfung auf Division durch Null | | ''SafeMod(a: int64, b: int64): ResultInt64'' | pub | Modulo mit Prüfung auf Division durch Null | | ''SafeArrayGet(arr: int64, len: int64, index: int64): ResultInt64'' | pub | Liest Array-Element mit Grenzprüfung | | ''SafeArraySet(arr: int64, len: int64, index: int64, value: int64): ResultBool'' | pub | Schreibt Array-Element mit Grenzprüfung |