290 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			290 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			C
		
	
	
	
/* $Xorg: Oid.h,v 1.3 2000/08/17 19:48:06 cpqbld Exp $ */
 | 
						|
/*
 | 
						|
(c) Copyright 1996 Hewlett-Packard Company
 | 
						|
(c) Copyright 1996 International Business Machines Corp.
 | 
						|
(c) Copyright 1996 Sun Microsystems, Inc.
 | 
						|
(c) Copyright 1996 Novell, Inc.
 | 
						|
(c) Copyright 1996 Digital Equipment Corp.
 | 
						|
(c) Copyright 1996 Fujitsu Limited
 | 
						|
(c) Copyright 1996 Hitachi, Ltd.
 | 
						|
 | 
						|
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
						|
of this software and associated documentation files (the "Software"), to deal
 | 
						|
in the Software without restriction, including without limitation the rights
 | 
						|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
						|
copies of the Software, and to permit persons to whom the Software is
 | 
						|
furnished to do so, subject to the following conditions:
 | 
						|
 | 
						|
The above copyright notice and this permission notice shall be included in
 | 
						|
all copies or substantial portions of the Software.
 | 
						|
 | 
						|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
						|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
						|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
 | 
						|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 | 
						|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
						|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
						|
 | 
						|
Except as contained in this notice, the names of the copyright holders shall
 | 
						|
not be used in advertising or otherwise to promote the sale, use or other
 | 
						|
dealings in this Software without prior written authorization from said
 | 
						|
copyright holders.
 | 
						|
*/
 | 
						|
 | 
						|
#ifndef _Xp_Oid_h
 | 
						|
#define _Xp_Oid_h
 | 
						|
 | 
						|
#include <Xproto.h>
 | 
						|
 | 
						|
/*
 | 
						|
 * include the auto-generated XpOid enum definition
 | 
						|
 */
 | 
						|
#include "OidDefs.h"
 | 
						|
 | 
						|
/*
 | 
						|
 * messages
 | 
						|
 */
 | 
						|
#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"
 | 
						|
 | 
						|
/*
 | 
						|
 * macros for memory allocation
 | 
						|
 */
 | 
						|
#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)))
 | 
						|
 | 
						|
/*
 | 
						|
 * list of object identifiers
 | 
						|
 */
 | 
						|
typedef struct _XpOidList
 | 
						|
{
 | 
						|
    XpOid* list;
 | 
						|
    int count;
 | 
						|
} XpOidList;
 | 
						|
 | 
						|
/*
 | 
						|
 * linked list of object identifiers
 | 
						|
 */
 | 
						|
typedef struct XpOidNodeStruct
 | 
						|
{
 | 
						|
    XpOid oid;
 | 
						|
    struct XpOidNodeStruct* next;
 | 
						|
} *XpOidNode;
 | 
						|
 | 
						|
typedef struct _XpOidLinkedList
 | 
						|
{
 | 
						|
    XpOidNode head;
 | 
						|
    XpOidNode tail;
 | 
						|
    XpOidNode current;
 | 
						|
    int count;
 | 
						|
} XpOidLinkedList;
 | 
						|
 | 
						|
/*
 | 
						|
 * XpOidMediumSourceSize and related definitions
 | 
						|
 */
 | 
						|
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; /* may be set to xpoid_none or xpoid_unspecified */
 | 
						|
    enum { XpOidMediumSS_DISCRETE, XpOidMediumSS_CONTINUOUS } mstag;
 | 
						|
    union
 | 
						|
    {
 | 
						|
	XpOidMediumDiscreteSizeList* discrete;
 | 
						|
	XpOidMediumContinuousSize* continuous_size;
 | 
						|
    } ms; /* "ms" is short for medium-size */
 | 
						|
 | 
						|
} XpOidMediumSourceSize;
 | 
						|
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
    XpOidMediumSourceSize* mss;
 | 
						|
    int count;
 | 
						|
} XpOidMediumSS;
 | 
						|
 | 
						|
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
    XpOid input_tray; /* may be set to xpoid_none */
 | 
						|
    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;
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
 * XpOid public methods
 | 
						|
 */
 | 
						|
const char* XpOidString(XpOid);
 | 
						|
int XpOidStringLength(XpOid);
 | 
						|
XpOid XpOidFromString(const char* value);
 | 
						|
 | 
						|
/*
 | 
						|
 * XpOidList public methods
 | 
						|
 */
 | 
						|
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 public methods
 | 
						|
 */
 | 
						|
XpOidLinkedList* XpOidLinkedListNew();
 | 
						|
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);
 | 
						|
 | 
						|
/*
 | 
						|
 * XpOidMediumSourceSize public methods
 | 
						|
 */
 | 
						|
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 public methods
 | 
						|
 */
 | 
						|
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 public methods
 | 
						|
 */
 | 
						|
XpOidNotify XpOidNotifyParse(const char* value_string);
 | 
						|
const char* XpOidNotifyString(XpOidNotify notify);
 | 
						|
 | 
						|
/*
 | 
						|
 * XpOidDocFmt public methods
 | 
						|
 */
 | 
						|
XpOidDocFmt* XpOidDocFmtNew(const char* value_string);
 | 
						|
void XpOidDocFmtDelete(XpOidDocFmt*);
 | 
						|
char* XpOidDocFmtString(XpOidDocFmt*);
 | 
						|
 | 
						|
/*
 | 
						|
 * XpOidDocFmtList public methods
 | 
						|
 */
 | 
						|
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 public methods
 | 
						|
 */
 | 
						|
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);
 | 
						|
 | 
						|
/*
 | 
						|
 * misc parsing functions
 | 
						|
 */
 | 
						|
BOOL XpOidParseUnsignedValue(const char* value_string,
 | 
						|
			     const char** ptr_return,
 | 
						|
			     unsigned long* unsigned_return);
 | 
						|
 | 
						|
 | 
						|
#endif /* _Xp_Oid_h - don't add anything after this line */
 |