示例#1
0
文件: consume.c 项目: Zleub/lem-in
int		consume_room(char *line, struct s_lem_in *lemin, int *state)
{
	static struct s_room **forward_alloc;
	char	**split;

	split = ft_strsplit(line, ' ');
	if (!ft_strcmp("##start", line))
		forward_alloc = &lemin->start;
	else if (!ft_strcmp("##end", line))
		forward_alloc = &lemin->end;
	else if (forward_alloc != 0 && arraylen(split) == 3)
	{
		*forward_alloc = alloc_room(ft_strdup(split[0]));
		lemin_push_room(lemin, *forward_alloc);
		forward_alloc = 0;
	}
	else if (arraylen(split) == 3)
		lemin_push_room(lemin, alloc_room(ft_strdup(split[0])));
	else
	{
		*state = TUBE;
		consume_tube(line, lemin, state);
	}
	free_array(split);
	return (0);
}
示例#2
0
int main (int argc, const char* argv[])
{
	//Super important note:
	//MSVS Doesn't allow declarations to follow statements in a block.
	//It uses an old C90 ruleset.  Support for this was added to C in the C99 standard
	room alpha;
	room* rooms = alloc_room();
	char* t_str = strmalloc();
	FILE* world = fopen("WORLD.DAT","r");		//TODO: Add a parameter parser to allow users to specify different worlds.
	if (world == NULL)
	{
		printf("Could not open WORLD.DAT!\n");
		return 1;
	}

	load_world(rooms, world);	//Load our world data into the rooms
	
	/// TEST ROUTINES //
	/*while (rooms != NULL)	//NOTE: Using this will break the room looking
	{
		printf(rooms->name);
		printf("\n");
		while (rooms->areas != NULL)
		{
			printf("\t");
			printf(rooms->areas->name);
			printf("\n");
			printf("\t\t");
			printf(rooms->areas->desc);
			printf("\n");
			rooms->areas = rooms->areas->next;
		}
		rooms = rooms->next;
	}
	if (t_str == "")
		printf("Empty String");
	else if (t_str == NULL)
		printf("NULL String");
	else
	{
		itoa(strlen(t_str), t_str, 1);
		printf(t_str);
	}*/
	printf(rooms->doors->name);
	gameloop(rooms);
	printf("User Exited. Press any key to quit.");
	getchar();
	/// END TEST ROUTINES //

	fclose(world);
	return 0;
}
示例#3
0
status_t
submit_rx_acl(bt_usb_dev* bdev)
{
	size_t size = max_c(HCI_MAX_FRAME_SIZE, bdev->max_packet_size_bulk_in);
	void* buf = alloc_room(&bdev->aclRoom, size);
	status_t status;

	if (buf == NULL)
		return ENOMEM;

	status = usb->queue_bulk(bdev->bulk_in_ep->handle, buf, size,
		acl_rx_complete, bdev);

	if (status != B_OK) {
		reuse_room(&bdev->aclRoom, buf); // reuse allocated
		bdev->stat.rejectedRX++;
	} else {
		bdev->stat.acceptedRX++;
	}

	return status;
}
示例#4
0
status_t
submit_rx_event(bt_usb_dev* bdev)
{
	size_t size = max_c(HCI_MAX_EVENT_SIZE, bdev->max_packet_size_intr_in);
	void* buf = alloc_room(&bdev->eventRoom, size);
	status_t status;

	if (buf == NULL)
		return ENOMEM;

	status = usb->queue_interrupt(bdev->intr_in_ep->handle,	buf, size,
		event_complete, (void*)bdev);

	if (status != B_OK) {
		reuse_room(&bdev->eventRoom, buf); // reuse allocated one
		bdev->stat.rejectedRX++;
	} else {
		bdev->stat.acceptedRX++;
		debugf("Accepted RX Event %d\n", bdev->stat.acceptedRX);
	}

	return status;
}