This file is indexed.

/usr/share/doc/libpirl-java/api/PIRL/Strings/String_Buffer_Reader.html is in libpirl-java-doc 2.3.8-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_09) on Tue Nov 20 23:14:35 UTC 2012 -->
<title>String_Buffer_Reader</title>
<meta name="date" content="2012-11-20">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="String_Buffer_Reader";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../PIRL/Strings/String_Buffer.html" title="class in PIRL.Strings"><span class="strong">Prev Class</span></a></li>
<li><a href="../../PIRL/Strings/String_Utilities.html" title="class in PIRL.Strings"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?PIRL/Strings/String_Buffer_Reader.html" target="_top">Frames</a></li>
<li><a href="String_Buffer_Reader.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">PIRL.Strings</div>
<h2 title="Class String_Buffer_Reader" class="title">Class String_Buffer_Reader</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../PIRL/Strings/String_Buffer.html" title="class in PIRL.Strings">PIRL.Strings.String_Buffer</a></li>
<li>
<ul class="inheritance">
<li>PIRL.Strings.String_Buffer_Reader</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../PIRL/PVL/Parser.html" title="class in PIRL.PVL">Parser</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">String_Buffer_Reader</span>
extends <a href="../../PIRL/Strings/String_Buffer.html" title="class in PIRL.Strings">String_Buffer</a></pre>
<div class="block">A <I>String_Buffer_Reader</I> provides methods to manipulate a
        character stream as if it were a <I>String_Buffer</I> by backing it
        with a Reader to provide the characters for the String_Buffer.
<P>
        The intended use is to consume a character stream, in a
        semi-sequential manner, processing <I>statements</I> as they are
        encountered by moving along the stream from statement to statement. A
        statement is composed of a contiguous sequence of characters of
        variable length.
<P>
        The character stream may be sourced from a Reader or a String. A
        String source is a convenience that allows a String_Buffer to be used
        transparently in the same context where a Reader might also be used,
        but instead a "pre-read" source of characters is provided directly (a
        StringReader could also be used).
<P>
        For a Reader source the character stream is buffered using a sliding
        window. The source contents are referenced by virtual <I>Location</I>
        values that act as indexes into the entire character stream; the
        first character of the stream is at location 0. The buffer window is
        automatically extended to contain characters from any location
        available in the input stream.
<P>
        To avoid a large number of read operations on the input stream, the
        buffer is always extended by a specified <I>Size_Increment</I>. In
        addition, a <I>Read_Limit</I> may be specified to force input
        termination at any location in the character stream. Input may also
        be terminated when a threshold of non-text bytes (more than a
        specified sequential limit) occur in the stream, as would typically
        occur after the initial label area of an image file.
<P>
        When statements from the character stream have been processed and are
        no longer needed the <I>Next_Location</I> is updated. That part of
        the character stream in the buffer before the Next_Location is
        considered to be disposable so that the next time the buffer needs to
        be extended to a new stream location the portion of the buffer
        containing characters from before the Next_Location are deleted,
        which slides the buffer forward. Thus instead of simply extending
        indefinitely, the buffer is reused by moving the contents to cover
        the section of the character stream being processed and removing
        contents no longer needed. In this way character streams of
        indefinite length may be processed using a relatively small buffer
        size.
<P>
        Modifications may be made to the contents of the buffer using any of
        the String_Buffer methods (which includes all of the StringBuffer
        methods). When the buffer needs to be extended, because a reference
        is made to a location beyond the end of the current buffer contents,
        input characters are always appended to the end of the existing
        buffer contents regardless of changes that have been made that might
        have altered the number of characters it contains. However, the
        <CODE>Next_Location</CODE> will not change unless specifically
        updated by the user, and all characters before the
        <CODE>Next_Location</CODE> will be deleted whenever the buffer
        contents are extended, so characters before the
        <CODE>Next_Location</CODE> should be considered consumed. Thus the
        String_Buffer_Reader effectively offers String_Buffer (StringBuffer)
        access to all characters obtained from the Reader start at the
        <CODE>Next_Location</CODE> and extending on. If the
        <CODE>Next_Location</CODE> is never moved forward (it can be moved
        backwards, but not before the current <CODE>Buffer_Location</CODE>)
        then all characters from the Reader are always available (this is
        always the case for a String source of characters), but sliding the
        buffer forward past consumed statements is what provides efficient
        use of buffer memory for indefinately long input streams.
<P>
        <B>Note</B>: Those String_Buffer methods which search forward for
        character patterns will extend the buffer to the end of input if the
        pattern is not found. To avoid unnecessarily large buffer extensions
        the <CODE>Read_Limit</CODE> can be set to some location downstream
        that the application considers to be beyond where the pattern could
        reasonably be found.
<P>
        When the character source is a String, nothing is ever read.
        Nevertheless, the contents of the buffer may still be appended with
        additional characters and the <CODE>Next_Location</CODE> may still be
        moved forward. When buffer manipulation methods attempt to extend the
        buffer, it will still be slid forward by deleting characters before
        the <CODE>Next_Location</CODE>. In this case virtual location values
        may be thought of as the number of charaters consumed (slid over)
        plus the number of characters in the buffer.
<P>
        A special feature of this String_Buffer_Reader is its ability to
        handle character streams with binary sized records (as produced by
        DEC VMS systems). Each record in such a stream has the form:
<P>
        <BLOCKQUOTE>
        <B><I>Size Characters</I></B> [ <B><I>Pad</I></B> ] 
        </BLOCKQUOTE>
<P>
        Where the <I>Size</I> is a two byte, LSB first, binary integer value
        specifying the number of bytes of <I>Characters</I> to follow. And
        <I>Pad</I> is a byte of value 0 that is present when the Size is odd.
        The Size bytes will be replaced with a LINE_BREAK (CR-LF) sequence,
        and any Pad byte will be replaced with a space character, thus
        providing a consistent character stream. <B>Note</B>: This special
        filtering will only be applied when the source of characters is a
        Reader.
<P></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer.html" title="class in PIRL.Strings"><code>String_Buffer</code></a></dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#DEFAULT_READ_LIMIT">DEFAULT_READ_LIMIT</a></strong></code>
<div class="block">The default <a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit(long)"><code>read limit</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#DEFAULT_SIZE_INCREMENT">DEFAULT_SIZE_INCREMENT</a></strong></code>
<div class="block">The amount to increase the size of the string buffer when it needs to
        be enlarged while reading a file.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#ID">ID</a></strong></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static char</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#INVALID_CHARACTER">INVALID_CHARACTER</a></strong></code>
<div class="block">A character that should not occur in any valid String.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#NO_READ_LIMIT">NO_READ_LIMIT</a></strong></code>
<div class="block">The <CODE>Read_Limit</CODE> size value that means what it says.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_PIRL.Strings.String_Buffer">
<!--   -->
</a>
<h3>Fields inherited from class&nbsp;PIRL.Strings.<a href="../../PIRL/Strings/String_Buffer.html" title="class in PIRL.Strings">String_Buffer</a></h3>
<code><a href="../../PIRL/Strings/String_Buffer.html#QUESTIONABLE_CHARACTER">QUESTIONABLE_CHARACTER</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#String_Buffer_Reader()">String_Buffer_Reader</a></strong>()</code>
<div class="block">Creates a String_Buffer_Reader with no character source.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#String_Buffer_Reader(java.io.Reader)">String_Buffer_Reader</a></strong>(<a href="/usr/share/doc/default-jdk-doc/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;reader)</code>
<div class="block">Creates a String_Buffer_Reader with the reader as the unlimited
        source of characters.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#String_Buffer_Reader(java.io.Reader, long)">String_Buffer_Reader</a></strong>(<a href="/usr/share/doc/default-jdk-doc/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;reader,
                    long&nbsp;limit)</code>
