Annotation of embedaddon/php/ext/mbstring/oniguruma/regtrav.c, revision 1.1
1.1 ! misho 1: /**********************************************************************
! 2: regtrav.c - Oniguruma (regular expression library)
! 3: **********************************************************************/
! 4: /*-
! 5: * Copyright (c) 2002-2004 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
! 6: * All rights reserved.
! 7: *
! 8: * Redistribution and use in source and binary forms, with or without
! 9: * modification, are permitted provided that the following conditions
! 10: * are met:
! 11: * 1. Redistributions of source code must retain the above copyright
! 12: * notice, this list of conditions and the following disclaimer.
! 13: * 2. Redistributions in binary form must reproduce the above copyright
! 14: * notice, this list of conditions and the following disclaimer in the
! 15: * documentation and/or other materials provided with the distribution.
! 16: *
! 17: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
! 18: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 19: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 20: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
! 21: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
! 22: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
! 23: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 24: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
! 25: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
! 26: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 27: * SUCH DAMAGE.
! 28: */
! 29:
! 30: #include "regint.h"
! 31:
! 32: #ifdef USE_CAPTURE_HISTORY
! 33:
! 34: static int
! 35: capture_tree_traverse(OnigCaptureTreeNode* node, int at,
! 36: int(*callback_func)(int,int,int,int,int,void*),
! 37: int level, void* arg)
! 38: {
! 39: int r, i;
! 40:
! 41: if (node == (OnigCaptureTreeNode* )0)
! 42: return 0;
! 43:
! 44: if ((at & ONIG_TRAVERSE_CALLBACK_AT_FIRST) != 0) {
! 45: r = (*callback_func)(node->group, node->beg, node->end,
! 46: level, ONIG_TRAVERSE_CALLBACK_AT_FIRST, arg);
! 47: if (r != 0) return r;
! 48: }
! 49:
! 50: for (i = 0; i < node->num_childs; i++) {
! 51: r = capture_tree_traverse(node->childs[i], at,
! 52: callback_func, level + 1, arg);
! 53: if (r != 0) return r;
! 54: }
! 55:
! 56: if ((at & ONIG_TRAVERSE_CALLBACK_AT_LAST) != 0) {
! 57: r = (*callback_func)(node->group, node->beg, node->end,
! 58: level, ONIG_TRAVERSE_CALLBACK_AT_LAST, arg);
! 59: if (r != 0) return r;
! 60: }
! 61:
! 62: return 0;
! 63: }
! 64: #endif /* USE_CAPTURE_HISTORY */
! 65:
! 66: extern int
! 67: onig_capture_tree_traverse(OnigRegion* region, int at,
! 68: int(*callback_func)(int,int,int,int,int,void*), void* arg)
! 69: {
! 70: #ifdef USE_CAPTURE_HISTORY
! 71: return capture_tree_traverse(region->history_root, at,
! 72: callback_func, 0, arg);
! 73: #else
! 74: return ONIG_NO_SUPPORT_CONFIG;
! 75: #endif
! 76: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>