/
vTech
/
FcApps
Обзор
Документация
Войти
/
vTech
/
FcApps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
FcLibs/FcThread/src/FcThread_Error.h
104 строки
8 KB
vTech
alpha_00
03 дек 2025, 17:45
03 дек 2025, 17:45
ab8382d
Код
Авторство
О чём код?
#ifndef __FCTHREAD_ERRORS_H__ #define __FCTHREAD_ERRORS_H__ typedef int FcThread_Error_t; #ifdef __linux__ #define FCTHREAD_ERROR_CODE(id) \ id##FCTHREAD_ERROR_UNKNOWN_ERROR, \ id##FCTHREAD_ERROR_INCORRECT_VALUE, \ id##FCTHREAD_ERROR_MAXIMUM_NUMBER_OF_THREADS_FOR_THIS_JOB_HAS_BEEN_REACHED, \ id##FCTHREAD_ERROR_SYSTEM_CANNOT_ALLOW_THREAD_CREATION_IN_THIS_PROCESS_AT_THIS_TIME, \ id##FCTHREAD_ERROR_THE_THREAD_SPECIFIED_COULD_NOT_BE_FOUND, \ id##FCTHREAD_ERROR_THE_CALL_TIMES_OUT_BEFORE_THREAD_TERMINATED, \ id##FCTHREAD_ERROR_MUTEX_INCORRECT_VALUE, \ id##FCTHREAD_ERROR_MUTEX_NO_MEMORY, \ id##FCTHREAD_ERROR_MUTEX_OBJECT_NO_LONGER_EXISTS_BECAUSE_THE_OWNER_IS_NOT_LONGER_RUNNING, \ id##FCTHREAD_ERROR_MUTEX_OBJECT_WAS_DESTROYED_NO_LONGER_EXISTS, \ id##FCTHREAD_ERROR_MUTEX_RESOURCE_DEADLOCK_AVOIDED, \ id##FCTHREAD_ERROR_MUTEX_RECURSIVE_ATTEMPT_REJECTED, \ id##FCTHREAD_ERROR_MUTEX_IS_NOT_CURRENTLY_HELD_BY_THE_CALLER, \ id##FCTHREAD_ERROR_MUTEX_CURRENTLY_OWNED_BY_ANOTHER_THREAD, \ id##FCTHREAD_ERROR_SEMAPHORE_ACCESS_DENIED, \ id##FCTHREAD_ERROR_SEMAPHORE_EXIST, \ id##FCTHREAD_ERROR_SEMAPHORE_INCORRECT_VALUE, \ id##FCTHREAD_ERROR_SEMAPHORE_NAME_TO_LONG, \ id##FCTHREAD_ERROR_SEMAPHORE_NO_SUCH_PATH_OR_DIRECTORY, \ id##FCTHREAD_ERROR_SEMAPHORE_NO_SPACE_AVAILABLE, \ id##FCTHREAD_ERROR_SEMAPHORE_INTERRUPTED_FUNCTION_CALL, \ id##FCTHREAD_ERROR_SEMAPHORE_RESOURCE_BUSY, \ id##FCTHREAD_ERROR_EVENT_ACCESS_DENIED, \ id##FCTHREAD_ERROR_EVENT_EXIST, \ id##FCTHREAD_ERROR_EVENT_INCORRECT_VALUE, \ id##FCTHREAD_ERROR_EVENT_NAME_TO_LONG, \ id##FCTHREAD_ERROR_EVENT_NO_SUCH_PATH_OR_DIRECTORY, \ id##FCTHREAD_ERROR_EVENT_NO_SPACE_AVAILABLE, \ id##FCTHREAD_ERROR_EVENT_INTERRUPTED_FUNCTION_CALL, \ id##FCTHREAD_ERROR_EVENT_RESOURCE_BUSY, \ id##FCPARSER_ERROR_END_ERROR #define FCTHREAD_ERROR_SWITCH(mError, id, idCase) \ case idCase##FCTHREAD_ERROR_UNKNOWN_ERROR: mError = id##FCTHREAD_ERROR_UNKNOWN_ERROR; break;\ case idCase##FCTHREAD_ERROR_INCORRECT_VALUE: mError = id##FCTHREAD_ERROR_INCORRECT_VALUE; break;\ case idCase##FCTHREAD_ERROR_MAXIMUM_NUMBER_OF_THREADS_FOR_THIS_JOB_HAS_BEEN_REACHED: mError = id##FCTHREAD_ERROR_MAXIMUM_NUMBER_OF_THREADS_FOR_THIS_JOB_HAS_BEEN_REACHED; break;\ case idCase##FCTHREAD_ERROR_SYSTEM_CANNOT_ALLOW_THREAD_CREATION_IN_THIS_PROCESS_AT_THIS_TIME: mError = id##FCTHREAD_ERROR_SYSTEM_CANNOT_ALLOW_THREAD_CREATION_IN_THIS_PROCESS_AT_THIS_TIME; break;\ case idCase##FCTHREAD_ERROR_THE_THREAD_SPECIFIED_COULD_NOT_BE_FOUND: mError = id##FCTHREAD_ERROR_THE_THREAD_SPECIFIED_COULD_NOT_BE_FOUND; break;\ case idCase##FCTHREAD_ERROR_THE_CALL_TIMES_OUT_BEFORE_THREAD_TERMINATED: mError = id##FCTHREAD_ERROR_THE_CALL_TIMES_OUT_BEFORE_THREAD_TERMINATED; break;\ case idCase##FCTHREAD_ERROR_MUTEX_INCORRECT_VALUE: mError = id##FCTHREAD_ERROR_MUTEX_INCORRECT_VALUE; break;\ case idCase##FCTHREAD_ERROR_MUTEX_NO_MEMORY: mError = id##FCTHREAD_ERROR_MUTEX_NO_MEMORY; break;\ case idCase##FCTHREAD_ERROR_MUTEX_OBJECT_NO_LONGER_EXISTS_BECAUSE_THE_OWNER_IS_NOT_LONGER_RUNNING: mError = id##FCTHREAD_ERROR_MUTEX_OBJECT_NO_LONGER_EXISTS_BECAUSE_THE_OWNER_IS_NOT_LONGER_RUNNING; break;\ case idCase##FCTHREAD_ERROR_MUTEX_OBJECT_WAS_DESTROYED_NO_LONGER_EXISTS: mError = id##FCTHREAD_ERROR_MUTEX_OBJECT_WAS_DESTROYED_NO_LONGER_EXISTS; break;\ case idCase##FCTHREAD_ERROR_MUTEX_RESOURCE_DEADLOCK_AVOIDED: mError = id##FCTHREAD_ERROR_MUTEX_RESOURCE_DEADLOCK_AVOIDED; break;\ case idCase##FCTHREAD_ERROR_MUTEX_RECURSIVE_ATTEMPT_REJECTED: mError = id##FCTHREAD_ERROR_MUTEX_RECURSIVE_ATTEMPT_REJECTED; break;\ case idCase##FCTHREAD_ERROR_MUTEX_IS_NOT_CURRENTLY_HELD_BY_THE_CALLER: mError = id##FCTHREAD_ERROR_MUTEX_IS_NOT_CURRENTLY_HELD_BY_THE_CALLER; break;\ case idCase##FCTHREAD_ERROR_MUTEX_CURRENTLY_OWNED_BY_ANOTHER_THREAD: mError = id##FCTHREAD_ERROR_MUTEX_CURRENTLY_OWNED_BY_ANOTHER_THREAD; break;\ case idCase##FCTHREAD_ERROR_SEMAPHORE_ACCESS_DENIED: mError = id##FCTHREAD_ERROR_SEMAPHORE_ACCESS_DENIED; break;\ case idCase##FCTHREAD_ERROR_SEMAPHORE_EXIST: mError = id##FCTHREAD_ERROR_SEMAPHORE_EXIST; break;\ case idCase##FCTHREAD_ERROR_SEMAPHORE_INCORRECT_VALUE: mError = id##FCTHREAD_ERROR_SEMAPHORE_INCORRECT_VALUE; break;\ case idCase##FCTHREAD_ERROR_SEMAPHORE_NAME_TO_LONG: mError = id##FCTHREAD_ERROR_SEMAPHORE_NAME_TO_LONG; break;\ case idCase##FCTHREAD_ERROR_SEMAPHORE_NO_SUCH_PATH_OR_DIRECTORY: mError = id##FCTHREAD_ERROR_SEMAPHORE_NO_SUCH_PATH_OR_DIRECTORY; break;\ case idCase##FCTHREAD_ERROR_SEMAPHORE_NO_SPACE_AVAILABLE: mError = id##FCTHREAD_ERROR_SEMAPHORE_NO_SPACE_AVAILABLE; break;\ case idCase##FCTHREAD_ERROR_SEMAPHORE_INTERRUPTED_FUNCTION_CALL: mError = id##FCTHREAD_ERROR_SEMAPHORE_INTERRUPTED_FUNCTION_CALL; break;\ case idCase##FCTHREAD_ERROR_SEMAPHORE_RESOURCE_BUSY: mError = id##FCTHREAD_ERROR_SEMAPHORE_RESOURCE_BUSY; break;\ case idCase##FCPARSER_ERROR_END_ERROR: mError = id##FCPARSER_ERROR_END_ERROR; break enum { FCTHREAD_ERROR_NOERROR, #ifdef _FCLIBS_ERROR_THREAD FCLIBS_ERROR_THREAD = _FCLIBS_ERROR_THREAD, #endif FCTHREAD_ERROR_CODE() }; #elif defined(_WIN32) || defined(WIN32) #define FCTHREAD_ERROR_CODE(id) \ id##FCTHREAD_ERROR_UNKNOWN_ERROR, \ id##FCTHREAD_ERROR_WINAPI, \ id##FCTHREAD_ERROR_STILL_ACTIVE /*= 259*/ #define FCTHREAD_ERROR_SWITCH(mError, id, idCase) \ case idCase##FCTHREAD_ERROR_UNKNOWN_ERROR: mError = id##FCTHREAD_ERROR_UNKNOWN_ERROR; break; \ case idCase##FCTHREAD_ERROR_WINAPI: mError = id##FCTHREAD_ERROR_WINAPI; break; \ case idCase##FCTHREAD_ERROR_STILL_ACTIVE: mError = id##FCTHREAD_ERROR_STILL_ACTIVE; /*= 259*/ break #define FCTHREAD_ERROR_SWITCH_TEXT(mError, id, idCase) \ case idCase##FCTHREAD_ERROR_UNKNOWN_ERROR: mError = "FCTHREAD_ERROR_UNKNOWN_ERROR"; break; \ case idCase##FCTHREAD_ERROR_WINAPI: mError = "FCTHREAD_ERROR_WINAPI"; break; \ case idCase##FCTHREAD_ERROR_STILL_ACTIVE: mError = "FCTHREAD_ERROR_STILL_ACTIVE"; /*= 259*/ break enum { FCTHREAD_ERROR_NOERROR, #ifdef _FCLIBS_ERROR_THREAD FCLIBS_ERROR_THREAD = _FCLIBS_ERROR_THREAD, #endif FCTHREAD_ERROR_CODE() }; #else #error FCTHREAD_ERRORS #endif #endif //__FCTHREAD_ERRORS_H__