<div class="block">Creates a String_Buffer_Reader with the reader as the source of
        characters up to the specified limit.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#String_Buffer_Reader(java.lang.String)">String_Buffer_Reader</a></strong>(<a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;string)</code>
<div class="block">Creates a String_Buffer_Reader with a String source of characters.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Buffer_Location()">Buffer_Location</a></strong>()</code>
<div class="block">Gets the current location of the beginning of the buffer in the
        virtual stream.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>char</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Char_At(long)">Char_At</a></strong>(long&nbsp;location)</code>
<div class="block">Gets the character at the specified location in the virual stream.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#End_Index()">End_Index</a></strong>()</code>
<div class="block">Gets the buffer index of the last character in the buffer.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#End_Location()">End_Location</a></strong>()</code>
<div class="block">Gets the location immediately following the last character in the
        buffer.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Ended()">Ended</a></strong>()</code>
<div class="block">Tests if the end of input has been reached.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Equals(long, java.lang.String)">Equals</a></strong>(long&nbsp;location,
      <a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pattern)</code>
<div class="block">Tests if the pattern equals the substring starting at the location.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Extend()">Extend</a></strong>()</code>
<div class="block">Extend the string buffer with additional input characters.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input()">Filter_Input</a></strong>()</code>
<div class="block">Tests if the character source will be filtered on input.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input(boolean)">Filter_Input</a></strong>(boolean&nbsp;allow)</code>
<div class="block">Enable or disable input filtering.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input(int)">Filter_Input</a></strong>(int&nbsp;index)</code>
<div class="block">Filters the current contents of the character buffer, starting at the
        specified index and continuing to the end of the buffer contents.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Get_Reader()">Get_Reader</a></strong>()</code>
<div class="block">Gets the Reader used as the source of characters.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Index(long)">Index</a></strong>(long&nbsp;location)</code>
<div class="block">Gets the index in the buffer for the location in the input stream.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Is_Empty()">Is_Empty</a></strong>()</code>
<div class="block">Tests if there are no more characters at the
        <CODE>Next_Location</CODE>; the source of characters is effectively
        empty.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Is_End(long)">Is_End</a></strong>(long&nbsp;location)</code>
<div class="block">Tests if the specified location is at or beyond the
        <CODE>End_Location</CODE>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Is_Text(char)">Is_Text</a></strong>(char&nbsp;character)</code>
<div class="block">Tests if a character is considered to be text.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Location_Of(long, char)">Location_Of</a></strong>(long&nbsp;location,
           char&nbsp;character)</code>
<div class="block">Finds the next location of the character in the virtual stream.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Location_Of(long, java.lang.String)">Location_Of</a></strong>(long&nbsp;location,
           <a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pattern)</code>
<div class="block">Finds the next location of the pattern String in the virtual stream.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Location(int)">Location</a></strong>(int&nbsp;index)</code>
<div class="block">Gets the location in the input stream of the index in the buffer.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Index()">Next_Index</a></strong>()</code>
<div class="block">Gets the index in the buffer of the <CODE>Next_Location</CODE>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Index(int)">Next_Index</a></strong>(int&nbsp;index)</code>
<div class="block">Sets the <CODE>Next_Location</CODE> using a buffer index value.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Location()">Next_Location</a></strong>()</code>
<div class="block">Gets the current value of the next location.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Location(long)">Next_Location</a></strong>(long&nbsp;location)</code>
<div class="block">Sets the next location to position the buffer when sliding it
        forward.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#No_Read_Limit()">No_Read_Limit</a></strong>()</code>
<div class="block">Sets the read limit to <CODE>NO_READ_LIMIT</CODE>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Non_Text_Limit()">Non_Text_Limit</a></strong>()</code>
<div class="block">Get the current limit for non-text data input.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Non_Text_Limit(int)">Non_Text_Limit</a></strong>(int&nbsp;limit)</code>
<div class="block">Sets the length of a non-text data sequence that will cause input
        from the Reader's character stream to the the buffer to stop.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit()">Read_Limit</a></strong>()</code>
<div class="block">Gets the current limit where reading characters is to stop;
        the maximum number of characters to input from the Reader.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit(long)">Read_Limit</a></strong>(long&nbsp;limit)</code>
<div class="block">Sets the location where character input is to stop; the
        maximum number of characters to be obtained from the source.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Reader_Source()">Reader_Source</a></strong>()</code>
<div class="block">Tests if the source of characters is a Reader.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static int</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Record_Size(char, char)">Record_Size</a></strong>(char&nbsp;LSB,
           char&nbsp;MSB)</code>
<div class="block">Converts two char values to a single int value, assuming that the
        first char value is the LSB and the second the MSB of a 16-bit
        integer.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Record_Size(int)">Record_Size</a></strong>(int&nbsp;index)</code>
<div class="block">Converts a 16-bit (in 2 sequential chars), LSB-first value at the
        buffer index to a record size value.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Reset_Location()">Reset_Location</a></strong>()</code>
<div class="block">Resets the virtual stream location values.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Reset()">Reset</a></strong>()</code>
<div class="block">Reset as if (almost) nothing happened.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Set_Reader(java.io.Reader)">Set_Reader</a></strong>(<a href="/usr/share/doc/default-jdk-doc/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;reader)</code>
<div class="block">Sets the Reader to use as the source of characters.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Size_Increment()">Size_Increment</a></strong>()</code>
<div class="block">Gets the size increment by which the input buffer will be
        extended when it is slid forward in the Reader's input stream.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Size_Increment(int)">Size_Increment</a></strong>(int&nbsp;amount)</code>
<div class="block">Sets the size increment by which the input buffer will be
        extended when it is slid forward in the Reader's input stream.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Skip_Over(long, java.lang.String)">Skip_Over</a></strong>(long&nbsp;location,
         <a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;skip)</code>
<div class="block">Skips over a character set in the virtual stream.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Skip_Until(long, java.lang.String)">Skip_Until</a></strong>(long&nbsp;location,
          <a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;find)</code>
<div class="block">Skips until a member of the character set is found in the virtual
        stream.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#String_Source()">String_Source</a></strong>()</code>
<div class="block">Tests if the source of characters is a String (there is no Reader).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Substring(long, long)">Substring</a></strong>(long&nbsp;start,
         long&nbsp;end)</code>
<div class="block">Gets the substring including the characters from the start location
        up to, but not including, the end location in the virtual stream.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../PIRL/Strings/String_Buffer_Reader.html#Total_Read()">Total_Read</a></strong>()</code>
