| /* | 
 |  * Copyright (C) 2007 The Android Open Source Project | 
 |  * | 
 |  * 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 ANDROID_ERRORS_H | 
 | #define ANDROID_ERRORS_H | 
 |  | 
 | #include <sys/types.h> | 
 | #include <errno.h> | 
 |  | 
 | namespace android { | 
 |  | 
 | // use this type to return error codes | 
 | #ifdef HAVE_MS_C_RUNTIME | 
 | typedef int         status_t; | 
 | #else | 
 | typedef int32_t     status_t; | 
 | #endif | 
 |  | 
 | /* the MS C runtime lacks a few error codes */ | 
 |  | 
 | /* | 
 |  * Error codes.  | 
 |  * All error codes are negative values. | 
 |  */ | 
 |  | 
 | // Win32 #defines NO_ERROR as well.  It has the same value, so there's no | 
 | // real conflict, though it's a bit awkward. | 
 | #ifdef _WIN32 | 
 | # undef NO_ERROR | 
 | #endif | 
 |   | 
 | enum { | 
 |     OK                = 0,    // Everything's swell. | 
 |     NO_ERROR          = 0,    // No errors. | 
 |      | 
 |     UNKNOWN_ERROR       = 0x80000000, | 
 |  | 
 |     NO_MEMORY           = -ENOMEM, | 
 |     INVALID_OPERATION   = -ENOSYS, | 
 |     BAD_VALUE           = -EINVAL, | 
 |     BAD_TYPE            = 0x80000001, | 
 |     NAME_NOT_FOUND      = -ENOENT, | 
 |     PERMISSION_DENIED   = -EPERM, | 
 |     NO_INIT             = -ENODEV, | 
 |     ALREADY_EXISTS      = -EEXIST, | 
 |     DEAD_OBJECT         = -EPIPE, | 
 |     FAILED_TRANSACTION  = 0x80000002, | 
 |     JPARKS_BROKE_IT     = -EPIPE, | 
 | #if !defined(HAVE_MS_C_RUNTIME) | 
 |     BAD_INDEX           = -EOVERFLOW, | 
 |     NOT_ENOUGH_DATA     = -ENODATA, | 
 |     WOULD_BLOCK         = -EWOULDBLOCK,  | 
 |     TIMED_OUT           = -ETIMEDOUT, | 
 |     UNKNOWN_TRANSACTION = -EBADMSG, | 
 | #else     | 
 |     BAD_INDEX           = -E2BIG, | 
 |     NOT_ENOUGH_DATA     = 0x80000003, | 
 |     WOULD_BLOCK         = 0x80000004, | 
 |     TIMED_OUT           = 0x80000005, | 
 |     UNKNOWN_TRANSACTION = 0x80000006, | 
 | #endif     | 
 | }; | 
 |  | 
 | // Restore define; enumeration is in "android" namespace, so the value defined | 
 | // there won't work for Win32 code in a different namespace. | 
 | #ifdef _WIN32 | 
 | # define NO_ERROR 0L | 
 | #endif | 
 |  | 
 | }; // namespace android | 
 |      | 
 | // --------------------------------------------------------------------------- | 
 |      | 
 | #endif // ANDROID_ERRORS_H |