home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / CMCD1104.ISO / Software / Complet / Apache / apache_2.0.52-win32-x86-no_ssl.msi / Data.Cab / F277246_apr_xlate.h < prev    next >
C/C++ Source or Header  |  2004-02-13  |  6KB  |  158 lines

  1. /* Copyright 2000-2004 The Apache Software Foundation
  2.  *
  3.  * Licensed under the Apache License, Version 2.0 (the "License");
  4.  * you may not use this file except in compliance with the License.
  5.  * You may obtain a copy of the License at
  6.  *
  7.  *     http://www.apache.org/licenses/LICENSE-2.0
  8.  *
  9.  * Unless required by applicable law or agreed to in writing, software
  10.  * distributed under the License is distributed on an "AS IS" BASIS,
  11.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12.  * See the License for the specific language governing permissions and
  13.  * limitations under the License.
  14.  */
  15.  
  16. #ifndef APR_XLATE_H
  17. #define APR_XLATE_H
  18.  
  19. #include "apu.h"
  20. #include "apr_pools.h"
  21. #include "apr_errno.h"
  22.  
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif /* __cplusplus */
  26.  
  27. /**
  28.  * @file apr_xlate.h
  29.  * @brief APR I18N translation library
  30.  */
  31.  
  32. /**
  33.  * @defgroup APR_XLATE I18N translation library
  34.  * @ingroup APR
  35.  * @{
  36.  */
  37. /** Opaque translation buffer */
  38. typedef struct apr_xlate_t            apr_xlate_t;
  39.  
  40. /**
  41.  * Set up for converting text from one charset to another.
  42.  * @param convset The handle to be filled in by this function
  43.  * @param topage The name of the target charset
  44.  * @param frompage The name of the source charset
  45.  * @param pool The pool to use
  46.  * @remark
  47.  *  Specify APR_DEFAULT_CHARSET for one of the charset
  48.  *  names to indicate the charset of the source code at
  49.  *  compile time.  This is useful if there are literal
  50.  *  strings in the source code which must be translated
  51.  *  according to the charset of the source code.
  52.  *  APR_DEFAULT_CHARSET is not useful if the source code
  53.  *  of the caller was not encoded in the same charset as
  54.  *  APR at compile time.
  55.  *
  56.  * @remark
  57.  *  Specify APR_LOCALE_CHARSET for one of the charset
  58.  *  names to indicate the charset of the current locale.
  59.  *
  60.  * @remark
  61.  *  Return APR_EINVAL if unable to procure a convset, or APR_ENOTIMPL
  62.  *  if charset transcoding is not available in this instance of
  63.  *  apr-util at all (i.e., APR_HAS_XLATE is undefined).
  64.  */
  65. APU_DECLARE(apr_status_t) apr_xlate_open(apr_xlate_t **convset, 
  66.                                          const char *topage, 
  67.                                          const char *frompage, 
  68.                                          apr_pool_t *pool);
  69.  
  70. /** 
  71.  * This is to indicate the charset of the sourcecode at compile time
  72.  * names to indicate the charset of the source code at
  73.  * compile time.  This is useful if there are literal
  74.  * strings in the source code which must be translated
  75.  * according to the charset of the source code.
  76.  */
  77. #define APR_DEFAULT_CHARSET (const char *)0
  78. /**
  79.  * To indicate charset names of the current locale 
  80.  */
  81. #define APR_LOCALE_CHARSET (const char *)1
  82.  
  83. /**
  84.  * Find out whether or not the specified conversion is single-byte-only.
  85.  * @param convset The handle allocated by apr_xlate_open, specifying the 
  86.  *                parameters of conversion
  87.  * @param onoff Output: whether or not the conversion is single-byte-only
  88.  * @remark
  89.  *  Return APR_ENOTIMPL if charset transcoding is not available
  90.  *  in this instance of apr-util (i.e., APR_HAS_XLATE is undefined).
  91.  */
  92. APU_DECLARE(apr_status_t) apr_xlate_sb_get(apr_xlate_t *convset, int *onoff);
  93.  
  94. /** @deprecated @see apr_xlate_sb_get */
  95. APU_DECLARE(apr_status_t) apr_xlate_get_sb(apr_xlate_t *convset, int *onoff);
  96.  
  97. /**
  98.  * Convert a buffer of text from one codepage to another.
  99.  * @param convset The handle allocated by apr_xlate_open, specifying 
  100.  *                the parameters of conversion
  101.  * @param inbuf The address of the source buffer
  102.  * @param inbytes_left Input: the amount of input data to be translated
  103.  *                     Output: the amount of input data not yet translated    
  104.  * @param outbuf The address of the destination buffer
  105.  * @param outbytes_left Input: the size of the output buffer
  106.  *                      Output: the amount of the output buffer not yet used
  107.  * @remark
  108.  *  Return APR_ENOTIMPL if charset transcoding is not available
  109.  *  in this instance of apr-util (i.e., APR_HAS_XLATE is undefined).
  110.  */
  111. APU_DECLARE(apr_status_t) apr_xlate_conv_buffer(apr_xlate_t *convset, 
  112.                                                 const char *inbuf, 
  113.                                                 apr_size_t *inbytes_left, 
  114.                                                 char *outbuf,
  115.                                                 apr_size_t *outbytes_left);
  116.  
  117. /* @see apr_file_io.h the comment in apr_file_io.h about this hack */
  118. #ifdef APR_NOT_DONE_YET
  119. /**
  120.  * The purpose of apr_xlate_conv_char is to translate one character
  121.  * at a time.  This needs to be written carefully so that it works
  122.  * with double-byte character sets. 
  123.  * @param convset The handle allocated by apr_xlate_open, specifying the
  124.  *                parameters of conversion
  125.  * @param inchar The character to convert
  126.  * @param outchar The converted character
  127.  */
  128. APU_DECLARE(apr_status_t) apr_xlate_conv_char(apr_xlate_t *convset, 
  129.                                               char inchar, char outchar);
  130. #endif
  131.  
  132. /**
  133.  * Convert a single-byte character from one charset to another.
  134.  * @param convset The handle allocated by apr_xlate_open, specifying the 
  135.  *                parameters of conversion
  136.  * @param inchar The single-byte character to convert.
  137.  * @warning This only works when converting between single-byte character sets.
  138.  *          -1 will be returned if the conversion can't be performed.
  139.  */
  140. APU_DECLARE(apr_int32_t) apr_xlate_conv_byte(apr_xlate_t *convset, 
  141.                                              unsigned char inchar);
  142.  
  143. /**
  144.  * Close a codepage translation handle.
  145.  * @param convset The codepage translation handle to close
  146.  * @remark
  147.  *  Return APR_ENOTIMPL if charset transcoding is not available
  148.  *  in this instance of apr-util (i.e., APR_HAS_XLATE is undefined).
  149.  */
  150. APU_DECLARE(apr_status_t) apr_xlate_close(apr_xlate_t *convset);
  151.  
  152. /** @} */
  153. #ifdef __cplusplus
  154. }
  155. #endif
  156.  
  157. #endif  /* ! APR_XLATE_H */
  158.