<div class="block">Gets the total number of characters read so far.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_PIRL.Strings.String_Buffer">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;PIRL.Strings.<a href="../../PIRL/Strings/String_Buffer.html" title="class in PIRL.Strings">String_Buffer</a></h3>
<code><a href="../../PIRL/Strings/String_Buffer.html#append(boolean)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(byte)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(byte[])">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(byte[], int, int)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(char)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(char[])">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(char[], int, int)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(double)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(float)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(int)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(long)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(java.lang.Object)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#append(java.lang.String)">append</a>, <a href="../../PIRL/Strings/String_Buffer.html#capacity()">capacity</a>, <a href="../../PIRL/Strings/String_Buffer.html#charAt(int)">charAt</a>, <a href="../../PIRL/Strings/String_Buffer.html#clean(char)">clean</a>, <a href="../../PIRL/Strings/String_Buffer.html#clear()">clear</a>, <a href="../../PIRL/Strings/String_Buffer.html#delete(int, int)">delete</a>, <a href="../../PIRL/Strings/String_Buffer.html#deleteCharAt(int)">deleteCharAt</a>, <a href="../../PIRL/Strings/String_Buffer.html#ensureCapacity(int)">ensureCapacity</a>, <a href="../../PIRL/Strings/String_Buffer.html#equals_ignore_case(int, java.lang.String)">equals_ignore_case</a>, <a href="../../PIRL/Strings/String_Buffer.html#equals(int, java.lang.String)">equals</a>, <a href="../../PIRL/Strings/String_Buffer.html#equalsIgnoreCase(int, java.lang.String)">equalsIgnoreCase</a>, <a href="../../PIRL/Strings/String_Buffer.html#escape_to_special()">escape_to_special</a>, <a href="../../PIRL/Strings/String_Buffer.html#escape_to_special(java.lang.String)">escape_to_special</a>, <a href="../../PIRL/Strings/String_Buffer.html#from_character_references()">from_character_references</a>, <a href="../../PIRL/Strings/String_Buffer.html#from_character_references(java.lang.String)">from_character_references</a>, <a href="../../PIRL/Strings/String_Buffer.html#getChars(int, int, char[], int)">getChars</a>, <a href="../../PIRL/Strings/String_Buffer.html#index_of(int, char)">index_of</a>, <a href="../../PIRL/Strings/String_Buffer.html#index_of(int, java.lang.String)">index_of</a>, <a href="../../PIRL/Strings/String_Buffer.html#indexOf(int, char)">indexOf</a>, <a href="../../PIRL/Strings/String_Buffer.html#indexOf(int, java.lang.String)">indexOf</a>, <a href="../../PIRL/Strings/String_Buffer.html#insert(int, boolean)">insert</a>, <a href="../../PIRL/Strings/String_Buffer.html#insert(int, char)">insert</a>, <a href="../../PIRL/Strings/String_Buffer.html#insert(int, char[])">insert</a>, <a href="../../PIRL/Strings/String_Buffer.html#insert(int, char[], int, int)">insert</a>, <a href="../../PIRL/Strings/String_Buffer.html#insert(int, double)">insert</a>, <a href="../../PIRL/Strings/String_Buffer.html#insert(int, float)">insert</a>, <a href="../../PIRL/Strings/String_Buffer.html#insert(int, int)">insert</a>, <a href="../../PIRL/Strings/String_Buffer.html#insert(int, long)">insert</a>, <a href="../../PIRL/Strings/String_Buffer.html#insert(int, java.lang.Object)">insert</a>, <a href="../../PIRL/Strings/String_Buffer.html#insert(int, java.lang.String)">insert</a>, <a href="../../PIRL/Strings/String_Buffer.html#length()">length</a>, <a href="../../PIRL/Strings/String_Buffer.html#replace_span(int, java.lang.String, java.lang.String)">replace_span</a>, <a href="../../PIRL/Strings/String_Buffer.html#replace(int, int, java.lang.String)">replace</a>, <a href="../../PIRL/Strings/String_Buffer.html#replace(int, java.lang.String, java.lang.String)">replace</a>, <a href="../../PIRL/Strings/String_Buffer.html#replaceSpan(int, java.lang.String, java.lang.String)">replaceSpan</a>, <a href="../../PIRL/Strings/String_Buffer.html#reverse()">reverse</a>, <a href="../../PIRL/Strings/String_Buffer.html#setCharAt(int, char)">setCharAt</a>, <a href="../../PIRL/Strings/String_Buffer.html#setLength(int)">setLength</a>, <a href="../../PIRL/Strings/String_Buffer.html#skip_back_over(int, java.lang.String)">skip_back_over</a>, <a href="../../PIRL/Strings/String_Buffer.html#skip_back_until(int, java.lang.String)">skip_back_until</a>, <a href="../../PIRL/Strings/String_Buffer.html#skip_over(int, java.lang.String)">skip_over</a>, <a href="../../PIRL/Strings/String_Buffer.html#skip_until(int, java.lang.String)">skip_until</a>, <a href="../../PIRL/Strings/String_Buffer.html#skipBackOver(int, java.lang.String)">skipBackOver</a>, <a href="../../PIRL/Strings/String_Buffer.html#skipBackUntil(int, java.lang.String)">skipBackUntil</a>, <a href="../../PIRL/Strings/String_Buffer.html#skipOver(int, java.lang.String)">skipOver</a>, <a href="../../PIRL/Strings/String_Buffer.html#skipUntil(int, java.lang.String)">skipUntil</a>, <a href="../../PIRL/Strings/String_Buffer.html#special_to_escape()">special_to_escape</a>, <a href="../../PIRL/Strings/String_Buffer.html#special_to_escape(java.lang.String)">special_to_escape</a>, <a href="../../PIRL/Strings/String_Buffer.html#substring(int)">substring</a>, <a href="../../PIRL/Strings/String_Buffer.html#substring(int, int)">substring</a>, <a href="../../PIRL/Strings/String_Buffer.html#to_character_references()">to_character_references</a>, <a href="../../PIRL/Strings/String_Buffer.html#to_character_references(java.lang.String)">to_character_references</a>, <a href="../../PIRL/Strings/String_Buffer.html#to_printable_ASCII()">to_printable_ASCII</a>, <a href="../../PIRL/Strings/String_Buffer.html#to_printable_ASCII(java.lang.String)">to_printable_ASCII</a>, <a href="../../PIRL/Strings/String_Buffer.html#toString()">toString</a>, <a href="../../PIRL/Strings/String_Buffer.html#trim_all(char)">trim_all</a>, <a href="../../PIRL/Strings/String_Buffer.html#trim_beginning()">trim_beginning</a>, <a href="../../PIRL/Strings/String_Buffer.html#trim_end()">trim_end</a>, <a href="../../PIRL/Strings/String_Buffer.html#trim()">trim</a>, <a href="../../PIRL/Strings/String_Buffer.html#trim(char)">trim</a>, <a href="../../PIRL/Strings/String_Buffer.html#trim(int, int)">trim</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="/usr/share/doc/default-jdk-doc/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="ID">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ID</h4>
<pre>public static final&nbsp;<a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> ID</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../constant-values.html#PIRL.Strings.String_Buffer_Reader.ID">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="DEFAULT_SIZE_INCREMENT">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_SIZE_INCREMENT</h4>
<pre>public static final&nbsp;int DEFAULT_SIZE_INCREMENT</pre>
<div class="block">The amount to increase the size of the string buffer when it needs to
        be enlarged while reading a file.
<P>
        It should be at least 8k to allow for the largest possible sized
        record on first read.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../constant-values.html#PIRL.Strings.String_Buffer_Reader.DEFAULT_SIZE_INCREMENT">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="DEFAULT_READ_LIMIT">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_READ_LIMIT</h4>
<pre>public static final&nbsp;long DEFAULT_READ_LIMIT</pre>
<div class="block">The default <a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit(long)"><code>read limit</code></a>.
<P>
        This class was designed for use with the PVL Parser (which is a
        subclass) for processing PVL syntax statements. The read limit sets
        the maximum amount of a file to read when working through a file
        label. When the limit is reached it is presumed that there are no
        more statements to be processed. Set it to -1 for no limit.
<P>
        <B>N.B.</B>: Without a recognizable end-of-label marker it is quite
        possible for non-label file data to be interpreted as PVL
        statements. Thus it is advisable to set a reasonable limit on the
        amount of file data to read. It is typical for a PVL label to
        contain as one of its parameters the size of the label. This
        suggests a strategy of using a reasonably small limit (enough to
        ensure that the label size parameter, usually near the start of the
        PVL statements, will be read), finding this parameter, rewinding
        the file, and ingesting the PVL statements again using the
        parameter value as the limiting value. A less "intelligent" (but
        likely to be easier) approach is to use the default limit and
        simply check the validity of parameters, since applications are
        likely to know what parameters are valid for them.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../constant-values.html#PIRL.Strings.String_Buffer_Reader.DEFAULT_READ_LIMIT">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="NO_READ_LIMIT">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NO_READ_LIMIT</h4>
