| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 | 
							- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 
- /* ***** BEGIN LICENSE BLOCK *****
 
-  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 
-  *
 
-  * The contents of this file are subject to the Mozilla Public License Version
 
-  * 1.1 (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.mozilla.org/MPL/
 
-  *
 
-  * Software distributed under the License is distributed on an "AS IS" basis,
 
-  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 
-  * for the specific language governing rights and limitations under the
 
-  * License.
 
-  *
 
-  * The Original Code is the Netscape Portable Runtime (NSPR).
 
-  *
 
-  * The Initial Developer of the Original Code is
 
-  * Netscape Communications Corporation.
 
-  * Portions created by the Initial Developer are Copyright (C) 1998-2000
 
-  * the Initial Developer. All Rights Reserved.
 
-  *
 
-  * Contributor(s):
 
-  *
 
-  * Alternatively, the contents of this file may be used under the terms of
 
-  * either the GNU General Public License Version 2 or later (the "GPL"), or
 
-  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 
-  * in which case the provisions of the GPL or the LGPL are applicable instead
 
-  * of those above. If you wish to allow use of your version of this file only
 
-  * under the terms of either the GPL or the LGPL, and not to allow others to
 
-  * use your version of this file under the terms of the MPL, indicate your
 
-  * decision by deleting the provisions above and replace them with the notice
 
-  * and other provisions required by the GPL or the LGPL. If you do not delete
 
-  * the provisions above, a recipient may use your version of this file under
 
-  * the terms of any one of the MPL, the GPL or the LGPL.
 
-  *
 
-  * ***** END LICENSE BLOCK ***** */
 
- #ifndef prerror_h___
 
- #define prerror_h___
 
- #include "prtypes.h"
 
- PR_BEGIN_EXTERN_C
 
- typedef PRInt32 PRErrorCode;
 
- #define PR_NSPR_ERROR_BASE -6000
 
- #include "prerr.h"
 
- /*
 
- ** Set error will preserve an error condition within a thread context.
 
- ** The values stored are the NSPR (platform independent) translation of
 
- ** the error. Also, if available, the platform specific oserror is stored.
 
- ** If there is no appropriate OS error number, a zero my be supplied.
 
- */
 
- NSPR_API(void) PR_SetError(PRErrorCode errorCode, PRInt32 oserr);
 
- /*
 
- ** The text value specified may be NULL. If it is not NULL and the text length
 
- ** is zero, the string is assumed to be a null terminated C string. Otherwise
 
- ** the text is assumed to be the length specified and possibly include NULL
 
- ** characters (e.g., a multi-national string).
 
- **
 
- ** The text will be copied into to thread structure and remain there
 
- ** until the next call to PR_SetError.
 
- */
 
- NSPR_API(void) PR_SetErrorText(
 
-     PRIntn textLength, const char *text);
 
- /*
 
- ** Return the current threads last set error code.
 
- */
 
- NSPR_API(PRErrorCode) PR_GetError(void);
 
- /*
 
- ** Return the current threads last set os error code. This is used for
 
- ** machine specific code that desires the underlying os error.
 
- */
 
- NSPR_API(PRInt32) PR_GetOSError(void);
 
- /*
 
- ** Get the length of the error text. If a zero is returned, then there
 
- ** is no text. Otherwise, the value returned is sufficient to contain
 
- ** the error text currently available.
 
- */
 
- NSPR_API(PRInt32) PR_GetErrorTextLength(void);
 
- /*
 
- ** Copy the current threads current error text. Then actual number of bytes
 
- ** copied is returned as the result. If the result is zero, the 'text' area
 
- ** is unaffected.
 
- */
 
- NSPR_API(PRInt32) PR_GetErrorText(char *text);
 
- /*
 
- Copyright (C) 1987, 1988 Student Information Processing Board of the
 
- Massachusetts Institute of Technology.
 
- Permission to use, copy, modify, and distribute this software and its
 
- documentation for any purpose and without fee is hereby granted, provided
 
- that the above copyright notice appear in all copies and that both that
 
- copyright notice and this permission notice appear in supporting
 
- documentation, and that the names of M.I.T. and the M.I.T. S.I.P.B. not be
 
- used in advertising or publicity pertaining to distribution of the software
 
- without specific, written prior permission.  M.I.T. and the M.I.T. S.I.P.B.
 
- make no representations about the suitability of this software for any
 
- purpose.  It is provided "as is" without express or implied warranty.
 
- */
 
