Exemple #1
0
bool BaseInStream::Link(BaseOutStream *pOutStream, bool reverseLink) {
	if ((!pOutStream->IsCompatibleWithType(GetType()))
			|| (!IsCompatibleWithType(pOutStream->GetType()))) {
		FATAL("stream type %s not compatible with stream type %s",
				STR(tagToString(GetType())),
				STR(tagToString(pOutStream->GetType())));
		return false;
	}
	if (MAP_HAS1(_linkedStreams, pOutStream->GetUniqueId())) {
		WARN("BaseInStream::Link: This stream is already linked");
		return true;
	}
	_pOutStreams = AddLinkedList(_pOutStreams, pOutStream, true);
	_linkedStreams[pOutStream->GetUniqueId()] = pOutStream;

	if (reverseLink) {
		if (!pOutStream->Link(this, false)) {
			FATAL("BaseInStream::Link: Unable to reverse link");
			//TODO: here we must remove the link from _pOutStreams and _linkedStreams
			NYIA;
		}
	}
	SignalOutStreamAttached(pOutStream);
	return true;
}
Exemple #2
0
int main( void ) {
	LinkedList *ll;
	int e;

	aa *d;
	aa *f;
	aa *g;
	aa *d1;

	d = malloc(sizeof(aa));
	f = malloc(sizeof(aa));
	g = malloc(sizeof(aa));
	d->a = 8;
	f->a = 15;
	g->a = 9;

	ll = InitLinkedList(sizeof(aa));
	e = LinkedListIsEmpty(ll);
	printf("is empty? : %d\n",e);

	AddLinkedList(ll, d);
	printf("added\n");
	e = LinkedListIsEmpty(ll);
	printf("is empty? : %d\n",e);

	d1 = GetFirstLinkedList(ll);
	printf("First %d\n", d1->a);

	d1 = GetLastLinkedList(ll);
	printf("Last %d\n", d1->a);
	printf("----------------------\n");

	AddLinkedList(ll, f);
	e = LinkedListIsEmpty(ll);
	printf("is empty? : %d\n",e);

	d1 = GetFirstLinkedList(ll);
	printf("First %d\n", d1->a);

	d1 = GetLastLinkedList(ll);
	printf("Last %d\n", d1->a);

	printf("//////////////////////\n");

	AddFirstLinkedList(ll, g);
	e = LinkedListIsEmpty(ll);
	printf("is empty? : %d\n",e);

	d1 = GetFirstLinkedList(ll);
	printf("First %d\n", d1->a);

	d1 = GetLastLinkedList(ll);
	printf("Last %d\n", d1->a);

	RemoveFirstLinkedList(ll);
	printf("----------------------\n");
	printf("is empty? : %d\n",e);

	d1 = GetFirstLinkedList(ll);
	printf("First %d\n", d1->a);

	d1 = GetLastLinkedList(ll);
	printf("Last %d\n", d1->a);

	RemoveLastLinkedList(ll);
	printf("++++++++++++++++++++++\n");
	d1 = GetLastLinkedList(ll);
	printf("Last %d\n", d1->a);

	return 0;
}