root/headers/os/locale/Language.h
/*
 * Copyright 2003-2011, Haiku, Inc.
 * Distributed under the terms of the MIT License.
 */
#ifndef _LANGUAGE_H_
#define _LANGUAGE_H_


#include <LocaleStrings.h>
#include <String.h>
#include <SupportDefs.h>


class BBitmap;

// We must not include the icu headers in there as it could mess up binary
// compatibility.
#ifndef U_ICU_NAMESPACE
  #define U_ICU_NAMESPACE icu
#endif
namespace U_ICU_NAMESPACE {
        class Locale;
}


enum script_direction {
        B_LEFT_TO_RIGHT = 0,
        B_RIGHT_TO_LEFT,
        B_TOP_TO_BOTTOM,        // seems not to be supported anywhere else?
};


class BLanguage {
public:
                                                                BLanguage();
                                                                BLanguage(const char* language);
                                                                BLanguage(const BLanguage& other);
                                                                ~BLanguage();

                        status_t                        SetTo(const char* language);

                        status_t                        GetNativeName(BString& name) const;
                        status_t                        GetName(BString& name,
                                                                        const BLanguage* displayLanguage = NULL
                                                                        ) const;
                        const char*                     GetString(uint32 id) const;
                        status_t                        GetIcon(BBitmap* result) const;

                        const char*                     Code() const;
                                                                        // ISO-639-1
                        const char*                     CountryCode() const;
                                                                        // ISO-3166
                        const char*                     ScriptCode() const;
                                                                        // ISO-15924
                        const char*                     Variant() const;
                        const char*                     ID() const;

                        bool                            IsCountrySpecific() const;
                        bool                            IsVariant() const;

                        uint8                           Direction() const;

                        BLanguage&                      operator=(const BLanguage& source);

                        class Private;
private:
        friend  class Private;

                        uint8                           fDirection;
                        U_ICU_NAMESPACE::Locale*                fICULocale;
};


#endif  // _LANGUAGE_H_