Annotation of sbbs/javascript/include/mozilla/nspr/prerror.h, revision 1.1.1.1

1.1       root        1: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
                      2: /* 
                      3:  * The contents of this file are subject to the Mozilla Public
                      4:  * License Version 1.1 (the "License"); you may not use this file
                      5:  * except in compliance with the License. You may obtain a copy of
                      6:  * the License at http://www.mozilla.org/MPL/
                      7:  * 
                      8:  * Software distributed under the License is distributed on an "AS
                      9:  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
                     10:  * implied. See the License for the specific language governing
                     11:  * rights and limitations under the License.
                     12:  * 
                     13:  * The Original Code is the Netscape Portable Runtime (NSPR).
                     14:  * 
                     15:  * The Initial Developer of the Original Code is Netscape
                     16:  * Communications Corporation.  Portions created by Netscape are 
                     17:  * Copyright (C) 1998-2000 Netscape Communications Corporation.  All
                     18:  * Rights Reserved.
                     19:  * 
                     20:  * Contributor(s):
                     21:  * 
                     22:  * Alternatively, the contents of this file may be used under the
                     23:  * terms of the GNU General Public License Version 2 or later (the
                     24:  * "GPL"), in which case the provisions of the GPL are applicable 
                     25:  * instead of those above.  If you wish to allow use of your 
                     26:  * version of this file only under the terms of the GPL and not to
                     27:  * allow others to use your version of this file under the MPL,
                     28:  * indicate your decision by deleting the provisions above and
                     29:  * replace them with the notice and other provisions required by
                     30:  * the GPL.  If you do not delete the provisions above, a recipient
                     31:  * may use your version of this file under either the MPL or the
                     32:  * GPL.
                     33:  */
                     34: 
                     35: #ifndef prerror_h___
                     36: #define prerror_h___
                     37: 
                     38: #include "prtypes.h"
                     39: 
                     40: PR_BEGIN_EXTERN_C
                     41: 
                     42: typedef PRInt32 PRErrorCode;
                     43: 
                     44: #define PR_NSPR_ERROR_BASE -6000
                     45: 
                     46: #include "prerr.h"
                     47: 
                     48: /*
                     49: ** Set error will preserve an error condition within a thread context.
                     50: ** The values stored are the NSPR (platform independent) translation of
                     51: ** the error. Also, if available, the platform specific oserror is stored.
                     52: ** If there is no appropriate OS error number, a zero my be supplied.
                     53: */
                     54: NSPR_API(void) PR_SetError(PRErrorCode errorCode, PRInt32 oserr);
                     55: 
                     56: /*
                     57: ** The text value specified may be NULL. If it is not NULL and the text length
                     58: ** is zero, the string is assumed to be a null terminated C string. Otherwise
                     59: ** the text is assumed to be the length specified and possibly include NULL
                     60: ** characters (e.g., a multi-national string).
                     61: **
                     62: ** The text will be copied into to thread structure and remain there
                     63: ** until the next call to PR_SetError.
                     64: */
                     65: NSPR_API(void) PR_SetErrorText(
                     66:     PRIntn textLength, const char *text);
                     67: 
                     68: /*
                     69: ** Return the current threads last set error code.
                     70: */
                     71: NSPR_API(PRErrorCode) PR_GetError(void);
                     72: 
                     73: /*
                     74: ** Return the current threads last set os error code. This is used for
                     75: ** machine specific code that desires the underlying os error.
                     76: */
                     77: NSPR_API(PRInt32) PR_GetOSError(void);
                     78: 
                     79: /*
                     80: ** Get the length of the error text. If a zero is returned, then there
                     81: ** is no text. Otherwise, the value returned is sufficient to contain
                     82: ** the error text currently available.
                     83: */
                     84: NSPR_API(PRInt32) PR_GetErrorTextLength(void);
                     85: 
                     86: /*
                     87: ** Copy the current threads current error text. Then actual number of bytes
                     88: ** copied is returned as the result. If the result is zero, the 'text' area
                     89: ** is unaffected.
                     90: */
                     91: NSPR_API(PRInt32) PR_GetErrorText(char *text);
                     92: 
                     93: 
                     94: /*
                     95: Copyright (C) 1987, 1988 Student Information Processing Board of the
                     96: Massachusetts Institute of Technology.
                     97: 
                     98: Permission to use, copy, modify, and distribute this software and its
                     99: documentation for any purpose and without fee is hereby granted, provided
                    100: that the above copyright notice appear in all copies and that both that
                    101: copyright notice and this permission notice appear in supporting
                    102: documentation, and that the names of M.I.T. and the M.I.T. S.I.P.B. not be
                    103: used in advertising or publicity pertaining to distribution of the software
                    104: without specific, written prior permission.  M.I.T. and the M.I.T. S.I.P.B.
                    105: make no representations about the suitability of this software for any
                    106: purpose.  It is provided "as is" without express or implied warranty.
                    107: */
                    108: 
                    109: 
                    110: /*
                    111:  * NOTE:
                    112:  *     The interfaces for error-code-translation described in the rest of
                    113:  *     this file are preliminary in the 3.1 release of nspr and are subject 
                    114:  *     to change in future releases.
                    115:  */
                    116: 
                    117: /*
                    118: ** Description:    Localizable error code to string function.
                    119: **
                    120: **
                    121: ** NSPR provides a mechanism for converting an error code to a
                    122: ** descriptive string, in a caller-specified language.
                    123: **
                    124: ** Error codes themselves are 32 bit (signed) integers.  Typically,
                    125: ** the high order 24 bits are an identifier of which error table the
                    126: ** error code is from, and the low order 8 bits are a sequential error
                    127: ** number within the table.  NSPR supports error tables whose first
                    128: ** error code is not a multiple of 256, such error code assignments
                    129: ** should be avoided when possible.
                    130: **
                    131: ** Error table 0 is defined to match the UNIX system call error table
                    132: ** (sys_errlist); this allows errno values to be used directly in the
                    133: ** library.  Other error table numbers are typically formed by
                    134: ** compacting together the first four characters of the error table
                    135: ** name.  The mapping between characters in the name and numeric
                    136: ** values in the error code are defined in a system-independent
                    137: ** fashion, so that two systems that can pass integral values between
                    138: ** them can reliably pass error codes without loss of meaning; this
                    139: ** should work even if the character sets used are not the
                    140: ** same. (However, if this is to be done, error table 0 should be
                    141: ** avoided, since the local system call error tables may differ.)
                    142: **
                    143: ** Libraries defining error codes need only provide a table mapping
                    144: ** error code numbers to names and default English descriptions,
                    145: ** calling a routine to install the table, making it ``known'' to NSPR
                    146: ** library.  Once installed, a table may not be removed.  Any error
                    147: ** code the library generates can be converted to the corresponding
                    148: ** error message.  There is also a default format for error codes
                    149: ** accidentally returned before making the table known, which is of
                    150: ** the form "unknown code foo 32", where "foo" would be the name of
                    151: ** the table.
                    152: **
                    153: ** Normally, the error code conversion routine only supports the
                    154: ** languages "i-default" and "en", returning the error-table-provided
                    155: ** English description for both languages.  The application may
                    156: ** provide a localization plugin, allowing support for additional
                    157: ** languages.
                    158: **
                    159: **/
                    160: 
                    161: /**********************************************************************/
                    162: /************************* TYPES AND CONSTANTS ************************/
                    163: /**********************************************************************/
                    164: 
                    165: /*
                    166:  * PRLanguageCode --
                    167:  *
                    168:  *    NSPR represents a language code as a non-negative integer.
                    169:  *    Languages 0 is always "i-default" the language you get without
                    170:  *    explicit negotiation.  Language 1 is always "en", English
                    171:  *    which has been explicitly negotiated.  Additional language
                    172:  *    codes are defined by an application-provided localization plugin.
                    173:  */
                    174: typedef PRUint32 PRLanguageCode;
                    175: #define PR_LANGUAGE_I_DEFAULT 0 /* i-default, the default language */
                    176: #define PR_LANGUAGE_EN 1 /* English, explicitly negotiated */
                    177: 
                    178: /*
                    179:  * struct PRErrorMessage --
                    180:  *
                    181:  *    An error message in an error table.
                    182:  */
                    183: struct PRErrorMessage {
                    184:     const char * name;    /* Macro name for error */
                    185:     const char * en_text; /* Default English text */
                    186: };
                    187: 
                    188: /*
                    189:  * struct PRErrorTable --
                    190:  *
                    191:  *    An error table, provided by a library.
                    192:  */
                    193: struct PRErrorTable {
                    194:     const struct PRErrorMessage * msgs; /* Array of error information */
                    195:     const char *name; /* Name of error table source */
                    196:     PRErrorCode base; /* Error code for first error in table */
                    197:     int n_msgs; /* Number of codes in table */
                    198: };
                    199: 
                    200: /*
                    201:  * struct PRErrorCallbackPrivate --
                    202:  *
                    203:  *    A private structure for the localization plugin 
                    204:  */
                    205: struct PRErrorCallbackPrivate;
                    206: 
                    207: /*
                    208:  * struct PRErrorCallbackTablePrivate --
                    209:  *
                    210:  *    A data structure under which the localization plugin may store information,
                    211:  *    associated with an error table, that is private to itself.
                    212:  */
                    213: struct PRErrorCallbackTablePrivate;
                    214: 
                    215: /*
                    216:  * PRErrorCallbackLookupFn --
                    217:  *
                    218:  *    A function of PRErrorCallbackLookupFn type is a localization
                    219:  *    plugin callback which converts an error code into a description
                    220:  *    in the requested language.  The callback is provided the
                    221:  *    appropriate error table, private data for the plugin and the table.
                    222:  *    The callback returns the appropriate UTF-8 encoded description, or NULL
                    223:  *    if no description can be found.
                    224:  */
                    225: typedef const char *
                    226: PRErrorCallbackLookupFn(PRErrorCode code, PRLanguageCode language, 
                    227:           const struct PRErrorTable *table,
                    228:           struct PRErrorCallbackPrivate *cb_private,
                    229:           struct PRErrorCallbackTablePrivate *table_private);
                    230: 
                    231: /*
                    232:  * PRErrorCallbackNewTableFn --
                    233:  *
                    234:  *    A function PRErrorCallbackNewTableFn type is a localization plugin
                    235:  *    callback which is called once with each error table registered
                    236:  *    with NSPR.  The callback is provided with the error table and
                    237:  *    the plugin's private structure.  The callback returns any table private
                    238:  *    data it wishes to associate with the error table.  Does not need to be thread
                    239:  *    safe.
                    240:  */
                    241: typedef struct PRErrorCallbackTablePrivate *
                    242: PRErrorCallbackNewTableFn(const struct PRErrorTable *table,
                    243:            struct PRErrorCallbackPrivate *cb_private);
                    244: 
                    245: /**********************************************************************/
                    246: /****************************** FUNCTIONS *****************************/
                    247: /**********************************************************************/
                    248: 
                    249: /***********************************************************************
                    250: ** FUNCTION:    PR_ErrorToString
                    251: ** DESCRIPTION:
                    252: **  Returns the UTF-8 message for an error code in
                    253: **  the requested language.  May return the message
                    254: **  in the default language if a translation in the requested
                    255: **  language is not available.  The returned string is
                    256: **  valid for the duration of the process.  Never returns NULL.
                    257: **
                    258: ***********************************************************************/
                    259: NSPR_API(const char *) PR_ErrorToString(PRErrorCode code,
                    260:     PRLanguageCode language);
                    261: 
                    262: 
                    263: /***********************************************************************
                    264: ** FUNCTION:    PR_ErrorToName
                    265: ** DESCRIPTION:
                    266: **  Returns the macro name for an error code, or NULL
                    267: **  if the error code is not known.  The returned string is
                    268: **  valid for the duration of the process.
                    269: **
                    270: **  Does not work for error table 0, the system error codes.
                    271: **
                    272: ***********************************************************************/
                    273: NSPR_API(const char *) PR_ErrorToName(PRErrorCode code);
                    274: 
                    275: 
                    276: /***********************************************************************
                    277: ** FUNCTION:    PR_ErrorLanguages
                    278: ** DESCRIPTION:
                    279: **  Returns the RFC 1766 language tags for the language
                    280: **  codes PR_ErrorToString() supports.  The returned array is valid
                    281: **  for the duration of the process.  Never returns NULL.  The first
                    282: **  item in the returned array is the language tag for PRLanguageCode 0,
                    283: **  the second is for PRLanguageCode 1, and so on.  The array is terminated
                    284: **  with a null pointer.
                    285: **
                    286: ***********************************************************************/
                    287: NSPR_API(const char * const *) PR_ErrorLanguages(void);
                    288: 
                    289: 
                    290: /***********************************************************************
                    291: ** FUNCTION:    PR_ErrorInstallTable
                    292: ** DESCRIPTION:
                    293: **  Registers an error table with NSPR.  Must be done exactly once per
                    294: **  table.  Memory pointed to by `table' must remain valid for the life
                    295: **  of the process.
                    296: **
                    297: **  NOT THREAD SAFE!
                    298: **  
                    299: ***********************************************************************/
                    300: NSPR_API(PRErrorCode) PR_ErrorInstallTable(const struct PRErrorTable *table);
                    301: 
                    302: 
                    303: /***********************************************************************
                    304: ** FUNCTION:    PR_ErrorInstallCallback
                    305: ** DESCRIPTION:
                    306: **  Registers an error localization plugin with NSPR.  May be called
                    307: **  at most one time.  `languages' contains the language codes supported
                    308: **  by this plugin.  Languages 0 and 1 must be "i-default" and "en"
                    309: **  respectively.  `lookup' and `newtable' contain pointers to
                    310: **  the plugin callback functions.  `cb_private' contains any information
                    311: **  private to the plugin functions.
                    312: **
                    313: **  NOT THREAD SAFE!
                    314: **
                    315: ***********************************************************************/
                    316: NSPR_API(void) PR_ErrorInstallCallback(const char * const * languages,
                    317:                  PRErrorCallbackLookupFn *lookup, 
                    318:                  PRErrorCallbackNewTableFn *newtable,
                    319:                  struct PRErrorCallbackPrivate *cb_private);
                    320: 
                    321: PR_END_EXTERN_C
                    322: 
                    323: #endif /* prerror_h___ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.