16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* Copyright (c) 2000 IBM, Inc. and Others. 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FLAGCB.H - interface to 'flagging' callback which 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org simply marks the fact that the callback was called. 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef _FLAGCB 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define _FLAGCB 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ucnv.h" 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* The structure of a FromU Flag context. 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org (conceivably there could be a ToU Flag Context) */ 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef struct 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UConverterFromUCallback subCallback; 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const void *subContext; 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool flag; 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} FromUFLAGContext; 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * open the context 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI FromUFLAGContext* U_EXPORT2 flagCB_fromU_openContext(); 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the actual callback 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI void U_EXPORT2 flagCB_fromU( 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const void *context, 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UConverterFromUnicodeArgs *fromUArgs, 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* codeUnits, 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t length, 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar32 codePoint, 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UConverterCallbackReason reason, 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode * err); 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef struct 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UConverterFromUCallback subCallback; 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const void *subContext; 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t magic; /* 0xC0FFEE to identify that the object is OK */ 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t serial; /* minted from nextSerial */ 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} debugCBContext; 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI void debugCB_fromU(const void *context, 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UConverterFromUnicodeArgs *fromUArgs, 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* codeUnits, 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t length, 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar32 codePoint, 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UConverterCallbackReason reason, 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode * err); 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI debugCBContext *debugCB_openContext(); 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 61