/* 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__