void BSTree::reverseOrder(BSTNode* root, void(*f)(int)){ if(root != NULL){ reverseOrder(root->getRightChild(), f); f(root->getContents()); reverseOrder(root->getLeftChild(), f); } }
size_t MIDIParse_Header(MIDI_HEADER_CHUNK_t* header, void* data, uint32_t size) { uint8_t* ptr = (uint8_t*)data; ptr = (uint8_t*)findSubString( (char*)data, (char*)MIDI_HEADER_STRING, MIDI_TRACK_BUFFER_SIZE); if (ptr) { uint16_t* tmp; tmp = (uint16_t*)&ptr[MIDI_HEADER_FMT]; reverseOrder( (char*)tmp, 2); header->format = *tmp; tmp = (uint16_t*)&ptr[MIDI_HEADER_TRACK_COUNT]; reverseOrder((char*)tmp, 2); header->trackCount = *tmp; tmp = (uint16_t*)&ptr[MIDI_HEADER_PPQ]; reverseOrder((char*)tmp, 2); header->PPQ = *tmp; uint8_t* diff = ptr; diff = (uint8_t*)((uint8_t*)diff - (uint8_t*)(data)); return (size_t)(diff); } return 0; }
//Returns the pointer to the first byte of the track data void* MIDIParse_Track(MIDI_TRACK_CHUNK_t* track, void* data, uint32_t size) { char* ptr = (char*)findSubString( (char*)data, (char*)MIDI_TRACK_STRING, size); if (ptr) { uint32_t* tmp; tmp = (uint32_t*)&ptr[MIDI_TRACK_LENGTH]; reverseOrder( (char*)tmp, 4); track->length = *tmp; //MIDI_Printf("TRACKLENG: ", track->length); return &ptr[MIDI_TRACK_LENGTH+4]; } return 0; }
int main(int argc, char **argv) { int n = 10; if(argc == 2) { n = atoi(argv[1]); } else { printf("Use './listtest n'. Setting n = %d as default\n", n); } ListElement *list = createOneElementedList(42); print(list); freeList(list); list = generateNRandomList(n); print(list); list = AddAtBeginAndEnd(list); print(list); list = appendAtMiddle(list); print(list); list = removeAllEqual(list); print(list); list = removeSecond(list); print(list); list = reverseOrder(list); print(list); freeList(list); return 0; }
void BSTree::reverseOrder(void (*f)(int)){ reverseOrder(root, f); }
void BSTree::reverseOrder (void (*funPtr)(int)) { reverseOrder (root, funPtr); }