| // Copyright 2014 PDFium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
| #ifndef _FWL_ERROR_H | |
| #define _FWL_ERROR_H | |
| typedef int32_t FWL_ERR; | |
| #define FWL_ERR_Succeeded 0 | |
| #define FWL_ERR_Indefinite -1 | |
| #define FWL_ERR_Parameter_Invalid -100 | |
| #define FWL_ERR_Property_Invalid -200 | |
| #define FWL_ERR_Intermediate_Value__Invalid -300 | |
| #define FWL_ERR_Method_Not_Supported -400 | |
| #define FWL_ERR_Out_Of_Memory -500 | |
| #if defined(__WIN32__) || defined(_WIN32) | |
| #define _FWL_ALARM_IF_FAIL(arg, alarm) \ | |
| { \ | |
| if (!(arg)) \ | |
| ::OutputDebugString(alarm); \ | |
| } | |
| #elif defined(__linux) || defined(linux) || defined(__APPLE__) || \ | |
| defined(__MACOSX__) | |
| #define _FWL_ALARM_IF_FAIL(arg, alarm) \ | |
| { \ | |
| if (!(arg)) \ | |
| printf(alarm); \ | |
| } | |
| #else | |
| #endif | |
| #define _FWL_RETURN_IF_FAIL(arg) \ | |
| { \ | |
| if (!(arg)) \ | |
| return; \ | |
| } | |
| #define _FWL_RETURN_VALUE_IF_FAIL(arg, val) \ | |
| { \ | |
| if (!(arg)) \ | |
| return val; \ | |
| } | |
| #define _FWL_GOTO_POSITION_IF_FAIL(arg, pos) \ | |
| { \ | |
| if (!(arg)) \ | |
| goto pos; \ | |
| } | |
| #if defined(__WIN32__) || defined(_WIN32) | |
| #define _FWL_ERR_CHECK_ALARM_IF_FAIL(arg) \ | |
| { \ | |
| if ((arg) != FWL_ERR_Succeeded) { \ | |
| char buf[36]; \ | |
| memset(buf, 0, sizeof(buf)); \ | |
| FXSYS_snprintf(buf, sizeof(buf) - 1, "Error code is %d\n", arg); \ | |
| ::OutputDebugString(buf); \ | |
| } \ | |
| } | |
| #elif defined(__linux) || defined(linux) || defined(__APPLE__) || \ | |
| defined(__MACOSX__) | |
| #define _FWL_ERR_CHECK_ALARM_IF_FAIL(arg) \ | |
| { \ | |
| if ((arg) != FWL_ERR_Succeeded) \ | |
| printf("%d\n", arg); \ | |
| } | |
| #else | |
| #endif | |
| #define _FWL_ERR_CHECK_RETURN_IF_FAIL(arg) \ | |
| { \ | |
| if ((arg) != FWL_ERR_Succeeded) \ | |
| return; \ | |
| } | |
| #define _FWL_ERR_CHECK_RETURN_VALUE_IF_FAIL(arg, val) \ | |
| { \ | |
| if ((arg) != FWL_ERR_Succeeded) \ | |
| return val; \ | |
| } | |
| #define _FWL_ERR_CHECK_GOTO_POSITION_IF_FAIL(arg, pos) \ | |
| { \ | |
| if ((arg) != FWL_ERR_Succeeded) \ | |
| goto pos; \ | |
| } | |
| #endif |