ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dict.c
Go to the documentation of this file.
00001 /*
00002 ** License Applicability. Except to the extent portions of this file are
00003 ** made subject to an alternative license as permitted in the SGI Free
00004 ** Software License B, Version 1.1 (the "License"), the contents of this
00005 ** file are subject only to the provisions of the License. You may not use
00006 ** this file except in compliance with the License. You may obtain a copy
00007 ** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
00008 ** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
00009 **
00010 ** http://oss.sgi.com/projects/FreeB
00011 **
00012 ** Note that, as provided in the License, the Software is distributed on an
00013 ** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
00014 ** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
00015 ** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
00016 ** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
00017 **
00018 ** Original Code. The Original Code is: OpenGL Sample Implementation,
00019 ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
00020 ** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
00021 ** Copyright in any portions created by third parties is as indicated
00022 ** elsewhere herein. All Rights Reserved.
00023 **
00024 ** Additional Notice Provisions: The application programming interfaces
00025 ** established by SGI in conjunction with the Original Code are The
00026 ** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
00027 ** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
00028 ** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
00029 ** Window System(R) (Version 1.3), released October 19, 1998. This software
00030 ** was created using the OpenGL(R) version 1.2.1 Sample Implementation
00031 ** published by SGI, but has not been independently verified as being
00032 ** compliant with the OpenGL(R) version 1.2.1 Specification.
00033 **
00034 */
00035 /*
00036 ** Author: Eric Veach, July 1994.
00037 **
00038 ** $Date: 2008-11-21 13:20:22 +0000 (Fri, 21 Nov 2008) $ $Revision: 1.1 $
00039 ** $Header: /cygdrive/c/RCVS/CVS/ReactOS/reactos/lib/glu32/libtess/dict.c,v 1.1 2004/02/02 16:39:15 navaraf Exp $
00040 */
00041 
00042 #include <stddef.h>
00043 #include "dict-list.h"
00044 #include "memalloc.h"
00045 
00046 /* really __gl_dictListNewDict */
00047 Dict *dictNewDict( void *frame,
00048            int (*leq)(void *frame, DictKey key1, DictKey key2) )
00049 {
00050   Dict *dict = (Dict *) memAlloc( sizeof( Dict ));
00051   DictNode *head;
00052 
00053   if (dict == NULL) return NULL;
00054 
00055   head = &dict->head;
00056 
00057   head->key = NULL;
00058   head->next = head;
00059   head->prev = head;
00060 
00061   dict->frame = frame;
00062   dict->leq = leq;
00063 
00064   return dict;
00065 }
00066 
00067 /* really __gl_dictListDeleteDict */
00068 void dictDeleteDict( Dict *dict )
00069 {
00070   DictNode *node, *next;
00071 
00072   node = dict->head.next;
00073   while(node != &dict->head) {
00074     next = node->next;
00075     memFree( node );
00076     node = next;
00077   }
00078   memFree( dict );
00079 }
00080 
00081 /* really __gl_dictListInsertBefore */
00082 DictNode *dictInsertBefore( Dict *dict, DictNode *node, DictKey key )
00083 {
00084   DictNode *newNode;
00085 
00086   do {
00087     node = node->prev;
00088   } while( node->key != NULL && ! (*dict->leq)(dict->frame, node->key, key));
00089 
00090   newNode = (DictNode *) memAlloc( sizeof( DictNode ));
00091   if (newNode == NULL) return NULL;
00092 
00093   newNode->key = key;
00094   newNode->next = node->next;
00095   node->next->prev = newNode;
00096   newNode->prev = node;
00097   node->next = newNode;
00098 
00099   return newNode;
00100 }
00101 
00102 /* really __gl_dictListDelete */
00103 void dictDelete( Dict *dict, DictNode *node ) /*ARGSUSED*/
00104 {
00105   node->next->prev = node->prev;
00106   node->prev->next = node->next;
00107   memFree( node );
00108 }
00109 
00110 /* really __gl_dictListSearch */
00111 DictNode *dictSearch( Dict *dict, DictKey key )
00112 {
00113   DictNode *node = &dict->head;
00114 
00115   do {
00116     node = node->next;
00117   } while( node->key != NULL && ! (*dict->leq)(dict->frame, key, node->key));
00118 
00119   return node;
00120 }

Generated on Sat May 26 2012 04:22:20 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.