/*
 *
 * (C) Copyright IBM Corp. 1998 - 2003. All Rights Reserved.
 *
 * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS
 * YOU REALLY KNOW WHAT YOU'RE DOING.
 *
 * $Source: /xsrl/Nsvn/icu/icu/source/layout/ScriptAndLanguageTags.h,v $
 * $Date: 2003/04/15 20:43:27 $
 * $Revision: 1.8 $
 */

#ifndef __SCRIPTANDLANGUAGES_H
#define __SCRIPTANDLANGUAGES_H

/**
 * \file
 * \internal
 */

#include "LETypes.h"

U_NAMESPACE_BEGIN

const LETag zyyyScriptTag = LE_MAKE_TAG('z', 'y', 'y', 'y'); /* COMMON */
const LETag qaaiScriptTag = LE_MAKE_TAG('q', 'a', 'a', 'i'); /* INHERITED */
const LETag arabScriptTag = LE_MAKE_TAG('a', 'r', 'a', 'b'); /* ARABIC */
const LETag armnScriptTag = LE_MAKE_TAG('a', 'r', 'm', 'n'); /* ARMENIAN */
const LETag bengScriptTag = LE_MAKE_TAG('b', 'e', 'n', 'g'); /* BENGALI */
const LETag bopoScriptTag = LE_MAKE_TAG('b', 'o', 'p', 'o'); /* BOPOMOFO */
const LETag cherScriptTag = LE_MAKE_TAG('c', 'h', 'e', 'r'); /* CHEROKEE */
const LETag qaacScriptTag = LE_MAKE_TAG('q', 'a', 'a', 'c'); /* COPTIC */
const LETag cyrlScriptTag = LE_MAKE_TAG('c', 'y', 'r', 'l'); /* CYRILLIC */
const LETag dsrtScriptTag = LE_MAKE_TAG('d', 's', 'r', 't'); /* DESERET */
const LETag devaScriptTag = LE_MAKE_TAG('d', 'e', 'v', 'a'); /* DEVANAGARI */
const LETag ethiScriptTag = LE_MAKE_TAG('e', 't', 'h', 'i'); /* ETHIOPIC */
const LETag georScriptTag = LE_MAKE_TAG('g', 'e', 'o', 'r'); /* GEORGIAN */
const LETag gothScriptTag = LE_MAKE_TAG('g', 'o', 't', 'h'); /* GOTHIC */
const LETag grekScriptTag = LE_MAKE_TAG('g', 'r', 'e', 'k'); /* GREEK */
const LETag gujrScriptTag = LE_MAKE_TAG('g', 'u', 'j', 'r'); /* GUJARATI */
const LETag guruScriptTag = LE_MAKE_TAG('g', 'u', 'r', 'u'); /* GURMUKHI */
const LETag haniScriptTag = LE_MAKE_TAG('h', 'a', 'n', 'i'); /* HAN */
const LETag hangScriptTag = LE_MAKE_TAG('h', 'a', 'n', 'g'); /* HANGUL */
const LETag hebrScriptTag = LE_MAKE_TAG('h', 'e', 'b', 'r'); /* HEBREW */
const LETag hiraScriptTag = LE_MAKE_TAG('h', 'i', 'r', 'a'); /* HIRAGANA */
const LETag kndaScriptTag = LE_MAKE_TAG('k', 'n', 'd', 'a'); /* KANNADA */
const LETag kanaScriptTag = LE_MAKE_TAG('k', 'a', 'n', 'a'); /* KATAKANA */
const LETag khmrScriptTag = LE_MAKE_TAG('k', 'h', 'm', 'r'); /* KHMER */
const LETag laooScriptTag = LE_MAKE_TAG('l', 'a', 'o', 'o'); /* LAO */
const LETag latnScriptTag = LE_MAKE_TAG('l', 'a', 't', 'n'); /* LATIN */
const LETag mlymScriptTag = LE_MAKE_TAG('m', 'l', 'y', 'm'); /* MALAYALAM */
const LETag mongScriptTag = LE_MAKE_TAG('m', 'o', 'n', 'g'); /* MONGOLIAN */
const LETag mymrScriptTag = LE_MAKE_TAG('m', 'y', 'm', 'r'); /* MYANMAR */
const LETag ogamScriptTag = LE_MAKE_TAG('o', 'g', 'a', 'm'); /* OGHAM */
const LETag italScriptTag = LE_MAKE_TAG('i', 't', 'a', 'l'); /* OLD_ITALIC */
const LETag oryaScriptTag = LE_MAKE_TAG('o', 'r', 'y', 'a'); /* ORIYA */
const LETag runrScriptTag = LE_MAKE_TAG('r', 'u', 'n', 'r'); /* RUNIC */
const LETag sinhScriptTag = LE_MAKE_TAG('s', 'i', 'n', 'h'); /* SINHALA */
const LETag syrcScriptTag = LE_MAKE_TAG('s', 'y', 'r', 'c'); /* SYRIAC */
const LETag tamlScriptTag = LE_MAKE_TAG('t', 'a', 'm', 'l'); /* TAMIL */
const LETag teluScriptTag = LE_MAKE_TAG('t', 'e', 'l', 'u'); /* TELUGU */
const LETag thaaScriptTag = LE_MAKE_TAG('t', 'h', 'a', 'a'); /* THAANA */
const LETag thaiScriptTag = LE_MAKE_TAG('t', 'h', 'a', 'i'); /* THAI */
const LETag tibtScriptTag = LE_MAKE_TAG('t', 'i', 'b', 't'); /* TIBETAN */
const LETag cansScriptTag = LE_MAKE_TAG('c', 'a', 'n', 's'); /* CANADIAN_ABORIGINAL */
const LETag yiiiScriptTag = LE_MAKE_TAG('y', 'i', 'i', 'i'); /* YI */
const LETag tglgScriptTag = LE_MAKE_TAG('t', 'g', 'l', 'g'); /* TAGALOG */
const LETag hanoScriptTag = LE_MAKE_TAG('h', 'a', 'n', 'o'); /* HANUNOO */
const LETag buhdScriptTag = LE_MAKE_TAG('b', 'u', 'h', 'd'); /* BUHID */
const LETag tagbScriptTag = LE_MAKE_TAG('t', 'a', 'g', 'b'); /* TAGBANWA */
const LETag braiScriptTag = LE_MAKE_TAG('b', 'r', 'a', 'i'); /* BRAILLE */
const LETag cprtScriptTag = LE_MAKE_TAG('c', 'p', 'r', 't'); /* CYPRIOT */
const LETag limbScriptTag = LE_MAKE_TAG('l', 'i', 'm', 'b'); /* LIMBU */
const LETag linbScriptTag = LE_MAKE_TAG('l', 'i', 'n', 'b'); /* LINEAR_B */
const LETag osmaScriptTag = LE_MAKE_TAG('o', 's', 'm', 'a'); /* OSMANYA */
const LETag shawScriptTag = LE_MAKE_TAG('s', 'h', 'a', 'w'); /* SHAVIAN */
const LETag taleScriptTag = LE_MAKE_TAG('t', 'a', 'l', 'e'); /* TAI_LE */
const LETag ugarScriptTag = LE_MAKE_TAG('u', 'g', 'a', 'r'); /* UGARITIC */

