You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.8 KiB
78 lines
2.8 KiB
/* |
|
Written by John MacCallum, The Center for New Music and Audio Technologies, |
|
University of California, Berkeley. Copyright (c) 2009, The Regents of |
|
the University of California (Regents). |
|
Permission to use, copy, modify, distribute, and distribute modified versions |
|
of this software and its documentation without fee and without a signed |
|
licensing agreement, is hereby granted, provided that the above copyright |
|
notice, this paragraph and the following two paragraphs appear in all copies, |
|
modifications, and distributions. |
|
|
|
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, |
|
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING |
|
OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS |
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
|
|
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED |
|
HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE |
|
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
*/ |
|
|
|
#ifndef __OSC_MATCH_H__ |
|
#define __OSC_MATCH_H__ |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
/** |
|
* Switch this off to disable matching against a pattern with 2 stars |
|
*/ |
|
//#define OSC_MATCH_ENABLE_2STARS 1 |
|
/** |
|
* Switch this off to disable matching against a pattern with more than 2 stars which will |
|
* be done recursively. |
|
*/ |
|
//#define OSC_MATCH_ENABLE_NSTARS 1 |
|
|
|
/** |
|
* Return code for osc_match() that indicates that the entire address was successfully matched |
|
*/ |
|
#define OSC_MATCH_ADDRESS_COMPLETE 1 |
|
|
|
/** |
|
* Return code for osc_match() that indicates that the entire pattern was successfully matched |
|
*/ |
|
#define OSC_MATCH_PATTERN_COMPLETE 2 |
|
/* |
|
typedef struct _osc_callback { |
|
const char* address; // Address |
|
struct _osc_callback *child; // RAM |
|
struct _osc_callback *sibling; // RAM |
|
struct _osc_callback *parent; // RAM |
|
int callback; // ROM |
|
} osc_callback; |
|
*/ |
|
|
|
/** |
|
* Match a pattern against an address. In the case of a partial match, pattern_offset |
|
* and address_offset will contain the number of bytes into their respective strings |
|
* where the match failed. |
|
* |
|
* @param pattern The pattern to match |
|
* @param address The address to match |
|
* @param pattern_offset The number of bytes into the pattern that were matched successfully |
|
* @param address_offset The number of bytes into the address that were matched successfully |
|
* @return 0 if the match failed altogether, or an or'd combination of OSC_MATCH_ADDRESS_COMPLETE and |
|
* OSC_MATCH_PATTERN_COMPLETE. |
|
*/ |
|
int osc_match(const char *pattern, const char *address, int *pattern_offset, int *address_offset); |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
|
|
#endif // __OSC_MATCH_H__ |
|
|
|
|