IFELanguage data structure

WDD   (Word Descriptor)

One WDD describes one word. All strings are assumed to be encoded in UNICODE.

Part of Speech is dependent on an implementation of an IME, which exports this interface. The POS of Japanese version is defined in this list.

// Word Descriptor

typedef struct tagWDD{

WORD wDispPos;

WORD wReadPos;

WORD cchDisp;

WORD cchRead;

DWORD nReserve;

WORD nPos;

WORD fPhrase : 1;

WORD fAutoCorrect: 1;

WORD fNumericPrefix: 1;

WORD fUserRegistered: 1;

WORD fUnknown: 1;

WORD fRecentUsed: 1;

WORD :10;

VOID *pReserved;

} WDD;

WORDwDispPos;offset to output string

To get actual string :: PMORRSLT->pwchOutput[wDispPos];

WORD wReadPos;offset to reading string

To get actual string :: PMORRSLT-> pwchRead [wReadPos];

WORD cchDisp; number of display chars

WORD cchRead; number of reading chars

DWORD nReserved; Reserved

WORD nPos; part of speech. defined by IME implementations.

WORD fPhrase : 1;this word is the start of phrase

WORD fAutoCorrect: 1;auto-corrected word

WORD fNumericPrefix: 1; Numeric prefix word (Japanese only)

WORD fUserRegistered: 1;this is from user dictionary

WORD fUnknown: 1;this is unknown word to IME

WORD fRecentUsed: 1;word used recently

WORD :10; reserved

VOID *pReserved;reserved

MORRSLT  (Sentence Descriptor)

The caller of GetMorphResult() is always responsible for releasing the memory of this block using CoTaskMemFree().

All strings are assumed to be encoded in UNICODE.

typedef struct tagMORRSLT {

DWORD dwSize;

WCHAR *pwchOutput;

WORD cchOutput;

WCHAR *pwchRead;

WORD cchRead;

WORD *pchInputPos;

WORD *pchOutputIdxWDD;

WORD *pchReadIdxWDD;

WORD *paMonoRubyPos;

WDD *pWDD;

INT cWDD;

VOID *pPrivate;

WCHAR BLKBuff[];

}MORRSLT;

DWORDdwSize; total size of this block.

WCHAR*pwchOutput; conversion result string

WORDcchOutput; length of result string.

WCHAR*pwchRead; reading string.

WORDcchRead; length of reading string.

WORD*pchInputPos; index of reading to input character. This is used only if the implementation needs a mapping of input key character sequence and reading (phonetic character symbol sequence).

      Example: きょうはてんきです Reading

      chInputPos[] 0 X 3 4 6 8 9 1 3

      wchInput[] |kyo|u|ha|te|n|ki|de|su| Input characters of GetMorphResult method call

      |012|3|45|67|8|90|12|34| Input character positions

      'X' means the reading doesn't have corresponding input character.

      X:[FELANG_INVALD_PO]

    WORD*pchOutputIdxWDD; index of output character to WDD.

    WORD*pchReadIdxWDD; index of reading character to WDD.

    WORD*paMonoRubyPos;index of monoruby.

    Used if FELANG_CMODE_MONORUBY is on.  Otherwise paMonoDubyPos is NULL.

    WDD*pWDD; pointer to array of WDD

    INTcWDD; number of WDD

    VOID*pPrivate;reserved

    WCHAR BLKBuff[]; // area for stored above members