LCOV - code coverage report
Current view: top level - nsprpub/pr/include - prerror.h (source / functions) Hit Total Coverage
Test: output.info Lines: 4 11 36.4 %
Date: 2017-07-14 16:53:18 Functions: 4 11 36.4 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.13