пишу врапер что-то типа такого :
class JXmlNode
{
public:
class JXmlDom * pXmlDoc;
ptrdiff_t ptNode; // хотeлось бы хранить тут ссылку на (ptrdiff_t &)MSXML::IXMLDOMNodePtr
std::wstring name;
size_t level;
std::vector<JXmlNode> lst_node; // list of children
std::map<std::wstring, std::wstring> lst_attributes; // name, value
JXmlNode * parent;
std::wstring text_section();
// methods
JXmlNode *SelectFirst(); // return first child node
JXmlNode( pfnMsg _fnMsg=NULL ) : level(0), parent(NULL), ptNode(0), pXmlDoc(0), {}
};
class JXmlDom
{
public:
ptrdiff_t ptDoc; .// хотeлось бы хранить тут ссылку на (ptrdiff_t &)MSXML::IXMLDOMDocumentPtr
JXmlNode m_root;
bool ReadXMLStream( const wchar_t* pXMLStream );
JXmlDom( wchar_t *file_name=NULL, pfnMsg _fnMsg = NULL );
JXmlDom& operator =( const JXmlDom& );
};
Дело в том что хочется скрыть в коде JXML.cpp реализацию
#import <msxml6.dll> rename_namespace("MSXML")
using namespace MSXML;
ну и решить проблему со спецификой майкрософтовских смартпоинтеров. — как их хранить в описании классов ?
Через кастинг типа
MSXML::IXMLDOMNodePtr &pNode = reinterpret_cast<MSXML::IXMLDOMNodePtr &>(ptNode);
можно только для случая если они существуют на время существования обьекта класса- вопрос где и как хранить ноды ?
в обычной практике их создают на стеке ?
MSXML::IXMLDOMNodePtr pNode = pDoc->selectSingleNode(L"*");
Здравствуйте, Lepsik, Вы писали:
L>>пишу врапер что-то типа такого :
L>неужели тен никого ктобы писал враппер для MSXML ?
Посмотри
здесь.
L>>>пишу врапер что-то типа такого :
AG>Посмотри здесь.
CComPtr<IXMLDOMComment>
как раз от этого я и хотел уйти. Мне бы хотелось иметь только POD типы в описании класса. Я может хоче запихать в dll-ку и вытащить красивый класс оттуда