1 30 31 package de.susebox.jtopas; 32 33 37 38 42 56 public class TokenizerProperty { 57 58 62 67 public static final byte PARSE_FLAG_MASK = 127; 68 69 70 74 87 public void setType(int type) { 88 _type = type; 89 } 90 91 101 public int getType() { 102 return _type; 103 } 104 105 114 public void setFlags(int flags) { 115 setFlags(flags, flags); 116 } 117 118 137 public void setFlags(int flags, int flagMask) { 138 _flags = (flags & flagMask); 139 _flagMask = flagMask; 140 } 141 142 149 public int getFlags() { 150 return _flags; 151 } 152 153 162 public int getFlagMask() { 163 return _flagMask; 164 } 165 166 183 public boolean isFlagSet(int flag, boolean defVal) { 184 if (containsFlag(flag)) { 185 return (getFlags() & flag) == flag; 186 } else { 187 return defVal; 188 } 189 } 190 191 209 public boolean containsFlag(int flag) { 210 return (getFlagMask() & flag) == flag; 211 } 212 213 225 public void setImages(String [] images) throws IllegalArgumentException { 226 _images = images; 227 } 228 229 235 public String [] getImages() { 236 return _images; 237 } 238 239 246 public void setCompanion(Object companion) { 247 _companion = companion; 248 } 249 250 256 public Object getCompanion() { 257 return _companion; 258 } 259 260 261 265 269 public TokenizerProperty() { 270 this(Token.UNKNOWN); 271 } 272 273 280 public TokenizerProperty(int type) { 281 this(type, null); 282 } 283 284 291 public TokenizerProperty(int type, String [] images) { 292 this(type, images, null); 293 } 294 295 303 public TokenizerProperty(int type, String [] images, Object companion) { 304 this(type, images, companion, 0); 305 } 306 307 316 public TokenizerProperty(int type, String [] images, Object companion, int flags) { 317 this(type, images, companion, flags, flags); 318 } 319 320 331 public TokenizerProperty(int type, String [] images, Object companion, int flags, int flagMask) { 332 setType(type); 333 setImages(images); 334 setCompanion(companion); 335 setFlags(flags, flagMask); 336 } 337 338 339 343 350 public boolean equals(Object that) { 351 if (that == null) { 353 return false; 354 } else if (that == this) { 355 return true; 356 } else if ( ! (that.getClass() == getClass())) { 357 return false; 358 } 359 360 TokenizerProperty thatProp = (TokenizerProperty)that; 362 363 if ( getType() == thatProp.getType() 364 && getCompanion() == thatProp.getCompanion() 365 && getFlags() == thatProp.getFlags()) { 366 String [] thisImg = getImages(); 368 String [] thatImg = thatProp.getImages(); 369 370 if (thisImg != thatImg) { 371 if (thisImg == null || thatImg == null || thisImg.length != thatImg.length) { 372 return false; 373 } 374 for (int index = 0; index < thisImg.length; ++index) { 375 if ( ! thisImg[index].equals(thatImg[index])) { 376 return false; 377 } 378 } 379 } 380 return true; 381 } else { 382 return false; 383 } 384 } 385 386 391 public String toString() { 392 StringBuffer buffer = new StringBuffer (); 393 394 buffer.append(getClass().getName()); 395 buffer.append(':'); 396 397 switch (getType()) { 398 case Token.NORMAL: 399 buffer.append(" NORMAL, "); 400 break; 401 case Token.BLOCK_COMMENT: 402 buffer.append(" BLOCK_COMMENT, "); 403 break; 404 case Token.LINE_COMMENT: 405 buffer.append(" LINE_COMMENT, "); 406 break; 407 case Token.STRING: 408 buffer.append(" STRING, "); 409 break; 410 case Token.PATTERN: 411 buffer.append(" PATTERN, "); 412 break; 413 case Token.KEYWORD: 414 buffer.append(" KEYWORD, "); 415 break; 416 case Token.WHITESPACE: 417 buffer.append(" WHITESPACE, "); 418 break; 419 case Token.SEPARATOR: 420 buffer.append(" SEPARATOR, "); 421 break; 422 case Token.SPECIAL_SEQUENCE: 423 buffer.append(" SPECIAL_SEQUENCE, "); 424 break; 425 case Token.EOF: 426 buffer.append(" EOF, "); 427 break; 428 case TokenizerProperty.PARSE_FLAG_MASK: 429 buffer.append(" PARSE FLAG MASK, "); 430 break; 431 default: 432 buffer.append(" UNKNOWN, "); 433 } 434 435 buffer.append("flags/mask 0x"); 437 buffer.append(Integer.toHexString(_flags)); 438 buffer.append("/0x"); 439 buffer.append(Integer.toHexString(_flagMask)); 440 441 if (_images != null) { 443 buffer.append(':'); 444 for (int index = 0; index < _images.length; ++index) { 445 if (_images[index] != null) { 446 buffer.append(' '); 447 buffer.append(_images[index]); 448 } else { 449 break; 450 } 451 } 452 } 453 454 return buffer.toString(); 456 } 457 458 462 protected int _type; 466 protected int _flags; 467 protected int _flagMask; 468 protected String [] _images; 469 protected Object _companion; 470 } 471 | Popular Tags |