/**************************************************************/ /* treebnf: a tree oriented bnf library */ /* Copyright (C) 2024 SysDeer Technologies, LLC */ /* Released under GPLv2 and GPLv3; see COPYING.TREEBNF. */ /**************************************************************/ #ifndef TREEBNF_ERRINFO_IMPL_H #define TREEBNF_ERRINFO_IMPL_H #include #include int tbnf_record_error( const struct tbnf_driver_ctx *, int esyscode, int elibcode, const char * efunction, int eline, unsigned eflags, void * eany); #define TBNF_SYSTEM_ERROR(dctx,eany) \ tbnf_record_error( \ dctx, \ errno, \ 0, \ __func__, \ __LINE__, \ TBNF_ERROR_TOP_LEVEL, \ (void *)eany) #define TBNF_BUFFER_ERROR(dctx) \ tbnf_record_error( \ dctx, \ ENOBUFS, \ 0, \ __func__, \ __LINE__, \ TBNF_ERROR_TOP_LEVEL, \ 0) #define TBNF_SPAWN_ERROR(dctx) \ tbnf_record_error( \ dctx, \ errno, \ 0, \ __func__, \ __LINE__, \ TBNF_ERROR_TOP_LEVEL \ | (errno ? 0 \ : TBNF_ERROR_CHILD), \ 0) #define TBNF_FILE_ERROR(dctx) \ tbnf_record_error( \ dctx, \ EIO, \ 0, \ __func__, \ __LINE__, \ TBNF_ERROR_TOP_LEVEL, \ 0) #define TBNF_CUSTOM_ERROR(dctx,elibcode) \ tbnf_record_error( \ dctx, \ 0, \ elibcode, \ __func__, \ __LINE__, \ TBNF_ERROR_TOP_LEVEL \ | TBNF_ERROR_CUSTOM, \ 0) #define TBNF_NESTED_ERROR(dctx) \ tbnf_record_error( \ dctx, \ 0, \ 0, \ __func__, \ __LINE__, \ TBNF_ERROR_NESTED, \ 0) #endif