thanks Adams.....
you are correct actually I am not initializing member DOM_Node with in
struct
thats why i have to initialize it explicitly before using getNOdeNAme() etc
functions on it.
I am doing exactly the same thing as you suggested below.
like
Xml_DOM_Node_Impl* impl = new Xml_DOM_Node_Impl;
impl->domnode = n;
Xml_DOM_Node xml_domnode(impl);
DOMString domstring = xml_domnode.getNodeName();
so we shouls be fine now and there should not be any access violation errors
...am i correct ??
or still are there any chances of access violations ??
-----Original Message-----
From: Adams, David [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, June 12, 2001 11:02 AM
To: '[EMAIL PROTECTED]'
Subject: RE: wrapping Xerces API in my code !!
Has your DOM_Node object within your struct been initialized to a valid DOM
tree node? If not, when you call your 'DOMString
Xml_DOM_Node::getNodeName() const' and 'Xml_DOM_Node
Xml_DOM_Node::getParentNode() const' methods, you will get an Access
Violation. Outside of that, I can only suggest you run it through the
debugger and look at the variables that are getting the violation and see if
they appear valid. If they aren't, trace your stack backwards and see where
the failed to get set to a valid value.
p.s.
void main(void)
{
// assume this is some valid DOM_Node object
DOM_Node n;
// ERROR! your destructor will try to delete this stack variable. Be
careful here.
//Xml_DOM_Node_Impl impl;
//impl.domnode = n;
//Xml_DOM_Node xml_domnode(&impl);
// use this instead
Xml_DOM_Node_Impl* impl = new Xml_DOM_Node_Impl;
impl->domnode = n;
Xml_DOM_Node xml_domnode(impl);
DOMString domstring = xml_domnode.getNodeName();
}
> -----Original Message-----
> From: Awasthi, Anand [SMTP:[EMAIL PROTECTED]]
> Sent: Tuesday, June 12, 2001 10:22 AM
> To: '[EMAIL PROTECTED]'
> Subject: RE: wrapping Xerces API in my code !!
>
> thanks for quick repsonse Adams.
>
> Answer to your queries:
>
> 1. I dont want my clients to know about third party classes like DOM_Node
> when they construct Xml_DOM_Node. thats why i
> hidden them beneath my struct Xml_DOM_Node_Impl
>
> 2. and since i am constrcuting like Xml_DOM_Node(Xml_DOM_Node_Impl*)
> i cant pass DOM_Node in constructor.
>
>
>
> this code complies but I am getting Access violation all the time when i
> run
> this code.
> could you pls tell how to debug access violations ??
>
>
> thanks a lot
> Anand
>
>
>
>
>
>
>
>
>
>
>
>
>
> -----Original Message-----
> From: Adams, David [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, June 12, 2001 10:09 AM
> To: '[EMAIL PROTECTED]'
> Subject: RE: wrapping Xerces API in my code !!
>
>
> It compiles and it does run, but I don't understand what you are trying to
> do in a couple of spots.
>
> 1) unless you are deliberately trying to hide DOM_Node in that struct, or
> unless you deliberately left some additional stuff out of that struct for
> the sake of simplifying your email, I don't see why you don't just put the
> 'DOM_Node' directly in your class. You have a class that wraps a struct
> that
> wraps a DOM_Node. Why not just have a class that wraps DOM_Node ?
>
> class Xml_DOM_Node
> {
> public:
> Xml_DOM_Node(DOM_Node); // Xerces Referencing counting makes
> this essentially the same as 'DOM_Node&'
> ~Xml_DOM_Node();
> DOMString getNodeName() const;
> Xml_DOM_Node getParentNode() const;
> private:
> DOM_Node domnode;
> };
>
> 2) I don't understand why you are reassiging your DOM_Node value in this
> routine, but I don't know what you attend to do with your application. You
> will be pointing your wrapper class to some other node on the tree; maybe
> that's what you intended.
> Xml_DOM_Node Xml_DOM_Node::getParentNode() const
> {
> DOM_Node node =
> pdomnodeimpl->domnode.getParentNode();
> pdomnodeimpl->domnode = node;
> return Xml_DOM_Node(pdomnodeimpl);
> }
>
> /*
> // could this be what you really wanted?
> Xml_DOM_Node Xml_DOM_Node::getParentNode() const
> {
> DOM_Node node =
> pdomnodeimpl->domnode.getParentNode();
> return Xml_DOM_Node(node);
> }
> */
>
>
> > -----Original Message-----
> > From: anand awasthi [SMTP:[EMAIL PROTECTED]]
> > Sent: Tuesday, June 12, 2001 9:28 AM
> > To: [EMAIL PROTECTED]
> > Subject: wrapping Xerces API in my code !!
> >
> > Hi,
> >
> > I am trying to wrap Xerces API in my code in following
> > manner :
> >
> >
> > oni.h
> > ----------
> >
> > struct Xml_DOM_Node_Impl;
> > struct Xml_DOM_Node_Impl
> > {
> > DOM_Node domnode;
> > };
> >
> > class Xml_DOM_Node
> > {
> > public:
> > Xml_DOM_Node(Xml_DOM_Node_Impl*);
> > ~Xml_DOM_Node();
> > DOMString getNodeName() const;
> > Xml_DOM_Node getParentNode() const;
> > private:
> > Xml_DOM_Node_Impl* pdomnodeimpl;
> > };
> >
> >
> > -------------------------------------------
> >
> > oni.cpp
> > ---------
> >
> > #include "oni.h"
> > #include <xercesheaders>
> >
> >
> > Xml_DOM_Node::Xml_DOM_Node(Xml_DOM_Node_Impl* impl) :
> > pdomnodeimpl(impl)
> > {
> > }
> >
> > DOMString Xml_DOM_Node::getNodeName() const
> > {
> > return (pdomnodeimpl->domnode.getNodeName());
> > }
> >
> > Xml_DOM_Node Xml_DOM_Node::getParentNode() const
> > {
> > DOM_Node node =
> > pdomnodeimpl->domnode.getParentNode();
> > pdomnodeimpl->domnode = node;
> > return Xml_DOM_Node(pdomnodeimpl);
> > }
> >
> > Xml_DOM_Node::~Xml_DOM_Node()
> > {
> > delete pdomnodeimpl;
> > }
> >
> > could C++/Xerces gurus pls tell me that above code is
> > correct or not ?? if notr then pls suggest me better
> > ways.
> >
> > i would really appreciate that.
> >
> > thanks
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Get personalized email addresses from Yahoo! Mail - only $35
> > a year! http://personal.mail.yahoo.com/
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]