Index: icu46/source/common/ucmndata.h |
=================================================================== |
--- icu46/source/common/ucmndata.h (revision 0) |
+++ icu46/source/common/ucmndata.h (revision 0) |
@@ -0,0 +1,108 @@ |
+/* |
+****************************************************************************** |
+* |
+* Copyright (C) 1999-2010, International Business Machines |
+* Corporation and others. All Rights Reserved. |
+* |
+******************************************************************************/ |
+ |
+ |
+/*---------------------------------------------------------------------------------- |
+ * |
+ * UCommonData An abstract interface for dealing with ICU Common Data Files. |
+ * ICU Common Data Files are a grouping of a number of individual |
+ * data items (resources, converters, tables, anything) into a |
+ * single file or dll. The combined format includes a table of |
+ * contents for locating the individual items by name. |
+ * |
+ * Two formats for the table of contents are supported, which is |
+ * why there is an abstract inteface involved. |
+ * |
+ * These functions are part of the ICU internal implementation, and |
+ * are not inteded to be used directly by applications. |
+ */ |
+ |
+#ifndef __UCMNDATA_H__ |
+#define __UCMNDATA_H__ |
+ |
+#include "unicode/udata.h" |
+#include "umapfile.h" |
+ |
+ |
+#define COMMON_DATA_NAME U_ICUDATA_NAME |
+ |
+typedef struct { |
+ uint16_t headerSize; |
+ uint8_t magic1; |
+ uint8_t magic2; |
+} MappedData; |
+ |
+ |
+typedef struct { |
+ MappedData dataHeader; |
+ UDataInfo info; |
+} DataHeader; |
+ |
+typedef struct { |
+ uint32_t nameOffset; |
+ uint32_t dataOffset; |
+} UDataOffsetTOCEntry; |
+ |
+typedef struct { |
+ uint32_t count; |
+ UDataOffsetTOCEntry entry[2]; /* Actual size of array is from count. */ |
+} UDataOffsetTOC; |
+ |
+/** |
+ * Get the header size from a const DataHeader *udh. |
+ * Handles opposite-endian data. |
+ * |
+ * @internal |
+ */ |
+U_CFUNC uint16_t |
+udata_getHeaderSize(const DataHeader *udh); |
+ |
+/** |
+ * Get the UDataInfo.size from a const UDataInfo *info. |
+ * Handles opposite-endian data. |
+ * |
+ * @internal |
+ */ |
+U_CFUNC uint16_t |
+udata_getInfoSize(const UDataInfo *info); |
+ |
+/* |
+ * "Virtual" functions for data lookup. |
+ * To call one, given a UDataMemory *p, the code looks like this: |
+ * p->vFuncs.Lookup(p, tocEntryName, pErrorCode); |
+ * (I sure do wish this was written in C++, not C) |
+ */ |
+ |
+typedef const DataHeader * |
+(* LookupFn)(const UDataMemory *pData, |
+ const char *tocEntryName, |
+ int32_t *pLength, |
+ UErrorCode *pErrorCode); |
+ |
+typedef uint32_t |
+(* NumEntriesFn)(const UDataMemory *pData); |
+ |
+typedef struct { |
+ LookupFn Lookup; |
+ NumEntriesFn NumEntries; |
+} commonDataFuncs; |
+ |
+ |
+/* |
+ * Functions to check whether a UDataMemory refers to memory containing |
+ * a recognizable header and table of contents a Common Data Format |
+ * |
+ * If a valid header and TOC are found, |
+ * set the CommonDataFuncs function dispatch vector in the UDataMemory |
+ * to point to the right functions for the TOC type. |
+ * otherwise |
+ * set an errorcode. |
+ */ |
+U_CFUNC void udata_checkCommonData(UDataMemory *pData, UErrorCode *pErrorCode); |
+ |
+#endif |
Property changes on: icu46/source/common/ucmndata.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |