Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

105 lines
2.8 KiB

#ifndef __glubin_h_
#define __glubin_h_
/**************************************************************************
* *
* Copyright (C) 1992, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*
* bin.h - $Revision: 1.2 $
*/
#include "myassert.h"
#include "arc.h"
#include "defines.h"
#ifdef NT
class Bin { /* a linked list of jordan arcs */
#else
struct Bin { /* a linked list of jordan arcs */
#endif
private:
Arc * head; /* first arc on list */
Arc * current; /* current arc on list */
public:
Bin();
~Bin();
inline Arc * firstarc( void );
inline Arc * nextarc( void );
inline Arc * removearc( void );
inline int isnonempty( void ) { return (head ? 1 : 0); }
inline void addarc( Arc * );
void remove_this_arc( Arc * );
int numarcs( void );
void adopt( void );
void markall( void );
void show( char * );
void listBezier( void );
};
/*----------------------------------------------------------------------------
* Bin::addarc - add an Arc * to head of linked list of Arc *s
*----------------------------------------------------------------------------
*/
inline void
Bin::addarc( Arc *jarc )
{
jarc->link = head;
head = jarc;
}
/*----------------------------------------------------------------------------
* Bin::removearc - remove first Arc * from bin
*----------------------------------------------------------------------------
*/
inline Arc *
Bin::removearc( void )
{
Arc * jarc = head;
if( jarc ) head = jarc->link;
return jarc;
}
/*----------------------------------------------------------------------------
* BinIter::nextarc - return current arc in bin and advance pointer to next arc
*----------------------------------------------------------------------------
*/
inline Arc *
Bin::nextarc( void )
{
Arc * jarc = current;
#ifdef DEBUG
assert( jarc->check() != 0 );
#endif
if( jarc ) current = jarc->link;
return jarc;
}
/*----------------------------------------------------------------------------
* BinIter::firstarc - set current arc to first arc of bin advance to next arc
*----------------------------------------------------------------------------
*/
inline Arc *
Bin::firstarc( void )
{
current = head;
return nextarc( );
}
#endif /* __glubin_h_ */