Esempio n. 1
0
SCErr meth_g_deepFree(World *inWorld, int inSize, char *inData, ReplyAddress* /*inReply*/)
{
	sc_msg_iter msg(inSize, inData);
	while (msg.remain()) {
		Group *group = Msg_GetGroup(inWorld, msg);
		if (!group) return kSCErr_GroupNotFound;

		Group_DeepFreeGraphs(group);
	}
	return kSCErr_None;
}
Esempio n. 2
0
void Group_DeepFreeGraphs(Group *inGroup)
{
	Node *child = inGroup->mHead;
	while (child) {
        Node *next = child->mNext;
		if (child->mIsGroup) {
			Group_DeepFreeGraphs((Group*)child);
		} else {
			Node_Remove(child);
			Node_Delete(child);
		}
		child = next;
	}
}
Esempio n. 3
0
void Unit_DoneAction(int doneAction, Unit *unit)
{
	switch (doneAction)
	{
		case 1 :
			Node_SetRun(&unit->mParent->mNode, 0);
			break;
		case 2 :
			Node_End(&unit->mParent->mNode);
			break;
		case 3 :
		{
			Node_End(&unit->mParent->mNode);
			Node* prev = unit->mParent->mNode.mPrev;
			if (prev) Node_End(prev);
		} break;
		case 4 :
		{
			Node_End(&unit->mParent->mNode);
			Node* next = unit->mParent->mNode.mNext;
			if (next) Node_End(next);
		} break;
		case 5 :
		{
			Node_End(&unit->mParent->mNode);
			Node* prev = unit->mParent->mNode.mPrev;
			if (!prev) break;
			if (prev && prev->mIsGroup) Group_DeleteAll((Group*)prev);
			else Node_End(prev);
		} break;
		case 6 :
		{
			Node_End(&unit->mParent->mNode);
			Node* next = unit->mParent->mNode.mNext;
			if (!next) break;
			if (next->mIsGroup) Group_DeleteAll((Group*)next);
			else Node_End(next);
		} break;
		case 7 :
		{
			Node* node = &unit->mParent->mNode;
			while (node) {
				Node *prev = node->mPrev;
				Node_End(node);
				node = prev;
			}
		} break;
		case 8 :
		{
			Node* node = &unit->mParent->mNode;
			while (node) {
				Node *next = node->mNext;
				Node_End(node);
				node = next;
			}
		} break;
		case 9 :
		{
			Node_End(&unit->mParent->mNode);
			Node* prev = unit->mParent->mNode.mPrev;
			if (prev) Node_SetRun(prev, 0);
		} break;
		case 10 :
		{
			Node_End(&unit->mParent->mNode);
			Node* next = unit->mParent->mNode.mNext;
			if (next) Node_SetRun(next, 0);
		} break;
		case 11 :
		{
			Node_End(&unit->mParent->mNode);
			Node* prev = unit->mParent->mNode.mPrev;
			if (!prev) break;
			if (prev->mIsGroup) Group_DeepFreeGraphs((Group*)prev);
			else Node_End(prev);
		} break;
		case 12 :
		{
			Node_End(&unit->mParent->mNode);
			Node* next = unit->mParent->mNode.mNext;
			if (!next) break;
			if (next->mIsGroup) Group_DeepFreeGraphs((Group*)next);
			else Node_End(next);
		} break;
		case 13 :
		{
			Node* node = unit->mParent->mNode.mParent->mHead;
			while (node) {
				Node *next = node->mNext;
				Node_End(node);
				node = next;
			}
		} break;
		case 14 :
			Node_End(&unit->mParent->mNode.mParent->mNode);
			break;
	}
}