mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-27 10:57:34 +09:00
Issue #1258 - Part 1: Import mailnews, ldap, and mork from comm-esr52.9.1
This commit is contained in:
parent
23e0d82436
commit
e400f4130a
1564 changed files with 510348 additions and 0 deletions
198
mailnews/base/util/nsMsgI18N.h
Normal file
198
mailnews/base/util/nsMsgI18N.h
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef _nsMsgI18N_H_
|
||||
#define _nsMsgI18N_H_
|
||||
|
||||
#include "nscore.h"
|
||||
#include "msgCore.h"
|
||||
#include "nsStringGlue.h"
|
||||
class nsIFile;
|
||||
|
||||
/**
|
||||
* Encode an input string into RFC 2047 form.
|
||||
*
|
||||
* @param header [IN] A header to encode.
|
||||
* @param structured [IN] Specify the header is structured or non-structured field (See RFC-822).
|
||||
* @param charset [IN] Charset name to convert.
|
||||
* @param fieldnamelen [IN] Header field name length. (e.g. "From: " -> 6)
|
||||
* @param usemime [IN] If false then apply charset conversion only no MIME encoding.
|
||||
* @return Encoded buffer (in C string) or NULL in case of error.
|
||||
*/
|
||||
NS_MSG_BASE char *nsMsgI18NEncodeMimePartIIStr(const char *header, bool structured, const char *charset, int32_t fieldnamelen, bool usemime);
|
||||
|
||||
/**
|
||||
* Check if given charset is stateful (e.g. ISO-2022-JP).
|
||||
*
|
||||
* @param charset [IN] Charset name.
|
||||
* @return True if stateful
|
||||
*/
|
||||
NS_MSG_BASE bool nsMsgI18Nstateful_charset(const char *charset);
|
||||
|
||||
/**
|
||||
* Check if given charset is multibye (e.g. Shift_JIS, Big5).
|
||||
*
|
||||
* @param charset [IN] Charset name.
|
||||
* @return True if multibyte
|
||||
*/
|
||||
NS_MSG_BASE bool nsMsgI18Nmultibyte_charset(const char *charset);
|
||||
|
||||
/**
|
||||
* Check the input (unicode) string is in a range of the given charset after the conversion.
|
||||
* Note, do not use this for large string (e.g. message body) since this actually applies the conversion to the buffer.
|
||||
*
|
||||
* @param charset [IN] Charset to be converted.
|
||||
* @param inString [IN] Input unicode string to be examined.
|
||||
* @param fallbackCharset [OUT]
|
||||
* null if fallback charset is not needed.
|
||||
* Otherwise, a fallback charset name may be set if that was used for the conversion.
|
||||
* Caller is responsible for freeing the memory.
|
||||
* @return True if the string can be converted within the charset range.
|
||||
* False if one or more characters cannot be converted to the target charset.
|
||||
*/
|
||||
NS_MSG_BASE bool nsMsgI18Ncheck_data_in_charset_range(const char *charset, const char16_t* inString,
|
||||
char **fallbackCharset=nullptr);
|
||||
|
||||
/**
|
||||
* Return charset name of file system (OS dependent).
|
||||
*
|
||||
* @return File system charset name.
|
||||
*/
|
||||
NS_MSG_BASE const char * nsMsgI18NFileSystemCharset(void);
|
||||
|
||||
/**
|
||||
* Return charset name of text file (OS dependent).
|
||||
*
|
||||
* @param aCharset [OUT] Text file charset name.
|
||||
*/
|
||||
NS_MSG_BASE void nsMsgI18NTextFileCharset(nsACString& aCharset);
|
||||
|
||||
/**
|
||||
* Convert from unicode to target charset.
|
||||
*
|
||||
* @param charset [IN] Charset name.
|
||||
* @param inString [IN] Unicode string to convert.
|
||||
* @param outString [OUT] Converted output string.
|
||||
* @param aIsCharsetCanonical [IN] Whether the charset is canonical or not.
|
||||
* @param aReportUencNoMapping [IN] Set encoder to report (instead of using
|
||||
* replacement char on errors). Set to true
|
||||
* to receive NS_ERROR_UENC_NOMAPPING when
|
||||
* that happens. Note that
|
||||
* NS_ERROR_UENC_NOMAPPING is a success code!
|
||||
* @return nsresult.
|
||||
*/
|
||||
NS_MSG_BASE nsresult nsMsgI18NConvertFromUnicode(const char* aCharset,
|
||||
const nsString& inString,
|
||||
nsACString& outString,
|
||||
bool aIsCharsetCanonical =
|
||||
false,
|
||||
bool reportUencNoMapping =
|
||||
false);
|
||||
/**
|
||||
* Convert from charset to unicode.
|
||||
*
|
||||
* @param charset [IN] Charset name.
|
||||
* @param inString [IN] Input string to convert.
|
||||
* @param outString [OUT] Output unicode string.
|
||||
* @return nsresult.
|
||||
*/
|
||||
NS_MSG_BASE nsresult nsMsgI18NConvertToUnicode(const char* aCharset,
|
||||
const nsCString& inString,
|
||||
nsAString& outString,
|
||||
bool aIsCharsetCanonical =
|
||||
false);
|
||||
/**
|
||||
* Parse for META charset.
|
||||
*
|
||||
* @param file [IN] A nsIFile.
|
||||
* @return A charset name or empty string if not found.
|
||||
*/
|
||||
NS_MSG_BASE const char *nsMsgI18NParseMetaCharset(nsIFile* file);
|
||||
|
||||
/**
|
||||
* Shrink the aStr to aMaxLength bytes. Note that this doesn't check whether
|
||||
* the aUTF8Str is valid UTF-8 string.
|
||||
*
|
||||
* @param inString [IN] Input UTF-8 string (it must be valid UTF-8 string)
|
||||
* @param aMaxLength [IN] Shrink to this length (it means bytes)
|
||||
* @param outString [OUT] Shrunken UTF-8 string
|
||||
* @return nsresult
|
||||
*/
|
||||
NS_MSG_BASE nsresult nsMsgI18NShrinkUTF8Str(const nsCString &inString,
|
||||
uint32_t aMaxLength,
|
||||
nsACString &outString);
|
||||
|
||||
/*
|
||||
* Convert raw bytes in header to UTF-16
|
||||
*
|
||||
* @param inString [IN] Input raw octets
|
||||
* @param outString [OUT] Output UTF-16 string
|
||||
*/
|
||||
NS_MSG_BASE void nsMsgI18NConvertRawBytesToUTF16(const nsCString& inString,
|
||||
const char* charset,
|
||||
nsAString& outString);
|
||||
|
||||
/*
|
||||
* Convert raw bytes in header to UTF-8
|
||||
*
|
||||
* @param inString [IN] Input raw octets
|
||||
* @param outString [OUT] Output UTF-8 string
|
||||
*/
|
||||
NS_MSG_BASE void nsMsgI18NConvertRawBytesToUTF8(const nsCString& inString,
|
||||
const char* charset,
|
||||
nsACString& outString);
|
||||
|
||||
// inline forwarders to avoid littering with 'x-imap4-.....'
|
||||
inline nsresult CopyUTF16toMUTF7(const nsString &aSrc, nsACString& aDest)
|
||||
{
|
||||
return nsMsgI18NConvertFromUnicode("x-imap4-modified-utf7", aSrc,
|
||||
aDest, true);
|
||||
}
|
||||
|
||||
inline nsresult CopyMUTF7toUTF16(const nsCString& aSrc, nsAString& aDest)
|
||||
{
|
||||
return nsMsgI18NConvertToUnicode("x-imap4-modified-utf7", aSrc,
|
||||
aDest, true);
|
||||
}
|
||||
|
||||
inline nsresult ConvertToUnicode(const char* charset,
|
||||
const nsCString &aSrc, nsAString& aDest)
|
||||
{
|
||||
return nsMsgI18NConvertToUnicode(charset, aSrc, aDest);
|
||||
}
|
||||
|
||||
inline nsresult ConvertToUnicode(const char* charset,
|
||||
const char* aSrc, nsAString& aDest)
|
||||
{
|
||||
return nsMsgI18NConvertToUnicode(charset, nsDependentCString(aSrc), aDest);
|
||||
}
|
||||
|
||||
inline nsresult ConvertFromUnicode(const char* charset,
|
||||
const nsString &aSrc, nsACString& aDest)
|
||||
{
|
||||
return nsMsgI18NConvertFromUnicode(charset, aSrc, aDest);
|
||||
}
|
||||
|
||||
inline void ConvertRawBytesToUTF16(const nsCString& inString,
|
||||
const char* charset, nsAString& outString)
|
||||
{
|
||||
return nsMsgI18NConvertRawBytesToUTF16(inString, charset, outString);
|
||||
}
|
||||
|
||||
inline void ConvertRawBytesToUTF16(const char* inString,
|
||||
const char* charset, nsAString& outString)
|
||||
{
|
||||
return nsMsgI18NConvertRawBytesToUTF16(nsDependentCString(inString),
|
||||
charset,
|
||||
outString);
|
||||
}
|
||||
|
||||
inline void ConvertRawBytesToUTF8(const nsCString& inString,
|
||||
const char* charset, nsACString& outString)
|
||||
{
|
||||
return nsMsgI18NConvertRawBytesToUTF8(inString, charset, outString);
|
||||
}
|
||||
|
||||
#endif /* _nsMsgI18N_H_ */
|
||||
Loading…
Add table
Add a link
Reference in a new issue