<pre>public static final&nbsp;long NO_READ_LIMIT</pre>
<div class="block">The <CODE>Read_Limit</CODE> size value that means what it says.
<P></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit(long)"><code>Read_Limit(long)</code></a>, 
<a href="../../constant-values.html#PIRL.Strings.String_Buffer_Reader.NO_READ_LIMIT">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="INVALID_CHARACTER">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>INVALID_CHARACTER</h4>
<pre>public static final&nbsp;char INVALID_CHARACTER</pre>
<div class="block">A character that should not occur in any valid String.
<P></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="/usr/share/doc/default-jdk-doc/api/java/text/CharacterIterator.html?is-external=true#DONE" title="class or interface in java.text"><code>CharacterIterator.DONE</code></a>, 
<a href="../../constant-values.html#PIRL.Strings.String_Buffer_Reader.INVALID_CHARACTER">Constant Field Values</a></dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="String_Buffer_Reader(java.io.Reader, long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>String_Buffer_Reader</h4>
<pre>public&nbsp;String_Buffer_Reader(<a href="/usr/share/doc/default-jdk-doc/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;reader,
                    long&nbsp;limit)</pre>
<div class="block">Creates a String_Buffer_Reader with the reader as the source of
        characters up to the specified limit.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>reader</code> - The Reader to use as the source of input.</dd><dd><code>limit</code> - The maximum number of character bytes to read.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit(long)"><code>Read_Limit(long)</code></a></dd></dl>
