コード例 #1
0
ファイル: kthMin.cpp プロジェクト: wtan0202/codingground
void DoubleList03::transferToList(NODE* root)
{
	if (m_Head == NULL&&root != NULL&&root->left == NULL)
	{
		DoubleNode03* node = new DoubleNode03();
		node->setValue(root->num);
		node->setPrev(NULL);
		node->setNext(NULL);
		setHead(node);
		setTail(node);
		setPreNode(node);
	}
	if (!root)
		return;
	transferToList(root->left);        
	if (root->num != m_Head->getValue())
	{
		DoubleNode03* newNode = new DoubleNode03();
		newNode->setValue(root->num);
		newNode->setPrev(preNode);
		newNode->setNext(NULL);
		preNode->setNext(newNode);
		setTail(newNode);
		setPreNode(newNode);
	}
	transferToList(root->right);
}
コード例 #2
0
ファイル: RingBuffer.cpp プロジェクト: rose53/RingBuffer
boolean RingBuffer::read(uint8_t page[], size_t size) {
	
	uint16_t head = getHead();	
	uint16_t tail = getTail();	
	uint16_t pageSize = getPageSize();
	
	boolean retVal = false;
	if (getFlipMarker() == 0) {
		if (tail < head) {
			readPage(tail,pageSize,page,size);
			retVal = true;
		} 
	} else {
		if (tail + pageSize > bootSectorStart) {
			tail = startData;
			setTail(tail);
			setFlipMarker(0x00);
			if (tail < head) {
				readPage(tail,pageSize,page,size);
				retVal = true;
			} 
		} else {
			readPage(tail,pageSize,page,size);
			retVal = true;
		}
	}
	return retVal;
}
コード例 #3
0
ファイル: RingBuffer.cpp プロジェクト: rose53/RingBuffer
/*
 * Read the page to the buffer and increments the tail pointer
 */
void RingBuffer::readPage(uint16_t framAddr, uint16_t pageSize, uint8_t page[], size_t size) {
	
	for (int i = 0; i < min(size,pageSize); i++) {
		page[i] = fram.read8(framAddr + i);
	}
	setTail(framAddr + pageSize);
}
コード例 #4
0
void test_setTail__to_list_should_set_Tail_to_the_target_List()
{
	LinkedList *list = listCreate(0x200) ;
	LinkedList *Tail ;
	
	setTail(&Tail,list);
	TEST_ASSERT_EQUAL(list,Tail);
	
	listDestroy(list);
}
コード例 #5
0
ファイル: kbdrv.c プロジェクト: yoshijava/NCTU_OS_LAB
int mymain(void) {
	unsigned int code=0;
	unsigned char head=0, tail=0;
	unsigned char scanCode=0, asciiCode=0;
	disableKey();
	if(firstTime==1) {
		initHeadTail();
		initTab();
		firstTime=0;
	}
	scanCode=getScanCode();
	asciiCode=lookupAscii(scanCode);
	if(asciiCode==0) { /* not printable */
		if(scanCode==0x1D) {	/* check if ctrl is pressed or not */
			isCtrlDown=1;
		}
		else if(scanCode==0x9d) {
			isCtrlDown=0;
		}
	}
	if(scanCode>=0x3b && scanCode<=0x3e && isCtrlDown==1) {
		setActiveShell((scanCode-0x3b)+1);
	}
	code= scanCode;
	code<<=8;
	code|=asciiCode;
	head=getHead();
	tail=getTail();
	if(!((tail+2)==head || (head==0x1e && tail==0x3c)) ) { /* not full */
		setKeyCode(code);
		if(tail==0x3C) {
			setTail(0x1e);
		}
		else {
			setTail(tail+2);
		}
	}
	enableKey();
	eoi(ss,sp);
}
コード例 #6
0
void test_travel_1step_beforeTarget_given_3_element_list_target_Tail_should_return_list_1()
{
	LinkedList *list0 = listCreate(0x100);
	LinkedList *list1 = listCreate(0x200);
	LinkedList *list2 = listCreate(0x300);
	LinkedList *Head,*Tail, *Target ;
	
	listAddHead(&Head,list0);
	setTail(&Tail,list0);
	listAddTail(&Tail,list1);
	listAddTail(&Tail,list2);
	
	Target = travel_1step_beforeTarget(Head,Tail);
	
	TEST_ASSERT_EQUAL(list1,Target);

}
コード例 #7
0
void test_travel_1step_beforeTarget_given_not_found_should_return_NULL()
{
	LinkedList *list0 = listCreate(0x100);
	LinkedList *list1 = listCreate(0x200);
	LinkedList *list2 = listCreate(0x300);
	LinkedList *list3 = listCreate(0x400);
	LinkedList *Head,*Tail, *Target ;
	
	listAddHead(&Head,list0);
	setTail(&Tail,Head);
	listAddTail(&Tail,list1);
	listAddTail(&Tail,list2);
	
	Target = travel_1step_beforeTarget(Head,list3);
	TEST_ASSERT_NULL(Target);
	
	DestroyAllList(&Head,&Tail);
}
コード例 #8
0
void test_searchListForData_given_0x400_should_return_NULL_for_not_found()
{
	LinkedList *list0 = listCreate(0x100);
	LinkedList *list1 = listCreate(0x200);
	LinkedList *list2 = listCreate(0x300);
	LinkedList *Head,*Tail, *Found ;
	
	listAddHead(&Head,list0);
	setTail(&Tail,Head);
	listAddTail(&Tail,list1);
	listAddTail(&Tail,list2);
	
	Found = searchListForData(Head,0x400);
	
	TEST_ASSERT_NULL(Found);

	DestroyAllList(&Head,&Tail);
	
}
コード例 #9
0
void test_searchListForData_given_0x300_should_return_list2()
{
	LinkedList *list0 = listCreate(0x100);
	LinkedList *list1 = listCreate(0x200);
	LinkedList *list2 = listCreate(0x300);
	LinkedList *Head,*Tail, *Found ;
	
	listAddHead(&Head,list0);
	setTail(&Tail,Head);
	listAddTail(&Tail,list1);
	listAddTail(&Tail,list2);
	
	Found = searchListForData(Head,0x300);
	
	TEST_ASSERT_EQUAL(list2,Found);
	TEST_ASSERT_EQUAL(0x300,Found->data);
	
	DestroyAllList(&Head,&Tail);
	
}
コード例 #10
0
ファイル: Edge.cpp プロジェクト: 8l/snowman
Edge::Edge(Node *tail, Node *head):
    tail_(nullptr), head_(nullptr)
{
    setTail(tail);
    setHead(head);
}