#!/usr/bin/perl -w
#
# This is JavaScriptCore's variant of the PCRE library. While this library
# started out as a copy of PCRE, many of the features of PCRE have been
# removed. This library now supports only the regular expression features
# required by the JavaScript language specification, and has only the functions
# needed by JavaScriptCore and the rest of WebKit.
# 
#                  Originally written by Philip Hazel
#            Copyright (c) 1997-2006 University of Cambridge
#  Copyright (C) 2002, 2004, 2006, 2007, 2008, 2009 Apple Inc.  All rights reserved.
# 
# -----------------------------------------------------------------------------
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 
#     * Redistributions of source code must retain the above copyright notice,
#       this list of conditions and the following disclaimer.
# 
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
# 
#     * Neither the name of the University of Cambridge nor the names of its
#       contributors may be used to endorse or promote products derived from
#       this software without specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# -----------------------------------------------------------------------------

# This is a freestanding support program to generate a file containing
# character tables. The tables are built according to the default C
# locale.

use strict;

use File::Basename;
use File::Spec;
use File::Temp qw(tempfile);
use Getopt::Long;

sub readHeaderValues();

my %pcre_internal;

if (scalar(@ARGV) < 1) {
    print STDERR "Usage: ", basename($0), " [--preprocessor=program] output-file\n";
    exit 1;
}

my $outputFile;
my $preprocessor;
GetOptions('preprocessor=s' => \$preprocessor);
if (not $preprocessor) {
    $preprocessor = "cpp";
}

$outputFile = $ARGV[0];
die('Must specify output file.') unless defined($outputFile);

readHeaderValues();

open(OUT, ">", $outputFile) or die "$!";
binmode(OUT);

printf(OUT
    "/*************************************************\n" .
    "*      Perl-Compatible Regular Expressions       *\n" .
    "*************************************************/\n\n" .
    "/* This file is automatically written by the dftables auxiliary \n" .
    "program. If you edit it by hand, you might like to edit the Makefile to \n" .
    "prevent its ever being regenerated.\n\n");
printf(OUT
    "This file contains the default tables for characters with codes less than\n" .
    "128 (ASCII characters). These tables are used when no external tables are\n" .
    "passed to PCRE. */\n\n" .
    "const unsigned char jsc_pcre_default_tables[%d] = {\n\n" .
    "/* This table is a lower casing table. */\n\n", $pcre_internal{tables_length});

if ($pcre_internal{lcc_offset} != 0) {
    die "lcc_offset != 0";
}

printf(OUT "  ");
for (my $i = 0; $i < 128; $i++) {
    if (($i & 7) == 0 && $i != 0) {
        printf(OUT "\n  ");
    }
    printf(OUT "0x%02X", ord(lc(chr($i))));
    if ($i != 127) {
        printf(OUT ", ");
    }
}
printf(OUT ",\n\n");

printf(OUT "/* This table is a case flipping table. */\n\n");

if ($pcre_internal{fcc_offset} != 128) {
  die "fcc_offset != 128";
}

printf(OUT "  ");
for (my $i = 0; $i < 128; $i++) {
    if (($i & 7) == 0 && $i != 0) {
        printf(OUT "\n  ");
    }
    my $c = chr($i);
    printf(OUT "0x%02X", $c =~ /[[:lower:]]/ ? ord(uc($c)) : ord(lc($c)));
    if ($i != 127) {
        printf(OUT ", ");
    }
}
printf(OUT ",\n\n");

printf(OUT
    "/* This table contains bit maps for various character classes.\n" .
    "Each map is 32 bytes long and the bits run from the least\n" .
    "significant end of each byte. The classes are: space, digit, word. */\n\n");

if ($pcre_internal{cbits_offset} != $pcre_internal{fcc_offset} + 128) {
    die "cbits_offset != fcc_offset + 128";
}