</li>
</ul>
<a name="String_Buffer_Reader(java.io.Reader)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>String_Buffer_Reader</h4>
<pre>public&nbsp;String_Buffer_Reader(<a href="/usr/share/doc/default-jdk-doc/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;reader)</pre>
<div class="block">Creates a String_Buffer_Reader with the reader as the unlimited
        source of characters.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>reader</code> - The Reader to use as the source of input.</dd></dl>
</li>
</ul>
<a name="String_Buffer_Reader()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>String_Buffer_Reader</h4>
<pre>public&nbsp;String_Buffer_Reader()</pre>
<div class="block">Creates a String_Buffer_Reader with no character source.
<P></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Set_Reader(java.io.Reader)"><code>Set_Reader(Reader)</code></a></dd></dl>
</li>
</ul>
<a name="String_Buffer_Reader(java.lang.String)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>String_Buffer_Reader</h4>
<pre>public&nbsp;String_Buffer_Reader(<a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;string)</pre>
<div class="block">Creates a String_Buffer_Reader with a String source of characters.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>string</code> - The String to use as the source of input.</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="Set_Reader(java.io.Reader)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Set_Reader</h4>
<pre>public&nbsp;<a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a>&nbsp;Set_Reader(<a href="/usr/share/doc/default-jdk-doc/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;reader)</pre>
<div class="block">Sets the Reader to use as the source of characters.
<P>
        Changing the Reader in mid stream may have unexpected side effects.
        Any data still being held in the internal character array pending
        further processing before transfer to the charactr buffer will
        remain in the virtual input stream before data read from the new
        Reader (note that for a <a href="../../PIRL/Strings/String_Buffer_Reader.html#String_Source()"><code>String source of characters</code></a> the internal character array is
        not used). The <CODE>Total_Read</CODE> will not be reset by a change
        of Reader; i.e. a single virtual character input stream is seen.
<P>
        <B>Note</B>: If the reader is set to null, then input has, by
        definition, ended, but the current contents of the buffer remain
        available. However, any data still pending processing in the
        internal character array is dropped. If this object was created
        with a String character source a Reader may be set to supplement
        the initial String. In this case the <CODE>Total_Read</CODE> will
        include the length of the initial String.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>reader</code> - The reader to associate with this object.</dd>
<dt><span class="strong">Returns:</span></dt><dd>This Buffer_String_Reader.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Total_Read()"><code>Total_Read()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#String_Source()"><code>String_Source()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Extend()"><code>Extend()</code></a></dd></dl>
</li>
</ul>
<a name="Get_Reader()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Get_Reader</h4>
<pre>public&nbsp;<a href="/usr/share/doc/default-jdk-doc/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;Get_Reader()</pre>
<div class="block">Gets the Reader used as the source of characters.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The Reader associated with this object; will be null
                if the object currently has no Reader (e.g. it was created
                with a String character source).</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Set_Reader(java.io.Reader)"><code>Set_Reader(Reader)</code></a></dd></dl>
</li>
</ul>
<a name="Reader_Source()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Reader_Source</h4>
<pre>public&nbsp;boolean&nbsp;Reader_Source()</pre>
<div class="block">Tests if the source of characters is a Reader.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if the source of characters is a Reader.</dd></dl>
</li>
</ul>
<a name="String_Source()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>String_Source</h4>
<pre>public&nbsp;boolean&nbsp;String_Source()</pre>
<div class="block">Tests if the source of characters is a String (there is no Reader).
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if the source of characters is a String.</dd></dl>
</li>
</ul>
<a name="Reset()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Reset</h4>
<pre>public&nbsp;<a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a>&nbsp;Reset()</pre>
<div class="block">Reset as if (almost) nothing happened.
<P>
        The <a href="../../PIRL/Strings/String_Buffer_Reader.html#Buffer_Location()"><code>buffer location</code></a> and <a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Location()"><code>next location</code></a> in the stream are reset to zero, the
        internal character buffer is marked as empty. If a <a href="../../PIRL/Strings/String_Buffer_Reader.html#Reader_Source()"><code>Reader source</code></a> (rather than <a href="../../PIRL/Strings/String_Buffer_Reader.html#String_Source()"><code>String source</code></a>) is being used the <a href="../../PIRL/Strings/String_Buffer_Reader.html#Total_Read()"><code>total read</code></a> is
        set to zero, the <a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit()"><code>read limit</code></a> set to <a href="../../PIRL/Strings/String_Buffer_Reader.html#NO_READ_LIMIT"><code>NO_READ_LIMIT</code></a> and the base String_Buffer is cleared. <n>N.B.</b>:
        The internal character buffer <a href="../../PIRL/Strings/String_Buffer_Reader.html#Size_Increment()"><code>size
        increment</code></a> and <a href="../../PIRL/Strings/String_Buffer_Reader.html#Non_Text_Limit()"><code>non-text data threshold</code></a> are
        not changed.
<P>
        If <a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input()"><code>input filtering</code></a> is enabled it is reset
        so the source stream will be tested again.</div>
</li>
</ul>
<a name="Location(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Location</h4>
<pre>public&nbsp;long&nbsp;Location(int&nbsp;index)</pre>
<div class="block">Gets the location in the input stream of the index in the buffer.
<P>
        Location values must be used when manipulating the contents
        of the buffer using String_Buffer_Reader methods.
<P>
        Location values are virtual with respect to the entire character
        input stream. Location 0 corresponds to the first character
        consumed after the buffer has slid forward, or the first character
        currently in the buffer if nothing has yet been consumed. If the
        number of characters in the buffer is only changed when it is
        <a href="../../PIRL/Strings/String_Buffer_Reader.html#Extend()"><code><CODE>Extend</CODE></code></a>ed, then location values are
        relative to all characters in the input stream. However, since the
        number of characters in the buffer may be changed by various
        methods, location values are actually relative to all characters
        that the buffer has slid over (been consumed) plus the current
        contents of the buffer; i.e. the virtual input stream.
<P>
        <B>Note</B>: Location values are long; index values are int.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>index</code> - A buffer index value.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The corresponding input stream location.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Extend()"><code>Extend()</code></a></dd></dl>
</li>
</ul>
<a name="Index(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Index</h4>
<pre>public&nbsp;int&nbsp;Index(long&nbsp;location)</pre>
<div class="block">Gets the index in the buffer for the location in the input stream.
<P>
        Index values are relative to the current contents of the buffer;
        index 0 corresponds to the character currently at the beginning of
        the buffer. Index values must be used when menipulating the
        contents of the buffer with String_Buffer (StingBuffer) methods.
<P>
        <B>Note</B>: Location values are long; index values are int.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>location</code> - A location in the input stream.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The corresponding buffer index relative to the
                current location of the beginning of the buffer in the
                input stream.</dd></dl>
</li>
</ul>
<a name="Buffer_Location()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Buffer_Location</h4>
<pre>public&nbsp;long&nbsp;Buffer_Location()</pre>
<div class="block">Gets the current location of the beginning of the buffer in the
        virtual stream.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The location of the first character in the buffer.</dd></dl>
</li>
</ul>
<a name="Reset_Location()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Reset_Location</h4>
<pre>public&nbsp;<a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a>&nbsp;Reset_Location()</pre>
<div class="block">Resets the virtual stream location values.
<p>
        The current <a href="../../PIRL/Strings/String_Buffer_Reader.html#Buffer_Location()"><code>character buffer location</code></a> in
        the source of charcters is subtracted from the <a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Location()"><code>next location</code></a> and the buffer location is set to
        zero. The <a href="../../PIRL/Strings/String_Buffer_Reader.html#Total_Read()"><code>total read</code></a> is also set to zero if
        the source of characters is a <a href="../../PIRL/Strings/String_Buffer_Reader.html#Reader_Source()"><code>() stream reader</code></a>,
        not a String.
<P>
        A reset has the effect of making it appear as if the character
        buffer had been loaded for the first time, but without affecting
        the current relative location of the next character to be read.
<P>
        Because the location values are long integers they can be exepected
        to remain valid even for a reader that is a coninuously generated
        stream (such as a network socket). Nevertheless, a reset when the
        next location exceeds some (very large) threshold will ensure that
        a stream of unlimited length can be continuously processed.</div>
</li>
</ul>
<a name="Next_Location(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Next_Location</h4>
<pre>public&nbsp;long&nbsp;Next_Location(long&nbsp;location)
                   throws <a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a>,
                          <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Sets the next location to position the buffer when sliding it
        forward.
<P>
        If the location is beyond the end of the current buffer contents
        the buffer is extended to include the location, if possible.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>location</code> - The next location to use for the beginning of
                the buffer when the buffer is slid forward.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The new value of the next location. The only case where
                this will be different from the specified location is when the
                end of input has been reached before the specified location
                could be reached; in which case the return value is the final
                end location.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a></code> - If the location is before the
                                beginning of the buffer.</dd>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - If there was a problem extending the buffer.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#End_Location()"><code>End_Location()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Extend()"><code>Extend()</code></a></dd></dl>
</li>
</ul>
<a name="Next_Location()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Next_Location</h4>
<pre>public&nbsp;long&nbsp;Next_Location()</pre>
<div class="block">Gets the current value of the next location.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The current value of the next location.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Location(long)"><code>Next_Location(long)</code></a></dd></dl>
</li>
</ul>
<a name="Next_Index(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Next_Index</h4>
<pre>public&nbsp;int&nbsp;Next_Index(int&nbsp;index)
               throws <a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a>,
                      <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Sets the <CODE>Next_Location</CODE> using a buffer index value.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>index</code> - The buffer index value for the next location.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The index value of the new next location.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a></code> - If the index is before the
                                beginning of the buffer.</dd>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - If there was a problem extending the buffer.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Location(long)"><code>Next_Location(long)</code></a></dd></dl>
</li>
</ul>
<a name="Next_Index()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Next_Index</h4>
<pre>public&nbsp;int&nbsp;Next_Index()</pre>
<div class="block">Gets the index in the buffer of the <CODE>Next_Location</CODE>.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The index in the buffer of the next location.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Location()"><code>Next_Location()</code></a></dd></dl>
</li>
</ul>
<a name="End_Location()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>End_Location</h4>
<pre>public&nbsp;long&nbsp;End_Location()</pre>
<div class="block">Gets the location immediately following the last character in the
        buffer.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The location immediately following the last character in
                the buffer.</dd></dl>
</li>
</ul>
<a name="End_Index()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>End_Index</h4>
<pre>public&nbsp;int&nbsp;End_Index()</pre>
<div class="block">Gets the buffer index of the last character in the buffer. This is
        the same as the number of characters currently in the buffer.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The buffer index of the last character in the buffer.</dd></dl>
</li>
</ul>
<a name="Read_Limit(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Read_Limit</h4>
<pre>public&nbsp;<a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a>&nbsp;Read_Limit(long&nbsp;limit)</pre>
<div class="block">Sets the location where character input is to stop; the
        maximum number of characters to be obtained from the source.
<P>
        If the limit is 0, then the <CODE>DEFAULT_READ_LIMIT</CODE> (256
        KB) is used. If the limit is less than 0, then
        <CODE>NO_READ_LIMIT</CODE> will be used, so no upper limit will be
        imposed on the number of characters to obtain from the source.
<P>
        <B>Note</B>: The read limit is reset to the total number of
        characters read if a Reader encounters the end of the input stream.
<P>
        <B>Note</B>: The read limit will have no effect <a href="../../PIRL/Strings/String_Buffer_Reader.html#String_Source()"><code>when the character source is a String</code></a>. In this case
        nothing is ever read so the read limit is never changed.
<P>
        <B>Note</B>: When the <a href="../../PIRL/Strings/String_Buffer_Reader.html#Non_Text_Limit(int)"><code>threshold for
        sequential non-text data</code></a> has been reached while extending the
        buffer, then the read limit is automatically set to the number of
        characters read before the non-text sequence. Once this condition has
        been encountered, the read limit can not be changed without first
        resetting the non-text data threshold up to a higher value.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>limit</code> - The location where character input is to stop.</dd>
<dt><span class="strong">Returns:</span></dt><dd>This String_Buffer_Reader.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#NO_READ_LIMIT"><code>NO_READ_LIMIT</code></a></dd></dl>
</li>
</ul>
<a name="No_Read_Limit()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>No_Read_Limit</h4>
<pre>public&nbsp;<a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a>&nbsp;No_Read_Limit()</pre>
<div class="block">Sets the read limit to <CODE>NO_READ_LIMIT</CODE>.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>This String_Buffer_Reader.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit(long)"><code>Read_Limit(long)</code></a></dd></dl>
</li>
</ul>
<a name="Read_Limit()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Read_Limit</h4>
<pre>public&nbsp;long&nbsp;Read_Limit()</pre>
<div class="block">Gets the current limit where reading characters is to stop;
        the maximum number of characters to input from the Reader.
<P>
        This will be <CODE>NO_READ_LIMIT</CODE> if there is no limit to
        the number of characters to read from the source.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The current read limit.</dd></dl>
</li>
</ul>
<a name="Total_Read()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Total_Read</h4>
<pre>public&nbsp;long&nbsp;Total_Read()</pre>
<div class="block">Gets the total number of characters read so far. This value
        is the actual number of characters input from the Reader
        regardless of any subsequent use of the data.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The total number of characters read.</dd></dl>
</li>
</ul>
<a name="Ended()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Ended</h4>
<pre>public&nbsp;boolean&nbsp;Ended()</pre>
<div class="block">Tests if the end of input has been reached.
<P>
        The end of input occurs when the read limit has been reached. When
        the input source is a String, then it has always ended (i.e. there
        is nothing to read).
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if the character source has ended.</dd></dl>
</li>
</ul>
<a name="Is_Empty()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Is_Empty</h4>
<pre>public&nbsp;boolean&nbsp;Is_Empty()</pre>
<div class="block">Tests if there are no more characters at the
        <CODE>Next_Location</CODE>; the source of characters is effectively
        empty.
<P>
        There will be no more characters at the <CODE>Next_Location</CODE>
        if the input has eneded and the <CODE>Next_Location</CODE> is at,
        or beyond, the <CODE>End_Location</CODE>.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if there are no more statements available.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Ended()"><code>Ended()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#End_Location()"><code>End_Location()</code></a></dd></dl>
</li>
</ul>
<a name="Is_End(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Is_End</h4>
<pre>public&nbsp;boolean&nbsp;Is_End(long&nbsp;location)</pre>
<div class="block">Tests if the specified location is at or beyond the
        <CODE>End_Location</CODE>.
<P>
        <B>Note</B>: Unlike <CODE>Ended</CODE>, <CODE>Is_End</CODE> only
        indicates that the location is beyond the current buffer contents.
        There may still be more source characters available.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>location</code> - The location to test.</dd>
<dt><span class="strong">Returns:</span></dt><dd>true if the location is at or beyond the
                <CODE>End_Location</CODE>.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#End_Location()"><code>End_Location()</code></a></dd></dl>
</li>
</ul>
<a name="Size_Increment(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Size_Increment</h4>
<pre>public&nbsp;<a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a>&nbsp;Size_Increment(int&nbsp;amount)</pre>
<div class="block">Sets the size increment by which the input buffer will be
        extended when it is slid forward in the Reader's input stream.
<P>
        If the amount is less than or equal to 0, then the default size
        increment (16 KB) will be applied. If the amount is less than or
        equal to the <CODE>Non_Text_Limit</CODE> threshold, then it will
        be increased by that amount. If the current internal character
        array contains more input data that the size increment, then it
        will be set to the amount of data being held. If the new size
        increment is different from the length of the current internal
        character array, then a new array will be allocated and any data in
        the old array will be copied into it.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>amount</code> - The new size increment.</dd>
<dt><span class="strong">Returns:</span></dt><dd>This String_Buffer_Reader.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Non_Text_Limit(int)"><code>Non_Text_Limit(int)</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Extend()"><code>Extend()</code></a></dd></dl>
</li>
</ul>
<a name="Size_Increment()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Size_Increment</h4>
<pre>public&nbsp;int&nbsp;Size_Increment()</pre>
<div class="block">Gets the size increment by which the input buffer will be
        extended when it is slid forward in the Reader's input stream.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The current size increment.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Size_Increment(int)"><code>Size_Increment(int)</code></a></dd></dl>
</li>
</ul>
<a name="Non_Text_Limit(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Non_Text_Limit</h4>
<pre>public&nbsp;<a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a>&nbsp;Non_Text_Limit(int&nbsp;limit)</pre>
<div class="block">Sets the length of a non-text data sequence that will cause input
        from the Reader's character stream to the the buffer to stop.
<P>
        Text characters are recognized by the <CODE>Is_Text</CODE> method;
        characters that fail this test are non-text.
<P>
        Since this class is managing a String buffer, it is assumed that
        non-text data from the input should not be transferred into the
        buffer; i.e. the data are not valid String characters. However, to
        allow for possible input filter requirements (e.g. binary record size
        values), a sequence of non-text data less than the limit is allowed
        into the character buffer. When a sequence of non-text data in the
        input stream reaches the limit the <CODE>Read_Limit</CODE> is set to
        the amount read up to, but not including, the sequence of non-text
        data. A limit of 0 has the same effect as a limit of 1 (so a limit of
        zero will be forced to 1); i.e. no non-text data are acceptable.
        Specifying a negative limit disables non-text data checking; i.e. any
        non-text data is acceptable.
<P>
        <B>Note</B>: No sequence of non-text data as long as the limit amount
        is allowed into the object's character buffer; shorter sequences are
        allowed to pass. And since the <CODE>Read_Limit</CODE> is set to the
        location in the input stream immediately preceeding a limiting
        non-text sequence, the buffer will not be <a href="../../PIRL/Strings/String_Buffer_Reader.html#Extend()"><code><CODE>Extend</CODE></code></a>ed beyond this location. However, the
        <CODE>Non_Text_Limit</CODE> may subsequently be increased and the
        <CODE>Read_limit</CODE> lifted (in that order; the
        <CODE>Read_limit</CODE> can not be changed while a
        <CODE>Non_Text_Limit</CODE> block is in effect) to allow further
        processing of the input stream (data read from the Reader but not
        transferred to the character buffer is never lost). Nevertheless, any
        non-text data sequence outstanding will remain in effect and will be
        included in counting the length of the next non-text sequence; the
        non-text sequence length is only reset to 0 when a text character is
        seen in the input stream.
<P>
        <B>Warning</B>: The <CODE>Non_Text_Limit</CODE> may affect the
        operation of an input filter. The input filter provided with this
        class requires, if <a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input(boolean)"><code>input filtering is
        enabled</code></a>, a <CODE>Non_Text_Limit</CODE> of a least 4.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>limit</code> - The maximum allowed sequence of non-text input data.</dd>
<dt><span class="strong">Returns:</span></dt><dd>This String_Buffer_Reader.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Is_Text(char)"><code>Is_Text(char)</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit(long)"><code>Read_Limit(long)</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Extend()"><code>Extend()</code></a></dd></dl>
</li>
</ul>
<a name="Non_Text_Limit()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Non_Text_Limit</h4>
<pre>public&nbsp;int&nbsp;Non_Text_Limit()</pre>
<div class="block">Get the current limit for non-text data input.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The non-text data limit.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Non_Text_Limit(int)"><code>Non_Text_Limit(int)</code></a></dd></dl>
</li>
</ul>
<a name="Extend()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Extend</h4>
<pre>public&nbsp;boolean&nbsp;Extend()
               throws <a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a>,
                      <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Extend the string buffer with additional input characters.
<P>
        The procedure to extend the buffer has several steps:
<P><DL>
        <DT><B>Test if input filtering is enabled.</B>
                <DD>The <a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input()"><code><CODE>Filter_Input</CODE></code></a> test
                is done before reading any data so the Reader input position is
                not altered. The test method may need to read characters from
                the source at its current position.
        <DT><B>Slide the buffer forward.</B>
                <DD>If the <a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Location(long)"><code><CODE>Next_Location</CODE></code></a> is beyond the <a href="../../PIRL/Strings/String_Buffer_Reader.html#Buffer_Location()"><code><CODE>Buffer_Location</CODE></code></a> then the
                consumed contents of the buffer - i.e. from the beginning up
                to, but not including, the <CODE>Next_Index</CODE> - are
                deleted.
        <DT><B>Check for end of input.</B>
                <DD>The end of input occurs when the end of the Reader's data
                stream has been reached, or the amount of input has reached the
                <a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit(long)"><code><CODE>Read_Limit</CODE></code></a>. When this
                object was constructed from a String the end of input has been
                reached by definition. When the end of input has been reached
                the buffer can not be extended so the method returns false.
        <DT><B>Determine how much to extend the buffer.</B>
                <DD>The buffer will be extended by the lesser of the amount of
                free space in the internal character array or the amount from
                the current <a href="../../PIRL/Strings/String_Buffer_Reader.html#Total_Read()"><code><CODE>Total_Read</CODE></code></a> up to
                the <CODE>Read_Limit</CODE>. Of course, if there is no read
                limit then the former is always used. The internal character
                array, where characters read from the Reader are stored for
                checking before being transferred to the object's buffer, has a
                length of <a href="../../PIRL/Strings/String_Buffer_Reader.html#Size_Increment(int)"><code><CODE>Size_Increment</CODE></code></a>. However, during each read cycle
                less than the entire character array contents may be
                transferred to the buffer; the remainder is carried over in the
                array where new input data is added in the next read cycle.
                Thus the buffer will be extended by no more than
                <CODE>Size_Increment</CODE> characters.
        <DT><B>Read characters.</B>
                <DD>Characters are read from the Reader into an internal
                character array. Here they may be scanned for non-text data
                before being appended to the object's character buffer. This
                cycle continues until the amount to extend the buffer has been
                read or the end of the input stream is encounterd.
        <DT><B>Check for non-text data.</B>
                <DD>Characters read into the internal storage array may be
                scanned for a sequence of non-text data of the current maximum
                length. This check is only done if the <a href="../../PIRL/Strings/String_Buffer_Reader.html#Non_Text_Limit(int)"><code>non-text data threshold</code></a> is non-negative.
                Counting of sequential non-text data is continuous across buffer
                extensions and is only reset to zero when a text character is
                found. If the non-text data threshold is reached, then only the
                data preceeding the sequence is appended to the object's
                character buffer and the <CODE>Read_Limit</CODE> is reset to the
                corresponding position in the data stream. Shorter sequences of
                non-text data at the end of scanned input are also omitted from
                the transfer to the buffer, against the possibility of more
                non-text data from the next read, but the <CODE>Read_Limit</CODE>
                is not changed. Data not transferred to the buffer is retained in
                the internal array where it is added to in the next read cycle.
        <DT><B>Transfer characters to the buffer.</B>
                <DD>The data in the character array, from the beginning up to
                but not including any trailing non-text data (if non-text data
                checking is enabled), is appended to the object's character
                buffer.
        <DT><B>Filter the new characters.</B>
                <DD>If input filtering is enabled, the <a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input(int)"><code><CODE>Filter_Input</CODE></code></a> method is invoked
                on the new characters.
</DL><P>
        <B>Note</B>: Altering the Reader's input position in the character
        stream may have have unpredictable consequences. The impact on the
        operation of the <CODE>Filter_Input</CODE> method in particular
        could be fatal. Without input filtering, however, it is quite
        possible to move the Reader's input position (e.g. by
        <CODE>reset</CODE>, <CODE>skip</CODE>, or <CODE>read</CODE>
        operations) to suit application needs. It is important to keep in
        mind that any such alterations will go undetected, and the value of
        the <CODE>Total_Read</CODE> and source stream locations will
        continue to indicate the amount of data actually read and consumed
        from a virtually sequential input stream.
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if more input is available; false if the end of
                input was reached.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - From the <CODE>read</CODE> method of the Reader.</dd>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a></code> - If the buffer indexes are invalid.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input()"><code>Filter_Input()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Location(long)"><code>Next_Location(long)</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Buffer_Location()"><code>Buffer_Location()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Next_Index()"><code>Next_Index()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Ended()"><code>Ended()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Read_Limit(long)"><code>Read_Limit(long)</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Total_Read()"><code>Total_Read()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Size_Increment(int)"><code>Size_Increment(int)</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Is_Text(char)"><code>Is_Text(char)</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Non_Text_Limit(int)"><code>Non_Text_Limit(int)</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input(int)"><code>Filter_Input(int)</code></a></dd></dl>
</li>
</ul>
<a name="Is_Text(char)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Is_Text</h4>
<pre>protected&nbsp;boolean&nbsp;Is_Text(char&nbsp;character)</pre>
<div class="block">Tests if a character is considered to be text.
<P>
        Text is evaluated against the ASCII code set and includes all
        printable characters - values from 0x20 (' ') to 0x7E ('~')
        inclusive - plus the usual format control characters - HT, LF, VT,
        FF, and CR (0x9 to 0xD inclusive).
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>character</code> - The character to be tested.</dd>
<dt><span class="strong">Returns:</span></dt><dd>true if the character is text; false otherwise.</dd></dl>
</li>
</ul>
<a name="Filter_Input()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Filter_Input</h4>
<pre>public&nbsp;boolean&nbsp;Filter_Input()
                     throws <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Tests if the character source will be filtered on input.
<P>
        Some files - notably binary data files produced by DEC VMS systems
        - use a record structure composed of a leading binary size value
        (16-bits, LSB first) followed by size bytes of data. This is like
        Pascal strings (and just as cumbersome). In addition, if the size
        is odd then a zero-valued pad byte will be appended to the record
        (to force word alignment for all size values). Binary record size
        values are detected by testing the second (MSB) character obtained
        from the Reader (String character sources are not tested) for a
        value less than 32 (' ') but not 9 (HT), 10 (NL) or 13 (CR). This
        test for the presence of the binary size value depends on a few
        assumptions: 1) the Reader is positioned at the beginning of a
        potential binary size value (this is probably the beginng of the
        file or stream), 2) the second character of normal (unfiltered)
        input will not be unprintable, and 3) the first binary size value
        is less than 8k and outside the ranges (2304-2815) and (3328-3583).
        <B>N.B.</B>: This last assumption is rather risky, of course; but
        these records are very likely to be less than 2k in size. Of
        course, this also requires that any character encoding preserve the
        values of bytes in the stream.
