/*
Copyright 2007, 2008 Damian Stewart damian@frey.co.nz
Distributed under the terms of the GNU Lesser General Public License v3
This file is part of the ofxOsc openFrameworks OSC addon.
ofxOsc is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ofxOsc is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with ofxOsc. If not, see .
*/
#ifndef _OFXOSCARG_H
#define _OFXOSCARG_H
#include
#include
typedef enum _ofxOscArgType
{
OFXOSC_TYPE_NONE,
OFXOSC_TYPE_INT32,
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
*/
#if defined TARGET_WIN32 && defined _MSC_VER
// required because MSVC isn't ANSI-C compliant
typedef long int32_t;
#endif
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 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;
};
#endif