haiku/headers/private/libroot/locale/ICUCategoryData.h
Oliver Tappe 1e1278f46f Implement taking date strings from messages locale.
* mimic LocaleKit and add option to POSIX locale backend for taking
  the date strings from the messages locale (instead of time locale)
2012-02-23 23:15:36 +01:00

70 lines
1.4 KiB
C++

/*
* Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
* Distributed under the terms of the MIT License.
*/
#ifndef _ICU_CATEGORY_DATA_H
#define _ICU_CATEGORY_DATA_H
#include <pthread.h>
#include <unicode/locid.h>
#include <unicode/unistr.h>
#include <SupportDefs.h>
#include "ICUThreadLocalStorageValue.h"
namespace BPrivate {
namespace Libroot {
class ICUCategoryData {
public:
ICUCategoryData(pthread_key_t tlsKey);
virtual ~ICUCategoryData();
virtual status_t SetTo(const Locale& locale,
const char* posixLocaleName);
virtual status_t SetToPosix();
const char* PosixLocaleName()
{ return fPosixLocaleName; }
const Locale& ICULocale() const;
protected:
status_t _ConvertUnicodeStringToLocaleconvEntry(
const UnicodeString& string,
char* destination, int destinationSize,
const char* defaultValue = "");
status_t _GetConverter(UConverter*& converterOut);
static const uint16 skMaxPosixLocaleNameLen = 128;
static const size_t skLCBufSize = 16;
pthread_key_t fThreadLocalStorageKey;
Locale fLocale;
char fPosixLocaleName[skMaxPosixLocaleNameLen];
char fGivenCharset[UCNV_MAX_CONVERTER_NAME_LENGTH];
private:
status_t _SetupConverter();
};
inline
const Locale&
ICUCategoryData::ICULocale() const
{
return fLocale;
}
} // namespace Libroot
} // namespace BPrivate
#endif // _ICU_CATEGORY_DATA_H