Esempio n. 1
0
int dllist_test()
{

	struct mynode *mn[NUM_NODES];
	LPDL_NODE node;
	struct mynode *data;

	/* *insert */
	int i = 0;
	Debug_Message(LOG_FULL, "insert node from 1 to NUM_NODES(32): \n");
	for (; i < NUM_NODES; i++) {
		mn[i] = (struct mynode *)malloc(sizeof(struct mynode));
		mn[i]->string = (char *)malloc(sizeof(char) * 4);
		sprintf(mn[i]->string, "%d", i);
		dll_insert(&mytree, mn[i]);
	}
	
	/* *search */
	Debug_Message(LOG_FULL, "search all nodes: \n");
	for (node = dl_first(&mytree); node; node = dl_next(node)) {
		struct mynode *data;
		container_of(data, node, struct mynode, node);
		Debug_Message(LOG_TEST, "key = %s\n", data->string);
	}

	/* *delete */
	Debug_Message(LOG_FULL, "delete node 0: \n");
	data = dll_search(&mytree, "0");
	if (data) {
		dl_remove_node(&data->node, &mytree);
		dll_free(data);
	}

	/* *delete again*/
	Debug_Message(LOG_FULL, "delete node 10: \n");
	data = dll_search(&mytree, "10");
	if (data) {
		dl_remove_node(&data->node, &mytree);
		dll_free(data);
	}

	/* *delete once again*/
	Debug_Message(LOG_FULL, "delete node 31: \n");
	data = dll_search(&mytree, "31");
	if (data) {
		dl_remove_node(&data->node, &mytree);
		dll_free(data);
	}

	/* *search again*/
	Debug_Message(LOG_FULL, "search again:\n");
	for (node = dl_first(&mytree); node; node = dl_next(node)) {
		struct mynode *data;
		container_of(data, node, struct mynode, node);
		Debug_Message(LOG_TEST,"key = %s\n", data->string);
	}
	return 0;
}
Esempio n. 2
0
struct mynode * dll_search(LPDL_ROOT root, char *string)
{
  	LPDL_NODE node = dl_first(root);

