fontservices/textshaperplugin/IcuSource/common/uenumimp.h
changeset 0 1fb32624e06b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fontservices/textshaperplugin/IcuSource/common/uenumimp.h	Tue Feb 02 02:02:46 2010 +0200
@@ -0,0 +1,151 @@
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  uenumimp.h
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:2
+*
+*   created on: 2002jul08
+*   created by: Vladimir Weinstein
+*/
+
+#ifndef __UENUMIMP_H
+#define __UENUMIMP_H
+
+#include "unicode/uenum.h"
+
+U_CDECL_BEGIN
+
+/** 
+ * following are the type declarations for 
+ * implementations of APIs. If any of these
+ * functions are NULL, U_UNSUPPORTED_ERROR
+ * is returned. If close is NULL, the enumeration
+ * object is going to be released.
+ * Initial error checking is done in the body
+ * of API function, so the implementations 
+ * need not to check the initial error condition.
+ */
+
+/**
+ * Function type declaration for uenum_close().
+ *
+ * This function should cleanup the enumerator object
+ *
+ * @param en enumeration to be closed
+ */
+typedef void U_CALLCONV
+UEnumClose(UEnumeration *en);
+
+/**
+ * Function type declaration for uenum_count().
+ *
+ * This function should count the number of elements
+ * in this enumeration
+ *
+ * @param en enumeration to be counted
+ * @param status pointer to UErrorCode variable
+ * @return number of elements in enumeration
+ */
+typedef int32_t U_CALLCONV
+UEnumCount(UEnumeration *en, UErrorCode *status);
+
+/**
+ * Function type declaration for uenum_unext().
+ *
+ * This function should return the next element
+ * as a UChar *
+ *
+ * @param en enumeration 
+ * @param resultLength pointer to result length
+ * @param status pointer to UErrorCode variable
+ * @return next element as UChar *
+ */
+typedef const UChar* U_CALLCONV 
+UEnumUNext(UEnumeration* en,
+            int32_t* resultLength,
+            UErrorCode* status);
+
+/**
+ * Function type declaration for uenum_next().
+ *
+ * This function should return the next element
+ * as a char *
+ *
+ * @param en enumeration 
+ * @param resultLength pointer to result length
+ * @param status pointer to UErrorCode variable
+ * @return next element as char *
+ */
+typedef const char* U_CALLCONV 
+UEnumNext(UEnumeration* en,
+           int32_t* resultLength,
+           UErrorCode* status);
+
+/**
+ * Function type declaration for uenum_reset().
+ *
+ * This function should reset the enumeration 
+ * object
+ *
+ * @param en enumeration 
+ * @param status pointer to UErrorCode variable
+ */
+typedef void U_CALLCONV 
+UEnumReset(UEnumeration* en, 
+            UErrorCode* status);
+
+
+struct UEnumeration {
+    /* baseContext. For the base class only. Don't touch! */
+    void *baseContext;
+
+    /* context. Use it for what you need */
+    void *context;
+
+    /** 
+     * these are functions that will 
+     * be used for APIs
+     */
+    /* called from uenum_close */
+    UEnumClose *close;
+    /* called from uenum_count */
+    UEnumCount *count;
+    /* called from uenum_unext */
+    UEnumUNext *uNext;
+    /* called from uenum_next */
+    UEnumNext  *next;
+    /* called from uenum_reset */
+    UEnumReset *reset;
+};
+
+U_CDECL_END
+
+/* This is the default implementation for uenum_unext().
+ * It automatically converts the char * string to UChar *.
+ * Don't call this directly.  This is called internally by uenum_unext
+ * when a UEnumeration is defined with 'uNext' pointing to this
+ * function.
+ */
+U_CAPI const UChar* U_EXPORT2
+uenum_unextDefault(UEnumeration* en,
+            int32_t* resultLength,
+            UErrorCode* status);
+
+/* This is the default implementation for uenum_next().
+ * It automatically converts the UChar * string to char *.
+ * Don't call this directly.  This is called internally by uenum_next
+ * when a UEnumeration is defined with 'next' pointing to this
+ * function.
+ */
+U_CAPI const char* U_EXPORT2
+uenum_nextDefault(UEnumeration* en,
+            int32_t* resultLength,
+            UErrorCode* status);
+
+#endif