Changeset 10933 in webkit for trunk/JavaScriptCore/kjs


Ignore:
Timestamp:
Oct 24, 2005, 2:22:21 PM (20 years ago)
Author:
sullivan
Message:

Reviewed by Darin Adler. Code changes by Alexey Proskuryakov.

  • kjs/lexer.cpp: include <unicode/uchar.h> (Lexer::Lexer): use KJS::UChar instead of UChar to avoid ambiguity caused by new include (Lexer::setCode): ditto; also, use shift(4) to skip first 4 chars to take advantage of new logic there. (Lexer::shift): skip chars of type U_FORMAT_CHAR (Lexer::convertUnicode): use KJS::UChar instead of UChar to avoid ambiguity caused by new include (Lexer::record16): ditto (Lexer::makeIdentifier): ditto (Lexer::makeUString): ditto
  • tests/mozilla/ecma/Array/15.4.5.1-1.js: updated to skip soft hyphens
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/lexer.cpp

    r10701 r10933  
    4040#include "lookup.h"
    4141#include "internal.h"
     42#include <unicode/uchar.h>
    4243
    4344// we can't specify the namespace in yacc's C output, so do it here
     
    7475  // allocate space for read buffers
    7576  buffer8 = new char[size8];
    76   buffer16 = new UChar[size16];
     77  buffer16 = new KJS::UChar[size16];
    7778  currLexer = this;
    7879}
     
    102103#endif
    103104
    104 void Lexer::setCode(const UString &sourceURL, int startingLineNumber, const UChar *c, unsigned int len)
     105void Lexer::setCode(const UString &sourceURL, int startingLineNumber, const KJS::UChar *c, unsigned int len)
    105106{
    106107  yylineno = 1 + startingLineNumber;
     
    122123
    123124  // read first characters
    124   current = (length > 0) ? code[0].uc : 0;
    125   next1 = (length > 1) ? code[1].uc : 0;
    126   next2 = (length > 2) ? code[2].uc : 0;
    127   next3 = (length > 3) ? code[3].uc : 0;
     125  shift(4);
    128126}
    129127
     
    131129{
    132130  while (p--) {
    133     pos++;
    134131    current = next1;
    135132    next1 = next2;
    136133    next2 = next3;
    137     next3 = (pos + 3 < length) ? code[pos+3].uc : 0;
     134    do {
     135      if (pos >= length) {
     136        next3 = 0;
     137        break;
     138      }
     139      next3 = code[pos++].uc;
     140    } while (u_charType(next3) == U_FORMAT_CHAR);
    138141  }
    139142}
     
    752755}
    753756
    754 UChar Lexer::convertUnicode(unsigned short c1, unsigned short c2,
     757KJS::UChar Lexer::convertUnicode(unsigned short c1, unsigned short c2,
    755758                                     unsigned short c3, unsigned short c4)
    756759{
    757   return UChar((convertHex(c1) << 4) + convertHex(c2),
     760  return KJS::UChar((convertHex(c1) << 4) + convertHex(c2),
    758761               (convertHex(c3) << 4) + convertHex(c4));
    759762}
     
    775778}
    776779
    777 void Lexer::record16(UChar c)
     780void Lexer::record16(KJS::UChar c)
    778781{
    779782  // enlarge buffer if full
    780783  if (pos16 >= size16 - 1) {
    781     UChar *tmp = new UChar[2 * size16];
    782     memcpy(tmp, buffer16, size16 * sizeof(UChar));
     784    KJS::UChar *tmp = new KJS::UChar[2 * size16];
     785    memcpy(tmp, buffer16, size16 * sizeof(KJS::UChar));
    783786    delete [] buffer16;
    784787    buffer16 = tmp;
     
    852855const int growthFactor = 2;
    853856
    854 Identifier *Lexer::makeIdentifier(UChar *buffer, unsigned int pos)
     857Identifier *Lexer::makeIdentifier(KJS::UChar *buffer, unsigned int pos)
    855858{
    856859  if (numIdentifiers == identifiersCapacity) {
     
    864867}
    865868 
    866 UString *Lexer::makeUString(UChar *buffer, unsigned int pos)
     869UString *Lexer::makeUString(KJS::UChar *buffer, unsigned int pos)
    867870{
    868871  if (numStrings == stringsCapacity) {
Note: See TracChangeset for help on using the changeset viewer.