my @cbit_table = (0) x $pcre_internal{cbit_length};
for (my $i = ord('0'); $i <= ord('9'); $i++) {
    $cbit_table[$pcre_internal{cbit_digit} + $i / 8] |= 1 << ($i & 7);
}
$cbit_table[$pcre_internal{cbit_word} + ord('_') / 8] |= 1 << (ord('_') & 7);
for (my $i = 0; $i < 128; $i++) {
    my $c = chr($i);
    if ($c =~ /[[:alnum:]]/) {
        $cbit_table[$pcre_internal{cbit_word} + $i / 8] |= 1 << ($i & 7);
    }
    if ($c =~ /[[:space:]]/) {
        $cbit_table[$pcre_internal{cbit_space} + $i / 8] |= 1 << ($i & 7);
    }
}

printf(OUT "  ");
for (my $i = 0; $i < $pcre_internal{cbit_length}; $i++) {
    if (($i & 7) == 0 && $i != 0) {
        if (($i & 31) == 0) {
            printf(OUT "\n");
        }
        printf(OUT "\n  ");
    }
    printf(OUT "0x%02X", $cbit_table[$i]);
    if ($i != $pcre_internal{cbit_length} - 1) {
        printf(OUT ", ");
    }
}
printf(OUT ",\n\n");

printf(OUT
    "/* This table identifies various classes of character by individual bits:\n" .
    "  0x%02x   white space character\n" .
    "  0x%02x   hexadecimal digit\n" .
    "  0x%02x   alphanumeric or '_'\n*/\n\n",
    $pcre_internal{ctype_space}, $pcre_internal{ctype_xdigit}, $pcre_internal{ctype_word});

if ($pcre_internal{ctypes_offset} != $pcre_internal{cbits_offset} + $pcre_internal{cbit_length}) {
    die "ctypes_offset != cbits_offset + cbit_length";
}

printf(OUT "  ");
for (my $i = 0; $i < 128; $i++) {
    my $x = 0;
    my $c = chr($i);
    if ($c =~ /[[:space:]]/) {
        $x += $pcre_internal{ctype_space};
    }
    if ($c =~ /[[:xdigit:]]/) {
        $x += $pcre_internal{ctype_xdigit};
    }
    if ($c =~ /[[:alnum:]_]/) {
        $x += $pcre_internal{ctype_word};
    }
    printf(OUT "0x%02X", $x);
    if ($i != 127) {
        printf(OUT ", ");
    } else {
        printf(OUT "};");
    }
    if (($i & 7) == 7) {
        printf(OUT " /* ");
        my $d = chr($i - 7);
        if ($d =~ /[[:print:]]/) {
            printf(OUT " %c -", $i - 7);
        } else {
            printf(OUT "%3d-", $i - 7);
        }
        if ($c =~ m/[[:print:]]/) {
            printf(OUT " %c ", $i);
        } else {
            printf(OUT "%3d", $i);
        }
        printf(OUT " */\n");
        if ($i != 127) {
            printf(OUT "  ");
        }
    }
}

if ($pcre_internal{tables_length} != $pcre_internal{ctypes_offset} + 128) {
    die "tables_length != ctypes_offset + 128";
}

printf(OUT "\n\n/* End of chartables.c */\n");

close(OUT);

exit 0;

sub readHeaderValues()
{
    my @variables = qw(
        cbit_digit
        cbit_length
        cbit_space
        cbit_word
        cbits_offset
        ctype_space
        ctype_word
        ctype_xdigit
        ctypes_offset
        fcc_offset
        lcc_offset
        tables_length
    );

    local $/ = undef;

    my $headerPath = File::Spec->catfile(dirname($0), "pcre_internal.h");
 
    my ($fh, $tempFile) = tempfile(
        basename($0) . "-XXXXXXXX",
        DIR => File::Spec->tmpdir,
        SUFFIX => ".in",
        UNLINK => 0,
    );

    print $fh "#define DFTABLES\n\n";

    open(HEADER, "<", $headerPath) or die "$!";
    print $fh <HEADER>;
    close(HEADER);

    print $fh "\n\n";

    for my $v (@variables) {
        print $fh "\$pcre_internal{\"$v\"} = $v;\n";
    }

    close($fh);

    open(CPP, "$preprocessor \"$tempFile\" |") or die "$!";
    my $content = <CPP>;
    close(CPP);
    
    eval $content;
    die "$@" if $@;
}