<P>
        During character input a source that has sized records will be
        filtered: The record size bytes will be replaced with a LINE_BREAK
        (CR-LF) sequence, and any pad bytes will be replaced with a space
        character, thus providing a consistent character stream.
<P>
        When a String_Buffer_Reader is created its input filtering status
        is untested. If the input filtering status is untested when this
        method is used then the next two characters are read (if the source
        is a Reader) unconditionally - i.e. regardless if the source has
        already been read or characters otherwise put in the buffer - and
        they are tested. The results of the input source test update the
        input filtering status to either filtered or unfiltered, so
        subsequent use of this method will not repeat the input source test
        unless the input filtering status is reset to the initial untested
        state (which may be done by the <a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input(boolean)"><code><CODE>Filter_Input (boolean)</CODE></code></a> method.
<P>
        <B>Note</B>: To accommodate binary record size values the
        <CODE>Non_Text_Limit</CODE> threshold must be greater than 3
        (for a possible pad byte followed by two record size bytes).
<P></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if input filtering will be applied, false otherwise.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - If the Reader could not be read during the
                initial check.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input(boolean)"><code>Filter_Input(boolean)</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input(int)"><code>Filter_Input(int)</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Non_Text_Limit(int)"><code>Non_Text_Limit(int)</code></a></dd></dl>
</li>
</ul>
<a name="Filter_Input(boolean)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Filter_Input</h4>
<pre>public&nbsp;<a href="../../PIRL/Strings/String_Buffer_Reader.html" title="class in PIRL.Strings">String_Buffer_Reader</a>&nbsp;Filter_Input(boolean&nbsp;allow)</pre>
<div class="block">Enable or disable input filtering.
<P>
        If input filtering is to be allowed and it is currently not enabled, the
        input filtering status is reset to untested. If input filtering is not
        to be allowed it is unconditionally disabled.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>allow</code> - true if input filtering is allowed; false otherwise.</dd>
<dt><span class="strong">Returns:</span></dt><dd>This String_Buffer_Reader.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input()"><code>Filter_Input()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input(int)"><code>Filter_Input(int)</code></a></dd></dl>
</li>
</ul>
<a name="Filter_Input(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Filter_Input</h4>
<pre>protected&nbsp;void&nbsp;Filter_Input(int&nbsp;index)
                     throws <a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a>,
                            <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Filters the current contents of the character buffer, starting at the
        specified index and continuing to the end of the buffer contents.
<P>
        The details of the filtering implemented here is described by the
        <a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input()"><code><CODE>Filter_Input</CODE></code></a> test method.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>index</code> - The index in the character buffer where filtering
                is to start. Nothing is done if the index is invalid (i.e. < 0
                or >= the end of characters in the buffer).</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a></code> - An index for record size bytes
                or padding is invalid. Assuming that the filtering algorithm is
                bug free (8^]), then the input stream has been corrupted,
                possible due to inappropriate changes to its position by the
                application. It is very likely in this case that previous
                character buffer contents have been mangled as well.</dd>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - This implmentation doesn't do anything that
                could generate an IOException. However, the method is marked
                this way so sbuclass implementations that need to use the
                Reader may throw this exception.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input()"><code>Filter_Input()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#End_Index()"><code>End_Index()</code></a>, 
