18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#! /usr/bin/perl 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# This file is part of the WebKit project 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# Copyright (C) 1999 Waldo Bastian (bastian@kde.org) 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# Copyright (C) 2007 Apple Inc. All rights reserved. 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 8545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch# Copyright (C) 2010 Andras Becsi (abecsi@inf.u-szeged.hu), University of Szeged 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# This library is free software; you can redistribute it and/or 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# modify it under the terms of the GNU Library General Public 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# License as published by the Free Software Foundation; either 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# version 2 of the License, or (at your option) any later version. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# This library is distributed in the hope that it will be useful, 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# but WITHOUT ANY WARRANTY; without even the implied warranty of 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# Library General Public License for more details. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# You should have received a copy of the GNU Library General Public License 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# along with this library; see the file COPYING.LIB. If not, write to 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# Boston, MA 02110-1301, USA. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuse strict; 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuse warnings; 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectopen NAMES, "<CSSValueKeywords.in" || die "Could not open CSSValueKeywords.in"; 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectmy @names = (); 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectwhile (<NAMES>) { 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch next if (m/(^#)|(^\s*$)/); 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch # Input may use a different EOL sequence than $/, so avoid chomp. 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch $_ =~ s/[\r\n]+$//g; 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project push @names, $_; 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclose(NAMES); 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectopen GPERF, ">CSSValueKeywords.gperf" || die "Could not open CSSValueKeywords.gperf for writing"; 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprint GPERF << "EOF"; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%{ 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* This file is automatically generated from CSSValueKeywords.in by makevalues, do not edit */ 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include \"CSSValueKeywords.h\" 434576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include \"HashTools.h\" 444576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include <string.h> 454576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 464576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangnamespace WebCore { 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%} 48545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch%struct-type 49bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsenstruct Value; 50bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen%omit-struct-type 51bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen%language=C++ 52545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch%readonly-tables 53545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch%compare-strncmp 54bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen%define class-name CSSValueKeywordsHash 55bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen%define lookup-function-name findValueImpl 56545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch%define hash-function-name value_hash_function 57545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch%define word-array-name value_word_list 58545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch%enum 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%% 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectEOF 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectforeach my $name (@names) { 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project my $id = $name; 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $id =~ s/(^[^-])|-(.)/uc($1||$2)/ge; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project print GPERF $name . ", CSSValue" . $id . "\n"; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 674576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 684576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangprint GPERF << "EOF"; 694576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang%% 704576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangstatic const char* const valueList[] = { 714576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "", 724576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) WangEOF 734576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 744576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangforeach my $name (@names) { 754576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang print GPERF " \"" . $name . "\",\n"; 764576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 774576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 784576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangprint GPERF << "EOF"; 794576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 0 804576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang}; 814576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 824576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangconst Value* findValue(register const char* str, register unsigned int len) 834576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 844576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return CSSValueKeywordsHash::findValueImpl(str, len); 854576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 864576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 874576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangconst char* getValueName(unsigned short id) 884576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 894576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (id >= numCSSValueKeywords || id <= 0) 904576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return 0; 914576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return valueList[id]; 924576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 934576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 944576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} // namespace WebCore 954576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) WangEOF 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclose GPERF; 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 984576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectopen HEADER, ">CSSValueKeywords.h" || die "Could not open CSSValueKeywords.h for writing"; 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprint HEADER << "EOF"; 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* This file is automatically generated from CSSValueKeywords.in by makevalues, do not edit */ 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 103545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#ifndef CSSValueKeywords_h 104545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#define CSSValueKeywords_h 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 106bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#include <string.h> 107bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 108bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsennamespace WebCore { 109bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectconst int CSSValueInvalid = 0; 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectEOF 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectmy $i = 1; 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectmy $maxLen = 0; 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectforeach my $name (@names) { 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project my $id = $name; 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $id =~ s/(^[^-])|-(.)/uc($1||$2)/ge; 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project print HEADER "const int CSSValue" . $id . " = " . $i . ";\n"; 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $i = $i + 1; 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (length($name) > $maxLen) { 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $maxLen = length($name); 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprint HEADER "const int numCSSValueKeywords = " . $i . ";\n"; 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprint HEADER "const size_t maxCSSValueKeywordLength = " . $maxLen . ";\n"; 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprint HEADER << "EOF"; 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectconst char* getValueName(unsigned short id); 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 130bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen} // namespace WebCore 131bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 132545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif // CSSValueKeywords_h 133bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectEOF 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclose HEADER; 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1374576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangsystem("gperf --key-positions=\"*\" -D -n -s 2 CSSValueKeywords.gperf > CSSValueKeywords.cpp") == 0 || die "calling gperf failed: $?"; 138