#ifndef _XOMGENERIC_H_
#define _XOMGENERIC_H_
#include "XlcPublic.h"
#define XOM_GENERIC(om) (&((XOMGeneric) om)->gen)
#define XOC_GENERIC(font_set) (&((XOCGeneric) font_set)->gen)
typedef struct _CodeRangeRec {
unsigned long start;
unsigned long end;
unsigned long dmy1;
unsigned long dmy2;
} CodeRangeRec, *CodeRange;
typedef struct _VRotateRec {
char *charset_name;
XlcSide side;
int num_cr;
CodeRange code_range;
char *xlfd_name;
XFontStruct *font;
} VRotateRec, *VRotate;
typedef enum {
XOMMultiByte,
XOMWideChar,
XOMUtf8String
} XOMTextType;
typedef struct _FontDataRec {
char *name;
XlcSide side;
int scopes_num;
FontScope scopes;
char *xlfd_name;
XFontStruct *font;
} FontDataRec, *FontData;
#define VROTATE_NONE 0
#define VROTATE_PART 1
#define VROTATE_ALL 2
typedef struct _OMDataRec {
int charset_count;
XlcCharSet *charset_list;
int font_data_count;
FontData font_data;
int substitute_num;
FontData substitute;
int vmap_num;
FontData vmap;
int vrotate_type;
int vrotate_num;
CodeRange vrotate;
} OMDataRec, *OMData;
typedef struct _XOMGenericPart {
int data_num;
OMData data;
Bool on_demand_loading;
char *object_name;
} XOMGenericPart;
typedef struct _XOMGenericRec {
XOMMethods methods;
XOMCoreRec core;
XOMGenericPart gen;
} XOMGenericRec, *XOMGeneric;
typedef struct _FontSetRec {
int id;
int charset_count;
XlcCharSet *charset_list;
int font_data_count;
FontData font_data;
char *font_name;
XFontStruct *info;
XFontStruct *font;
XlcSide side;
Bool is_xchar2b;
int substitute_num;
FontData substitute;
int vpart_initialize;
int vmap_num;
FontData vmap;
int vrotate_num;
VRotate vrotate;
} FontSetRec, *FontSet;
typedef struct _XOCGenericPart {
XlcConv mbs_to_cs;
XlcConv wcs_to_cs;
XlcConv utf8_to_cs;
int font_set_num;
FontSet font_set;
} XOCGenericPart;
typedef struct _XOCGenericRec {
XOCMethods methods;
XOCCoreRec core;
XOCGenericPart gen;
} XOCGenericRec, *XOCGeneric;
_XFUNCPROTOBEGIN
extern XOM _XomGenericOpenOM(
#if NeedFunctionPrototypes
XLCd ,
Display* ,
XrmDatabase ,
_Xconst char* ,
_Xconst char*
#endif
);
extern XlcConv _XomInitConverter(
#if NeedFunctionPrototypes
XOC ,
XOMTextType
#endif
);
extern int _XomConvert(
#if NeedFunctionPrototypes
XOC ,
XlcConv ,
XPointer* ,
int* ,
XPointer* ,
int* ,
XPointer* ,
int
#endif
);
_XFUNCPROTOEND
#endif