gecko-dev/mailnews/mime/src/comi18n.h

129 lines
5.1 KiB
C
Raw Normal View History

1999-02-16 18:37:10 +00:00
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape 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/NPL/
1999-02-16 18:37:10 +00:00
*
* 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.
1999-02-16 18:37:10 +00:00
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
1999-02-16 18:37:10 +00:00
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
1999-02-16 18:37:10 +00:00
*/
#ifndef _COMI18N_LOADED_H_
#define _COMI18N_LOADED_H_
1999-02-16 18:37:10 +00:00
#include "msgCore.h"
1999-02-16 18:37:10 +00:00
//#ifndef kMIME_ENCODED_WORD_SIZE
//#define kMIME_ENCODED_WORD_SIZE 75
//#endif
#ifndef kMAX_CSNAME
1999-02-16 18:37:10 +00:00
#define kMAX_CSNAME 64
#endif
1999-02-16 18:37:10 +00:00
class nsIUnicodeDecoder;
class nsIUnicodeEncoder;
class nsIStringCharsetDetector;
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/**
* Decode MIME header to UTF-8.
* Uses MIME_ConvertCharset if the decoded string needs a conversion.
*
*
* @param header [IN] A header to decode.
* @param default_charset [IN] Default charset to apply to ulabeled non-UTF-8 8bit data
* @param override_charset [IN] If PR_TRUE, default_charset used instead of any charset labeling other than UTF-8
* @param eatContinuations [IN] If PR_TRUE, unfold headers
* @return Decoded buffer (in C string) or return NULL if the header needs no conversion
*/
extern "C" char *MIME_DecodeMimeHeader(const char *header,
const char *default_charset,
PRBool override_charset,
PRBool eatContinuations);
1999-02-16 18:37:10 +00:00
/**
* Encode an input string into RFC 2047 form.
* This is a replacement for INTL_EncodeMimePartIIStr.
* Unlike INTL_EncodeMimePartIIStr, this does not apply any charset conversion.
* Use MIME_ConvertCharset in advance if the encoding string needs a conversion.
1999-02-16 18:37:10 +00:00
*
*
1999-04-10 01:00:15 +00:00
* @param header [IN] A header to encode (utf-8 Cstring).
1999-02-16 18:37:10 +00:00
* @param mailCharset [IN] Charset name (in C string) to convert.
2000-01-26 22:02:20 +00:00
* @param encodedWordSize [IN] Byte length limit of the output, ususally 72 (use kMIME_ENCODED_WORD_SIZE).
* @return Encoded buffer (in C string) or NULL in case of error.
1999-02-16 18:37:10 +00:00
*/
char *MIME_EncodeMimePartIIStr(const char *header, const char* mailCharset, const PRInt32 encodedWordSize);
1999-02-16 18:37:10 +00:00
/**
* Apply charset conversion to a given string. The conversion is done by an unicode round trip.
1999-02-16 18:37:10 +00:00
* This is a replacement for INTL_ConvertLineWithoutAutoDetect.
* The caller should instanticate converters by XPCOM for that purpose.
1999-02-16 18:37:10 +00:00
*
* Note the caller cannot call this muliple times for a large buffer (of multi byte text)
* since this will not save a state info (i.e. converter instance will be created/destroyed for every call).
1999-02-16 18:37:10 +00:00
*
* @param from_charset[IN] A charset name in C string.
* @param to_charset [IN] A charset name in C string.
* @param inCstring [IN] Input buffer (in C string) to convert.
* @param outCstring [OUT] Converted buffer (in C string) is set. Allocated buffer should be freed by PR_FREE.
* @return 0 is success, otherwise error.
1999-02-16 18:37:10 +00:00
*/
PRInt32 MIME_ConvertString(const char* from_charset, const char* to_charset,
const char* inCstring, char** outCstring);
1999-02-16 18:37:10 +00:00
/**
* Apply charset conversion to a given buffer. The conversion is done by an unicode round trip.
*
* Note the caller cannot call this muliple times for a large buffer (of multi byte text)
* since this will not save a state info (i.e. converter instance will be created/destroyed for every call).
* The caller should instanticate converters by XPCOM for that purpose.
*
1999-06-03 01:08:25 +00:00
* @param autoDetection [IN] True if apply auto charset detection.
* @param from_charset[IN] A charset name in C string.
* @param to_charset [IN] A charset name in C string.
* @param inBuffer [IN] Input buffer to convert.
* @param inLength [IN] Input buffer length.
* @param outBuffer [OUT] Converted buffer is set. Allocated buffer should be freed by PR_FREE.
* @param outLength [OUT] Converted buffer length is set.
* @param numUnConverted [OUT] Number of unconverted characters (can be NULL).
* @return 0 is success, otherwise error.
*/
1999-06-03 01:08:25 +00:00
PRInt32 MIME_ConvertCharset(const PRBool autoDetection, const char* from_charset, const char* to_charset,
const char* inBuffer, const PRInt32 inLength, char** outBuffer, PRInt32* outLength,
PRInt32* numUnConverted);
1999-02-16 18:37:10 +00:00
1999-04-10 01:00:15 +00:00
/**
* Get a next character position in an UTF-8 string.
1999-04-23 17:14:26 +00:00
* Example: s = NextChar_UTF8(s); // get a pointer for the next character
1999-04-10 01:00:15 +00:00
*
*
* @param str [IN] An input C string (UTF-8).
* @return A pointer to the next character.
*/
char * NextChar_UTF8(char *str);
1999-02-16 18:37:10 +00:00
#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */
#endif // _COMI18N_LOADED_H_