<a href="../../PIRL/Strings/String_Buffer_Reader.html#Record_Size(char, char)"><code>Record_Size(char, char)</code></a></dd></dl>
</li>
</ul>
<a name="Record_Size(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Record_Size</h4>
<pre>protected&nbsp;int&nbsp;Record_Size(int&nbsp;index)</pre>
<div class="block">Converts a 16-bit (in 2 sequential chars), LSB-first value at the
        buffer index to a record size value.
<P>
        This method is used by the input filter.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>index</code> - The index of the binary record size bytes in the buffer.</dd>
<dt><span class="strong">Returns:</span></dt><dd>A record size value.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Record_Size(char, char)"><code>Record_Size(char, char)</code></a></dd></dl>
</li>
</ul>
<a name="Record_Size(char, char)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Record_Size</h4>
<pre>protected static&nbsp;int&nbsp;Record_Size(char&nbsp;LSB,
              char&nbsp;MSB)</pre>
<div class="block">Converts two char values to a single int value, assuming that the
        first char value is the LSB and the second the MSB of a 16-bit
        integer.
<P>
        Bits 0-7 of the MSB are shifted left 8 bits and ORed with bits 0-7
        of the LSB to form the integer value.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>LSB</code> - The Least Significant Byte of the 16-bit record size value.</dd><dd><code>MSB</code> - The Most Significant Byte of the 16-bit record size value.</dd>