  	while (node) {
  		struct mynode *data;
		int result;
		container_of(data, node, struct mynode, node);
		result = strcmp(string, data->string);
		
		if (result != 0) {
  			node = node->dl_next;
		} else {
  			return data;
		}
	}
	return NULL;
}
Esempio n. 3
0
int ReleaseCache(INT h)
{
	LPCACHE_NODE pNode = GNull;
	LPCACHE_NODE pFree = GNull;
	LPCACHE_HANDLE handle = (LPCACHE_HANDLE)h;
	LPDL_NODE node;
	int ret = 0;
	if (handle == GNull) {
		return -1;
	}

	node = dl_first(&(handle->mDLRoot));
	while (node) {
		container_of(pNode, node, CACHE_NODE, mDLNode);
		node = dl_next(node);
		cache_data_release(&(pNode->mData));
		GMemFree(pNode);
	}

	GMemFree(handle);

	return ret;
}
Esempio n. 4
0
void lshift()
{
	struct datum *res, *a, *b;

	if (stack == stack->next || stack == stack->next->next) {
		printf("stack empty\n");
		return;
	}

	res = (struct datum *)malloc(sizeof(struct datum));
	if (!res) {
		printf("no memory\n");
		return;
	}

	a = (struct datum *)stack->next->next->item;
	b = (struct datum *)stack->next->item;

	implicit_conversion(&res->type, &res->base, a->type, a->base,
			   b->type, b->base);

	switch (res->type) {
	case i:
		if (a->type == c && b->type == c)
			res->t.i = a->t.c << b->t.c;
		else if (a->type == c && b->type == sc)
			res->t.i = a->t.c << b->t.sc;
		else if (a->type == c && b->type == uc)
			res->t.i = a->t.c << b->t.uc;
		else if (a->type == c && b->type == s)
			res->t.i = a->t.c << b->t.s;
		else if (a->type == c && b->type == i)
			res->t.i = a->t.c << b->t.i;
		else if (a->type == c && b->type == l)
			res->t.i = a->t.c << b->t.l;
		else if (a->type == c && b->type == us)
			res->t.i = a->t.c << b->t.us;
		else if (a->type == c && b->type == u)
			res->t.i = a->t.c << b->t.u;
		else if (a->type == c && b->type == ul)
			res->t.i = a->t.c << b->t.ul;
		else if (a->type == sc && b->type == c)
			res->t.i = a->t.sc << b->t.c;
		else if (a->type == sc && b->type == sc)
			res->t.i = a->t.sc << b->t.sc;
		else if (a->type == sc && b->type == uc)
			res->t.i = a->t.sc << b->t.uc;
		else if (a->type == sc && b->type == s)
			res->t.i = a->t.sc << b->t.s;
		else if (a->type == sc && b->type == i)
			res->t.i = a->t.sc << b->t.i;
		else if (a->type == sc && b->type == l)
			res->t.i = a->t.sc << b->t.l;
		else if (a->type == sc && b->type == us)
			res->t.i = a->t.sc << b->t.us;
		else if (a->type == sc && b->type == u)
			res->t.i = a->t.sc << b->t.u;
		else if (a->type == sc && b->type == ul)
			res->t.i = a->t.sc << b->t.ul;
		else if (a->type == uc && b->type == c)
			res->t.i = a->t.uc << b->t.c;
		else if (a->type == uc && b->type == sc)
			res->t.i = a->t.uc << b->t.sc;
		else if (a->type == uc && b->type == uc)
			res->t.i = a->t.uc << b->t.uc;
		else if (a->type == uc && b->type == s)
			res->t.i = a->t.uc << b->t.s;
		else if (a->type == uc && b->type == i)
			res->t.i = a->t.uc << b->t.i;
		else if (a->type == uc && b->type == l)
			res->t.i = a->t.uc << b->t.l;
		else if (a->type == uc && b->type == us)
			res->t.i = a->t.uc << b->t.us;
		else if (a->type == uc && b->type == u)
			res->t.i = a->t.uc << b->t.u;
		else if (a->type == uc && b->type == ul)
			res->t.i = a->t.uc << b->t.ul;
		else if (a->type == s && b->type == c)
			res->t.i = a->t.s << b->t.c;
		else if (a->type == s && b->type == sc)
			res->t.i = a->t.s << b->t.sc;
		else if (a->type == s && b->type == uc)
			res->t.i = a->t.s << b->t.uc;
		else if (a->type == s && b->type == s)
			res->t.i = a->t.s << b->t.s;
		else if (a->type == s && b->type == i)
			res->t.i = a->t.s << b->t.i;
		else if (a->type == s && b->type == l)
			res->t.i = a->t.s << b->t.l;
		else if (a->type == s && b->type == us)
			res->t.i = a->t.s << b->t.us;
		else if (a->type == s && b->type == u)
			res->t.i = a->t.s << b->t.u;
		else if (a->type == s && b->type == ul)
			res->t.i = a->t.s << b->t.ul;
		else if (a->type == i && b->type == c)
			res->t.i = a->t.i << b->t.c;
		else if (a->type == i && b->type == sc)
			res->t.i = a->t.i << b->t.sc;
		else if (a->type == i && b->type == uc)
			res->t.i = a->t.i << b->t.uc;
		else if (a->type == i && b->type == s)
			res->t.i = a->t.i << b->t.s;
		else if (a->type == i && b->type == i)
			res->t.i = a->t.i << b->t.i;
		else if (a->type == i && b->type == l)
			res->t.i = a->t.i << b->t.l;
		else if (a->type == i && b->type == us)
			res->t.i = a->t.i << b->t.us;
		else if (a->type == i && b->type == u)
			res->t.i = a->t.i << b->t.u;
		else if (a->type == i && b->type == ul)
			res->t.i = a->t.i << b->t.ul;
		else if (a->type == l && b->type == c)
			res->t.i = a->t.l << b->t.c;
		else if (a->type == l && b->type == sc)
			res->t.i = a->t.l << b->t.sc;
		else if (a->type == l && b->type == uc)
			res->t.i = a->t.l << b->t.uc;
		else if (a->type == l && b->type == s)
			res->t.i = a->t.l << b->t.s;
		else if (a->type == l && b->type == i)
			res->t.i = a->t.l << b->t.i;
		else if (a->type == l && b->type == l)
			res->t.i = a->t.l << b->t.l;
		else if (a->type == l && b->type == us)
			res->t.i = a->t.l << b->t.us;
		else if (a->type == l && b->type == u)
			res->t.i = a->t.l << b->t.u;
		else if (a->type == l && b->type == ul)
			res->t.i = a->t.l << b->t.ul;
		else if (a->type == us && b->type == c)
			res->t.i = a->t.us << b->t.c;
		else if (a->type == us && b->type == sc)
			res->t.i = a->t.us << b->t.sc;
		else if (a->type == us && b->type == uc)
			res->t.i = a->t.us << b->t.uc;
		else if (a->type == us && b->type == s)
			res->t.i = a->t.us << b->t.s;
		else if (a->type == us && b->type == i)
			res->t.i = a->t.us << b->t.i;
		else if (a->type == us && b->type == l)
			res->t.i = a->t.us << b->t.l;
		else if (a->type == us && b->type == us)
			res->t.i = a->t.us << b->t.us;
		else if (a->type == us && b->type == u)
			res->t.i = a->t.us << b->t.u;
		else if (a->type == us && b->type == ul)
			res->t.i = a->t.us << b->t.ul;
		else if (a->type == u && b->type == c)
			res->t.i = a->t.u << b->t.c;
		else if (a->type == u && b->type == sc)
			res->t.i = a->t.u << b->t.sc;
		else if (a->type == u && b->type == uc)
			res->t.i = a->t.u << b->t.uc;
		else if (a->type == u && b->type == s)
			res->t.i = a->t.u << b->t.s;
		else if (a->type == u && b->type == i)
			res->t.i = a->t.u << b->t.i;
		else if (a->type == u && b->type == l)
			res->t.i = a->t.u << b->t.l;
		else if (a->type == u && b->type == us)
			res->t.i = a->t.u << b->t.us;
		else if (a->type == u && b->type == u)
			res->t.i = a->t.u << b->t.u;
		else if (a->type == u && b->type == ul)
			res->t.i = a->t.u << b->t.ul;
		else if (a->type == ul && b->type == c)
			res->t.i = a->t.ul << b->t.c;
		else if (a->type == ul && b->type == sc)
			res->t.i = a->t.ul << b->t.sc;
		else if (a->type == ul && b->type == uc)
			res->t.i = a->t.ul << b->t.uc;
		else if (a->type == ul && b->type == s)
			res->t.i = a->t.ul << b->t.s;
		else if (a->type == ul && b->type == i)
			res->t.i = a->t.ul << b->t.i;
		else if (a->type == ul && b->type == l)
			res->t.i = a->t.ul << b->t.l;
		else if (a->type == ul && b->type == us)
			res->t.i = a->t.ul << b->t.us;
		else if (a->type == ul && b->type == u)
			res->t.i = a->t.ul << b->t.u;
		else if (a->type == ul && b->type == ul)
			res->t.i = a->t.ul << b->t.ul;
		break;
	case l:
		if (a->type == c && b->type == c)
			res->t.l = a->t.c << b->t.c;
		else if (a->type == c && b->type == sc)
			res->t.l = a->t.c << b->t.sc;
		else if (a->type == c && b->type == uc)
			res->t.l = a->t.c << b->t.uc;
		else if (a->type == c && b->type == s)
			res->t.l = a->t.c << b->t.s;
		else if (a->type == c && b->type == i)
			res->t.l = a->t.c << b->t.i;
		else if (a->type == c && b->type == l)
			res->t.l = a->t.c << b->t.l;
		else if (a->type == c && b->type == us)
			res->t.l = a->t.c << b->t.us;
		else if (a->type == c && b->type == u)
			res->t.l = a->t.c << b->t.u;
		else if (a->type == c && b->type == ul)
			res->t.l = a->t.c << b->t.ul;
		else if (a->type == sc && b->type == c)
			res->t.l = a->t.sc << b->t.c;
		else if (a->type == sc && b->type == sc)
			res->t.l = a->t.sc << b->t.sc;
		else if (a->type == sc && b->type == uc)
			res->t.l = a->t.sc << b->t.uc;
		else if (a->type == sc && b->type == s)
			res->t.l = a->t.sc << b->t.s;
		else if (a->type == sc && b->type == i)
			res->t.l = a->t.sc << b->t.i;
		else if (a->type == sc && b->type == l)
			res->t.l = a->t.sc << b->t.l;
		else if (a->type == sc && b->type == us)
			res->t.l = a->t.sc << b->t.us;
		else if (a->type == sc && b->type == u)
			res->t.l = a->t.sc << b->t.u;
		else if (a->type == sc && b->type == ul)
			res->t.l = a->t.sc << b->t.ul;
		else if (a->type == uc && b->type == c)
			res->t.l = a->t.uc << b->t.c;
		else if (a->type == uc && b->type == sc)
			res->t.l = a->t.uc << b->t.sc;
		else if (a->type == uc && b->type == uc)
			res->t.l = a->t.uc << b->t.uc;
		else if (a->type == uc && b->type == s)
			res->t.l = a->t.uc << b->t.s;
		else if (a->type == uc && b->type == i)
			res->t.l = a->t.uc << b->t.i;
		else if (a->type == uc && b->type == l)
			res->t.l = a->t.uc << b->t.l;
		else if (a->type == uc && b->type == us)
			res->t.l = a->t.uc << b->t.us;
		else if (a->type == uc && b->type == u)
			res->t.l = a->t.uc << b->t.u;
		else if (a->type == uc && b->type == ul)
			res->t.l = a->t.uc << b->t.ul;
		else if (a->type == s && b->type == c)
			res->t.l = a->t.s << b->t.c;
		else if (a->type == s && b->type == sc)
			res->t.l = a->t.s << b->t.sc;
		else if (a->type == s && b->type == uc)
			res->t.l = a->t.s << b->t.uc;
		else if (a->type == s && b->type == s)
			res->t.l = a->t.s << b->t.s;
		else if (a->type == s && b->type == i)
			res->t.l = a->t.s << b->t.i;
		else if (a->type == s && b->type == l)
			res->t.l = a->t.s << b->t.l;
		else if (a->type == s && b->type == us)
			res->t.l = a->t.s << b->t.us;
		else if (a->type == s && b->type == u)
			res->t.l = a->t.s << b->t.u;
		else if (a->type == s && b->type == ul)
			res->t.l = a->t.s << b->t.ul;
		else if (a->type == i && b->type == c)
			res->t.l = a->t.i << b->t.c;
		else if (a->type == i && b->type == sc)
			res->t.l = a->t.i << b->t.sc;
		else if (a->type == i && b->type == uc)
			res->t.l = a->t.i << b->t.uc;
		else if (a->type == i && b->type == s)
			res->t.l = a->t.i << b->t.s;
		else if (a->type == i && b->type == i)
			res->t.l = a->t.i << b->t.i;
		else if (a->type == i && b->type == l)
			res->t.l = a->t.i << b->t.l;
		else if (a->type == i && b->type == us)
			res->t.l = a->t.i << b->t.us;
		else if (a->type == i && b->type == u)
			res->t.l = a->t.i << b->t.u;
		else if (a->type == i && b->type == ul)
			res->t.l = a->t.i << b->t.ul;
		else if (a->type == l && b->type == c)
			res->t.l = a->t.l << b->t.c;
		else if (a->type == l && b->type == sc)
			res->t.l = a->t.l << b->t.sc;
		else if (a->type == l && b->type == uc)
			res->t.l = a->t.l << b->t.uc;
		else if (a->type == l && b->type == s)
			res->t.l = a->t.l << b->t.s;
		else if (a->type == l && b->type == i)
			res->t.l = a->t.l << b->t.i;
		else if (a->type == l && b->type == l)
			res->t.l = a->t.l << b->t.l;
		else if (a->type == l && b->type == us)
			res->t.l = a->t.l << b->t.us;
		else if (a->type == l && b->type == u)
			res->t.l = a->t.l << b->t.u;
		else if (a->type == l && b->type == ul)
			res->t.l = a->t.l << b->t.ul;
		else if (a->type == us && b->type == c)
			res->t.l = a->t.us << b->t.c;
		else if (a->type == us && b->type == sc)
			res->t.l = a->t.us << b->t.sc;
		else if (a->type == us && b->type == uc)
			res->t.l = a->t.us << b->t.uc;
		else if (a->type == us && b->type == s)
			res->t.l = a->t.us << b->t.s;
		else if (a->type == us && b->type == i)
			res->t.l = a->t.us << b->t.i;
		else if (a->type == us && b->type == l)
			res->t.l = a->t.us << b->t.l;
		else if (a->type == us && b->type == us)
			res->t.l = a->t.us << b->t.us;
		else if (a->type == us && b->type == u)
			res->t.l = a->t.us << b->t.u;
		else if (a->type == us && b->type == ul)
			res->t.l = a->t.us << b->t.ul;
		else if (a->type == u && b->type == c)
			res->t.l = a->t.u << b->t.c;
		else if (a->type == u && b->type == sc)
			res->t.l = a->t.u << b->t.sc;
		else if (a->type == u && b->type == uc)
			res->t.l = a->t.u << b->t.uc;
		else if (a->type == u && b->type == s)
			res->t.l = a->t.u << b->t.s;
		else if (a->type == u && b->type == i)
			res->t.l = a->t.u << b->t.i;
		else if (a->type == u && b->type == l)
			res->t.l = a->t.u << b->t.l;
		else if (a->type == u && b->type == us)
			res->t.l = a->t.u << b->t.us;
		else if (a->type == u && b->type == u)
			res->t.l = a->t.u << b->t.u;
		else if (a->type == u && b->type == ul)
			res->t.l = a->t.u << b->t.ul;
		else if (a->type == ul && b->type == c)
			res->t.l = a->t.ul << b->t.c;
		else if (a->type == ul && b->type == sc)
			res->t.l = a->t.ul << b->t.sc;
		else if (a->type == ul && b->type == uc)
			res->t.l = a->t.ul << b->t.uc;
		else if (a->type == ul && b->type == s)
			res->t.l = a->t.ul << b->t.s;
		else if (a->type == ul && b->type == i)
			res->t.l = a->t.ul << b->t.i;
		else if (a->type == ul && b->type == l)
			res->t.l = a->t.ul << b->t.l;
		else if (a->type == ul && b->type == us)
			res->t.l = a->t.ul << b->t.us;
		else if (a->type == ul && b->type == u)
			res->t.l = a->t.ul << b->t.u;
		else if (a->type == ul && b->type == ul)
			res->t.l = a->t.ul << b->t.ul;
		break;
	case u:
		if (a->type == c && b->type == c)
			res->t.u = a->t.c << b->t.c;
		else if (a->type == c && b->type == sc)
			res->t.u = a->t.c << b->t.sc;
		else if (a->type == c && b->type == uc)
			res->t.u = a->t.c << b->t.uc;
		else if (a->type == c && b->type == s)
			res->t.u = a->t.c << b->t.s;
		else if (a->type == c && b->type == i)
			res->t.u = a->t.c << b->t.i;
		else if (a->type == c && b->type == l)
			res->t.u = a->t.c << b->t.l;
		else if (a->type == c && b->type == us)
			res->t.u = a->t.c << b->t.us;
		else if (a->type == c && b->type == u)
			res->t.u = a->t.c << b->t.u;
		else if (a->type == c && b->type == ul)
			res->t.u = a->t.c << b->t.ul;
		else if (a->type == sc && b->type == c)
			res->t.u = a->t.sc << b->t.c;
		else if (a->type == sc && b->type == sc)
			res->t.u = a->t.sc << b->t.sc;
		else if (a->type == sc && b->type == uc)
			res->t.u = a->t.sc << b->t.uc;
		else if (a->type == sc && b->type == s)
			res->t.u = a->t.sc << b->t.s;
		else if (a->type == sc && b->type == i)
			res->t.u = a->t.sc << b->t.i;
		else if (a->type == sc && b->type == l)
			res->t.u = a->t.sc << b->t.l;
		else if (a->type == sc && b->type == us)
			res->t.u = a->t.sc << b->t.us;
		else if (a->type == sc && b->type == u)
			res->t.u = a->t.sc << b->t.u;
		else if (a->type == sc && b->type == ul)
			res->t.u = a->t.sc << b->t.ul;
		else if (a->type == uc && b->type == c)
			res->t.u = a->t.uc << b->t.c;
		else if (a->type == uc && b->type == sc)
			res->t.u = a->t.uc << b->t.sc;
		else if (a->type == uc && b->type == uc)
			res->t.u = a->t.uc << b->t.uc;
		else if (a->type == uc && b->type == s)
			res->t.u = a->t.uc << b->t.s;
		else if (a->type == uc && b->type == i)
			res->t.u = a->t.uc << b->t.i;
		else if (a->type == uc && b->type == l)
			res->t.u = a->t.uc << b->t.l;
		else if (a->type == uc && b->type == us)
			res->t.u = a->t.uc << b->t.us;
		else if (a->type == uc && b->type == u)
			res->t.u = a->t.uc << b->t.u;
		else if (a->type == uc && b->type == ul)
			res->t.u = a->t.uc << b->t.ul;
		else if (a->type == s && b->type == c)
			res->t.u = a->t.s << b->t.c;
		else if (a->type == s && b->type == sc)
			res->t.u = a->t.s << b->t.sc;
		else if (a->type == s && b->type == uc)
			res->t.u = a->t.s << b->t.uc;
		else if (a->type == s && b->type == s)
			res->t.u = a->t.s << b->t.s;
		else if (a->type == s && b->type == i)
			res->t.u = a->t.s << b->t.i;
		else if (a->type == s && b->type == l)
			res->t.u = a->t.s << b->t.l;
		else if (a->type == s && b->type == us)
			res->t.u = a->t.s << b->t.us;
		else if (a->type == s && b->type == u)
			res->t.u = a->t.s << b->t.u;
		else if (a->type == s && b->type == ul)
			res->t.u = a->t.s << b->t.ul;
		else if (a->type == i && b->type == c)
			res->t.u = a->t.i << b->t.c;
		else if (a->type == i && b->type == sc)
			res->t.u = a->t.i << b->t.sc;
		else if (a->type == i && b->type == uc)
			res->t.u = a->t.i << b->t.uc;
		else if (a->type == i && b->type == s)
			res->t.u = a->t.i << b->t.s;
		else if (a->type == i && b->type == i)
			res->t.u = a->t.i << b->t.i;
		else if (a->type == i && b->type == l)
			res->t.u = a->t.i << b->t.l;
		else if (a->type == i && b->type == us)
			res->t.u = a->t.i << b->t.us;
		else if (a->type == i && b->type == u)
			res->t.u = a->t.i << b->t.u;
		else if (a->type == i && b->type == ul)
			res->t.u = a->t.i << b->t.ul;
		else if (a->type == l && b->type == c)
			res->t.u = a->t.l << b->t.c;
		else if (a->type == l && b->type == sc)
			res->t.u = a->t.l << b->t.sc;
		else if (a->type == l && b->type == uc)
			res->t.u = a->t.l << b->t.uc;
		else if (a->type == l && b->type == s)
			res->t.u = a->t.l << b->t.s;
		else if (a->type == l && b->type == i)
			res->t.u = a->t.l << b->t.i;
		else if (a->type == l && b->type == l)
			res->t.u = a->t.l << b->t.l;
		else if (a->type == l && b->type == us)
			res->t.u = a->t.l << b->t.us;
		else if (a->type == l && b->type == u)
			res->t.u = a->t.l << b->t.u;
		else if (a->type == l && b->type == ul)
			res->t.u = a->t.l << b->t.ul;
		else if (a->type == us && b->type == c)
			res->t.u = a->t.us << b->t.c;
		else if (a->type == us && b->type == sc)
			res->t.u = a->t.us << b->t.sc;
		else if (a->type == us && b->type == uc)
			res->t.u = a->t.us << b->t.uc;
		else if (a->type == us && b->type == s)
			res->t.u = a->t.us << b->t.s;
		else if (a->type == us && b->type == i)
			res->t.u = a->t.us << b->t.i;
		else if (a->type == us && b->type == l)
			res->t.u = a->t.us << b->t.l;
		else if (a->type == us && b->type == us)
			res->t.u = a->t.us << b->t.us;
		else if (a->type == us && b->type == u)
			res->t.u = a->t.us << b->t.u;
		else if (a->type == us && b->type == ul)
			res->t.u = a->t.us << b->t.ul;
		else if (a->type == u && b->type == c)
			res->t.u = a->t.u << b->t.c;
		else if (a->type == u && b->type == sc)
			res->t.u = a->t.u << b->t.sc;
		else if (a->type == u && b->type == uc)
			res->t.u = a->t.u << b->t.uc;
		else if (a->type == u && b->type == s)
			res->t.u = a->t.u << b->t.s;
		else if (a->type == u && b->type == i)
			res->t.u = a->t.u << b->t.i;
		else if (a->type == u && b->type == l)
			res->t.u = a->t.u << b->t.l;
		else if (a->type == u && b->type == us)
			res->t.u = a->t.u << b->t.us;
		else if (a->type == u && b->type == u)
			res->t.u = a->t.u << b->t.u;
		else if (a->type == u && b->type == ul)
			res->t.u = a->t.u << b->t.ul;
		else if (a->type == ul && b->type == c)
			res->t.u = a->t.ul << b->t.c;
		else if (a->type == ul && b->type == sc)
			res->t.u = a->t.ul << b->t.sc;
		else if (a->type == ul && b->type == uc)
			res->t.u = a->t.ul << b->t.uc;
		else if (a->type == ul && b->type == s)
			res->t.u = a->t.ul << b->t.s;
		else if (a->type == ul && b->type == i)
			res->t.u = a->t.ul << b->t.i;
		else if (a->type == ul && b->type == l)
			res->t.u = a->t.ul << b->t.l;
		else if (a->type == ul && b->type == us)
			res->t.u = a->t.ul << b->t.us;
		else if (a->type == ul && b->type == u)
			res->t.u = a->t.ul << b->t.u;
		else if (a->type == ul && b->type == ul)
			res->t.u = a->t.ul << b->t.ul;
		break;
	case ul:
		if (a->type == c && b->type == c)
			res->t.ul = a->t.c << b->t.c;
		else if (a->type == c && b->type == sc)
			res->t.ul = a->t.c << b->t.sc;
		else if (a->type == c && b->type == uc)
			res->t.ul = a->t.c << b->t.uc;
		else if (a->type == c && b->type == s)
			res->t.ul = a->t.c << b->t.s;
		else if (a->type == c && b->type == i)
			res->t.ul = a->t.c << b->t.i;
		else if (a->type == c && b->type == l)
			res->t.ul = a->t.c << b->t.l;
		else if (a->type == c && b->type == us)
			res->t.ul = a->t.c << b->t.us;
		else if (a->type == c && b->type == u)
			res->t.ul = a->t.c << b->t.u;
		else if (a->type == c && b->type == ul)
			res->t.ul = a->t.c << b->t.ul;
		else if (a->type == sc && b->type == c)
			res->t.ul = a->t.sc << b->t.c;
		else if (a->type == sc && b->type == sc)
			res->t.ul = a->t.sc << b->t.sc;
		else if (a->type == sc && b->type == uc)
			res->t.ul = a->t.sc << b->t.uc;
		else if (a->type == sc && b->type == s)
			res->t.ul = a->t.sc << b->t.s;
		else if (a->type == sc && b->type == i)
			res->t.ul = a->t.sc << b->t.i;
		else if (a->type == sc && b->type == l)
			res->t.ul = a->t.sc << b->t.l;
		else if (a->type == sc && b->type == us)
			res->t.ul = a->t.sc << b->t.us;
		else if (a->type == sc && b->type == u)
			res->t.ul = a->t.sc << b->t.u;
		else if (a->type == sc && b->type == ul)
			res->t.ul = a->t.sc << b->t.ul;
		else if (a->type == uc && b->type == c)
			res->t.ul = a->t.uc << b->t.c;
		else if (a->type == uc && b->type == sc)
			res->t.ul = a->t.uc << b->t.sc;
		else if (a->type == uc && b->type == uc)
			res->t.ul = a->t.uc << b->t.uc;
		else if (a->type == uc && b->type == s)
			res->t.ul = a->t.uc << b->t.s;
		else if (a->type == uc && b->type == i)
			res->t.ul = a->t.uc << b->t.i;
		else if (a->type == uc && b->type == l)
			res->t.ul = a->t.uc << b->t.l;
		else if (a->type == uc && b->type == us)
			res->t.ul = a->t.uc << b->t.us;
		else if (a->type == uc && b->type == u)
			res->t.ul = a->t.uc << b->t.u;
		else if (a->type == uc && b->type == ul)
			res->t.ul = a->t.uc << b->t.ul;
		else if (a->type == s && b->type == c)
			res->t.ul = a->t.s << b->t.c;
		else if (a->type == s && b->type == sc)
			res->t.ul = a->t.s << b->t.sc;
		else if (a->type == s && b->type == uc)
			res->t.ul = a->t.s << b->t.uc;
		else if (a->type == s && b->type == s)
			res->t.ul = a->t.s << b->t.s;
		else if (a->type == s && b->type == i)
			res->t.ul = a->t.s << b->t.i;
		else if (a->type == s && b->type == l)
			res->t.ul = a->t.s << b->t.l;
		else if (a->type == s && b->type == us)
			res->t.ul = a->t.s << b->t.us;
		else if (a->type == s && b->type == u)
			res->t.ul = a->t.s << b->t.u;
		else if (a->type == s && b->type == ul)
			res->t.ul = a->t.s << b->t.ul;
		else if (a->type == i && b->type == c)
			res->t.ul = a->t.i << b->t.c;
		else if (a->type == i && b->type == sc)
			res->t.ul = a->t.i << b->t.sc;
		else if (a->type == i && b->type == uc)
			res->t.ul = a->t.i << b->t.uc;
		else if (a->type == i && b->type == s)
			res->t.ul = a->t.i << b->t.s;
		else if (a->type == i && b->type == i)
			res->t.ul = a->t.i << b->t.i;
		else if (a->type == i && b->type == l)
			res->t.ul = a->t.i << b->t.l;
		else if (a->type == i && b->type == us)
			res->t.ul = a->t.i << b->t.us;
		else if (a->type == i && b->type == u)
			res->t.ul = a->t.i << b->t.u;
		else if (a->type == i && b->type == ul)
			res->t.ul = a->t.i << b->t.ul;
		else if (a->type == l && b->type == c)
			res->t.ul = a->t.l << b->t.c;
		else if (a->type == l && b->type == sc)
			res->t.ul = a->t.l << b->t.sc;
		else if (a->type == l && b->type == uc)
			res->t.ul = a->t.l << b->t.uc;
		else if (a->type == l && b->type == s)
			res->t.ul = a->t.l << b->t.s;
		else if (a->type == l && b->type == i)
			res->t.ul = a->t.l << b->t.i;
		else if (a->type == l && b->type == l)
			res->t.ul = a->t.l << b->t.l;
		else if (a->type == l && b->type == us)
			res->t.ul = a->t.l << b->t.us;
		else if (a->type == l && b->type == u)
			res->t.ul = a->t.l << b->t.u;
		else if (a->type == l && b->type == ul)
			res->t.ul = a->t.l << b->t.ul;
		else if (a->type == us && b->type == c)
			res->t.ul = a->t.us << b->t.c;
		else if (a->type == us && b->type == sc)
			res->t.ul = a->t.us << b->t.sc;
		else if (a->type == us && b->type == uc)
			res->t.ul = a->t.us << b->t.uc;
		else if (a->type == us && b->type == s)
			res->t.ul = a->t.us << b->t.s;
		else if (a->type == us && b->type == i)
			res->t.ul = a->t.us << b->t.i;
		else if (a->type == us && b->type == l)
			res->t.ul = a->t.us << b->t.l;
		else if (a->type == us && b->type == us)
			res->t.ul = a->t.us << b->t.us;
		else if (a->type == us && b->type == u)
			res->t.ul = a->t.us << b->t.u;
		else if (a->type == us && b->type == ul)
			res->t.ul = a->t.us << b->t.ul;
		else if (a->type == u && b->type == c)
			res->t.ul = a->t.u << b->t.c;
		else if (a->type == u && b->type == sc)
			res->t.ul = a->t.u << b->t.sc;
		else if (a->type == u && b->type == uc)
			res->t.ul = a->t.u << b->t.uc;
		else if (a->type == u && b->type == s)
			res->t.ul = a->t.u << b->t.s;
		else if (a->type == u && b->type == i)
			res->t.ul = a->t.u << b->t.i;
		else if (a->type == u && b->type == l)
			res->t.ul = a->t.u << b->t.l;
		else if (a->type == u && b->type == us)
			res->t.ul = a->t.u << b->t.us;
		else if (a->type == u && b->type == u)
			res->t.ul = a->t.u << b->t.u;
		else if (a->type == u && b->type == ul)
			res->t.ul = a->t.u << b->t.ul;
		else if (a->type == ul && b->type == c)
			res->t.ul = a->t.ul << b->t.c;
		else if (a->type == ul && b->type == sc)
			res->t.ul = a->t.ul << b->t.sc;
		else if (a->type == ul && b->type == uc)
			res->t.ul = a->t.ul << b->t.uc;
		else if (a->type == ul && b->type == s)
			res->t.ul = a->t.ul << b->t.s;
		else if (a->type == ul && b->type == i)
			res->t.ul = a->t.ul << b->t.i;
		else if (a->type == ul && b->type == l)
			res->t.ul = a->t.ul << b->t.l;
		else if (a->type == ul && b->type == us)
			res->t.ul = a->t.ul << b->t.us;
		else if (a->type == ul && b->type == u)
			res->t.ul = a->t.ul << b->t.u;
		else if (a->type == ul && b->type == ul)
			res->t.ul = a->t.ul << b->t.ul;
		break;
	default:
		abort();
	}

	dl_delete_item(dl_first(stack));
	dl_delete_item(dl_first(stack));

	dl_insert_a(stack, res);
}
Esempio n. 5
0
/* bitwise complement */
void bit_comp()
{
	struct datum *res, *a;

	if (stack == stack->next) {
		printf("stack empty\n");
		return;
	}

	res = (struct datum *)malloc(sizeof(struct datum));
	if (!res) {
		printf("no memory\n");
		return;
	}

	a = (struct datum *)stack->next->item;
	res->type = a->type;
	res->base = a->base;

	switch (res->type) {
	case i:
		if (a->type == c)
			res->t.i = ~a->t.c;
		else if (a->type == sc)
			res->t.i = ~a->t.sc;
		else if (a->type == uc)
			res->t.i = ~a->t.uc;
		else if (a->type == s)
			res->t.i = ~a->t.s;
		else if (a->type == i)
			res->t.i = ~a->t.i;
		else if (a->type == l)
			res->t.i = ~a->t.l;
		else if (a->type == us)
			res->t.i = ~a->t.us;
		else if (a->type == u)
			res->t.i = ~a->t.u;
		else if (a->type == ul)
			res->t.i = ~a->t.ul;
		break;
	case l:
		if (a->type == c)
			res->t.l = ~a->t.c;
		else if (a->type == sc)
			res->t.l = ~a->t.sc;
		else if (a->type == uc)
			res->t.l = ~a->t.uc;
		else if (a->type == s)
			res->t.l = ~a->t.s;
		else if (a->type == i)
			res->t.l = ~a->t.i;
		else if (a->type == l)
			res->t.l = ~a->t.l;
		else if (a->type == us)
			res->t.l = ~a->t.us;
		else if (a->type == u)
			res->t.l = ~a->t.u;
		else if (a->type == ul)
			res->t.l = ~a->t.ul;
		break;
	case u:
		if (a->type == c)
			res->t.u = ~a->t.c;
		else if (a->type == sc)
			res->t.u = ~a->t.sc;
		else if (a->type == uc)
			res->t.u = ~a->t.uc;
		else if (a->type == s)
			res->t.u = ~a->t.s;
		else if (a->type == i)
			res->t.u = ~a->t.i;
		else if (a->type == l)
			res->t.u = ~a->t.l;
		else if (a->type == us)
			res->t.u = ~a->t.us;
		else if (a->type == u)
			res->t.u = ~a->t.u;
		else if (a->type == ul)
			res->t.u = ~a->t.ul;
		break;
	case ul:
		if (a->type == c)
			res->t.ul = ~a->t.c;
		else if (a->type == sc)
			res->t.ul = ~a->t.sc;
		else if (a->type == uc)
			res->t.ul = ~a->t.uc;
		else if (a->type == s)
			res->t.ul = ~a->t.s;
		else if (a->type == i)
			res->t.ul = ~a->t.i;
		else if (a->type == l)
			res->t.ul = ~a->t.l;
		else if (a->type == us)
			res->t.ul = ~a->t.us;
		else if (a->type == u)
			res->t.ul = ~a->t.u;
		else if (a->type == ul)
			res->t.ul = ~a->t.ul;
		break;
	default:
		fprintf(stderr, "aborting...\n");
		abort();
	}

	dl_delete_item(dl_first(stack));

	dl_insert_a(stack, res);
}
Esempio n. 6
0
int main(int argc, char *argv[])
{
  struct dlist *node, list, *trav;
  struct list list2;
  cat_time_t ct;

  int arr1[] = { 10, 15, 5, 7, 12, 2, 7 },
      arr2[] = { 9, 1, 6, 10, 6 }, 
      s1 = sizeof(arr1) / sizeof(arr1[0]),
      s2 = sizeof(arr2) / sizeof(arr1[0]), i, j = 0;

  printf("Initial: ");
  for ( i = 0 ; i < s1 ; ++i )
    printf("%u/%u ", ++j, arr1[i]);
  printf("  |  ");
  for ( i = 0 ; i < s2 ; ++i )
    printf("%u/%u ", ++j, arr2[i]);
  printf("\n");

  j=0;
  dl_init(&list, tm_zero);
  for ( i = 0 ; i < s1 ; ++i )
  {
    ++j;
    node = cdl_new(tm_lset(arr1[i], 0), int2ptr(j));
    dl_ins(&list, node);
  }

  dl_first(&list, &ct);
  printf("The first is at %u\n", (uint)tm_sec(ct));
  node = dl_deq(&list);
  printf("The first was %u at %u\n\n", (uint)ptr2uint(cdl_data(node)),
         (uint)tm_sec(node->ttl));
  cdl_free(node);

  printf("Nodes from advance 10:  ");
  l_init(&list2);
  dl_adv(&list, tm_lset(10, 0), &list2);

  while ( ! l_isempty(&list2) )
  {
    trav = container(l_head(&list2), struct dlist, entry);
    printf("%u/%u ", (uint)ptr2uint(cdl_data(trav)), (uint)tm_sec(trav->ttl));
    l_rem(&trav->entry);
    cdl_free(trav);
  }
  printf("\n\n");

  for ( i = 0 ; i < s2 ; ++i ) 
  {
    ++j;
    node = cdl_new(tm_lset(arr2[i], 0), int2ptr(j));
    dl_ins(&list, node);
  }

  printf("After inserting arr2 array is :\n\t");
  while ( node = dl_deq(&list) )
  {
    printf("%u/", (uint)ptr2uint(cdl_data(node)));
    printf("%u ", (uint)tm_sec(node->ttl));
    cdl_free(node);
  }
  printf("\n");

  return 0;
}