- /*
 
-  * NOTE:
 
-  *		The interfaces for error-code-translation described in the rest of
 
-  *		this file are preliminary in the 3.1 release of nspr and are subject 
 
-  *		to change in future releases.
 
-  */
 
- /*
 
- ** Description:	Localizable error code to string function.
 
- **
 
- **
 
- ** NSPR provides a mechanism for converting an error code to a
 
- ** descriptive string, in a caller-specified language.
 
- **
 
- ** Error codes themselves are 32 bit (signed) integers.  Typically,
 
- ** the high order 24 bits are an identifier of which error table the
 
- ** error code is from, and the low order 8 bits are a sequential error
 
- ** number within the table.  NSPR supports error tables whose first
 
- ** error code is not a multiple of 256, such error code assignments
 
- ** should be avoided when possible.
 
- **
 
- ** Error table 0 is defined to match the UNIX system call error table
 
- ** (sys_errlist); this allows errno values to be used directly in the
 
- ** library.  Other error table numbers are typically formed by
 
- ** compacting together the first four characters of the error table
 
- ** name.  The mapping between characters in the name and numeric
 
- ** values in the error code are defined in a system-independent
 
- ** fashion, so that two systems that can pass integral values between
 
- ** them can reliably pass error codes without loss of meaning; this
 
- ** should work even if the character sets used are not the
 
- ** same. (However, if this is to be done, error table 0 should be
 
- ** avoided, since the local system call error tables may differ.)
 
- **
 
- ** Libraries defining error codes need only provide a table mapping
 
- ** error code numbers to names and default English descriptions,
 
- ** calling a routine to install the table, making it ``known'' to NSPR
 
- ** library.  Once installed, a table may not be removed.  Any error
 
- ** code the library generates can be converted to the corresponding
 
- ** error message.  There is also a default format for error codes
 
- ** accidentally returned before making the table known, which is of
 
- ** the form "unknown code foo 32", where "foo" would be the name of
 
- ** the table.
 
- **
 
- ** Normally, the error code conversion routine only supports the
 
- ** languages "i-default" and "en", returning the error-table-provided
 
- ** English description for both languages.  The application may
 
- ** provide a localization plugin, allowing support for additional
 
- ** languages.
 
- **
 
- **/
 
- /**********************************************************************/
 
- /************************* TYPES AND CONSTANTS ************************/
 
- /**********************************************************************/
 
- /*
 
-  * PRLanguageCode --
 
-  *
 
-  *    NSPR represents a language code as a non-negative integer.
 
-  *    Languages 0 is always "i-default" the language you get without
 
-  *    explicit negotiation.  Language 1 is always "en", English
 
-  *    which has been explicitly negotiated.  Additional language
 
-  *    codes are defined by an application-provided localization plugin.
 
-  */
 
- typedef PRUint32 PRLanguageCode;
 
- #define PR_LANGUAGE_I_DEFAULT 0 /* i-default, the default language */
 
- #define PR_LANGUAGE_EN 1 /* English, explicitly negotiated */
 
- /*
 
-  * struct PRErrorMessage --
 
-  *
 
-  *    An error message in an error table.
 
-  */
 
- struct PRErrorMessage {
 
-     const char * name;    /* Macro name for error */
 
-     const char * en_text; /* Default English text */
 
- };
 
- /*
 
-  * struct PRErrorTable --
 
-  *
 
-  *    An error table, provided by a library.
 
-  */
 
- struct PRErrorTable {
 
-     const struct PRErrorMessage * msgs; /* Array of error information */
 
-     const char *name; /* Name of error table source */
 
-     PRErrorCode base; /* Error code for first error in table */
 
-     int n_msgs; /* Number of codes in table */
 
- };
 
- /*
 
-  * struct PRErrorCallbackPrivate --
 
-  *
 
-  *    A private structure for the localization plugin 
 
-  */
 
- struct PRErrorCallbackPrivate;
 
- /*
 
-  * struct PRErrorCallbackTablePrivate --
 
-  *
 
-  *    A data structure under which the localization plugin may store information,
 
-  *    associated with an error table, that is private to itself.
 
-  */
 
- struct PRErrorCallbackTablePrivate;
 
- /*
 
-  * PRErrorCallbackLookupFn --
 
-  *
 
-  *    A function of PRErrorCallbackLookupFn type is a localization
 
-  *    plugin callback which converts an error code into a description
 
-  *    in the requested language.  The callback is provided the
 
-  *    appropriate error table, private data for the plugin and the table.
 
-  *    The callback returns the appropriate UTF-8 encoded description, or NULL
 
-  *    if no description can be found.
 
-  */
 
