]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/ucnv_io.h
ICU-461.12.tar.gz
[apple/icu.git] / icuSources / common / ucnv_io.h
index 7ae6def493d0365d43b3bddfe6f7b67619b1f1f3..060ffd05953db4ab1734514ccc6f231072627926 100644 (file)
@@ -1,13 +1,13 @@
 /*
  **********************************************************************
 /*
  **********************************************************************
- *   Copyright (C) 1999-2004, International Business Machines
+ *   Copyright (C) 1999-2006, International Business Machines
  *   Corporation and others.  All Rights Reserved.
  **********************************************************************
  *
  *
  *  ucnv_io.h:
  *   Corporation and others.  All Rights Reserved.
  **********************************************************************
  *
  *
  *  ucnv_io.h:
- *  defines  variables and functions pertaining to file access, and name resolution
- *  aspect of the library
+ *  defines  variables and functions pertaining to converter name resolution
+ *  aspect of the conversion code
  */
 
 #ifndef UCNV_IO_H
  */
 
 #ifndef UCNV_IO_H
 #include "udataswp.h"
 
 #define UCNV_AMBIGUOUS_ALIAS_MAP_BIT 0x8000
 #include "udataswp.h"
 
 #define UCNV_AMBIGUOUS_ALIAS_MAP_BIT 0x8000
+#define UCNV_CONTAINS_OPTION_BIT 0x4000
 #define UCNV_CONVERTER_INDEX_MASK 0xFFF
 #define UCNV_NUM_RESERVED_TAGS 2
 #define UCNV_NUM_HIDDEN_TAGS 1
 
 #define UCNV_CONVERTER_INDEX_MASK 0xFFF
 #define UCNV_NUM_RESERVED_TAGS 2
 #define UCNV_NUM_HIDDEN_TAGS 1
 
+enum {
+    UCNV_IO_UNNORMALIZED,
+    UCNV_IO_STD_NORMALIZED,
+    UCNV_IO_NORM_TYPE_COUNT
+};
+
+typedef struct {
+    uint16_t stringNormalizationType;
+    uint16_t containsCnvOptionInfo;
+} UConverterAliasOptions;
+
+typedef struct UConverterAlias {
+    const uint16_t *converterList;
+    const uint16_t *tagList;
+    const uint16_t *aliasList;
+    const uint16_t *untaggedConvArray;
+    const uint16_t *taggedAliasArray;
+    const uint16_t *taggedAliasLists;
+    const UConverterAliasOptions *optionTable;
+    const uint16_t *stringTable;
+    const uint16_t *normalizedStringTable;
+
+    uint32_t converterListSize;
+    uint32_t tagListSize;
+    uint32_t aliasListSize;
+    uint32_t untaggedConvArraySize;
+    uint32_t taggedAliasArraySize;
+    uint32_t taggedAliasListsSize;
+    uint32_t optionTableSize;
+    uint32_t stringTableSize;
+    uint32_t normalizedStringTableSize;
+} UConverterAlias;
+
 /**
  * \var ucnv_io_stripForCompare
  * Remove the underscores, dashes and spaces from the name, and convert
  * the name to lower case.
  * @param dst The destination buffer, which is <= the buffer of name.
  * @param dst The destination buffer, which is <= the buffer of name.
 /**
  * \var ucnv_io_stripForCompare
  * Remove the underscores, dashes and spaces from the name, and convert
  * the name to lower case.
  * @param dst The destination buffer, which is <= the buffer of name.
  * @param dst The destination buffer, which is <= the buffer of name.
+ * @see ucnv_compareNames
  * @return the destination buffer.
  */
 #if U_CHARSET_FAMILY==U_ASCII_FAMILY
  * @return the destination buffer.
  */
 #if U_CHARSET_FAMILY==U_ASCII_FAMILY
 #   error U_CHARSET_FAMILY is not valid
 #endif
 
 #   error U_CHARSET_FAMILY is not valid
 #endif
 
-U_CFUNC char * U_EXPORT2
+U_CAPI char * U_EXPORT2
 ucnv_io_stripASCIIForCompare(char *dst, const char *name);
 
 ucnv_io_stripASCIIForCompare(char *dst, const char *name);
 
