src/java.management.rest/share/classes/com/oracle/jmx/remote/rest/json/parser/JavaCharStream.java
author hb
Tue, 29 Aug 2017 13:34:15 +0530
branchjmx-rest-api
changeset 55985 0c5a02edfdef
permissions -rw-r--r--
REST Adapter Initial commit 1. Unit tested and working GET/POST interfaces 2. Unit tested and working JSON parser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
55985
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
     1
/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 5.0 */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
     2
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
     3
package com.oracle.jmx.remote.rest.json.parser;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
     4
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
     5
/**
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
     6
 * An implementation of interface CharStream, where the stream is assumed to
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
     7
 * contain only ASCII characters (with java-like unicode escape processing).
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
     8
 */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
     9
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    10
public
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    11
class JavaCharStream
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    12
{
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    13
  /** Whether parser is static. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    14
  public static final boolean staticFlag = false;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    15
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    16
  static final int hexval(char c) throws java.io.IOException {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    17
    switch(c)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    18
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    19
       case '0' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    20
          return 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    21
       case '1' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    22
          return 1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    23
       case '2' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    24
          return 2;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    25
       case '3' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    26
          return 3;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    27
       case '4' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    28
          return 4;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    29
       case '5' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    30
          return 5;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    31
       case '6' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    32
          return 6;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    33
       case '7' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    34
          return 7;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    35
       case '8' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    36
          return 8;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    37
       case '9' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    38
          return 9;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    39
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    40
       case 'a' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    41
       case 'A' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    42
          return 10;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    43
       case 'b' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    44
       case 'B' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    45
          return 11;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    46
       case 'c' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    47
       case 'C' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    48
          return 12;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    49
       case 'd' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    50
       case 'D' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    51
          return 13;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    52
       case 'e' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    53
       case 'E' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    54
          return 14;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    55
       case 'f' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    56
       case 'F' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    57
          return 15;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    58
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    59
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    60
    throw new java.io.IOException(); // Should never come here
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    61
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    62
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    63
/** Position in buffer. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    64
  public int bufpos = -1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    65
  int bufsize;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    66
  int available;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    67
  int tokenBegin;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    68
  protected int bufline[];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    69
  protected int bufcolumn[];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    70
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    71
  protected int column = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    72
  protected int line = 1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    73
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    74
  protected boolean prevCharIsCR = false;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    75
  protected boolean prevCharIsLF = false;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    76
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    77
  protected java.io.Reader inputStream;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    78
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    79
  protected char[] nextCharBuf;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    80
  protected char[] buffer;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    81
  protected int maxNextCharInd = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    82
  protected int nextCharInd = -1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    83
  protected int inBuf = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    84
  protected int tabSize = 8;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    85
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    86
  protected void setTabSize(int i) { tabSize = i; }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    87
  protected int getTabSize(int i) { return tabSize; }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    88
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    89
  protected void ExpandBuff(boolean wrapAround)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    90
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    91
    char[] newbuffer = new char[bufsize + 2048];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    92
    int newbufline[] = new int[bufsize + 2048];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    93
    int newbufcolumn[] = new int[bufsize + 2048];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    94
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    95
    try
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    96
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    97
      if (wrapAround)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    98
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
    99
        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   100
        System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   101
        buffer = newbuffer;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   102
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   103
        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   104
        System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   105
        bufline = newbufline;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   106
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   107
        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   108
        System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   109
        bufcolumn = newbufcolumn;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   110
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   111
        bufpos += (bufsize - tokenBegin);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   112
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   113
    else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   114
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   115
        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   116
        buffer = newbuffer;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   117
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   118
        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   119
        bufline = newbufline;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   120
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   121
        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   122
        bufcolumn = newbufcolumn;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   123
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   124
        bufpos -= tokenBegin;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   125
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   126
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   127
    catch (Throwable t)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   128
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   129
      throw new Error(t.getMessage());
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   130
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   131
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   132
    available = (bufsize += 2048);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   133
    tokenBegin = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   134
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   135
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   136
  protected void FillBuff() throws java.io.IOException
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   137
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   138
    int i;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   139
    if (maxNextCharInd == 4096)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   140
      maxNextCharInd = nextCharInd = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   141
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   142
    try {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   143
      if ((i = inputStream.read(nextCharBuf, maxNextCharInd,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   144
                                          4096 - maxNextCharInd)) == -1)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   145
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   146
        inputStream.close();
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   147
        throw new java.io.IOException();
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   148
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   149
      else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   150
         maxNextCharInd += i;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   151
      return;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   152
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   153
    catch(java.io.IOException e) {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   154
      if (bufpos != 0)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   155
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   156
        --bufpos;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   157
        backup(0);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   158
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   159
      else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   160
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   161
        bufline[bufpos] = line;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   162
        bufcolumn[bufpos] = column;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   163
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   164
      throw e;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   165
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   166
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   167
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   168
  protected char ReadByte() throws java.io.IOException
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   169
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   170
    if (++nextCharInd >= maxNextCharInd)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   171
      FillBuff();
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   172
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   173
    return nextCharBuf[nextCharInd];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   174
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   175
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   176
/** @return starting character for token. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   177
  public char BeginToken() throws java.io.IOException
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   178
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   179
    if (inBuf > 0)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   180
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   181
      --inBuf;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   182
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   183
      if (++bufpos == bufsize)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   184
        bufpos = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   185
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   186
      tokenBegin = bufpos;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   187
      return buffer[bufpos];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   188
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   189
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   190
    tokenBegin = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   191
    bufpos = -1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   192
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   193
    return readChar();
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   194
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   195
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   196
  protected void AdjustBuffSize()
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   197
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   198
    if (available == bufsize)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   199
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   200
      if (tokenBegin > 2048)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   201
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   202
        bufpos = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   203
        available = tokenBegin;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   204
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   205
      else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   206
        ExpandBuff(false);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   207
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   208
    else if (available > tokenBegin)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   209
      available = bufsize;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   210
    else if ((tokenBegin - available) < 2048)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   211
      ExpandBuff(true);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   212
    else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   213
      available = tokenBegin;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   214
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   215
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   216
  protected void UpdateLineColumn(char c)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   217
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   218
    column++;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   219
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   220
    if (prevCharIsLF)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   221
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   222
      prevCharIsLF = false;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   223
      line += (column = 1);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   224
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   225
    else if (prevCharIsCR)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   226
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   227
      prevCharIsCR = false;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   228
      if (c == '\n')
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   229
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   230
        prevCharIsLF = true;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   231
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   232
      else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   233
        line += (column = 1);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   234
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   235
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   236
    switch (c)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   237
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   238
      case '\r' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   239
        prevCharIsCR = true;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   240
        break;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   241
      case '\n' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   242
        prevCharIsLF = true;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   243
        break;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   244
      case '\t' :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   245
        column--;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   246
        column += (tabSize - (column % tabSize));
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   247
        break;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   248
      default :
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   249
        break;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   250
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   251
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   252
    bufline[bufpos] = line;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   253
    bufcolumn[bufpos] = column;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   254
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   255
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   256
/** Read a character. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   257
  public char readChar() throws java.io.IOException
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   258
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   259
    if (inBuf > 0)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   260
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   261
      --inBuf;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   262
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   263
      if (++bufpos == bufsize)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   264
        bufpos = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   265
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   266
      return buffer[bufpos];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   267
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   268
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   269
    char c;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   270
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   271
    if (++bufpos == available)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   272
      AdjustBuffSize();
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   273
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   274
    if ((buffer[bufpos] = c = ReadByte()) == '\\')
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   275
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   276
      UpdateLineColumn(c);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   277
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   278
      int backSlashCnt = 1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   279
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   280
      for (;;) // Read all the backslashes
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   281
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   282
        if (++bufpos == available)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   283
          AdjustBuffSize();
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   284
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   285
        try
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   286
        {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   287
          if ((buffer[bufpos] = c = ReadByte()) != '\\')
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   288
          {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   289
            UpdateLineColumn(c);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   290
            // found a non-backslash char.
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   291
            if ((c == 'u') && ((backSlashCnt & 1) == 1))
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   292
            {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   293
              if (--bufpos < 0)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   294
                bufpos = bufsize - 1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   295
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   296
              break;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   297
            }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   298
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   299
            backup(backSlashCnt);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   300
            return '\\';
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   301
          }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   302
        }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   303
        catch(java.io.IOException e)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   304
        {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   305
	  // We are returning one backslash so we should only backup (count-1)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   306
          if (backSlashCnt > 1)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   307
            backup(backSlashCnt-1);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   308
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   309
          return '\\';
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   310
        }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   311
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   312
        UpdateLineColumn(c);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   313
        backSlashCnt++;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   314
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   315
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   316
      // Here, we have seen an odd number of backslash's followed by a 'u'
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   317
      try
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   318
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   319
        while ((c = ReadByte()) == 'u')
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   320
          ++column;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   321
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   322
        buffer[bufpos] = c = (char)(hexval(c) << 12 |
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   323
                                    hexval(ReadByte()) << 8 |
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   324
                                    hexval(ReadByte()) << 4 |
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   325
                                    hexval(ReadByte()));
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   326
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   327
        column += 4;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   328
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   329
      catch(java.io.IOException e)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   330
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   331
        throw new Error("Invalid escape character at line " + line +
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   332
                                         " column " + column + ".");
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   333
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   334
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   335
      if (backSlashCnt == 1)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   336
        return c;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   337
      else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   338
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   339
        backup(backSlashCnt - 1);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   340
        return '\\';
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   341
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   342
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   343
    else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   344
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   345
      UpdateLineColumn(c);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   346
      return c;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   347
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   348
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   349
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   350
  @Deprecated
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   351
  /**
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   352
   * @deprecated
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   353
   * @see #getEndColumn
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   354
   */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   355
  public int getColumn() {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   356
    return bufcolumn[bufpos];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   357
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   358
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   359
  @Deprecated
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   360
  /**
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   361
   * @deprecated
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   362
   * @see #getEndLine
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   363
   */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   364
  public int getLine() {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   365
    return bufline[bufpos];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   366
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   367
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   368
/** Get end column. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   369
  public int getEndColumn() {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   370
    return bufcolumn[bufpos];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   371
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   372
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   373
/** Get end line. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   374
  public int getEndLine() {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   375
    return bufline[bufpos];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   376
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   377
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   378
/** @return column of token start */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   379
  public int getBeginColumn() {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   380
    return bufcolumn[tokenBegin];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   381
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   382
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   383
/** @return line number of token start */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   384
  public int getBeginLine() {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   385
    return bufline[tokenBegin];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   386
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   387
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   388
/** Retreat. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   389
  public void backup(int amount) {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   390
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   391
    inBuf += amount;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   392
    if ((bufpos -= amount) < 0)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   393
      bufpos += bufsize;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   394
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   395
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   396
/** Constructor. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   397
  public JavaCharStream(java.io.Reader dstream,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   398
                 int startline, int startcolumn, int buffersize)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   399
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   400
    inputStream = dstream;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   401
    line = startline;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   402
    column = startcolumn - 1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   403
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   404
    available = bufsize = buffersize;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   405
    buffer = new char[buffersize];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   406
    bufline = new int[buffersize];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   407
    bufcolumn = new int[buffersize];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   408
    nextCharBuf = new char[4096];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   409
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   410
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   411
/** Constructor. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   412
  public JavaCharStream(java.io.Reader dstream,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   413
                                        int startline, int startcolumn)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   414
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   415
    this(dstream, startline, startcolumn, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   416
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   417
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   418
/** Constructor. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   419
  public JavaCharStream(java.io.Reader dstream)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   420
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   421
    this(dstream, 1, 1, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   422
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   423
/** Reinitialise. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   424
  public void ReInit(java.io.Reader dstream,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   425
                 int startline, int startcolumn, int buffersize)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   426
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   427
    inputStream = dstream;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   428
    line = startline;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   429
    column = startcolumn - 1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   430
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   431
    if (buffer == null || buffersize != buffer.length)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   432
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   433
      available = bufsize = buffersize;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   434
      buffer = new char[buffersize];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   435
      bufline = new int[buffersize];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   436
      bufcolumn = new int[buffersize];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   437
      nextCharBuf = new char[4096];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   438
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   439
    prevCharIsLF = prevCharIsCR = false;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   440
    tokenBegin = inBuf = maxNextCharInd = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   441
    nextCharInd = bufpos = -1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   442
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   443
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   444
/** Reinitialise. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   445
  public void ReInit(java.io.Reader dstream,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   446
                                        int startline, int startcolumn)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   447
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   448
    ReInit(dstream, startline, startcolumn, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   449
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   450
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   451
/** Reinitialise. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   452
  public void ReInit(java.io.Reader dstream)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   453
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   454
    ReInit(dstream, 1, 1, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   455
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   456
/** Constructor. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   457
  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   458
  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   459
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   460
    this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   461
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   462
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   463
/** Constructor. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   464
  public JavaCharStream(java.io.InputStream dstream, int startline,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   465
  int startcolumn, int buffersize)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   466
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   467
    this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   468
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   469
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   470
/** Constructor. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   471
  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   472
                        int startcolumn) throws java.io.UnsupportedEncodingException
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   473
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   474
    this(dstream, encoding, startline, startcolumn, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   475
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   476
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   477
/** Constructor. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   478
  public JavaCharStream(java.io.InputStream dstream, int startline,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   479
                        int startcolumn)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   480
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   481
    this(dstream, startline, startcolumn, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   482
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   483
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   484
/** Constructor. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   485
  public JavaCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   486
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   487
    this(dstream, encoding, 1, 1, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   488
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   489
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   490
/** Constructor. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   491
  public JavaCharStream(java.io.InputStream dstream)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   492
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   493
    this(dstream, 1, 1, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   494
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   495
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   496
/** Reinitialise. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   497
  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   498
  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   499
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   500
    ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   501
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   502
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   503
/** Reinitialise. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   504
  public void ReInit(java.io.InputStream dstream, int startline,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   505
  int startcolumn, int buffersize)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   506
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   507
    ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   508
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   509
/** Reinitialise. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   510
  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   511
                     int startcolumn) throws java.io.UnsupportedEncodingException
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   512
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   513
    ReInit(dstream, encoding, startline, startcolumn, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   514
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   515
/** Reinitialise. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   516
  public void ReInit(java.io.InputStream dstream, int startline,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   517
                     int startcolumn)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   518
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   519
    ReInit(dstream, startline, startcolumn, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   520
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   521
/** Reinitialise. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   522
  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   523
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   524
    ReInit(dstream, encoding, 1, 1, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   525
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   526
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   527
/** Reinitialise. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   528
  public void ReInit(java.io.InputStream dstream)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   529
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   530
    ReInit(dstream, 1, 1, 4096);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   531
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   532
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   533
  /** @return token image as String */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   534
  public String GetImage()
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   535
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   536
    if (bufpos >= tokenBegin)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   537
      return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   538
    else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   539
      return new String(buffer, tokenBegin, bufsize - tokenBegin) +
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   540
                              new String(buffer, 0, bufpos + 1);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   541
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   542
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   543
  /** @return suffix */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   544
  public char[] GetSuffix(int len)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   545
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   546
    char[] ret = new char[len];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   547
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   548
    if ((bufpos + 1) >= len)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   549
      System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   550
    else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   551
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   552
      System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   553
                                                        len - bufpos - 1);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   554
      System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   555
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   556
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   557
    return ret;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   558
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   559
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   560
  /** Set buffers back to null when finished. */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   561
  public void Done()
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   562
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   563
    nextCharBuf = null;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   564
    buffer = null;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   565
    bufline = null;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   566
    bufcolumn = null;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   567
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   568
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   569
  /**
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   570
   * Method to adjust line and column numbers for the start of a token.
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   571
   */
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   572
  public void adjustBeginLineColumn(int newLine, int newCol)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   573
  {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   574
    int start = tokenBegin;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   575
    int len;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   576
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   577
    if (bufpos >= tokenBegin)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   578
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   579
      len = bufpos - tokenBegin + inBuf + 1;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   580
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   581
    else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   582
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   583
      len = bufsize - tokenBegin + bufpos + 1 + inBuf;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   584
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   585
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   586
    int i = 0, j = 0, k = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   587
    int nextColDiff = 0, columnDiff = 0;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   588
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   589
    while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   590
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   591
      bufline[j] = newLine;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   592
      nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   593
      bufcolumn[j] = newCol + columnDiff;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   594
      columnDiff = nextColDiff;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   595
      i++;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   596
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   597
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   598
    if (i < len)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   599
    {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   600
      bufline[j] = newLine++;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   601
      bufcolumn[j] = newCol + columnDiff;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   602
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   603
      while (i++ < len)
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   604
      {
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   605
        if (bufline[j = start % bufsize] != bufline[++start % bufsize])
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   606
          bufline[j] = newLine++;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   607
        else
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   608
          bufline[j] = newLine;
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   609
      }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   610
    }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   611
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   612
    line = bufline[j];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   613
    column = bufcolumn[j];
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   614
  }
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   615
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   616
}
0c5a02edfdef REST Adapter Initial commit
hb
parents:
diff changeset
   617
/* JavaCC - OriginalChecksum=3b79d8fd3ca02005c805e406bf89cd35 (do not edit this line) */