<dt><span class="strong">Returns:</span></dt><dd>A record size value.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../PIRL/Strings/String_Buffer_Reader.html#Filter_Input()"><code>Filter_Input()</code></a></dd></dl>
</li>
</ul>
<a name="Char_At(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Char_At</h4>
<pre>public&nbsp;char&nbsp;Char_At(long&nbsp;location)</pre>
<div class="block">Gets the character at the specified location in the virual stream.
<P>
        The current contents of the character buffer will be automatically
        extended to the specified location.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>location</code> - The location from which to get a character.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The char found at the location. If the location is invalid
                for any reason then the <CODE>INVALID_CHARACTER</CODE> is
                returned.</dd></dl>
</li>
</ul>
<a name="Substring(long, long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Substring</h4>
<pre>public&nbsp;<a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;Substring(long&nbsp;start,
               long&nbsp;end)
                 throws <a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a>,
                        <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Gets the substring including the characters from the start location
        up to, but not including, the end location in the virtual stream.
<P>
        The current contents of the character buffer will be automatically
        extended to include the specified locations. If the substring
        extends beyond the end of input location, then that portion up to
        the end of input will be returned. If both start and end locations
        are beyond the end of input, then an empty String will be returned.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>start</code> - The location of the first character of the substring.</dd><dd><code>end</code> - The location of end of the substring (the location
                immediately following the last character in the substring).</dd>
<dt><span class="strong">Returns:</span></dt><dd>The String from the start location, inclusive, to the end
                location, exclusive.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a></code> - A location is before the
                <CODE>Buffer_Location</CODE>, or start is greater than end.</dd>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - While reading characters to extend the buffer.</dd></dl>
</li>
</ul>
<a name="Skip_Over(long, java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Skip_Over</h4>
<pre>public&nbsp;long&nbsp;Skip_Over(long&nbsp;location,
             <a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;skip)
               throws <a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a>,
                      <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Skips over a character set in the virtual stream.
<P>
        Starting at the specified location find the location of the next
        character that is not in the skip string. The skip string is not a
        pattern; i.e. a character in the virtual stream that matches any
        character in the skip string is skipped during the search. The
        return location will be for a character that does not occur in the
        skip string.
<P>
        The character buffer will be extended until a non-skip character is
        found. <B>Note</B>: The character buffer will be extended to
        include all available input if all characters from the beginning
        location on are in the skip String.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>location</code> - The location from which to start the search.</dd><dd><code>skip</code> - The String containing characters to be skipped.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The location of the next character not in the skip String.
                This will be the <CODE>End_Location</CODE> if the end of input
                data is reached (i.e. all characters from the start location on
                are in the skip String).</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a></code> - The location is before the
                <CODE>Buffer_Location</CODE>.</dd>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - While reading characters to extend the buffer.</dd></dl>
</li>
</ul>
<a name="Skip_Until(long, java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Skip_Until</h4>
<pre>public&nbsp;long&nbsp;Skip_Until(long&nbsp;location,
              <a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;find)
                throws <a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a>,
                       <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Skips until a member of the character set is found in the virtual
        stream.
<P>
        Starting at the specified location find the location of the next
        character that is in the find string. The find string is not a
        pattern; i.e. a character in the virtual stream that matches any
        character in the find string satisfies the search. The return
        location will be for a character that occurs in the find string.
<P>
        The character buffer will be extended until a find character is
        found. <B>Note</B>: The character buffer will be extended to
        include all available input if all characters from the beginning
        location on are not in the find String.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>location</code> - The location from which to start the search.</dd><dd><code>find</code> - The String containing characters to be found.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The location of the next character also in the find String.
                If the end of input data is reached (i.e. all characters from
                the start location on are not in the find String), then -1 is
                returned.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a></code> - The location is before the
                <CODE>Buffer_Location</CODE>.</dd>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - While reading characters to extend the buffer.</dd></dl>
</li>
</ul>
<a name="Location_Of(long, java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Location_Of</h4>
<pre>public&nbsp;long&nbsp;Location_Of(long&nbsp;location,
               <a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pattern)
                 throws <a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a>,
                        <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Finds the next location of the pattern String in the virtual stream.
<P>
        Starting at the specified location find the location of the next
        occurance of the substring that matches the pattern String.
<P>
        The character buffer will be extended until the pattern substring
        is found. <B>Note</B>: The character buffer will be extended to
        include all available input if the pattern can not be found.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>location</code> - The location from which to start the search.</dd><dd><code>pattern</code> - The String to be found as a substring of the
                virtual stream.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The location of the beginning of the pattern substring. If
                the end of input data is reached without finding the pattern
                String, then -1 is returned.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a></code> - The location is before the
                <CODE>Buffer_Location</CODE>.</dd>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - While reading characters to extend the buffer.</dd></dl>
</li>
</ul>
<a name="Location_Of(long, char)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Location_Of</h4>
<pre>public&nbsp;long&nbsp;Location_Of(long&nbsp;location,
               char&nbsp;character)
                 throws <a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a>,
                        <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Finds the next location of the character in the virtual stream.
<P>
        Starting at the specified location find the next location of the
        specified character.
<P>
        The character buffer will be extended until the specified character
        is found. <B>Note</B>: The character buffer will be extended to
        include all available input if the character can not be found.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>location</code> - The location from which to start the search.</dd><dd><code>character</code> - The character to be found.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The location of the next occurance of the character in the
                virtual stream. If the end of input data is reached without
                finding the character, then -1 is returned.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a></code> - The location is before the
                <CODE>Buffer_Location</CODE>.</dd>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - While reading characters to extend the buffer.</dd></dl>
</li>
</ul>
<a name="Equals(long, java.lang.String)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Equals</h4>
<pre>public&nbsp;boolean&nbsp;Equals(long&nbsp;location,
             <a href="/usr/share/doc/default-jdk-doc/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pattern)
               throws <a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a>,
                      <a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Tests if the pattern equals the substring starting at the location.
<P>
        The character buffer will be extended as needed to include a
        substring starting at the specified location that is as long as the
        pattern String.
<P></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>location</code> - The location of the substring to compare.</dd><dd><code>pattern</code> - The String to compare against the substring.</dd>
<dt><span class="strong">Returns:</span></dt><dd>true if the substring equals the pattern String; false
                otherwise.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang">IndexOutOfBoundsException</a></code> - The location is before the
                <CODE>Buffer_Location</CODE>.</dd>
<dd><code><a href="/usr/share/doc/default-jdk-doc/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - While reading characters to extend the buffer.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../PIRL/Strings/String_Buffer.html" title="class in PIRL.Strings"><span class="strong">Prev Class</span></a></li>
<li><a href="../../PIRL/Strings/String_Utilities.html" title="class in PIRL.Strings"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?PIRL/Strings/String_Buffer_Reader.html" target="_top">Frames</a></li>
<li><a href="String_Buffer_Reader.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>