Blame lib/Xm/xmlist.h

Packit b099d7
/*
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
 * 
Packit b099d7
 */
Packit b099d7
Packit b099d7
#ifndef _LIST_H
Packit b099d7
#define _LIST_H
Packit b099d7
Packit b099d7
#if defined(VMS) || defined (__VMS)
Packit b099d7
#include <X11/apienvset.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#include <Xm/Xm.h>
Packit b099d7
#include <Xm/Ext.h>
Packit b099d7
Packit b099d7
#ifdef __cplusplus
Packit b099d7
extern "C" {
Packit b099d7
#endif
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
 *
Packit b099d7
 * Stack Data structure.  
Packit b099d7
 *
Packit b099d7
 ************************************************************/
Packit b099d7
Packit b099d7
typedef struct _XmStackRec {
Packit b099d7
    int top, alloc;    		/* The top node of the stack, and the number
Packit b099d7
				   of allocated nodes. */
Packit b099d7
    XtPointer * elems;		/* The stack elements. */
Packit b099d7
} XmStackRec, *XmStack;
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
 *
Packit b099d7
 *  Global function defs.
Packit b099d7
 *
Packit b099d7
 ************************************************************/
Packit b099d7
Packit b099d7
XmStack _XmStackInit(void);
Packit b099d7
void _XmStackFree(XmStack), _XmStackPush(XmStack, XtPointer);
Packit b099d7
XtPointer _XmStackPop(XmStack);
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
 *
Packit b099d7
 * Queue Data structure.  
Packit b099d7
 *
Packit b099d7
 ************************************************************/
Packit b099d7
Packit b099d7
typedef struct __XmQElem {
Packit b099d7
    struct __XmQElem *next, *prev;	/* doubly linked list. */
Packit b099d7
    XtPointer data;		/* The data associated with this element. */
Packit b099d7
    Boolean alloced;
Packit b099d7
} _XmQElem;
Packit b099d7
Packit b099d7
typedef struct _XmQueueRec {
Packit b099d7
    _XmQElem *first, *last;	/* the first and last elements. */
Packit b099d7
    _XmQElem *free_elems;		/* Unused elements. */
Packit b099d7
} XmQueueRec, *XmQueue;
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
 *
Packit b099d7
 *  Global function defs.
Packit b099d7
 *
Packit b099d7
 ************************************************************/
Packit b099d7
Packit b099d7
XmQueue _XmQueueInit(void);
Packit b099d7
void _XmQueueFree(XmQueue), _XmQueuePush(XmQueue, XtPointer);
Packit b099d7
XtPointer _XmQueuePop(XmQueue);
Packit b099d7
int _XmQueueCount(XmQueue);
Packit b099d7
Packit b099d7
/* 
Packit b099d7
 * Internal functions used only by other parts of the utils library.
Packit b099d7
 */
Packit b099d7
Packit b099d7
void _Xm_AddQueue(XmQueue, _XmQElem *, _XmQElem *);
Packit b099d7
_XmQElem * _Xm_RemQueue(_XmQElem **);
Packit b099d7
_XmQElem * _Xm_GetNewElement(XmQueue);
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
 *
Packit b099d7
 * New types.
Packit b099d7
 *
Packit b099d7
 ************************************************************/
Packit b099d7
Packit b099d7
typedef _XmQElem XmListElem;
Packit b099d7
typedef XmQueueRec *XmList;
Packit b099d7
typedef Boolean (*XmListFunc)(XmListElem *, XtPointer);
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
 *
Packit b099d7
 * Macros.
Packit b099d7
 *
Packit b099d7
 ************************************************************/
Packit b099d7
Packit b099d7
#define XmListElemNext(elem) (elem)->next
Packit b099d7
#define XmListElemPrev(elem) (elem)->prev
Packit b099d7
#define XmListElemData(elem) (elem)->data
Packit b099d7
Packit b099d7
#define XmListFirst(list) (list)->first
Packit b099d7
#define XmListLast(list) (list)->last
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
 *
Packit b099d7
 *  Global function defs.
Packit b099d7
 *
Packit b099d7
 ************************************************************/
Packit b099d7
Packit b099d7
void _XmListFree(XmList), _XmListRemove(XmList, XmListElem *);
Packit b099d7
Packit b099d7
XmListElem * _XmListAddAfter(XmList, XmListElem *, XtPointer);
Packit b099d7
XmListElem * _XmListAddBefore(XmList, XmListElem *, XtPointer); 
Packit b099d7
Packit b099d7
XmList _XmListInit(void);
Packit b099d7
Packit b099d7
int _XmListCount(XmList);
Packit b099d7
Packit b099d7
XmListElem *_XmListExec(XmList, XmListElem *, XmListElem *, XmListFunc, XtPointer);
Packit b099d7
Packit b099d7
#ifdef __cplusplus
Packit b099d7
}	/* Closes scope of 'extern "C"' declaration */
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#if defined(VMS) || defined (__VMS)
Packit b099d7
#include <X11/apienvrst.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
/* #ifdef XmRENAME_WIDGETS */
Packit b099d7
/* #define USE_OLD_NAMES */
Packit b099d7
/* #endif */
Packit b099d7
Packit b099d7
#ifdef USE_OLD_NAMES
Packit b099d7
Packit b099d7
#define ListAddAfter	_XmListAddAfter
Packit b099d7
#define ListAddBefore	_XmListAddBefore
Packit b099d7
#define ListCount	_XmListCount
Packit b099d7
#define ListExec	_XmListExec
Packit b099d7
#define ListFree	_XmListFree
Packit b099d7
#define ListInit	_XmListInit
Packit b099d7
#define ListRemove	_XmListRemove
Packit b099d7
#define QueueCount	_XmQueueCount
Packit b099d7
#define QueueFree	_XmQueueFree
Packit b099d7
#define QueueInit	_XmQueueInit
Packit b099d7
#define QueuePop	_XmQueuePop
Packit b099d7
#define QueuePush	_XmQueuePush
Packit b099d7
#define StackFree	_XmStackFree
Packit b099d7
#define StackInit	_XmStackInit
Packit b099d7
#define StackPop	_XmStackPop
Packit b099d7
#define StackPush	_XmStackPush
Packit b099d7
#define _AddQueue	_Xm_AddQueue
Packit b099d7
#define _GetNewElement	_Xm_GetNewElement
Packit b099d7
#define _RemQueue	_Xm_RemQueue
Packit b099d7
Packit b099d7
#define Stack		XmStack
Packit b099d7
#define StackRec	XmStackRec
Packit b099d7
#define QElem		_XmQElem
Packit b099d7
#define QueueRec	XmQueueRec
Packit b099d7
#define Queue		XmQueue
Packit b099d7
#define ListElem	XmListElem
Packit b099d7
#define List		XmList
Packit b099d7
#define ListFunc	XmListFunc
Packit b099d7
Packit b099d7
#define ListElemNext	XmListElemNext
Packit b099d7
#define ListElemPrev	XmListElemPrev
Packit b099d7
#define ListElemData	XmListElemData
Packit b099d7
#define ListFirst	XmListFirst
Packit b099d7
#define ListLast	XmListLast
Packit b099d7
Packit b099d7
#endif /* USE_OLD_NAMES */
Packit b099d7
Packit b099d7
#endif /* _LIST_H */