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); }
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; }
/* * 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); }
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); }
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); }
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); }
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); }
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); }
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); }
Edge::Edge(Node *tail, Node *head): tail_(nullptr), head_(nullptr) { setTail(tail); setHead(head); }