1 /*---------------------------------------------------------------------------* 2 * ESR_ReturnCode.h * 3 * * 4 * Copyright 2007, 2008 Nuance Communciations, Inc. * 5 * * 6 * Licensed under the Apache License, Version 2.0 (the 'License'); * 7 * you may not use this file except in compliance with the License. * 8 * * 9 * You may obtain a copy of the License at * 10 * http://www.apache.org/licenses/LICENSE-2.0 * 11 * * 12 * Unless required by applicable law or agreed to in writing, software * 13 * distributed under the License is distributed on an 'AS IS' BASIS, * 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 15 * See the License for the specific language governing permissions and * 16 * limitations under the License. * 17 * * 18 *---------------------------------------------------------------------------*/ 19 20 #ifndef ESR_RETURNCODE_H 21 #define ESR_RETURNCODE_H 22 23 24 25 #include "PortPrefix.h" 26 27 /** 28 * @addtogroup ESR_PortableModule ESR_Portable API functions 29 * 30 * @{ 31 */ 32 33 /** 34 * Return-code values. 35 */ 36 typedef enum ESR_ReturnCode_t 37 { 38 /* 39 * Note: do not forget to modify ESR_rc2str when modifying this enum. 40 */ 41 42 /** 43 * Operation completed successfully. 44 */ 45 ESR_SUCCESS, 46 47 /** 48 * Intermediate stage of operation completed successfully, we wish to indicate 49 * that remainig stages of operation may proceed. 50 */ 51 ESR_CONTINUE_PROCESSING, 52 53 /** 54 * Indicates a fatal error. 55 */ 56 ESR_FATAL_ERROR, 57 58 /** 59 * Buffer overflow occured. 60 */ 61 ESR_BUFFER_OVERFLOW, 62 63 /** 64 * Error typing to open an entity or the operation failed because the entity was not opened. 65 */ 66 ESR_OPEN_ERROR, 67 68 /** 69 * Error trying to open an entity that is already open. 70 */ 71 ESR_ALREADY_OPEN, 72 73 /** 74 * Error typing to close a entity or the operation failed because the entity was not closed. 75 */ 76 ESR_CLOSE_ERROR, 77 78 /** 79 * Error trying to close a entity that was already closed. 80 */ 81 ESR_ALREADY_CLOSED, 82 83 /** 84 * Error trying to read a file. 85 */ 86 ESR_READ_ERROR, 87 88 /** 89 * Error trying to write to a entity. 90 */ 91 ESR_WRITE_ERROR, 92 93 /** 94 * Error trying to flush a entity. 95 */ 96 ESR_FLUSH_ERROR, 97 98 /** 99 * Error trying to seek a entity. 100 */ 101 ESR_SEEK_ERROR, 102 103 /** 104 * Error trying to allocate memory. 105 */ 106 ESR_OUT_OF_MEMORY, 107 108 /** 109 * Specified argument is out of bounds. 110 */ 111 ESR_ARGUMENT_OUT_OF_BOUNDS, 112 113 /** 114 * Failed to locate the specified entity. 115 */ 116 ESR_NO_MATCH_ERROR, 117 118 /** 119 * Passed in argument contains an invalid value. Such as when a NULL pointer 120 * is passed in when when an actual value is expected. 121 */ 122 ESR_INVALID_ARGUMENT, 123 124 /** 125 * Indicates that request functionality is not supported. 126 */ 127 ESR_NOT_SUPPORTED, 128 129 /** 130 * Indicates that the object is not in a state such that the operation can 131 * be succesfully performed. 132 */ 133 ESR_INVALID_STATE, 134 135 /** 136 * Indicates that a thread could not be created. 137 */ 138 ESR_THREAD_CREATION_ERROR, 139 140 /** 141 * Indicates that a resource with the same identifier already exists. 142 */ 143 ESR_IDENTIFIER_COLLISION, 144 145 /** 146 * Indicates that the operation timed out. 147 */ 148 ESR_TIMED_OUT, 149 150 /** 151 * Indicates that the object being retrieved isn't of the expected type. 152 * For example, when retrieving an integer from a HashMap we find out the 153 * value is actually of type float. 154 */ 155 ESR_INVALID_RESULT_TYPE, 156 157 /** 158 * Indicates that the invoked function has not been implemented. 159 */ 160 ESR_NOT_IMPLEMENTED, 161 162 /** 163 * A connection was forcibly closed by a peer. This normally results from 164 * a loss of the connection on the remote socket due to a timeout or a reboot. 165 */ 166 ESR_CONNECTION_RESET_BY_PEER, 167 168 /** 169 * Indicates that a process could not be created. 170 */ 171 ESR_PROCESS_CREATE_ERROR, 172 173 /** 174 * Indicates that no matching TTS engine is available. 175 */ 176 ESR_TTS_NO_ENGINE, 177 178 /** 179 * Indicates that an attempt to create a mutex failed because the OS is running out of resources. 180 */ 181 ESR_MUTEX_CREATION_ERROR, 182 183 /** 184 * Indicates a deadlock situation has occured. 185 */ 186 ESR_DEADLOCK 187 } ESR_ReturnCode; 188 189 190 /** 191 * Checks the function return-code and if it is not ESR_SUCCESS, returns it. 192 */ 193 #define CHK(rc, x) do { if ((rc = (x)) != ESR_SUCCESS) goto CLEANUP; } while (0) 194 195 #include "ptypes.h" 196 197 /** 198 * Given a return-code, returns its string representation. 199 * 200 * @param rc Return-code 201 * @return String representation of return-code. 202 */ 203 PORTABLE_API const LCHAR* ESR_rc2str(const ESR_ReturnCode rc); 204 205 #ifdef _WIN32 206 /** 207 * Called before entering any function. 208 */ 209 PORTABLE_API void _cdecl _penter(void); 210 /** 211 * Called after exiting any function. 212 */ 213 PORTABLE_API void _cdecl _pexit(void); 214 #endif 215 216 /** 217 * @} 218 */ 219 220 #endif 221