-U_CFUNC char * U_EXPORT2
+U_CAPI char * U_EXPORT2
 ucnv_io_stripEBCDICForCompare(char *dst, const char *name);
 
 /**
 ucnv_io_stripEBCDICForCompare(char *dst, const char *name);
 
 /**
@@ -52,109 +87,23 @@ ucnv_io_stripEBCDICForCompare(char *dst, const char *name);
  * is returned in mixed-case.
  * Returns NULL if the alias is not found.
  * @param alias The alias name to be searched.
  * is returned in mixed-case.
  * Returns NULL if the alias is not found.
  * @param alias The alias name to be searched.
+ * @param containsOption A return value stating whether the returned converter name contains an option (a comma)
  * @param pErrorCode The error code
  * @return the converter name in mixed-case, return NULL if the alias is not found.
  */
 U_CFUNC const char *
  * @param pErrorCode The error code
  * @return the converter name in mixed-case, return NULL if the alias is not found.
  */
 U_CFUNC const char *
-ucnv_io_getConverterName(const char *alias, UErrorCode *pErrorCode);
-
-/**
- * The count for ucnv_io_getAliases and ucnv_io_getAlias
- * @param alias The alias name to be counted
- * @param pErrorCode The error code
- * @return the alias count
- */
-U_CFUNC uint16_t
-ucnv_io_countAliases(const char *alias, UErrorCode *pErrorCode);
-
-/**
- * Search case-insensitively for a converter alias and set aliases to
- * a pointer to the list of aliases for the actual converter.
- * The first "alias" is the canonical converter name.
- * The aliases are stored consecutively, in mixed case, each NUL-terminated.
- * There are as many strings in this list as the return value specifies.
- * Returns the number of aliases including the canonical converter name,
- * or 0 if the alias is not found.
- * @param alias The canonical converter name
- * @param start 
- * @param aliases A pointer to the list of aliases for the actual converter
- * @return the number of aliases including the canonical converter name, or 0 if the alias is not found.
- */
-U_CFUNC uint16_t
-ucnv_io_getAliases(const char *alias, uint16_t start, const char **aliases, UErrorCode *pErrorCode);
-
-/**
- * Search case-insensitively for a converter alias and return
- * the (n)th alias.
- * Returns NULL if the alias is not found.
- * @param alias The converter alias
- * @param n The number specifies which alias to get
- * @param pErrorCode The error code
- * @return the (n)th alias and return NULL if the alias is not found.
- */
-U_CFUNC const char *
-ucnv_io_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode);
-
-/**
- * Return the number of all standard names.
- * @param pErrorCode The error code
- * @return the number of all standard names
- */
-U_CFUNC uint16_t
-ucnv_io_countStandards(UErrorCode *pErrorCode);
+ucnv_io_getConverterName(const char *alias, UBool *containsOption, UErrorCode *pErrorCode);
 
 /**
 
 /**
- * Return the number of all converter names.
- * @param pErrorCode The error code
- * @return the number of all converter names
- */
-U_CFUNC uint16_t
-ucnv_io_countAvailableConverters(UErrorCode *pErrorCode);
-
-/**
- * Return the (n)th converter name in mixed case, or NULL
- * if there is none (typically, if the data cannot be loaded).
- * 0<=index<ucnv_io_countAvailableConverters().
- * @param n The number specifies which converter name to get
- * @param pErrorCode The error code
- * @return the (n)th converter name in mixed case, or NULL if there is none.
- */
-U_CFUNC const char *
-ucnv_io_getAvailableConverter(uint16_t n, UErrorCode *pErrorCode);
-
-/**
- * Return the (n)th converter name in mixed case, or NULL
- * if there is none (typically, if the data cannot be loaded).
- * 0<=index<ucnv_io_countAvailableConverters().
- */
-U_CFUNC void
-ucnv_io_flushAvailableConverterCache(void);
-
-/**
- * Return the number of all aliases (and converter names).
+ * Return the number of all known converter names (no aliases).
  * @param pErrorCode The error code
  * @return the number of all aliases
  */
 U_CFUNC uint16_t
  * @param pErrorCode The error code
  * @return the number of all aliases
  */
 U_CFUNC uint16_t
-ucnv_io_countAvailableAliases(UErrorCode *pErrorCode);
-
-/**
- * Get the name of the default converter.
- * This name is already resolved by <code>ucnv_io_getConverterName()</code>.
- * @return the name of the default converter
- */
-U_CFUNC const char *
-ucnv_io_getDefaultConverterName(void);
-
-/**
- * Set the name of the default converter.
- * @param name The name set to the default converter
- */
-U_CFUNC void
-ucnv_io_setDefaultConverterName(const char *name);
+ucnv_io_countKnownConverters(UErrorCode *pErrorCode);
 
 /**
 
 /**
- * Swap an ICU converter alias table. See ucnv_io.c.
+ * Swap an ICU converter alias table. See implementation for details.
  * @internal
  */
 U_CAPI int32_t U_EXPORT2
  * @internal
  */
 U_CAPI int32_t U_EXPORT2