- Add FlecsError error enum - Add function to get last Flecs error - Return FlecsError where applicable - Some functions don't return "Self" anymore - Hacky workaround for dependency loop bugmain
parent
e3627fda0c
commit
4b7be3e1f7
4 changed files with 179 additions and 64 deletions
@ -0,0 +1,101 @@ |
|||||||
|
const c = @import("./c.zig"); |
||||||
|
|
||||||
|
pub const FlecsError = error{ |
||||||
|
InvalidOperation, |
||||||
|
InvalidParameter, |
||||||
|
ConstraintViolated, |
||||||
|
OutOfMemory, |
||||||
|
OutOfRange, |
||||||
|
Unsupported, |
||||||
|
InternalError, |
||||||
|
AlreadyDefined, |
||||||
|
MissingOsApi, |
||||||
|
OperationFailed, |
||||||
|
InvalidConversion, |
||||||
|
IdInUse, |
||||||
|
CycleDetected, |
||||||
|
LeakDetected, |
||||||
|
DoubleFree, |
||||||
|
|
||||||
|
InconsistentName, |
||||||
|
NameInUse, |
||||||
|
NotAComponent, |
||||||
|
InvalidComponentSize, |
||||||
|
InvalidComponentAlignment, |
||||||
|
ComponentNotRegistered, |
||||||
|
InconsistentComponentId, |
||||||
|
InconsistentComponentAction, |
||||||
|
ModuleUndefined, |
||||||
|
MissingSymbol, |
||||||
|
AlreadyInUse, |
||||||
|
|
||||||
|
AccessViolation, |
||||||
|
ColumnIndexOutOfRange, |
||||||
|
ColumnIsNotShared, |
||||||
|
ColumnIsShared, |
||||||
|
ColumnTypeMismatch, |
||||||
|
|
||||||
|
InvalidWhileReadonly, |
||||||
|
LockedStorage, |
||||||
|
InvalidFromWorker, |
||||||
|
|
||||||
|
/// An unexpected error occurred in Flecs, |
||||||
|
/// but we're not exactly sure what happened. |
||||||
|
Unknown, |
||||||
|
}; |
||||||
|
|
||||||
|
/// Gets the last logged error that occurred in Flecs. |
||||||
|
/// Calling this function resets the error code. |
||||||
|
pub fn getLastError() ?FlecsError { |
||||||
|
return intToFlecsError(c.ecs_log_last_error()); |
||||||
|
} |
||||||
|
|
||||||
|
/// Gets the last logged error that occurred in Flecs. |
||||||
|
/// Calling this function resets the error code. |
||||||
|
pub fn getLastErrorOrUnknown() FlecsError { |
||||||
|
return getLastError() orelse FlecsError.Unknown; |
||||||
|
} |
||||||
|
|
||||||
|
pub fn intToFlecsError(i: i32) ?FlecsError { |
||||||
|
return switch (i) { |
||||||
|
c.ECS_INVALID_OPERATION => FlecsError.InvalidOperation, |
||||||
|
c.ECS_INVALID_PARAMETER => FlecsError.InvalidParameter, |
||||||
|
c.ECS_CONSTRAINT_VIOLATED => FlecsError.ConstraintViolated, |
||||||
|
c.ECS_OUT_OF_MEMORY => FlecsError.OutOfMemory, |
||||||
|
c.ECS_OUT_OF_RANGE => FlecsError.OutOfRange, |
||||||
|
c.ECS_UNSUPPORTED => FlecsError.Unsupported, |
||||||
|
c.ECS_INTERNAL_ERROR => FlecsError.InternalError, |
||||||
|
c.ECS_ALREADY_DEFINED => FlecsError.AlreadyDefined, |
||||||
|
c.ECS_MISSING_OS_API => FlecsError.MissingOsApi, |
||||||
|
c.ECS_OPERATION_FAILED => FlecsError.OperationFailed, |
||||||
|
c.ECS_INVALID_CONVERSION => FlecsError.InvalidConversion, |
||||||
|
c.ECS_ID_IN_USE => FlecsError.IdInUse, |
||||||
|
c.ECS_CYCLE_DETECTED => FlecsError.CycleDetected, |
||||||
|
c.ECS_LEAK_DETECTED => FlecsError.LeakDetected, |
||||||
|
c.ECS_DOUBLE_FREE => FlecsError.DoubleFree, |
||||||
|
|
||||||
|
c.ECS_INCONSISTENT_NAME => FlecsError.InconsistentName, |
||||||
|
c.ECS_NAME_IN_USE => FlecsError.NameInUse, |
||||||
|
c.ECS_NOT_A_COMPONENT => FlecsError.NotAComponent, |
||||||
|
c.ECS_INVALID_COMPONENT_SIZE => FlecsError.InvalidComponentSize, |
||||||
|
c.ECS_INVALID_COMPONENT_ALIGNMENT => FlecsError.InvalidComponentAlignment, |
||||||
|
c.ECS_COMPONENT_NOT_REGISTERED => FlecsError.ComponentNotRegistered, |
||||||
|
c.ECS_INCONSISTENT_COMPONENT_ID => FlecsError.InconsistentComponentId, |
||||||
|
c.ECS_INCONSISTENT_COMPONENT_ACTION => FlecsError.InconsistentComponentAction, |
||||||
|
c.ECS_MODULE_UNDEFINED => FlecsError.ModuleUndefined, |
||||||
|
c.ECS_MISSING_SYMBOL => FlecsError.MissingSymbol, |
||||||
|
c.ECS_ALREADY_IN_USE => FlecsError.AlreadyInUse, |
||||||
|
|
||||||
|
c.ECS_ACCESS_VIOLATION => FlecsError.AccessViolation, |
||||||
|
c.ECS_COLUMN_INDEX_OUT_OF_RANGE => FlecsError.ColumnIndexOutOfRange, |
||||||
|
c.ECS_COLUMN_IS_NOT_SHARED => FlecsError.ColumnIsNotShared, |
||||||
|
c.ECS_COLUMN_IS_SHARED => FlecsError.ColumnIsShared, |
||||||
|
c.ECS_COLUMN_TYPE_MISMATCH => FlecsError.ColumnTypeMismatch, |
||||||
|
|
||||||
|
c.ECS_INVALID_WHILE_READONLY => FlecsError.InvalidWhileReadonly, |
||||||
|
c.ECS_LOCKED_STORAGE => FlecsError.LockedStorage, |
||||||
|
c.ECS_INVALID_FROM_WORKER => FlecsError.InvalidFromWorker, |
||||||
|
|
||||||
|
else => null, |
||||||
|
}; |
||||||
|
} |
Loading…
Reference in new issue