1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
/**********************************************************************
* File: errcode.h (Formerly error.h)
* Description: Header file for generic error handler class
* Author: Ray Smith
*
* (C) Copyright 1990, Hewlett-Packard Ltd.
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
** http://www.apache.org/licenses/LICENSE-2.0
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*
**********************************************************************/
#ifndef ERRCODE_H
#define ERRCODE_H
#include <tesseract/export.h> // for TESS_API
namespace tesseract {
/*Control parameters for error()*/
enum TessErrorLogCode {
DBG = -1, /*log without alert */
TESSLOG = 0, /*alert user */
TESSEXIT = 1, /*exit after error */
ABORT = 2 /*abort after error */
};
#if !defined(__GNUC__) && !defined(__attribute__)
# define __attribute__(attr) // compiler without support for __attribute__
#endif
class TESS_API ERRCODE { // error handler class
const char *message; // error message
public:
void error( // error print function
const char *caller, // function location
TessErrorLogCode action, // action to take
const char *format, ... // fprintf format
) const __attribute__((format(printf, 4, 5)));
void error(const char *caller, TessErrorLogCode action) const;
constexpr ERRCODE(const char *string) : message(string) {} // initialize with string
};
constexpr ERRCODE ASSERT_FAILED("Assert failed");
#define DO_NOTHING static_cast<void>(0)
/* willus mod */
#define ASSERT_HOSTXX(x) if (!(x)) \
{ \
if (!(x)) \
{ \
tprintf("\n** Tesseract training file has inconsistent unichar ID set.\n"); \
tprintf("** unichar_id = %d, size_used = %d\n",(int)unichar_id,(int)unichars.size()); \
tprintf("** (file %s, line %d)\n",__FILE__,__LINE__); \
return(0); \
} \
ASSERT_FAILED.error(#x, ABORT, "in file %s, line %d", \
__FILE__, __LINE__); \
}
#define ASSERT_HOST(x) \
(x) ? DO_NOTHING : ASSERT_FAILED.error(#x, ABORT, "in file %s, line %d", __FILE__, __LINE__)
#define ASSERT_HOST_MSG(x, ...) \
if (!(x)) { \
tprintf(__VA_ARGS__); \
ASSERT_FAILED.error(#x, ABORT, "in file %s, line %d", __FILE__, __LINE__); \
}
} // namespace tesseract
#endif
|