provides makefile and makes it compile for david
[IRC.git] / Robust / src / Tests / ssJava / mp3decoder / Crc16.java
1 /*\r
2  * 11/19/04 : 1.0 moved to LGPL.\r
3  * \r
4  * 02/12/99 : Java Conversion by E.B , javalayer@javazoom.net\r
5  *\r
6  *  @(#) crc.h 1.5, last edit: 6/15/94 16:55:32\r
7  *  @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de)\r
8  *  @(#) Berlin University of Technology\r
9  *-----------------------------------------------------------------------\r
10  *   This program is free software; you can redistribute it and/or modify\r
11  *   it under the terms of the GNU Library General Public License as published\r
12  *   by the Free Software Foundation; either version 2 of the License, or\r
13  *   (at your option) any later version.\r
14  *\r
15  *   This program is distributed in the hope that it will be useful,\r
16  *   but WITHOUT ANY WARRANTY; without even the implied warranty of\r
17  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
18  *   GNU Library General Public License for more details.\r
19  *\r
20  *   You should have received a copy of the GNU Library General Public\r
21  *   License along with this program; if not, write to the Free Software\r
22  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
23  *----------------------------------------------------------------------\r
24  */\r
25 \r
26 /**\r
27  * 16-Bit CRC checksum\r
28  */\r
29 public final class Crc16\r
30 {\r
31   private static        short polynomial=(short)0x8005;\r
32   private                       short crc;\r
33 \r
34   /**\r
35    * Dummy Constructor\r
36    */\r
37   public Crc16()\r
38   { \r
39         crc = (short) 0xFFFF;\r
40   }\r
41 \r
42   /**\r
43    * Feed a bitstring to the crc calculation (0 < length <= 32).\r
44    */\r
45   public void add_bits (int bitstring, int length)\r
46   {\r
47         int bitmask = 1 << (length - 1);\r
48         do\r
49          if (((crc & 0x8000) == 0) ^ ((bitstring & bitmask) == 0 ))\r
50          {\r
51                 crc <<= 1;\r
52                 crc ^= polynomial;\r
53          }\r
54          else\r
55                 crc <<= 1;\r
56         while ((bitmask >>>= 1) != 0);\r
57   }\r
58 \r
59   /**\r
60    * Return the calculated checksum.\r
61    * Erase it for next calls to add_bits().\r
62    */\r
63   public short  checksum()\r
64   {\r
65     short sum = crc;\r
66     crc = (short) 0xFFFF;\r
67     return sum;\r
68   }\r
69 }\r