const LETag nullScriptTag = 0x00000000; /* ''     (NULL) */


const LETag nullLanguageTag = 0x00000000; /* null */
const LETag araLanguageTag = LE_MAKE_TAG('A', 'R', 'A', ' '); /* Arabic */
const LETag asmLanguageTag = LE_MAKE_TAG('A', 'S', 'M', ' '); /* Assamese */
const LETag benLanguageTag = LE_MAKE_TAG('B', 'E', 'N', ' '); /* Bengali */
const LETag farLanguageTag = LE_MAKE_TAG('F', 'A', 'R', ' '); /* Farsi */
const LETag gujLanguageTag = LE_MAKE_TAG('G', 'U', 'J', ' '); /* Gujarati */
const LETag hinLanguageTag = LE_MAKE_TAG('H', 'I', 'N', ' '); /* Hindi */
const LETag iwrLanguageTag = LE_MAKE_TAG('I', 'W', 'R', ' '); /* Hebrew */
const LETag jiiLanguageTag = LE_MAKE_TAG('J', 'I', 'I', ' '); /* Yiddish */
const LETag janLanguageTag = LE_MAKE_TAG('J', 'A', 'N', ' '); /* Japanese */
const LETag kanLanguageTag = LE_MAKE_TAG('K', 'A', 'N', ' '); /* Kannada */
const LETag kokLanguageTag = LE_MAKE_TAG('K', 'O', 'K', ' '); /* Konkani */
const LETag korLanguageTag = LE_MAKE_TAG('K', 'O', 'R', ' '); /* Korean */
const LETag kshLanguageTag = LE_MAKE_TAG('K', 'S', 'H', ' '); /* Kashmiri */
const LETag malLanguageTag = LE_MAKE_TAG('M', 'A', 'L', ' '); /* Malayalam (Traditional) */
const LETag marLanguageTag = LE_MAKE_TAG('M', 'A', 'R', ' '); /* Marathi */
const LETag mlrLanguageTag = LE_MAKE_TAG('M', 'L', 'R', ' '); /* Malayalam (Reformed) */
const LETag mniLanguageTag = LE_MAKE_TAG('M', 'N', 'I', ' '); /* Manipuri */
const LETag oriLanguageTag = LE_MAKE_TAG('O', 'R', 'I', ' '); /* Oriya */
const LETag sanLanguageTag = LE_MAKE_TAG('S', 'A', 'N', ' '); /* Sanscrit */
const LETag sndLanguageTag = LE_MAKE_TAG('S', 'N', 'D', ' '); /* Sindhi */
const LETag snhLanguageTag = LE_MAKE_TAG('S', 'N', 'H', ' '); /* Sinhalese */
const LETag syrLanguageTag = LE_MAKE_TAG('S', 'Y', 'R', ' '); /* Syriac */
const LETag tamLanguageTag = LE_MAKE_TAG('T', 'A', 'M', ' '); /* Tamil */
const LETag telLanguageTag = LE_MAKE_TAG('T', 'E', 'L', ' '); /* Telugu */
const LETag thaLanguageTag = LE_MAKE_TAG('T', 'H', 'A', ' '); /* Thai */
const LETag urdLanguageTag = LE_MAKE_TAG('U', 'R', 'D', ' '); /* Urdu */
const LETag zhpLanguageTag = LE_MAKE_TAG('Z', 'H', 'P', ' '); /* Chinese (Phonetic) */
const LETag zhsLanguageTag = LE_MAKE_TAG('Z', 'H', 'S', ' '); /* Chinese (Simplified) */
const LETag zhtLanguageTag = LE_MAKE_TAG('Z', 'H', 'T', ' '); /* Chinese (Traditional) */


U_NAMESPACE_END
#endif
