#Creating a Bundle
OSCBundle(uint64_t timetag = 1);
The constructor accepts a timetag which defaults to 1 (immediate).

void empty()
Empties all of the messages in the OSCBundle.

#Adding Messages
OSCMessage& add(char * address);
This method pushes a new OSCMessage into the bundle with the address. The new OSCMessage is retuned so that data can be added to it.

OSCMessage& add(OSCMessage & msg);
The bundle can also accept full OSCMessages.

#Getting Messages
OSCMessage& getOSCMessage(char * pattern);
OSCMessage& getOSCMessage(int position);

Get OSCMessages from the bundle with either their position (starting at 0) or a char array (null terminated) which is matched against all of the addresses in the bundle; the first matching OSCMessage is returned.

#Route and Dispatch
bool dispatch(char * pattern, void (*callback)(OSCMessage &), int addressOffset = 0);
bool route(char * pattern, void (*callback)(OSCMessage &, int), int addressOffset = 0);

These two functions conditionally invoke a callback function on every OSCMessage which matches the pattern passed in as an argument. dispatch requires a full pattern match (meaning that the address is matched all the way to the end of the pattern), but route allows the address to be matched either to the end of the pattern or until a '/' character. dispatch's the callback function takes one argument which is the OSCMessage that is a full match of the pattern. route takes two arguments the first being the matched OSCMessage and the second is the number of characters matched. Both methods optionally take an addressOffset which is the starting point from which addresses are matched against the patterns.

#Sending and Receiving
void send(Print & printer);
Sends all of the OSCMessages in the OSCBundle to the Stream. The empty() method clears out the OSCMessages in the bundle.

void fill(uint8_t byte);
void fill(uint8_t * buffer, int bufferSize);

This is useful for filling the OSCBundle as bytes become available from an input stream. While the bundle is still being filled, the error flag "INVALID_OSC" is raised.

#Misc
int size()
Returns the number of messages in the bundle

#Timetags
void setTimetag(uint64_t timetag);
void setTimetag(uint8_t * timetag);

Sets the bundle's timetag. In the case of the uint8_t array, it's assumed that the input argument has 8 bytes already in network order.

uint8_t * getTimetag()
Returns the timetag as an unsigned byte array with the most significant byte being the zeroth element and the least significant byte as the last element.