/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ /** * MODULE NOTES: * @update gess 4/1/98 * * This class is defines the basic interface between the * parser and the content sink. The parser will iterate * over the collection of tokens that it sees from the * tokenizer, coverting each related "group" into one of * these. This object gets passed to the sink, and is * then immediately reused. * * If you want to hang onto one of these, you should * make your own copy. * */ #ifndef NS_PARSERNODE__ #define NS_PARSERNODE__ #include "nsIParserNode.h" #include "nsHTMLTokens.h" #include "nsString.h" class nsHTMLParser; class nsCParserNode : public nsIParserNode { public: /** * Default constructor * @update gess5/11/98 * @param aToken is the token this node "refers" to */ nsCParserNode(CHTMLToken* aToken); /** * Destructor * @update gess5/11/98 */ ~nsCParserNode(); /** * Retrieve the name of the node * @update gess5/11/98 * @return string containing node name */ virtual const nsString& GetName() const; /** * Retrieve the text from the given node * @update gess5/11/98 * @return string containing node text */ virtual const nsString& GetText() const; /** * Retrieve skipped context from node * @update gess5/11/98 * @return string containing skipped content */ virtual const nsString& GetSkippedContent() const; /** * Retrieve the type of the parser node. * @update gess5/11/98 * @return node type. */ virtual PRInt32 GetNodeType() const; /** * Retrieve token type of parser node * @update gess5/11/98 * @return token type */ virtual PRInt32 GetTokenType() const; //*************************************** //methods for accessing key/value pairs //*************************************** /** * Retrieve the number of attributes in this node. * @update gess5/11/98 * @return count of attributes (may be 0) */ virtual PRInt32 GetAttributeCount(void) const; /** * Retrieve the key (of key/value pair) at given index * @update gess5/11/98 * @param anIndex is the index of the key you want * @return string containing key. */ virtual const nsString& GetKeyAt(PRInt32 anIndex) const; /** * Retrieve the value (of key/value pair) at given index * @update gess5/11/98 * @param anIndex is the index of the value you want * @return string containing value. */ virtual const nsString& GetValueAt(PRInt32 anIndex) const; /** * NOTE: When the node is an entity, this will translate the entity * to it's unicode value, and store it in aString. * @update gess5/11/98 * @param aString will contain the resulting unicode string value * @return int (unicode char or unicode index from table) */ virtual PRInt32 TranslateToUnicodeStr(nsString& aString) const; /** * * @update gess5/11/98 * @param * @return */ virtual void AddAttribute(CHTMLToken* aToken); /** * * @update gess5/11/98 * @param * @return */ virtual void SetSkippedContent(CHTMLToken* aToken); protected: PRInt32 mAttributeCount; CHTMLToken* mToken; CHTMLToken* mAttributes[20]; // XXX Ack! This needs to be dynamic! nsString mName; nsString mEmptyString; }; #endif