Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
dict.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  DictNode
 
struct  Dict
 

Macros

#define DictKey   DictListKey
 
#define Dict   DictList
 
#define DictNode   DictListNode
 
#define dictNewDict(frame, leq)   __gl_dictListNewDict(frame,leq)
 
#define dictDeleteDict(dict)   __gl_dictListDeleteDict(dict)
 
#define dictSearch(dict, key)   __gl_dictListSearch(dict,key)
 
#define dictInsert(dict, key)   __gl_dictListInsert(dict,key)
 
#define dictInsertBefore(dict, node, key)   __gl_dictListInsertBefore(dict,node,key)
 
#define dictDelete(dict, node)   __gl_dictListDelete(dict,node)
 
#define dictKey(n)   __gl_dictListKey(n)
 
#define dictSucc(n)   __gl_dictListSucc(n)
 
#define dictPred(n)   __gl_dictListPred(n)
 
#define dictMin(d)   __gl_dictListMin(d)
 
#define dictMax(d)   __gl_dictListMax(d)
 
#define __gl_dictListKey(n)   ((n)->key)
 
#define __gl_dictListSucc(n)   ((n)->next)
 
#define __gl_dictListPred(n)   ((n)->prev)
 
#define __gl_dictListMin(d)   ((d)->head.next)
 
#define __gl_dictListMax(d)   ((d)->head.prev)
 
#define __gl_dictListInsert(d, k)   (dictInsertBefore((d),&(d)->head,(k)))
 

Typedefs

typedef voidDictKey
 
typedef struct Dict Dict
 
typedef struct DictNode DictNode
 

Functions

DictdictNewDict (void *frame, int(*leq)(void *frame, DictKey key1, DictKey key2))
 
void dictDeleteDict (Dict *dict)
 
DictNodedictSearch (Dict *dict, DictKey key)
 
DictNodedictInsertBefore (Dict *dict, DictNode *node, DictKey key)
 
void dictDelete (Dict *dict, DictNode *node)
 

Class Documentation

◆ DictNode

struct DictNode
+ Collaboration diagram for DictNode:
Class Members
DictKey key
DictNode * next
DictNode * prev

Macro Definition Documentation

◆ __gl_dictListInsert

#define __gl_dictListInsert (   d,
 
)    (dictInsertBefore((d),&(d)->head,(k)))

◆ __gl_dictListKey

#define __gl_dictListKey (   n)    ((n)->key)

◆ __gl_dictListMax

#define __gl_dictListMax (   d)    ((d)->head.prev)

◆ __gl_dictListMin

#define __gl_dictListMin (   d)    ((d)->head.next)

◆ __gl_dictListPred

#define __gl_dictListPred (   n)    ((n)->prev)

◆ __gl_dictListSucc

#define __gl_dictListSucc (   n)    ((n)->next)

◆ Dict

#define Dict   DictList

◆ dictDelete

#define dictDelete (   dict,
  node 
)    __gl_dictListDelete(dict,node)

◆ dictDeleteDict

#define dictDeleteDict (   dict)    __gl_dictListDeleteDict(dict)

◆ dictInsert

#define dictInsert (   dict,
  key 
)    __gl_dictListInsert(dict,key)

◆ dictInsertBefore

#define dictInsertBefore (   dict,
  node,
  key 
)    __gl_dictListInsertBefore(dict,node,key)

◆ DictKey

#define DictKey   DictListKey

◆ dictKey

#define dictKey (   n)    __gl_dictListKey(n)

◆ dictMax

#define dictMax (   d)    __gl_dictListMax(d)

◆ dictMin

#define dictMin (   d)    __gl_dictListMin(d)

◆ dictNewDict

#define dictNewDict (   frame,
  leq 
)    __gl_dictListNewDict(frame,leq)

◆ DictNode

#define DictNode   DictListNode

◆ dictPred

#define dictPred (   n)    __gl_dictListPred(n)

◆ dictSearch

#define dictSearch (   dict,
  key 
)    __gl_dictListSearch(dict,key)

◆ dictSucc

#define dictSucc (   n)    __gl_dictListSucc(n)

Typedef Documentation

◆ Dict

typedef struct Dict Dict

◆ DictKey

typedef void* DictKey

◆ DictNode

typedef struct DictNode DictNode

Function Documentation

◆ dictDelete()

void dictDelete ( Dict dict,
DictNode node 
)
95{
96 node->next->prev = node->prev;
97 node->prev->next = node->next;
98 memFree( node );
99}
DictNode * prev
Definition dict-list.h:91
DictNode * next
Definition dict-list.h:90
#define memFree
Definition memalloc.h:41

◆ dictDeleteDict()

void dictDeleteDict ( Dict dict)
62{
63 DictNode *node, *next;
64
65 for( node = dict->head.next; node != &dict->head; node = next ) {
66 next = node->next;
67 memFree( node );
68 }
69 memFree( dict );
70}
Definition dict-list.h:88
DictNode head
Definition dict-list.h:95

◆ dictInsertBefore()

DictNode * dictInsertBefore ( Dict dict,
DictNode node,
DictKey  key 
)
74{
75 DictNode *newNode;
76
77 do {
78 node = node->prev;
79 } while( node->key != NULL && ! (*dict->leq)(dict->frame, node->key, key));
80
81 newNode = (DictNode *) memAlloc( sizeof( DictNode ));
82 if (newNode == NULL) return NULL;
83
84 newNode->key = key;
85 newNode->next = node->next;
86 node->next->prev = newNode;
87 newNode->prev = node;
88 node->next = newNode;
89
90 return newNode;
91}
DictKey key
Definition dict-list.h:89
#define memAlloc
Definition memalloc.h:48
int(* leq)(void *frame, DictKey key1, DictKey key2)
Definition dict-list.h:97
void * frame
Definition dict-list.h:96

◆ dictNewDict()

Dict * dictNewDict ( void frame,
int(*)(void *frame, DictKey key1, DictKey key2)  leq 
)
42{
43 Dict *dict = (Dict *) memAlloc( sizeof( Dict ));
45
46 if (dict == NULL) return NULL;
47
48 head = &dict->head;
49
50 head->key = NULL;
51 head->next = head;
52 head->prev = head;
53
54 dict->frame = frame;
55 dict->leq = leq;
56
57 return dict;
58}
EIGEN_DEVICE_FUNC SegmentReturnType head(Index n)
This is the const version of head(Index).
Definition BlockMethods.h:919
Definition dict-list.h:94

◆ dictSearch()

DictNode * dictSearch ( Dict dict,
DictKey  key 
)
103{
104 DictNode *node = &dict->head;
105
106 do {
107 node = node->next;
108 } while( node->key != NULL && ! (*dict->leq)(dict->frame, key, node->key));
109
110 return node;
111}