js/src/yarr/Yarr.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

michael@0 1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
michael@0 2 * vim: set ts=8 sts=4 et sw=4 tw=99:
michael@0 3 *
michael@0 4 * Copyright (C) 2009 Apple Inc. All rights reserved.
michael@0 5 * Copyright (C) 2010 Peter Varga (pvarga@inf.u-szeged.hu), University of Szeged
michael@0 6 * All rights reserved.
michael@0 7 *
michael@0 8 * Redistribution and use in source and binary forms, with or without
michael@0 9 * modification, are permitted provided that the following conditions
michael@0 10 * are met:
michael@0 11 * 1. Redistributions of source code must retain the above copyright
michael@0 12 * notice, this list of conditions and the following disclaimer.
michael@0 13 * 2. Redistributions in binary form must reproduce the above copyright
michael@0 14 * notice, this list of conditions and the following disclaimer in the
michael@0 15 * documentation and/or other materials provided with the distribution.
michael@0 16 *
michael@0 17 * THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED ``AS IS'' AND ANY
michael@0 18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
michael@0 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
michael@0 20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF SZEGED OR
michael@0 21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
michael@0 22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
michael@0 23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
michael@0 24 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
michael@0 25 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
michael@0 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
michael@0 27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
michael@0 28 */
michael@0 29
michael@0 30 #ifndef yarr_Yarr_h
michael@0 31 #define yarr_Yarr_h
michael@0 32
michael@0 33 #include <limits.h>
michael@0 34 #include "yarr/YarrInterpreter.h"
michael@0 35 #include "yarr/YarrPattern.h"
michael@0 36
michael@0 37 namespace JSC { namespace Yarr {
michael@0 38
michael@0 39 #define YarrStackSpaceForBackTrackInfoPatternCharacter 1 // Only for !fixed quantifiers.
michael@0 40 #define YarrStackSpaceForBackTrackInfoCharacterClass 1 // Only for !fixed quantifiers.
michael@0 41 #define YarrStackSpaceForBackTrackInfoBackReference 2
michael@0 42 #define YarrStackSpaceForBackTrackInfoAlternative 1 // One per alternative.
michael@0 43 #define YarrStackSpaceForBackTrackInfoParentheticalAssertion 1
michael@0 44 #define YarrStackSpaceForBackTrackInfoParenthesesOnce 1 // Only for !fixed quantifiers.
michael@0 45 #define YarrStackSpaceForBackTrackInfoParenthesesTerminal 1
michael@0 46 #define YarrStackSpaceForBackTrackInfoParentheses 2
michael@0 47
michael@0 48 static const unsigned quantifyInfinite = UINT_MAX;
michael@0 49 static const unsigned offsetNoMatch = (unsigned)-1;
michael@0 50 static const unsigned offsetError = (unsigned)-2;
michael@0 51
michael@0 52 // The below limit restricts the number of "recursive" match calls in order to
michael@0 53 // avoid spending exponential time on complex regular expressions.
michael@0 54 static const unsigned matchLimit = 2500000;
michael@0 55
michael@0 56 enum JSRegExpResult {
michael@0 57 JSRegExpMatch = 1,
michael@0 58 JSRegExpNoMatch = 0,
michael@0 59 JSRegExpErrorNoMatch = -1,
michael@0 60 JSRegExpErrorHitLimit = -2,
michael@0 61 JSRegExpErrorNoMemory = -3,
michael@0 62 JSRegExpErrorInternal = -4
michael@0 63 };
michael@0 64
michael@0 65 enum YarrCharSize {
michael@0 66 Char8,
michael@0 67 Char16
michael@0 68 };
michael@0 69
michael@0 70 } } // namespace JSC::Yarr
michael@0 71
michael@0 72 #endif /* yarr_Yarr_h */

mercurial