more WIP for DOM/paste API's

git-svn-id: svn://10.0.0.236/trunk@30308 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
rickg%netscape.com
1999-05-05 00:55:54 +00:00
parent b9a691086d
commit 01d2a451f2
6 changed files with 146 additions and 118 deletions

View File

@@ -83,7 +83,7 @@ enum eStreamState {eNone,eOnStart,eOnDataAvail,eOnStop};
class nsITagStack {
public:
virtual void Push(PRUnichar* aTag)=0;
virtual PRUnichar* Pop(PRUnichar* aTag)=0;
virtual PRUnichar* Pop(void)=0;
virtual PRUnichar* TagAt(PRUint32 anIndex)=0;
virtual PRUint32 GetSize(void)=0;
};
@@ -147,6 +147,13 @@ class nsIParser : public nsISupports {
*/
virtual void SetDocumentCharset(nsString& aCharset, nsCharsetSource aSource)=0;
/**
* Call this to get a newly constructed tagstack
* @update gess 5/05/99
* @param aTagStack is an out parm that will contain your result
* @return NS_OK if successful, or NS_HTMLPARSER_MEMORY_ERROR on error
*/
virtual nsresult CreateTagStack(nsITagStack** aTagStack)=0;
/******************************************************************************************
@@ -198,23 +205,14 @@ class nsIParser : public nsISupports {
#define NS_ERROR_HTMLPARSER_BADURL NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1005)
#define NS_ERROR_HTMLPARSER_INVALIDPARSERCONTEXT NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1006)
#define NS_ERROR_HTMLPARSER_INTERRUPTED NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1007)
#define NS_ERROR_HTMLPARSER_BADTOKENIZER NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1008)
#define NS_ERROR_HTMLPARSER_BADATTRIBUTE NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1009)
#define NS_ERROR_HTMLPARSER_UNRESOLVEDDTD NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1010)
#define NS_ERROR_HTMLPARSER_MISPLACED NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1011)
#define NS_ERROR_HTMLPARSER_BLOCK NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1008)
#define NS_ERROR_HTMLPARSER_BADTOKENIZER NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1009)
#define NS_ERROR_HTMLPARSER_BADATTRIBUTE NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1010)
#define NS_ERROR_HTMLPARSER_UNRESOLVEDDTD NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1011)
#define NS_ERROR_HTMLPARSER_MISPLACED NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1012)
#define NS_ERROR_HTMLPARSER_MEMORYFAILURE NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1013)
/**
* Return codes for parsing routines.
* @update vidur 12/11/98
*
* NS_ERROR_HTMLPARSER_BLOCK indicates that the parser should
* block further parsing until it gets a Unblock() method call.
* NS_ERROR_HTMLPARSER_CONTINUE indicates that the parser should
* continue parsing
*/
#define NS_ERROR_HTMLPARSER_BLOCK NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1008)
#define NS_ERROR_HTMLPARSER_CONTINUE NS_OK
#define NS_ERROR_HTMLPARSER_CONTINUE NS_OK
const PRInt32 kEOF = NS_ERROR_HTMLPARSER_EOF;

View File

@@ -128,13 +128,51 @@ public:
nsString nsParser::gHackMetaCharset = "";
nsString nsParser::gHackMetaCharsetURL = "";
//----------------------------------------
//-------------------------------------------------------------------------
CSharedParserObjects& GetSharedObjects() {
static CSharedParserObjects gSharedParserObjects;
return gSharedParserObjects;
}
/**********************************************************************************
This class is used as an interface between an external agent (like the DOM) and
the parser. It will contain a stack full of tagnames, which is used in our
parser/paste API's.
**********************************************************************************/
class nsTagStack : public nsITagStack {
public:
nsTagStack() : nsITagStack(), mTags(0) {
}
virtual void Push(PRUnichar* aTag){
mTags.Push(aTag);
}
virtual PRUnichar* Pop(void){
PRUnichar* result=(PRUnichar*)mTags.Pop();
return result;
}
virtual PRUnichar* TagAt(PRUint32 anIndex){
PRUnichar* result=0;
if(anIndex<(PRUint32)mTags.GetSize())
result=(PRUnichar*)mTags.ObjectAt(anIndex);
return result;
}
virtual PRUint32 GetSize(void){
return mTags.GetSize();
}
nsDeque mTags; //will hold a deque of prunichars...
};
//-------------------------------------------------------------------------
/**
* default constructor
*
@@ -1135,32 +1173,15 @@ void nsParser::DebugDumpSource(ostream& aStream) {
}
}
/**********************************************************************************
This class is used as an interface between an external agent (like the DOM) and
the parser. It will contain a stack full of tagnames, which is used in our
parser/paste API's.
**********************************************************************************/
nsTagStack::nsTagStack() : nsITagStack(), mTags(0) {
}
void nsTagStack::Push(PRUnichar* aTag) {
mTags.Push(aTag);
}
PRUnichar* nsTagStack::Pop(void) {
PRUnichar* result=(PRUnichar*)mTags.Pop();
return result;
}
PRUnichar* nsTagStack::TagAt(PRUint32 anIndex) {
PRUnichar* result=0;
if(anIndex<(PRUint32)mTags.GetSize())
result=(PRUnichar*)mTags.ObjectAt(anIndex);
return result;
}
PRUint32 nsTagStack::GetSize(void) {
return mTags.GetSize();
/**
* Call this to get a newly constructed tagstack
* @update gess 5/05/99
* @param aTagStack is an out parm that will contain your result
* @return NS_OK if successful, or NS_HTMLPARSER_MEMORY_ERROR on error
*/
nsresult nsParser::CreateTagStack(nsITagStack** aTagStack){
*aTagStack=new nsTagStack();
if(*aTagStack)
return NS_OK;
return NS_ERROR_HTMLPARSER_MEMORYFAILURE;
}

View File

@@ -251,6 +251,14 @@ friend class CTokenHandler;
*/
virtual nsITokenizer* GetTokenizer(void);
/**
* Call this to get a newly constructed tagstack
* @update gess 5/05/99
* @param aTagStack is an out parm that will contain your result
* @return NS_OK if successful, or NS_HTMLPARSER_MEMORY_ERROR on error
*/
virtual nsresult CreateTagStack(nsITagStack** aTagStack);
/*
* The following two should be removed once our Meta Charset work complete
*/
@@ -346,18 +354,5 @@ protected:
};
class nsTagStack : public nsITagStack {
public:
nsTagStack();
virtual void Push(PRUnichar* aTag);
virtual PRUnichar* Pop(void);
virtual PRUnichar* TagAt(PRUint32 anIndex);
virtual PRUint32 GetSize(void);
nsDeque mTags; //will hold a deque of prunichars...
};
#endif