예제 #1
0
void RBRemoveAll(struct RBTree* _Tree, void(*_Callback)(void*)) {
	struct RBItrStack _ItrStack[_Tree->Size];
	int i = 0;

	memset(_ItrStack, 0, sizeof(struct RBItrStack*) * _Tree->Size);
	RBDepthFirst(_Tree->Table, _ItrStack);
	for(i = 0; i < _Tree->Size; ++i)
		_Callback(_ItrStack[i].Node->Data);
	while(_Tree->Size > 0) {
		RBDeleteNode(_Tree, _Tree->Table);
	}
}
예제 #2
0
void LnkLstInsertPriority(struct LinkedList* _List, void* _Value, int (*_Callback)(const void*, const void*)) {
	struct LnkLst_Node* _Node = CreateLnkLstNode(_Value);
	struct LnkLst_Node* _Itr = NULL;

	if(_List->Front == NULL) {
		_List->Front = _Node;
		_List->Back = _Node;
		++_List->Size;
		return;
	}
	if(_Callback(_Value, _List->Front->Data) > 0) {
		_Node->Next = _List->Front;
		_Node->Prev = NULL;
		_List->Front = _Node;
		return;
	}
	_Itr = _List->Front;
	do {
		if(_Callback(_Value, _List->Front->Data) <= 0) {
			if(_Itr->Next == NULL)
				_List->Back = _Node;
			else {
				_Node->Next = _Itr->Next;
				_Node->Next->Prev = _Node;
			}
			_Node->Prev = _Itr;
			_Itr->Next = _Node;
			++_List->Size;
			return;
		}
		_Itr = _Itr->Next;
	} while(_Itr != NULL);
	_List->Back->Next = _Node;
	_Node->Prev = _List->Back;
	_List->Back = _Node;
	++_List->Size;
}
예제 #3
0
void RBIterate(struct RBTree* _Tree, int(*_Callback)(void*)) {
	int i = 0;
	int j = 0;
	struct RBItrStack _Stack[_Tree->Size];
	struct RBItrStack _DeleteStack[_Tree->Size];

	if(_Tree->Table == NULL)
		return;
	memset(_Stack, 0, sizeof(struct RBItrStack*) * _Tree->Size);
	memset(_DeleteStack, 0, sizeof(struct RBItrStack*) * _Tree->Size);
	RBDepthFirst(_Tree->Table, _Stack);
	for(i = 0; i < _Tree->Size; ++i) {
		if(_Callback(_Stack[i].Node->Data) != 0)
			_DeleteStack[j] = _Stack[i];
	}
	for(i = 0; i < j; ++i)
		RBDeleteNode(_Tree, _DeleteStack[i].Node);
}
예제 #4
0
//-------------------------------------------------
void itemSelector::update()
{
	if(!_startCheck)
	{
		return;
	}

	_itemSelector.update();
	if(_itemSelector.getIsMovieDone())
	{	
		if(_Callback)
		{
			_clickAudio.play();
			_Callback();
		}
		stopCheck();
	}

}