diff options
Diffstat (limited to 'ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscArg.h')
| -rwxr-xr-x | ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscArg.h | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscArg.h b/ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscArg.h new file mode 100755 index 0000000..0e16fbe --- /dev/null +++ b/ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscArg.h @@ -0,0 +1,168 @@ +/* + + Copyright (c) 2007-2009, Damian Stewart + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the developer nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY DAMIAN STEWART ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL DAMIAN STEWART BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once + +#include <string> +#include "ofMain.h" + +typedef enum _ofxOscArgType +{ + OFXOSC_TYPE_NONE, + OFXOSC_TYPE_INT32, + OFXOSC_TYPE_INT64, + OFXOSC_TYPE_FLOAT, + OFXOSC_TYPE_STRING, + OFXOSC_TYPE_BLOB, + OFXOSC_TYPE_BUNDLE, + OFXOSC_TYPE_INDEXOUTOFBOUNDS +} ofxOscArgType; + +/* + +ofxOscArg + +base class for arguments + +*/ + +class ofxOscArg +{ +public: + ofxOscArg() {}; + virtual ~ofxOscArg() {}; + + virtual ofxOscArgType getType() { return OFXOSC_TYPE_NONE; } + virtual string getTypeName() { return "none"; } + +private: +}; + + +/* + +subclasses for each possible argument type + +*/ + +class ofxOscArgInt32 : public ofxOscArg +{ +public: + ofxOscArgInt32( int32_t _value ) { value = _value; } + ~ofxOscArgInt32() {}; + + /// return the type of this argument + ofxOscArgType getType() { return OFXOSC_TYPE_INT32; } + string getTypeName() { return "int32"; } + + /// return value + int32_t get() const { return value; } + /// set value + void set( int32_t _value ) { value = _value; } + +private: + int32_t value; +}; + +class ofxOscArgInt64 : public ofxOscArg +{ +public: + ofxOscArgInt64( uint64_t _value ) { value = _value; } + ~ofxOscArgInt64() {}; + + /// return the type of this argument + ofxOscArgType getType() { return OFXOSC_TYPE_INT64; } + string getTypeName() { return "int64"; } + + /// return value + uint64_t get() const { return value; } + /// set value + void set( uint64_t _value ) { value = _value; } + +private: + uint64_t value; +}; + +class ofxOscArgFloat : public ofxOscArg +{ +public: + ofxOscArgFloat( float _value ) { value = _value; } + ~ofxOscArgFloat() {}; + + /// return the type of this argument + ofxOscArgType getType() { return OFXOSC_TYPE_FLOAT; } + string getTypeName() { return "float"; } + + /// return value + float get() const { return value; } + /// set value + void set( float _value ) { value = _value; } + +private: + float value; +}; + +class ofxOscArgString : public ofxOscArg +{ +public: + ofxOscArgString( string _value ) { value = _value; } + ~ofxOscArgString() {}; + + /// return the type of this argument + ofxOscArgType getType() { return OFXOSC_TYPE_STRING; } + string getTypeName() { return "string"; } + + /// return value + string get() const { return value; } + /// set value + void set( const char* _value ) { value = _value; } + +private: + std::string value; +}; + +class ofxOscArgBlob : public ofxOscArg +{ +public: + ofxOscArgBlob( ofBuffer _value ){ + value = _value; + } + ~ofxOscArgBlob(){}; + + /// return the type of this argument + ofxOscArgType getType() { return OFXOSC_TYPE_BLOB; } + string getTypeName() { return "blob"; } + + /// return value + ofBuffer get() const { return value; } + /// set value + void set( const char * _value, unsigned int length ) { value.set(_value, length); } + +private: + ofBuffer value; +}; |
