#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#ifndef _Xp_Oid_h
#define _Xp_Oid_h
#include <X11/Xproto.h>
#include "OidDefs.h"
#define XPMSG_WARN_MSS "Syntax error parsing medium-source-sizes"
#define XPMSG_WARN_ITM "Syntax error parsing input-trays-medium"
#define XPMSG_WARN_DOC_FMT "Syntax error parsing document format"
#define XPMSG_WARN_DOCFMT_LIST "Syntax error parsing document format list"
#define XPMSG_WARN_CARD_LIST "Syntax error parsing cardinal list"
#define XpOidMalloc(size) ((char*)Xalloc((unsigned long)(size)))
#define XpOidCalloc(count, size) \
((char*)Xcalloc((unsigned long)((count)*(size))))
#define XpOidFree(mem) (Xfree((unsigned long*)(mem)))
typedef struct _XpOidList
{
XpOid* list;
int count;
} XpOidList;
typedef struct XpOidNodeStruct
{
XpOid oid;
struct XpOidNodeStruct* next;
} *XpOidNode;
typedef struct _XpOidLinkedList
{
XpOidNode head;
XpOidNode tail;
XpOidNode current;
int count;
} XpOidLinkedList;
typedef struct
{
float minimum_x;
float maximum_x;
float minimum_y;
float maximum_y;
} XpOidArea;
typedef struct
{
float lower_bound;
float upper_bound;
} XpOidRealRange;
typedef struct
{
XpOidRealRange range_across_feed;
float increment_across_feed;
XpOidRealRange range_in_feed;
float increment_in_feed;
BOOL long_edge_feeds;
XpOidArea assured_reproduction_area;
} XpOidMediumContinuousSize;
typedef struct
{
XpOid page_size;
BOOL long_edge_feeds;
XpOidArea assured_reproduction_area;
} XpOidMediumDiscreteSize;
typedef struct
{
XpOidMediumDiscreteSize* list;
int count;
} XpOidMediumDiscreteSizeList;
typedef struct
{
XpOid input_tray;
enum { XpOidMediumSS_DISCRETE, XpOidMediumSS_CONTINUOUS } mstag;
union
{
XpOidMediumDiscreteSizeList* discrete;
XpOidMediumContinuousSize* continuous_size;
} ms;
} XpOidMediumSourceSize;
typedef struct
{
XpOidMediumSourceSize* mss;
int count;
} XpOidMediumSS;
typedef struct
{
XpOid input_tray;
XpOid medium;
} XpOidTrayMedium;
typedef struct
{
XpOidTrayMedium* list;
int count;
} XpOidTrayMediumList;
typedef enum {
XPOID_NOTIFY_UNSUPPORTED,
XPOID_NOTIFY_NONE,
XPOID_NOTIFY_EMAIL
} XpOidNotify;
typedef struct
{
unsigned long *list;
int count;
} XpOidCardList;
typedef struct
{
char* format;
char* variant;
char* version;
} XpOidDocFmt;
typedef struct
{
XpOidDocFmt* list;
int count;
} XpOidDocFmtList;
const char* XpOidString(XpOid);
int XpOidStringLength(XpOid);
XpOid XpOidFromString(const char* value);
BOOL XpOidTrayMediumListHasTray(const XpOidTrayMediumList* list, XpOid tray);
XpOidList* XpOidListNew(const char* value_string,
const XpOidList* valid_oids);
#define XpOidListInit(l, a, c) { (l)->list = (a); (l)->count = (c); }
void XpOidListDelete(XpOidList*);
#define XpOidListCount(l) ((l) ? (l)->count : 0)
#define XpOidListGetOid(l, i) ((l) ? (l)->list[(i)] : xpoid_none)
int XpOidListGetIndex(const XpOidList* list, XpOid oid);
BOOL XpOidListHasOid(const XpOidList* list, XpOid oid);
char* XpOidListString(const XpOidList*);
XpOidLinkedList* XpOidLinkedListNew(void);
void XpOidLinkedListDelete(XpOidLinkedList*);
#define XpOidLinkedListCount(l) ((l) ? (l)->count : 0)
XpOid XpOidLinkedListGetOid(XpOidLinkedList* list, int i);
void XpOidLinkedListAddOid(XpOidLinkedList* list, XpOid oid);
int XpOidLinkedListGetIndex(XpOidLinkedList* list, XpOid oid);
BOOL XpOidLinkedListHasOid(XpOidLinkedList* list,
XpOid oid);
XpOid XpOidLinkedListFirstOid(XpOidLinkedList* list);
XpOid XpOidLinkedListNextOid(XpOidLinkedList* list);
XpOidMediumSS* XpOidMediumSSNew(const char* value_string,
const XpOidList* valid_trays,
const XpOidList* valid_medium_sizes);
void XpOidMediumSSDelete(XpOidMediumSS*);
#define XpOidMediumSSCount(me) ((me) ? (me)->count : 0)
BOOL XpOidMediumSSHasSize(XpOidMediumSS*, XpOid medium_size);
char* XpOidMediumSSString(const XpOidMediumSS*);
XpOidTrayMediumList* XpOidTrayMediumListNew(const char* value_string,
const XpOidList* valid_trays,
const XpOidMediumSS* msss);
void XpOidTrayMediumListDelete(XpOidTrayMediumList* me);
#define XpOidTrayMediumListCount(me) ((me) ? (me)->count : 0)
#define XpOidTrayMediumListTray(me, i) \
((me) ? (me)->list[(i)].input_tray : xpoid_none)
#define XpOidTrayMediumListMedium(me, i) \
((me) ? (me)->list[(i)].medium : xpoid_none)
char* XpOidTrayMediumListString(const XpOidTrayMediumList*);
XpOidNotify XpOidNotifyParse(const char* value_string);
const char* XpOidNotifyString(XpOidNotify notify);
XpOidDocFmt* XpOidDocFmtNew(const char* value_string);
void XpOidDocFmtDelete(XpOidDocFmt*);
char* XpOidDocFmtString(XpOidDocFmt*);
XpOidDocFmtList* XpOidDocFmtListNew(const char* value_string,
const XpOidDocFmtList* valid_fmts);
void XpOidDocFmtListDelete(XpOidDocFmtList*);
char* XpOidDocFmtListString(const XpOidDocFmtList*);
#define XpOidDocFmtListCount(me) ((me) ? (me)->count : 0)
#define XpOidDocFmtListGetDocFmt(me, i) \
((me) ? &(me)->list[(i)] : (XpDocFmt*)NULL)
BOOL XpOidDocFmtListHasFmt(const XpOidDocFmtList* list,
const XpOidDocFmt* fmt);
XpOidCardList* XpOidCardListNew(const char* value_string,
const XpOidCardList* valid_cards);
#define XpOidCardListInit(l, a, c) { (l)->list = (a); (l)->count = (c); }
void XpOidCardListDelete(XpOidCardList*);
char* XpOidCardListString(const XpOidCardList*);
#define XpOidCardListCount(me) ((me) ? (me)->count : 0)
#define XpOidCardListGetCard(me, i) ((me) ? (me)->list[(i)] : 0)
BOOL XpOidCardListHasCard(const XpOidCardList*, unsigned long);
BOOL XpOidParseUnsignedValue(const char* value_string,
const char** ptr_return,
unsigned long* unsigned_return);
#endif