- typedef const char *
 
- PRErrorCallbackLookupFn(PRErrorCode code, PRLanguageCode language, 
 
- 		   const struct PRErrorTable *table,
 
- 		   struct PRErrorCallbackPrivate *cb_private,
 
- 		   struct PRErrorCallbackTablePrivate *table_private);
 
- /*
 
-  * PRErrorCallbackNewTableFn --
 
-  *
 
-  *    A function PRErrorCallbackNewTableFn type is a localization plugin
 
-  *    callback which is called once with each error table registered
 
-  *    with NSPR.  The callback is provided with the error table and
 
-  *    the plugin's private structure.  The callback returns any table private
 
-  *    data it wishes to associate with the error table.  Does not need to be thread
 
-  *    safe.
 
-  */
 
- typedef struct PRErrorCallbackTablePrivate *
 
- PRErrorCallbackNewTableFn(const struct PRErrorTable *table,
 
- 			struct PRErrorCallbackPrivate *cb_private);
 
- /**********************************************************************/
 
- /****************************** FUNCTIONS *****************************/
 
- /**********************************************************************/
 
- /***********************************************************************
 
- ** FUNCTION:    PR_ErrorToString
 
- ** DESCRIPTION:
 
- **  Returns the UTF-8 message for an error code in
 
- **  the requested language.  May return the message
 
- **  in the default language if a translation in the requested
 
- **  language is not available.  The returned string is
 
- **  valid for the duration of the process.  Never returns NULL.
 
- **
 
- ***********************************************************************/
 
- NSPR_API(const char *) PR_ErrorToString(PRErrorCode code,
 
-     PRLanguageCode language);
 
- /***********************************************************************
 
- ** FUNCTION:    PR_ErrorToName
 
- ** DESCRIPTION:
 
- **  Returns the macro name for an error code, or NULL
 
- **  if the error code is not known.  The returned string is
 
- **  valid for the duration of the process.
 
- **
 
- **  Does not work for error table 0, the system error codes.
 
- **
 
- ***********************************************************************/
 
- NSPR_API(const char *) PR_ErrorToName(PRErrorCode code);
 
- /***********************************************************************
 
- ** FUNCTION:    PR_ErrorLanguages
 
- ** DESCRIPTION:
 
- **  Returns the RFC 1766 language tags for the language
 
- **  codes PR_ErrorToString() supports.  The returned array is valid
 
- **  for the duration of the process.  Never returns NULL.  The first
 
- **  item in the returned array is the language tag for PRLanguageCode 0,
 
- **  the second is for PRLanguageCode 1, and so on.  The array is terminated
 
- **  with a null pointer.
 
- **
 
- ***********************************************************************/
 
- NSPR_API(const char * const *) PR_ErrorLanguages(void);
 
- /***********************************************************************
 
- ** FUNCTION:    PR_ErrorInstallTable
 
- ** DESCRIPTION:
 
- **  Registers an error table with NSPR.  Must be done exactly once per
 
- **  table.  Memory pointed to by `table' must remain valid for the life
 
- **  of the process.
 
- **
 
- **  NOT THREAD SAFE!
 
- **  
 
- ***********************************************************************/
 
- NSPR_API(PRErrorCode) PR_ErrorInstallTable(const struct PRErrorTable *table);
 
- /***********************************************************************
 
- ** FUNCTION:    PR_ErrorInstallCallback
 
- ** DESCRIPTION:
 
- **  Registers an error localization plugin with NSPR.  May be called
 
- **  at most one time.  `languages' contains the language codes supported
 
- **  by this plugin.  Languages 0 and 1 must be "i-default" and "en"
 
- **  respectively.  `lookup' and `newtable' contain pointers to
 
- **  the plugin callback functions.  `cb_private' contains any information
 
- **  private to the plugin functions.
 
- **
 
- **  NOT THREAD SAFE!
 
- **
 
- ***********************************************************************/
 
- NSPR_API(void) PR_ErrorInstallCallback(const char * const * languages,
 
- 			      PRErrorCallbackLookupFn *lookup, 
 
- 			      PRErrorCallbackNewTableFn *newtable,
 
- 			      struct PRErrorCallbackPrivate *cb_private);
 
- PR_END_EXTERN_C
 
- #endif /* prerror_h___ */
 
 
  |