Bug 482921 part 11 - Deduplicate the tokenizer loop in .cpp. r=Olli.Pettay.

This commit is contained in:
Henri Sivonen
2011-11-01 13:33:11 +02:00
parent d3c0af9751
commit 3ab6f79a66
4 changed files with 467 additions and 3211 deletions

View File

@@ -1340,7 +1340,7 @@ public class Tokenizer implements Locator {
*/
// CPPONLY: if (mViewSource) {
// CPPONLY: mViewSource.SetBuffer(buffer);
// CPPONLY: pos = stateLoopReportTransitions(state, c, pos, buffer.getBuffer(), false, returnState, buffer.getEnd());
// CPPONLY: pos = stateLoop(state, c, pos, buffer.getBuffer(), false, returnState, buffer.getEnd());
// CPPONLY: mViewSource.DropBuffer((pos == buffer.getEnd()) ? pos : pos + 1);
// CPPONLY: } else {
// CPPONLY: pos = stateLoop(state, c, pos, buffer.getBuffer(), false, returnState, buffer.getEnd());
@@ -3187,7 +3187,7 @@ public class Tokenizer implements Locator {
* second column of the named character references
* table).
*/
// CPPONLY: mViewSource.CompletedNamedCharacterReference();
// CPPONLY: completedNamedCharacterReference();
@Const @NoLength char[] val = NamedCharacters.VALUES[candidate];
if (
// [NOCPP[

File diff suppressed because it is too large Load Diff

View File

@@ -46,6 +46,7 @@
#include "nsAHtml5TreeBuilderState.h"
#include "nsHtml5Macros.h"
#include "nsHtml5Highlighter.h"
#include "nsHtml5TokenizerLoopPolicies.h"
class nsHtml5StreamParser;
@@ -217,8 +218,7 @@ class nsHtml5Tokenizer
void start();
bool tokenizeBuffer(nsHtml5UTF16Buffer* buffer);
private:
PRInt32 stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar* buf, bool reconsume, PRInt32 returnState, PRInt32 endPos);
PRInt32 stateLoopReportTransitions(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar* buf, bool reconsume, PRInt32 returnState, PRInt32 endPos);
template<class P> PRInt32 stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar* buf, bool reconsume, PRInt32 returnState, PRInt32 endPos);
void initDoctypeFields();
inline void adjustDoubleHyphenAndAppendToLongStrBufCarriageReturn()
{

View File

@@ -0,0 +1,68 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is HTML5 View Source code.
*
* The Initial Developer of the Original Code is
* Mozilla Foundation.
* Portions created by the Initial Developer are Copyright (C) 2011
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Henri Sivonen <hsivonen@iki.fi>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef nsHtml5TokenizerLoopPolicies_h_
#define nsHtml5TokenizerLoopPolicies_h_
struct nsHtml5SilentPolicy
{
static const bool viewingSource = false;
static PRInt32 transition(nsHtml5Highlighter* aHighlighter,
PRInt32 aState,
bool aReconsume,
PRInt32 aPos) {
return aState;
}
static void completedNamedCharacterReference(nsHtml5Highlighter* aHighlighter) {
}
};
struct nsHtml5ViewSourcePolicy
{
static const bool viewingSource = true;
static PRInt32 transition(nsHtml5Highlighter* aHighlighter,
PRInt32 aState,
bool aReconsume,
PRInt32 aPos) {
return aHighlighter->Transition(aState, aReconsume, aPos);
}
static void completedNamedCharacterReference(nsHtml5Highlighter* aHighlighter) {
aHighlighter->CompletedNamedCharacterReference();
}
};
#endif // nsHtml5TokenizerLoopPolicies_h_