gecko-dev/modules/libnls/headers/nlsres.h
2004-04-25 21:07:34 +00:00

351 lines
9.8 KiB
C

/* -*- 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* 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 _NLSRES_H
#define _NLSRES_H
#include "nlsxp.h"
#include "nlsuni.h"
#include "nlsloc.h"
#include "nlsmsg.h"
#include "nlsutl.h"
#ifdef NLS_CPLUSPLUS
#include "resbdl.h"
#include "msgfmt.h"
#include "msgstr.h"
#endif
NLS_BEGIN_PROTOS
/**************************** Types *********************************/
#ifndef NLS_CPLUSPLUS
typedef struct _PropertyResourceBundle PropertyResourceBundle;
typedef struct _MessageString MessageString;
#endif
/********************** Library Initialization ***********************/
/* NLS_ResInitialize
*
* Initialize the NLS Resource library.
*
* Status Return
* NLS_SUCCESS
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_ResInitialize(const NLS_ThreadInfo* threadInfo, const char* resourceDirectory);
/* NLS_ResTerminate
*
* Terminate the library.
*
* Status Return
* NLS_SUCCESS
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_ResTerminate(void);
/************************ Search Path APIs ******************************/
/* NLS_ResAddSearchPath
*
* Add a new search path to the NLS Resource library for
* searching for resource files
*
* Status Return
* NLS_SUCCES - completed
* NLS_PARAM_ERROR - bad search path
* NLS_INTERNAL_PROGRAM_ERROR - internal failure, could not add path
*
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_ResAddSearchPath(const char* searchPath);
/* NLS_GetSearchPath
*
* Returns the current search path as a const char*
*
*/
NLSRESAPI_PUBLIC(const char*)
NLS_ResGetSearchPath(void);
/************************ Simple Resource APIs ******************************/
/** NLS_PropertyResourceGetUnicodeResource
*
* Gets a UnioceString resource from the specified property file, given the user accept-language
* specification. The UnicodeString must be release by call NLS_DeleteUnicodeString
*
* Status Return
* If the resource is not located a NULL pointer will return.
*/
NLSRESAPI_PUBLIC(UnicodeString*)
NLS_PropertyResourceGetUnicodeResource(const char* packageName, const char* acceptLanguage,
const char* key);
/** NLS_PropertyResourceGetCharResource
*
* Gets a char* resource from the specified property file, given the user accept-language
* specification in the specified encoding.
* If the to_charset is not specified, the property $TARGET_ENCODING$ in the resouce
* bundle will be used to specify the encoding. The cvhar* must be release by call free()
*
* Status Return
* If the resource is not located a NULL pointer will return.
*/
NLSRESAPI_PUBLIC(char*)
NLS_PropertyResourceGetCharResource(const char* packageName, const char* acceptLanguage,
const char* key, const char* to_charset);
/************************ Resource APIs ******************************/
/** NLS_PropertyResourceBundleExists
*
* Determine if the specified resource bundle (or something close to it) exists.
*
*/
NLSRESAPI_PUBLIC(nlsBool)
NLS_PropertyResourceBundleExists(const char* packageName,
const Locale* locale);
/** NLS_NewPropertyResourceBundle
*
* Creates a new PropertyResourceBundle from the specified locale and
* package name.
*
* Status Return
* NLS_SUCCESS
* NLS_USING_FALLBACK_LOCALE
* NLS_PARAM_ERROR
* NLS_RESOURCE_OPEN_ERROR
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_NewPropertyResourceBundle(PropertyResourceBundle** resourceBundle,
const char* packageName,
const Locale* locale);
/** NLS_NewPropertyResourceBundleFromAcceptLanguage
*
* Creates a new PropertyResourceBundle from the specified accept-language string and
* package name.
*
* Status Return
* NLS_SUCCESS
* NLS_USING_FALLBACK_LOCALE
* NLS_PARAM_ERROR
* NLS_RESOURCE_OPEN_ERROR
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_NewPropertyResourceBundleFromAcceptLanguage(PropertyResourceBundle** resourceBundle,
const char* packageName,
const char* acceptLanguage);
/** NLS_DeletePropertyResourceBundle
*
* Destroy a ResourceBundle.
*
* Status Return
* NLS_SUCCESS
* NLS_PARAM_ERROR
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_DeletePropertyResourceBundle(PropertyResourceBundle* resourceBundle);
/** NLS_PropertyResourceBundleGetString
*
* Get a string from the ResourceBundle given a key.
*
* Status Return
* NLS_SUCCESS
* NLS_PARAM_ERROR
* NLS_RESOURCE_NOT_FOUND
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_PropertyResourceBundleGetString(PropertyResourceBundle* resourceBundle,
const char* key, UnicodeString * resource);
/** NLS_PropertyResourceBundleGetStringUniChar
*
* Get a string from the ResourceBundle, lengths are UniChar counts, and
* not byte counts.
*
* Status Return
* NLS_SUCCESS
* NLS_PARAM_ERROR
* NLS_RESOURCE_NOT_FOUND
* NLS_RESULT_TRUNCATED
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_PropertyResourceBundleGetStringUniChar(PropertyResourceBundle* resourceBundle,
const char* key,
UniChar* resource,
size_t length,
size_t* resultLength);
/** NLS_PropertyResourceBundleGetChar
*
* Get a char* from the ResourceBundle. The memory allocated by this routine must
* be freed using free(); If no encoding name is specified the routine will use the
* default encoding specified by the property file itself to specify the output encoding.
*
* Status Return
* If an error occurs, a NULL pointer will be returned by this routine.
*
*/
NLSRESAPI_PUBLIC(char*)
NLS_PropertyResourceBundleGetChar(PropertyResourceBundle* resourceBundle,
const char* key,
const char* to_charset);
/** NLS_PropertyResourceBundleGetStringLength
*
* Get the UniChar length from the string corresponding to the key passed in.
*
* Status Return
* NLS_SUCCESS
* NLS_PARAM_ERROR
* NLS_RESOURCE_NOT_FOUND
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_PropertyResourceBundleGetStringLength(PropertyResourceBundle *resourceBundle,
const char* key,
size_t *resultLength);
/************************ Message String ******************************/
/** NLS_NewMessageString
*
* Creates a new MessageString. A message string is a packed formatted message
* which includes the message key, and the parameters. A string representation
* for the message string can be obtained in any locale.
*
* err = NLS_NewMessageString(result,
* "my.package.string", "STRING_1",
* NLS_TYPE_STRING, "A Disk",
* NLS_TYPE_LONG, 5, -1);
*
* Status Return
* NLS_SUCCESS
* NLS_PARAM_ERROR
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_NewMessageString(MessageString** messageString,
const char* packageName,
const char* key, ...);
/** NLS_NewMessageStringFromTemplate
*
* Creates a new MessageString. From the exported format.
*
* Status Return
* NLS_SUCCESS
* NLS_PARAM_ERROR
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_NewMessageStringFromExportFormat(MessageString** messageString,
const char* exportFormat);
/** NLS_DeleteMessageString
*
* Destroy a ResourceBundle.
*
* Status Return
* NLS_SUCCESS
* NLS_PARAM_ERROR
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_DeleteMessageString(MessageString* messageString);
/** NLS_MessageStringGetExportFormat
*
* Gets an exportable format string from the MessageString. This can be used to
* recreade a MessageString at some future point in time.
*
* Status Return
* NLS_SUCCESS
* NLS_PARAM_ERROR
* NLS_RESULT_TRUNCATED
*/
NLSRESAPI_PUBLIC(const char*)
NLS_MessageStringGetExportFormat(MessageString *messageString);
/** NLS_MessageStringGetStringFromLocale
*
* Gets the user visible string from the MessageString for a given locale.
*
* Status Return
* NLS_SUCCESS
* NLS_PARAM_ERROR
* NLS_RESOURCE_NOT_FOUND
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_MessageStringGetStringFromLocale(MessageString *messageString,
const Locale* locale,
UnicodeString * resource);
/** NLS_MessageStringGetStringFromLocale
*
* Gets the user visible string from the MessageString for a given accept-language.
*
* Status Return
* NLS_SUCCESS
* NLS_PARAM_ERROR
* NLS_RESOURCE_NOT_FOUND
*/
NLSRESAPI_PUBLIC(NLS_ErrorCode)
NLS_MessageStringGetStringFromAcceptLanguage(MessageString *messageString,
const char* acceptLanguage,
UnicodeString * resource);
/************************ End ******************************/
NLS_END_PROTOS
#endif /* _NLSRES_H */