This file describes the required OSC streamlining modifications to oscpack (v1.0.2).
The /bin directory contains a simple send-receive implementation, tested in Windows XP SP3.
For more information, see

J.Kleimola and P.McGlynn, "Streamlining the Flow of Open Sound Control"
(submitted to SMC-2011)


Building streamlined oscpack
----------------------------

1. copy OscStreamliner.* into oscpack's /osc directory


2. OscTypes.h : replace the definition of the BeginMessage struct with the following: 

   struct BeginMessage{
      explicit BeginMessage( const char *addressPattern_ ) : addressPattern( addressPattern_ ), token(0) {}
      const char *addressPattern;

      // -- streamlining
      explicit BeginMessage( int32 token_ ) : addressPattern("/"), token( token_ ) {}
      const int32 token;
   };


3. OscOutputPacketStream.cpp : OutboundPacketStream& OutboundPacketStream::operator<<( const BeginMessage& rhs ):
add the following before "return *this;" line:

   // -- streamlining
   if (rhs.token != 0)
      *this << rhs.token;


4. OscReceivedElements.h : add the following public method to the ReceivedMessage class:

   // -- streamlining
   int32 AddressAsToken() const
   {
      ReceivedMessage::const_iterator arg = this->ArgumentsBegin();
      return arg->AsInt32();
   }


5. (copy SimpleSendSL.cpp and SimpleReceiveSL.cpp into oscpack's /examples directory)
6. (modify makefile)
