KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > google > gwt > dev > js > rhino > BinaryDigitReader


1 /* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2  *
3  * The contents of this file are subject to the Netscape Public
4  * License Version 1.1 (the "License"); you may not use this file
5  * except in compliance with the License. You may obtain a copy of
6  * the License at http://www.mozilla.org/NPL/
7  *
8  * Software distributed under the License is distributed on an "AS
9  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
10  * implied. See the License for the specific language governing
11  * rights and limitations under the License.
12  *
13  * The Original Code is Rhino code, released
14  * May 6, 1999.
15  *
16  * The Initial Developer of the Original Code is Netscape
17  * Communications Corporation. Portions created by Netscape are
18  * Copyright (C) 1997-1999 Netscape Communications Corporation. All
19  * Rights Reserved.
20  *
21  * Contributor(s):
22  * Waldemar Horwat
23  *
24  * Alternatively, the contents of this file may be used under the
25  * terms of the GNU Public License (the "GPL"), in which case the
26  * provisions of the GPL are applicable instead of those above.
27  * If you wish to allow use of your version of this file only
28  * under the terms of the GPL and not to allow others to use your
29  * version of this file under the NPL, indicate your decision by
30  * deleting the provisions above and replace them with the notice
31  * and other provisions required by the GPL. If you do not delete
32  * the provisions above, a recipient may use your version of this
33  * file under either the NPL or the GPL.
34  */

35 // Modified by Google
36

37 package com.google.gwt.dev.js.rhino;
38
39 final class BinaryDigitReader {
40     int lgBase; // Logarithm of base of number
41
int digit; // Current digit value in radix given by base
42
int digitPos; // Bit position of last bit extracted from digit
43
String JavaDoc digits; // String containing the digits
44
int start; // Index of the first remaining digit
45
int end; // Index past the last remaining digit
46

47     BinaryDigitReader(int base, String JavaDoc digits, int start, int end) {
48         lgBase = 0;
49         while (base != 1) {
50             lgBase++;
51             base >>= 1;
52         }
53         digitPos = 0;
54         this.digits = digits;
55         this.start = start;
56         this.end = end;
57     }
58
59     /* Return the next binary digit from the number or -1 if done */
60     int getNextBinaryDigit()
61     {
62         if (digitPos == 0) {
63             if (start == end)
64                 return -1;
65
66             char c = digits.charAt(start++);
67             if ('0' <= c && c <= '9')
68                 digit = c - '0';
69             else if ('a' <= c && c <= 'z')
70                 digit = c - 'a' + 10;
71             else digit = c - 'A' + 10;
72             digitPos = lgBase;
73         }
74         return digit >> --digitPos & 1;
75     }
76 }
77
Popular Tags