• Home
  • Raw
  • Download

Lines Matching refs:fm

80 void addToFM ( WordFM* fm, Word k, Word v );
83 Bool delFromFM ( WordFM* fm, /*OUT*/Word* oldV, Word key );
86 Bool lookupFM ( WordFM* fm, /*OUT*/Word* valP, Word key );
88 Word sizeFM ( WordFM* fm );
91 void initIterFM ( WordFM* fm );
95 Bool nextIterFM ( WordFM* fm, /*OUT*/Word* pKey, /*OUT*/Word* pVal );
98 void doneIterFM ( WordFM* fm );
106 WordFM* dopyFM ( WordFM* fm, Word(*dopyK)(Word), Word(*dopyV)(Word) );
1293 static void stackClear(WordFM* fm) in stackClear() argument
1296 assert(fm); in stackClear()
1298 fm->nodeStack[i] = NULL; in stackClear()
1299 fm->numStack[i] = 0; in stackClear()
1301 fm->stackTop = 0; in stackClear()
1305 static inline void stackPush(WordFM* fm, AvlNode* n, Int i) in stackPush() argument
1307 assert(fm->stackTop < WFM_STKMAX); in stackPush()
1309 fm->nodeStack[fm->stackTop] = n; in stackPush()
1310 fm-> numStack[fm->stackTop] = i; in stackPush()
1311 fm->stackTop++; in stackPush()
1315 static inline Bool stackPop(WordFM* fm, AvlNode** n, Int* i) in stackPop() argument
1317 assert(fm->stackTop <= WFM_STKMAX); in stackPop()
1319 if (fm->stackTop > 0) { in stackPop()
1320 fm->stackTop--; in stackPop()
1321 *n = fm->nodeStack[fm->stackTop]; in stackPop()
1322 *i = fm-> numStack[fm->stackTop]; in stackPop()
1324 fm->nodeStack[fm->stackTop] = NULL; in stackPop()
1325 fm-> numStack[fm->stackTop] = 0; in stackPop()
1386 void initFM ( WordFM* fm, in initFM() argument
1391 fm->root = 0; in initFM()
1392 fm->kCmp = kCmp; in initFM()
1393 fm->alloc_nofail = alloc_nofail; in initFM()
1394 fm->dealloc = dealloc; in initFM()
1395 fm->stackTop = 0; in initFM()
1403 WordFM* fm = alloc_nofail(sizeof(WordFM)); in newFM() local
1404 assert(fm); in newFM()
1405 initFM(fm, alloc_nofail, dealloc, kCmp); in newFM()
1406 return fm; in newFM()
1430 void deleteFM ( WordFM* fm, void(*kFin)(Word), void(*vFin)(Word) ) in deleteFM() argument
1432 void(*dealloc)(void*) = fm->dealloc; in deleteFM()
1433 avl_free( fm->root, kFin, vFin, dealloc ); in deleteFM()
1434 memset(fm, 0, sizeof(WordFM) ); in deleteFM()
1435 dealloc(fm); in deleteFM()
1439 void addToFM ( WordFM* fm, Word k, Word v ) in addToFM() argument
1443 node = fm->alloc_nofail( sizeof(struct _AvlNode) ); in addToFM()
1448 avl_insert_wrk( &fm->root, &oldV, node, fm->kCmp ); in addToFM()
1456 Bool delFromFM ( WordFM* fm, /*OUT*/Word* oldV, Word key ) in delFromFM() argument
1458 AvlNode* node = avl_find_node( fm->root, key, fm->kCmp ); in delFromFM()
1460 avl_remove_wrk( &fm->root, node, fm->kCmp ); in delFromFM()
1463 fm->dealloc(node); in delFromFM()
1471 Bool lookupFM ( WordFM* fm, /*OUT*/Word* valP, Word key ) in lookupFM() argument
1473 AvlNode* node = avl_find_node( fm->root, key, fm->kCmp ); in lookupFM()
1483 Word sizeFM ( WordFM* fm ) in sizeFM() argument
1486 return fm->root ? size_avl_nonNull( fm->root ) : 0; in sizeFM()
1490 void initIterFM ( WordFM* fm ) in initIterFM() argument
1492 assert(fm); in initIterFM()
1493 stackClear(fm); in initIterFM()
1494 if (fm->root) in initIterFM()
1495 stackPush(fm, fm->root, 1); in initIterFM()
1500 Bool nextIterFM ( WordFM* fm, /*OUT*/Word* pKey, /*OUT*/Word* pVal ) in nextIterFM() argument
1505 assert(fm); in nextIterFM()
1511 while (stackPop(fm, &n, &i)) { in nextIterFM()
1514 stackPush(fm, n, 2); in nextIterFM()
1515 if (n->left) stackPush(fm, n->left, 1); in nextIterFM()
1518 stackPush(fm, n, 3); in nextIterFM()
1523 if (n->right) stackPush(fm, n->right, 1); in nextIterFM()
1535 void doneIterFM ( WordFM* fm ) in doneIterFM() argument
1539 WordFM* dopyFM ( WordFM* fm, Word(*dopyK)(Word), Word(*dopyV)(Word) ) in dopyFM() argument
1544 assert(fm->stackTop == 0); in dopyFM()
1546 nyu = fm->alloc_nofail( sizeof(WordFM) ); in dopyFM()
1549 *nyu = *fm; in dopyFM()
1551 fm->stackTop = 0; in dopyFM()
1552 memset(fm->nodeStack, 0, sizeof(fm->nodeStack)); in dopyFM()
1553 memset(fm->numStack, 0, sizeof(fm->numStack)); in dopyFM()
1556 nyu->root = avl_dopy( nyu->root, dopyK, dopyV, fm->alloc_nofail ); in dopyFM()