536 if (c == '\n' || |
536 if (c == '\n' || |
537 (c == '\r' && isExternal)) { |
537 (c == '\r' && isExternal)) { |
538 fCurrentEntity.lineNumber++; |
538 fCurrentEntity.lineNumber++; |
539 fCurrentEntity.columnNumber = 1; |
539 fCurrentEntity.columnNumber = 1; |
540 if (fCurrentEntity.position == fCurrentEntity.count) { |
540 if (fCurrentEntity.position == fCurrentEntity.count) { |
|
541 invokeListeners(1); |
541 fCurrentEntity.ch[0] = (char)c; |
542 fCurrentEntity.ch[0] = (char)c; |
542 load(1, false, true); |
543 load(1, false, false); |
543 } |
544 } |
544 if (c == '\r' && isExternal) { |
545 if (c == '\r' && isExternal) { |
545 if (fCurrentEntity.ch[fCurrentEntity.position++] != '\n') { |
546 if (fCurrentEntity.ch[fCurrentEntity.position++] != '\n') { |
546 fCurrentEntity.position--; |
547 fCurrentEntity.position--; |
547 } |
548 } |
668 |
669 |
669 // scan name |
670 // scan name |
670 int offset = fCurrentEntity.position; |
671 int offset = fCurrentEntity.position; |
671 if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) { |
672 if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) { |
672 if (++fCurrentEntity.position == fCurrentEntity.count) { |
673 if (++fCurrentEntity.position == fCurrentEntity.count) { |
|
674 invokeListeners(1); |
673 fCurrentEntity.ch[0] = fCurrentEntity.ch[offset]; |
675 fCurrentEntity.ch[0] = fCurrentEntity.ch[offset]; |
674 offset = 0; |
676 offset = 0; |
675 if (load(1, false, true)) { |
677 if (load(1, false, false)) { |
676 fCurrentEntity.columnNumber++; |
678 fCurrentEntity.columnNumber++; |
677 String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); |
679 String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); |
678 |
680 |
679 if (DEBUG_BUFFER) { |
681 if (DEBUG_BUFFER) { |
680 System.out.print(")scanName: "); |
682 System.out.print(")scanName: "); |
774 //as defined by production [5] in the XML 1.0 specification. |
776 //as defined by production [5] in the XML 1.0 specification. |
775 // Name ::= (Letter | '_' | ':') (NameChar)* |
777 // Name ::= (Letter | '_' | ':') (NameChar)* |
776 |
778 |
777 if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) { |
779 if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) { |
778 if (++fCurrentEntity.position == fCurrentEntity.count) { |
780 if (++fCurrentEntity.position == fCurrentEntity.count) { |
|
781 invokeListeners(1); |
779 fCurrentEntity.ch[0] = fCurrentEntity.ch[offset]; |
782 fCurrentEntity.ch[0] = fCurrentEntity.ch[offset]; |
780 offset = 0; |
783 offset = 0; |
781 |
784 |
782 if (load(1, false, true)) { |
785 if (load(1, false, false)) { |
783 fCurrentEntity.columnNumber++; |
786 fCurrentEntity.columnNumber++; |
784 //adding into symbol table. |
787 //adding into symbol table. |
785 //XXX We are trying to add single character in SymbolTable?????? |
788 //XXX We are trying to add single character in SymbolTable?????? |
786 String name = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); |
789 String name = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); |
787 qname.setValues(null, name, name, null); |
790 qname.setValues(null, name, name, null); |
904 |
907 |
905 // load more characters, if needed |
908 // load more characters, if needed |
906 if (fCurrentEntity.position == fCurrentEntity.count) { |
909 if (fCurrentEntity.position == fCurrentEntity.count) { |
907 load(0, true, true); |
910 load(0, true, true); |
908 } else if (fCurrentEntity.position == fCurrentEntity.count - 1) { |
911 } else if (fCurrentEntity.position == fCurrentEntity.count - 1) { |
|
912 invokeListeners(0); |
909 fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; |
913 fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; |
910 load(1, false, true); |
914 load(1, false, false); |
911 fCurrentEntity.position = 0; |
915 fCurrentEntity.position = 0; |
912 } |
916 } |
913 |
917 |
914 // normalize newlines |
918 // normalize newlines |
915 int offset = fCurrentEntity.position; |
919 int offset = fCurrentEntity.position; |
1052 } |
1056 } |
1053 // load more characters, if needed |
1057 // load more characters, if needed |
1054 if (fCurrentEntity.position == fCurrentEntity.count) { |
1058 if (fCurrentEntity.position == fCurrentEntity.count) { |
1055 load(0, true, true); |
1059 load(0, true, true); |
1056 } else if (fCurrentEntity.position == fCurrentEntity.count - 1) { |
1060 } else if (fCurrentEntity.position == fCurrentEntity.count - 1) { |
|
1061 invokeListeners(0); |
1057 fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; |
1062 fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; |
1058 load(1, false, true); |
1063 load(1, false, false); |
1059 fCurrentEntity.position = 0; |
1064 fCurrentEntity.position = 0; |
1060 } |
1065 } |
1061 |
1066 |
1062 // normalize newlines |
1067 // normalize newlines |
1063 int offset = fCurrentEntity.position; |
1068 int offset = fCurrentEntity.position; |
1425 } |
1430 } |
1426 return true; |
1431 return true; |
1427 } else if (c == '\n' && cc == '\r' && isExternal) { |
1432 } else if (c == '\n' && cc == '\r' && isExternal) { |
1428 // handle newlines |
1433 // handle newlines |
1429 if (fCurrentEntity.position == fCurrentEntity.count) { |
1434 if (fCurrentEntity.position == fCurrentEntity.count) { |
|
1435 invokeListeners(1); |
1430 fCurrentEntity.ch[0] = (char)cc; |
1436 fCurrentEntity.ch[0] = (char)cc; |
1431 load(1, false, true); |
1437 load(1, false, false); |
1432 } |
1438 } |
1433 fCurrentEntity.position++; |
1439 fCurrentEntity.position++; |
1434 if (fCurrentEntity.ch[fCurrentEntity.position] == '\n') { |
1440 if (fCurrentEntity.ch[fCurrentEntity.position] == '\n') { |
1435 fCurrentEntity.position++; |
1441 fCurrentEntity.position++; |
1436 } |
1442 } |
1500 // handle newlines |
1506 // handle newlines |
1501 if (c == '\n' || (isExternal && c == '\r')) { |
1507 if (c == '\n' || (isExternal && c == '\r')) { |
1502 fCurrentEntity.lineNumber++; |
1508 fCurrentEntity.lineNumber++; |
1503 fCurrentEntity.columnNumber = 1; |
1509 fCurrentEntity.columnNumber = 1; |
1504 if (fCurrentEntity.position == fCurrentEntity.count - 1) { |
1510 if (fCurrentEntity.position == fCurrentEntity.count - 1) { |
|
1511 invokeListeners(0); |
1505 fCurrentEntity.ch[0] = (char)c; |
1512 fCurrentEntity.ch[0] = (char)c; |
1506 entityChanged = load(1, true, true); |
1513 entityChanged = load(1, true, false); |
1507 if (!entityChanged){ |
1514 if (!entityChanged){ |
1508 // the load change the position to be 1, |
1515 // the load change the position to be 1, |
1509 // need to restore it when entity not changed |
1516 // need to restore it when entity not changed |
1510 fCurrentEntity.position = 0; |
1517 fCurrentEntity.position = 0; |
1511 }else if(fCurrentEntity == null){ |
1518 }else if(fCurrentEntity == null){ |