js/src/yarr/Yarr.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/yarr/Yarr.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,72 @@
     1.4 +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
     1.5 + * vim: set ts=8 sts=4 et sw=4 tw=99:
     1.6 + *
     1.7 + * Copyright (C) 2009 Apple Inc. All rights reserved.
     1.8 + * Copyright (C) 2010 Peter Varga (pvarga@inf.u-szeged.hu), University of Szeged
     1.9 + * All rights reserved.
    1.10 + *
    1.11 + * Redistribution and use in source and binary forms, with or without
    1.12 + * modification, are permitted provided that the following conditions
    1.13 + * are met:
    1.14 + * 1. Redistributions of source code must retain the above copyright
    1.15 + *    notice, this list of conditions and the following disclaimer.
    1.16 + * 2. Redistributions in binary form must reproduce the above copyright
    1.17 + *    notice, this list of conditions and the following disclaimer in the
    1.18 + *    documentation and/or other materials provided with the distribution.
    1.19 + *
    1.20 + * THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED ``AS IS'' AND ANY
    1.21 + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    1.22 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    1.23 + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL UNIVERSITY OF SZEGED OR
    1.24 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    1.25 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    1.26 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    1.27 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
    1.28 + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    1.29 + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    1.30 + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    1.31 + */
    1.32 +
    1.33 +#ifndef yarr_Yarr_h
    1.34 +#define yarr_Yarr_h
    1.35 +
    1.36 +#include <limits.h>
    1.37 +#include "yarr/YarrInterpreter.h"
    1.38 +#include "yarr/YarrPattern.h"
    1.39 +
    1.40 +namespace JSC { namespace Yarr {
    1.41 +
    1.42 +#define YarrStackSpaceForBackTrackInfoPatternCharacter 1 // Only for !fixed quantifiers.
    1.43 +#define YarrStackSpaceForBackTrackInfoCharacterClass 1 // Only for !fixed quantifiers.
    1.44 +#define YarrStackSpaceForBackTrackInfoBackReference 2
    1.45 +#define YarrStackSpaceForBackTrackInfoAlternative 1 // One per alternative.
    1.46 +#define YarrStackSpaceForBackTrackInfoParentheticalAssertion 1
    1.47 +#define YarrStackSpaceForBackTrackInfoParenthesesOnce 1 // Only for !fixed quantifiers.
    1.48 +#define YarrStackSpaceForBackTrackInfoParenthesesTerminal 1
    1.49 +#define YarrStackSpaceForBackTrackInfoParentheses 2
    1.50 +
    1.51 +static const unsigned quantifyInfinite = UINT_MAX;
    1.52 +static const unsigned offsetNoMatch = (unsigned)-1;
    1.53 +static const unsigned offsetError = (unsigned)-2;
    1.54 +
    1.55 +// The below limit restricts the number of "recursive" match calls in order to
    1.56 +// avoid spending exponential time on complex regular expressions.
    1.57 +static const unsigned matchLimit = 2500000;
    1.58 +
    1.59 +enum JSRegExpResult {
    1.60 +    JSRegExpMatch = 1,
    1.61 +    JSRegExpNoMatch = 0,
    1.62 +    JSRegExpErrorNoMatch = -1,
    1.63 +    JSRegExpErrorHitLimit = -2,
    1.64 +    JSRegExpErrorNoMemory = -3,
    1.65 +    JSRegExpErrorInternal = -4
    1.66 +};
    1.67 +
    1.68 +enum YarrCharSize {
    1.69 +    Char8,
    1.70 +    Char16
    1.71 +};
    1.72 +
    1.73 +} } // namespace JSC::Yarr
    1.74 +
    1.75 +#endif /* yarr_Yarr_h */

mercurial