// Transfer Address. bool SPIFlash::_transferAddress(void) { if (address4ByteEnabled) { _nextByte(WRITE, Highest(_currentAddress)); } _nextByte(WRITE, Higher(_currentAddress)); _nextByte(WRITE, Hi(_currentAddress)); _nextByte(WRITE, Lo(_currentAddress)); return true; }
FileDesc *HostMachine::SortFDList(FileDesc *i) { if(!i) return i; /* count */ int c = 0; FileDesc *ptr = i; while(ptr) { c++; ptr = ptr->Next; } if(c == 1) return i; if(c == 2) { /* just consider order, and return */ if(!Higher(i, i->Next)) return i; /* flip around */ ptr = i; i = i->Next; i->Next = ptr; i->Next->Next = NULL; return i; } /* more than 2, so pick a pivot and recurse */ FileDesc *pivot = i, *Less = NULL, *More = NULL; i = i->Next; while(i) { FileDesc *N = i->Next; if(Higher(i, pivot)) { i->Next = More; More = i; } else { i->Next = Less; Less = i; } i = N; } Less = SortFDList(Less); More = SortFDList(More); /* re-integrate list */ if(ptr = Less) { while(ptr->Next) ptr = ptr->Next; ptr->Next = pivot; } else Less = pivot; pivot->Next = More; return Less; }