ReactOS 0.4.16-dev-2208-g6350669
msxml_private.h File Reference
#include "dispex.h"
#include "wine/list.h"
#include "msxml_dispex.h"
#include <libxslt/documents.h>
Include dependency graph for msxml_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  xslprocessor_par
 
struct  xslprocessor_params
 
struct  _xmlnode
 
struct  nodemap_funcs
 
struct  enumvariant_funcs
 

Macros

#define LIBXML2_LOG_CALLBACK   WINAPIV __WINE_PRINTF_ATTR(2,3)
 
#define LIBXML2_CALLBACK_TRACE(caller, msg, ap)    wineXmlCallbackLog(#caller, XML_ERR_NONE, msg, ap)
 
#define LIBXML2_CALLBACK_WARN(caller, msg, ap)    wineXmlCallbackLog(#caller, XML_ERR_WARNING, msg, ap)
 
#define LIBXML2_CALLBACK_ERR(caller, msg, ap)    wineXmlCallbackLog(#caller, XML_ERR_ERROR, msg, ap)
 
#define LIBXML2_CALLBACK_SERROR(caller, err)   wineXmlCallbackError(#caller, err)
 
#define E_XML_ELEMENT_UNDECLARED   0xC00CE00D
 
#define E_XML_ELEMENT_ID_NOT_FOUND   0xC00CE00E
 
#define E_XML_EMPTY_NOT_ALLOWED   0xC00CE011
 
#define E_XML_ELEMENT_NOT_COMPLETE   0xC00CE012
 
#define E_XML_ROOT_NAME_MISMATCH   0xC00CE013
 
#define E_XML_INVALID_CONTENT   0xC00CE014
 
#define E_XML_ATTRIBUTE_NOT_DEFINED   0xC00CE015
 
#define E_XML_ATTRIBUTE_FIXED   0xC00CE016
 
#define E_XML_ATTRIBUTE_VALUE   0xC00CE017
 
#define E_XML_ILLEGAL_TEXT   0xC00CE018
 
#define E_XML_REQUIRED_ATTRIBUTE_MISSING   0xC00CE020
 
#define NODE_PRIV_TRAILING_IGNORABLE_WS   0x40000000
 
#define NODE_PRIV_CHILD_IGNORABLE_WS   0x80000000
 
#define NODE_PRIV_REFCOUNT_MASK   ~(NODE_PRIV_TRAILING_IGNORABLE_WS|NODE_PRIV_CHILD_IGNORABLE_WS)
 

Typedefs

typedef enum _XDR_DT XDR_DT
 
typedef struct _xmlnode xmlnode
 

Enumerations

enum  _XDR_DT {
  DT_INVALID = -1 , DT_BIN_BASE64 , DT_BIN_HEX , DT_BOOLEAN ,
  DT_CHAR , DT_DATE , DT_DATE_TZ , DT_DATETIME ,
  DT_DATETIME_TZ , DT_ENTITY , DT_ENTITIES , DT_ENUMERATION ,
  DT_FIXED_14_4 , DT_FLOAT , DT_I1 , DT_I2 ,
  DT_I4 , DT_I8 , DT_ID , DT_IDREF ,
  DT_IDREFS , DT_INT , DT_NMTOKEN , DT_NMTOKENS ,
  DT_NOTATION , DT_NUMBER , DT_R4 , DT_R8 ,
  DT_STRING , DT_TIME , DT_TIME_TZ , DT_UI1 ,
  DT_UI2 , DT_UI4 , DT_UI8 , DT_URI ,
  DT_UUID , LAST_DT
}
 

Functions

const CLSIDDOMDocument_version (MSXML_VERSION v)
 
void schemasInit (void)
 
void schemasCleanup (void)
 
IUnknowncreate_domdoc (xmlNodePtr)
 
IUnknowncreate_xmldoc (void)
 
IXMLDOMNodecreate_node (xmlNodePtr)
 
IUnknowncreate_element (xmlNodePtr)
 
IUnknowncreate_attribute (xmlNodePtr, BOOL)
 
IUnknowncreate_text (xmlNodePtr)
 
IUnknowncreate_pi (xmlNodePtr)
 
IUnknowncreate_comment (xmlNodePtr)
 
IUnknowncreate_cdata (xmlNodePtr)
 
IXMLDOMNodeListcreate_children_nodelist (xmlNodePtr)
 
IXMLDOMNamedNodeMapcreate_nodemap (xmlNodePtr, const struct nodemap_funcs *)
 
IUnknowncreate_doc_fragment (xmlNodePtr)
 
IUnknowncreate_doc_entity_ref (xmlNodePtr)
 
IUnknowncreate_doc_type (xmlNodePtr)
 
HRESULT create_selection (xmlNodePtr, xmlChar *, IXMLDOMNodeList **)
 
HRESULT create_enumvariant (IUnknown *, BOOL, const struct enumvariant_funcs *, IEnumVARIANT **)
 
HRESULT create_dom_implementation (IXMLDOMImplementation **obj)
 
xmlNodePtr xmlNodePtr_from_domnode (IXMLDOMNode *iface, xmlElementType type)
 
xmlCharxmlChar_from_wchar (LPCWSTR str)
 
void xmldoc_init (xmlDocPtr doc, MSXML_VERSION version)
 
LONG xmldoc_add_ref (xmlDocPtr doc)
 
LONG xmldoc_release (xmlDocPtr doc)
 
LONG xmldoc_add_refs (xmlDocPtr doc, LONG refs)
 
LONG xmldoc_release_refs (xmlDocPtr doc, LONG refs)
 
void xmlnode_add_ref (xmlNodePtr node)
 
void xmlnode_release (xmlNodePtr node)
 
int xmlnode_get_inst_cnt (xmlnode *node)
 
HRESULT xmldoc_add_orphan (xmlDocPtr doc, xmlNodePtr node)
 
HRESULT xmldoc_remove_orphan (xmlDocPtr doc, xmlNodePtr node)
 
void xmldoc_link_xmldecl (xmlDocPtr doc, xmlNodePtr node)
 
xmlNodePtr xmldoc_unlink_xmldecl (xmlDocPtr doc)
 
MSXML_VERSION xmldoc_version (xmlDocPtr doc)
 
HRESULT XMLElement_create (xmlNodePtr node, LPVOID *ppObj, BOOL own)
 
void wineXmlCallbackLog (char const *caller, xmlErrorLevel lvl, char const *msg, va_list ap)
 
void wineXmlCallbackError (char const *caller, const xmlError *err)
 
BOOL is_preserving_whitespace (xmlNodePtr node)
 
BOOL is_xpathmode (const xmlDocPtr doc)
 
void set_xpathmode (xmlDocPtr doc, BOOL xpath)
 
void init_xmlnode (xmlnode *, xmlNodePtr, IXMLDOMNode *, dispex_static_data_t *)
 
void destroy_xmlnode (xmlnode *)
 
BOOL node_query_interface (xmlnode *, REFIID, void **)
 
xmlnodeget_node_obj (IXMLDOMNode *)
 
HRESULT node_append_child (xmlnode *, IXMLDOMNode *, IXMLDOMNode **)
 
HRESULT node_get_nodeName (xmlnode *, BSTR *)
 
HRESULT node_get_content (xmlnode *, VARIANT *)
 
HRESULT node_set_content (xmlnode *, LPCWSTR)
 
HRESULT node_put_value (xmlnode *, VARIANT *)
 
HRESULT node_put_value_escaped (xmlnode *, VARIANT *)
 
HRESULT node_get_parent (xmlnode *, IXMLDOMNode **)
 
HRESULT node_get_child_nodes (xmlnode *, IXMLDOMNodeList **)
 
HRESULT node_get_first_child (xmlnode *, IXMLDOMNode **)
 
HRESULT node_get_last_child (xmlnode *, IXMLDOMNode **)
 
HRESULT node_get_previous_sibling (xmlnode *, IXMLDOMNode **)
 
HRESULT node_get_next_sibling (xmlnode *, IXMLDOMNode **)
 
HRESULT node_insert_before (xmlnode *, IXMLDOMNode *, const VARIANT *, IXMLDOMNode **)
 
HRESULT node_replace_child (xmlnode *, IXMLDOMNode *, IXMLDOMNode *, IXMLDOMNode **)
 
HRESULT node_put_text (xmlnode *, BSTR)
 
HRESULT node_get_xml (xmlnode *, BOOL, BSTR *)
 
HRESULT node_clone (xmlnode *, VARIANT_BOOL, IXMLDOMNode **)
 
HRESULT node_get_prefix (xmlnode *, BSTR *)
 
HRESULT node_get_base_name (xmlnode *, BSTR *)
 
HRESULT node_get_namespaceURI (xmlnode *, BSTR *)
 
HRESULT node_remove_child (xmlnode *, IXMLDOMNode *, IXMLDOMNode **)
 
HRESULT node_has_childnodes (const xmlnode *, VARIANT_BOOL *)
 
HRESULT node_get_owner_doc (const xmlnode *, IXMLDOMDocument **)
 
HRESULT node_get_text (const xmlnode *, BSTR *)
 
HRESULT node_select_nodes (const xmlnode *, BSTR, IXMLDOMNodeList **)
 
HRESULT node_select_singlenode (const xmlnode *, BSTR, IXMLDOMNode **)
 
HRESULT node_transform_node (const xmlnode *, IXMLDOMNode *, BSTR *)
 
HRESULT node_transform_node_params (const xmlnode *, IXMLDOMNode *, BSTR *, ISequentialStream *, const struct xslprocessor_params *)
 
HRESULT node_create_supporterrorinfo (const tid_t *, void **)
 
HRESULT get_domdoc_from_xmldoc (xmlDocPtr xmldoc, IXMLDOMDocument3 **document)
 
HRESULT SchemaCache_validate_tree (IXMLDOMSchemaCollection2 *, xmlNodePtr)
 
XDR_DT SchemaCache_get_node_dt (IXMLDOMSchemaCollection2 *, xmlNodePtr)
 
HRESULT cache_from_doc_ns (IXMLDOMSchemaCollection2 *, xmlnode *)
 
XDR_DT str_to_dt (xmlChar const *str, int len)
 
XDR_DT bstr_to_dt (OLECHAR const *bstr, int len)
 
xmlChar constdt_to_str (XDR_DT dt)
 
const chardebugstr_dt (XDR_DT dt)
 
OLECHAR constdt_to_bstr (XDR_DT dt)
 
HRESULT dt_validate (XDR_DT dt, xmlChar const *content)
 
BSTR EnsureCorrectEOL (BSTR)
 
xmlChartagName_to_XPath (const BSTR tagName)
 
HRESULT dom_pi_put_xml_decl (IXMLDOMNode *node, BSTR data)
 
xmlDocPtr xslt_doc_default_loader (const xmlChar *uri, xmlDictPtr dict, int options, void *_ctxt, xsltLoadType type)
 
static BSTR bstr_from_xmlChar (const xmlChar *str)
 
static xmlCharxmlchar_from_wcharn (const WCHAR *str, int nchars, BOOL use_xml_alloc)
 
static xmlCharxmlchar_from_wchar (const WCHAR *str)
 
static xmlCharstrdupxmlChar (const xmlChar *str)
 
static HRESULT return_null_node (IXMLDOMNode **p)
 
static HRESULT return_null_ptr (void **p)
 
static HRESULT return_null_var (VARIANT *p)
 
static HRESULT return_null_bstr (BSTR *p)
 
static HRESULT return_var_false (VARIANT_BOOL *p)
 
IXMLDOMParseErrorcreate_parseError (LONG code, BSTR url, BSTR reason, BSTR srcText, LONG line, LONG linepos, LONG filepos)
 
HRESULT SchemaCache_create (MSXML_VERSION, void **)
 
HRESULT XMLDocument_create (void **)
 
HRESULT SAXXMLReader_create (MSXML_VERSION, void **)
 
HRESULT SAXAttributes_create (MSXML_VERSION, void **)
 
HRESULT XMLHTTPRequest_create (void **)
 
HRESULT ServerXMLHTTP_create (void **)
 
HRESULT XSLTemplate_create (void **)
 
HRESULT MXWriter_create (MSXML_VERSION, void **)
 
HRESULT MXNamespaceManager_create (void **)
 
HRESULT XMLParser_create (void **)
 
HRESULT XMLView_create (void **)
 

Variables

HINSTANCE MSXML_hInstance
 

Macro Definition Documentation

◆ E_XML_ATTRIBUTE_FIXED

#define E_XML_ATTRIBUTE_FIXED   0xC00CE016

Definition at line 365 of file msxml_private.h.

◆ E_XML_ATTRIBUTE_NOT_DEFINED

#define E_XML_ATTRIBUTE_NOT_DEFINED   0xC00CE015

Definition at line 364 of file msxml_private.h.

◆ E_XML_ATTRIBUTE_VALUE

#define E_XML_ATTRIBUTE_VALUE   0xC00CE017

Definition at line 366 of file msxml_private.h.

◆ E_XML_ELEMENT_ID_NOT_FOUND

#define E_XML_ELEMENT_ID_NOT_FOUND   0xC00CE00E

Definition at line 358 of file msxml_private.h.

◆ E_XML_ELEMENT_NOT_COMPLETE

#define E_XML_ELEMENT_NOT_COMPLETE   0xC00CE012

Definition at line 361 of file msxml_private.h.

◆ E_XML_ELEMENT_UNDECLARED

#define E_XML_ELEMENT_UNDECLARED   0xC00CE00D

Definition at line 357 of file msxml_private.h.

◆ E_XML_EMPTY_NOT_ALLOWED

#define E_XML_EMPTY_NOT_ALLOWED   0xC00CE011

Definition at line 360 of file msxml_private.h.

◆ E_XML_ILLEGAL_TEXT

#define E_XML_ILLEGAL_TEXT   0xC00CE018

Definition at line 367 of file msxml_private.h.

◆ E_XML_INVALID_CONTENT

#define E_XML_INVALID_CONTENT   0xC00CE014

Definition at line 363 of file msxml_private.h.

◆ E_XML_REQUIRED_ATTRIBUTE_MISSING

#define E_XML_REQUIRED_ATTRIBUTE_MISSING   0xC00CE020

Definition at line 369 of file msxml_private.h.

◆ E_XML_ROOT_NAME_MISMATCH

#define E_XML_ROOT_NAME_MISMATCH   0xC00CE013

Definition at line 362 of file msxml_private.h.

◆ LIBXML2_CALLBACK_ERR

#define LIBXML2_CALLBACK_ERR (   caller,
  msg,
  ap 
)     wineXmlCallbackLog(#caller, XML_ERR_ERROR, msg, ap)

Definition at line 181 of file msxml_private.h.

◆ LIBXML2_CALLBACK_SERROR

#define LIBXML2_CALLBACK_SERROR (   caller,
  err 
)    wineXmlCallbackError(#caller, err)

Definition at line 184 of file msxml_private.h.

◆ LIBXML2_CALLBACK_TRACE

#define LIBXML2_CALLBACK_TRACE (   caller,
  msg,
  ap 
)     wineXmlCallbackLog(#caller, XML_ERR_NONE, msg, ap)

Definition at line 175 of file msxml_private.h.

◆ LIBXML2_CALLBACK_WARN

#define LIBXML2_CALLBACK_WARN (   caller,
  msg,
  ap 
)     wineXmlCallbackLog(#caller, XML_ERR_WARNING, msg, ap)

Definition at line 178 of file msxml_private.h.

◆ LIBXML2_LOG_CALLBACK

#define LIBXML2_LOG_CALLBACK   WINAPIV __WINE_PRINTF_ATTR(2,3)

Definition at line 173 of file msxml_private.h.

◆ NODE_PRIV_CHILD_IGNORABLE_WS

#define NODE_PRIV_CHILD_IGNORABLE_WS   0x80000000

Definition at line 372 of file msxml_private.h.

◆ NODE_PRIV_REFCOUNT_MASK

Definition at line 373 of file msxml_private.h.

◆ NODE_PRIV_TRAILING_IGNORABLE_WS

#define NODE_PRIV_TRAILING_IGNORABLE_WS   0x40000000

Definition at line 371 of file msxml_private.h.

Typedef Documentation

◆ XDR_DT

typedef enum _XDR_DT XDR_DT

◆ xmlnode

Enumeration Type Documentation

◆ _XDR_DT

Enumerator
DT_INVALID 
DT_BIN_BASE64 
DT_BIN_HEX 
DT_BOOLEAN 
DT_CHAR 
DT_DATE 
DT_DATE_TZ 
DT_DATETIME 
DT_DATETIME_TZ 
DT_ENTITY 
DT_ENTITIES 
DT_ENUMERATION 
DT_FIXED_14_4 
DT_FLOAT 
DT_I1 
DT_I2 
DT_I4 
DT_I8 
DT_ID 
DT_IDREF 
DT_IDREFS 
DT_INT 
DT_NMTOKEN 
DT_NMTOKENS 
DT_NOTATION 
DT_NUMBER 
DT_R4 
DT_R8 
DT_STRING 
DT_TIME 
DT_TIME_TZ 
DT_UI1 
DT_UI2 
DT_UI4 
DT_UI8 
DT_URI 
DT_UUID 
LAST_DT 

Definition at line 40 of file msxml_private.h.

40 {
41 DT_INVALID = -1,
45 DT_CHAR,
46 DT_DATE,
55 DT_I1,
56 DT_I2,
57 DT_I4,
58 DT_I8,
59 DT_ID,
62 DT_INT,
67 DT_R4,
68 DT_R8,
70 DT_TIME,
72 DT_UI1,
73 DT_UI2,
74 DT_UI4,
75 DT_UI8,
76 DT_URI,
77 DT_UUID,
79} XDR_DT;
enum _XDR_DT XDR_DT
@ DT_I4
Definition: msxml_private.h:57
@ DT_NMTOKEN
Definition: msxml_private.h:63
@ DT_ID
Definition: msxml_private.h:59
@ DT_TIME_TZ
Definition: msxml_private.h:71
@ DT_NUMBER
Definition: msxml_private.h:66
@ DT_FIXED_14_4
Definition: msxml_private.h:53
@ DT_NMTOKENS
Definition: msxml_private.h:64
@ DT_URI
Definition: msxml_private.h:76
@ DT_DATE_TZ
Definition: msxml_private.h:47
@ DT_INVALID
Definition: msxml_private.h:41
@ DT_UI4
Definition: msxml_private.h:74
@ DT_R8
Definition: msxml_private.h:68
@ DT_DATETIME_TZ
Definition: msxml_private.h:49
@ DT_STRING
Definition: msxml_private.h:69
@ DT_ENTITIES
Definition: msxml_private.h:51
@ DT_FLOAT
Definition: msxml_private.h:54
@ DT_DATETIME
Definition: msxml_private.h:48
@ DT_BIN_HEX
Definition: msxml_private.h:43
@ DT_I1
Definition: msxml_private.h:55
@ DT_UI8
Definition: msxml_private.h:75
@ DT_DATE
Definition: msxml_private.h:46
@ LAST_DT
Definition: msxml_private.h:78
@ DT_UI2
Definition: msxml_private.h:73
@ DT_BIN_BASE64
Definition: msxml_private.h:42
@ DT_I2
Definition: msxml_private.h:56
@ DT_ENTITY
Definition: msxml_private.h:50
@ DT_ENUMERATION
Definition: msxml_private.h:52
@ DT_IDREF
Definition: msxml_private.h:60
@ DT_R4
Definition: msxml_private.h:67
@ DT_UI1
Definition: msxml_private.h:72
@ DT_BOOLEAN
Definition: msxml_private.h:44
@ DT_CHAR
Definition: msxml_private.h:45
@ DT_TIME
Definition: msxml_private.h:70
@ DT_IDREFS
Definition: msxml_private.h:61
@ DT_NOTATION
Definition: msxml_private.h:65
@ DT_I8
Definition: msxml_private.h:58
@ DT_INT
Definition: msxml_private.h:62
@ DT_UUID
Definition: msxml_private.h:77

Function Documentation

◆ bstr_from_xmlChar()

static BSTR bstr_from_xmlChar ( const xmlChar str)
inlinestatic

Definition at line 249 of file msxml_private.h.

250{
251 BSTR ret = NULL;
252
253 if(str) {
256 if(ret)
258 }
259 else
261
262 return ret;
263}
#define NULL
Definition: types.h:112
OLECHAR * BSTR
Definition: compat.h:2293
#define MultiByteToWideChar
Definition: compat.h:110
return ret
Definition: mutex.c:146
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
const WCHAR * str
#define CP_UTF8
Definition: nls.h:20
const char * LPCSTR
Definition: xmlstorage.h:183

Referenced by alloc_element_entry(), domattr_get_namespaceURI(), domattr_get_prefix(), domdoc_get_xml(), domelem_get_named_item(), domelem_get_tagName(), domelem_getAttribute(), domelem_remove_named_item(), domtext_get_data(), find_element_uri(), isaxlocator_getPublicId(), isaxlocator_getSystemId(), libxmlStartDocument(), node_get_base_name(), node_get_content(), node_get_namespaceURI(), node_get_prefix(), node_get_text(), node_get_xml(), pooled_bstr_from_xmlChar(), QName_from_xmlChar(), SAXAttributes_populate(), schema_cache_get_namespaceURI(), variant_from_dt(), wineXmlOpenCallback(), xmldoc_get_doctype(), xmldoc_get_version(), xmlelem_get_tagName(), xmlelem_get_text(), xmlelem_getAttribute(), and xslt_doc_get_uri().

◆ bstr_to_dt()

XDR_DT bstr_to_dt ( OLECHAR const bstr,
int  len 
)

Definition at line 555 of file schema.c.

556{
557 DWORD hash = dt_hash_bstr(bstr, len);
558 XDR_DT dt = DT_INVALID;
559
560 if (hash <= DT_MAX_HASH_VALUE)
561 dt = DT_lookup_table[hash];
562
563 if (dt != DT_INVALID && lstrcmpiW(bstr, DT_wstring_table[dt]) == 0)
564 return dt;
565
566 return DT_INVALID;
567}
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4265
static const WCHAR *const DT_wstring_table[LAST_DT]
Definition: schema.c:439
#define DT_MAX_HASH_VALUE
Definition: schema.c:124
static const XDR_DT DT_lookup_table[]
Definition: schema.c:479
static DWORD dt_hash_bstr(OLECHAR const *bstr, int len)
Definition: schema.c:356
Definition: _hash_fun.h:40

Referenced by domelem_put_dataType().

◆ cache_from_doc_ns()

HRESULT cache_from_doc_ns ( IXMLDOMSchemaCollection2 iface,
xmlnode node 
)

Definition at line 1028 of file schema.c.

1029{
1031 static const xmlChar query[] = "//*/namespace::*";
1032 xmlXPathObjectPtr nodeset;
1033 xmlXPathContextPtr ctxt;
1034
1035 This->read_only = 1;
1036
1037 ctxt = xmlXPathNewContext(node->node->doc);
1038
1039 nodeset = xmlXPathEvalExpression(query, ctxt);
1040 xmlXPathFreeContext(ctxt);
1041
1042 if (nodeset)
1043 {
1044 int pos = 0, len = xmlXPathNodeSetGetLength(nodeset->nodesetval);
1045
1046 while (pos < len)
1047 {
1048 xmlNodePtr node = xmlXPathNodeSetItem(nodeset->nodesetval, pos);
1049 if (node->type == XML_NAMESPACE_DECL)
1050 {
1051 static const xmlChar defns[] = "http://www.w3.org/XML/1998/namespace";
1052 xmlNsPtr ns = (xmlNsPtr)node;
1054
1055 /* filter out default uri */
1056 if (xmlStrEqual(ns->href, defns))
1057 {
1058 pos++;
1059 continue;
1060 }
1061
1062 entry = malloc(sizeof(cache_entry));
1063 entry->type = CacheEntryType_NS;
1064 entry->ref = 1;
1065 entry->schema = NULL;
1066 entry->doc = NULL;
1067
1068 cache_add_entry(This, ns->href, entry);
1069 }
1070 pos++;
1071 }
1072
1073 xmlXPathFreeObject(nodeset);
1074 }
1075
1076 return S_OK;
1077}
#define malloc
Definition: debug_ros.c:4
static schema_cache * impl_from_IXMLDOMSchemaCollection2(IXMLDOMSchemaCollection2 *iface)
Definition: schema.c:790
static void cache_add_entry(schema_cache *cache, const xmlChar *uri, cache_entry *entry)
Definition: schema.c:988
@ CacheEntryType_NS
Definition: schema.c:86
#define S_OK
Definition: intsafe.h:52
uint32_t entry
Definition: isohybrid.c:63
Definition: svc_auth_des.c:77
Definition: mxnamespace.c:38
Definition: dlist.c:348
XMLPUBFUN int xmlStrEqual(const xmlChar *str1, const xmlChar *str2)
Definition: xmlstring.c:162
unsigned char xmlChar
Definition: xmlstring.h:28

Referenced by domdoc_get_namespaces().

◆ create_attribute()

IUnknown * create_attribute ( xmlNodePtr  attribute,
BOOL  floating 
)

Definition at line 730 of file attribute.c.

731{
732 domattr *This;
733
734 This = malloc(sizeof(*This));
735 if ( !This )
736 return NULL;
737
738 This->IXMLDOMAttribute_iface.lpVtbl = &domattr_vtbl;
739 This->ref = 1;
740 This->floating = floating;
741
742 init_xmlnode(&This->node, attribute, (IXMLDOMNode*)&This->IXMLDOMAttribute_iface, &domattr_dispex);
743
744 return (IUnknown*)&This->IXMLDOMAttribute_iface;
745}
static dispex_static_data_t domattr_dispex
Definition: attribute.c:723
static const struct IXMLDOMAttributeVtbl domattr_vtbl
Definition: attribute.c:668
void init_xmlnode(xmlnode *, xmlNodePtr, IXMLDOMNode *, dispex_static_data_t *)
Definition: node.c:1647

Referenced by create_node(), domelem_get_item(), and domelem_getAttributeNode().

◆ create_cdata()

IUnknown * create_cdata ( xmlNodePtr  text)

Definition at line 874 of file cdata.c.

875{
876 domcdata *This;
877
878 This = malloc(sizeof(*This));
879 if ( !This )
880 return NULL;
881
882 This->IXMLDOMCDATASection_iface.lpVtbl = &domcdata_vtbl;
883 This->ref = 1;
884
885 init_xmlnode(&This->node, text, (IXMLDOMNode*)&This->IXMLDOMCDATASection_iface, &domcdata_dispex);
886
887 return (IUnknown*)&This->IXMLDOMCDATASection_iface;
888}
static const struct IXMLDOMCDATASectionVtbl domcdata_vtbl
Definition: cdata.c:806
static dispex_static_data_t domcdata_dispex
Definition: cdata.c:867
const WCHAR * text
Definition: package.c:1794
Definition: cdata.c:40

Referenced by create_node().

◆ create_children_nodelist()

IXMLDOMNodeList * create_children_nodelist ( xmlNodePtr  node)

Definition at line 416 of file nodelist.c.

417{
419
420 This = malloc(sizeof(*This));
421 if ( !This )
422 return NULL;
423
424 This->IXMLDOMNodeList_iface.lpVtbl = &xmlnodelist_vtbl;
425 This->ref = 1;
426 This->parent = node;
427 This->current = node->children;
428 This->enumvariant = NULL;
429 xmldoc_add_ref( node->doc );
430
431 init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMNodeList_iface, &xmlnodelist_dispex);
432
433 return &This->IXMLDOMNodeList_iface;
434}
LONG xmldoc_add_ref(xmlDocPtr doc)
Definition: domdoc.c:619
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
Definition: dispex.c:919
static dispex_static_data_t xmlnodelist_dispex
Definition: nodelist.c:409
static const struct IXMLDOMNodeListVtbl xmlnodelist_vtbl
Definition: nodelist.c:300

Referenced by node_get_child_nodes().

◆ create_comment()

IUnknown * create_comment ( xmlNodePtr  comment)

Definition at line 825 of file comment.c.

826{
828
829 This = malloc(sizeof(*This));
830 if ( !This )
831 return NULL;
832
833 This->IXMLDOMComment_iface.lpVtbl = &domcomment_vtbl;
834 This->ref = 1;
835
836 init_xmlnode(&This->node, comment, (IXMLDOMNode*)&This->IXMLDOMComment_iface, &domcomment_dispex);
837
838 return (IUnknown*)&This->IXMLDOMComment_iface;
839}
static const struct IXMLDOMCommentVtbl domcomment_vtbl
Definition: comment.c:758
static dispex_static_data_t domcomment_dispex
Definition: comment.c:818
#define comment(fmt, arg1)
Definition: rebar.c:847

Referenced by create_node().

◆ create_doc_entity_ref()

IUnknown * create_doc_entity_ref ( xmlNodePtr  entity)

Definition at line 577 of file entityref.c.

578{
580
581 This = malloc(sizeof(*This));
582 if ( !This )
583 return NULL;
584
585 This->IXMLDOMEntityReference_iface.lpVtbl = &entityref_vtbl;
586 This->ref = 1;
587
588 init_xmlnode(&This->node, entity, (IXMLDOMNode*)&This->IXMLDOMEntityReference_iface, &domentityref_dispex);
589
590 return (IUnknown*)&This->IXMLDOMEntityReference_iface;
591}
static const struct IXMLDOMEntityReferenceVtbl entityref_vtbl
Definition: entityref.c:518
static dispex_static_data_t domentityref_dispex
Definition: entityref.c:570
Definition: actctx.c:446

Referenced by create_node().

◆ create_doc_fragment()

IUnknown * create_doc_fragment ( xmlNodePtr  fragment)

Definition at line 580 of file docfrag.c.

581{
582 domfrag *This;
583
584 This = malloc(sizeof(*This));
585 if ( !This )
586 return NULL;
587
588 This->IXMLDOMDocumentFragment_iface.lpVtbl = &domfrag_vtbl;
589 This->ref = 1;
590
591 init_xmlnode(&This->node, fragment, (IXMLDOMNode*)&This->IXMLDOMDocumentFragment_iface, &domfrag_dispex);
592
593 return (IUnknown*)&This->IXMLDOMDocumentFragment_iface;
594}
static const struct IXMLDOMDocumentFragmentVtbl domfrag_vtbl
Definition: docfrag.c:521
static dispex_static_data_t domfrag_dispex
Definition: docfrag.c:573

Referenced by create_node().

◆ create_doc_type()

IUnknown * create_doc_type ( xmlNodePtr  doctype)

Definition at line 569 of file doctype.c.

570{
572
573 This = malloc(sizeof(*This));
574 if ( !This )
575 return NULL;
576
577 This->IXMLDOMDocumentType_iface.lpVtbl = &domdoctype_vtbl;
578 This->ref = 1;
579
580 init_xmlnode(&This->node, doctype, (IXMLDOMNode*)&This->IXMLDOMDocumentType_iface,
582
583 return (IUnknown*)&This->IXMLDOMDocumentType_iface;
584}
static const struct IXMLDOMDocumentTypeVtbl domdoctype_vtbl
Definition: doctype.c:507
static dispex_static_data_t domdoctype_dispex
Definition: doctype.c:562

Referenced by create_node().

◆ create_dom_implementation()

HRESULT create_dom_implementation ( IXMLDOMImplementation **  obj)

Definition at line 193 of file domimpl.c.

194{
196
197 if (!(object = malloc(sizeof(*object))))
198 return E_OUTOFMEMORY;
199
200 object->IXMLDOMImplementation_iface.lpVtbl = &domimpl_vtbl;
201 object->ref = 1;
202 init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMImplementation_iface, &domimpl_dispex);
203
204 *ret = &object->IXMLDOMImplementation_iface;
205
206 return S_OK;
207}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static dispex_static_data_t domimpl_dispex
Definition: domimpl.c:185
static const struct IXMLDOMImplementationVtbl domimpl_vtbl
Definition: domimpl.c:167

◆ create_domdoc()

IUnknown * create_domdoc ( xmlNodePtr  document)

Definition at line 3813 of file domdoc.c.

3814{
3815 IUnknown *obj = NULL;
3816 HRESULT hr;
3817
3818 TRACE("(%p)\n", document);
3819
3820 hr = get_domdoc_from_xmldoc((xmlDocPtr)document, (IXMLDOMDocument3**)&obj);
3821 if (FAILED(hr))
3822 return NULL;
3823
3824 return obj;
3825}
HRESULT get_domdoc_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **document)
Definition: domdoc.c:3749
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by create_node(), domdoc_cloneNode(), and element_get_dt().

◆ create_element()

IUnknown * create_element ( xmlNodePtr  element)

Definition at line 1942 of file element.c.

1943{
1944 domelem *This;
1945
1946 This = malloc(sizeof *This);
1947 if ( !This )
1948 return NULL;
1949
1950 This->IXMLDOMElement_iface.lpVtbl = &domelem_vtbl;
1951 This->ref = 1;
1952
1953 init_xmlnode(&This->node, element, (IXMLDOMNode*)&This->IXMLDOMElement_iface, &domelem_dispex);
1954
1955 return (IUnknown*)&This->IXMLDOMElement_iface;
1956}
static const struct IXMLDOMElementVtbl domelem_vtbl
Definition: element.c:1531
static dispex_static_data_t domelem_dispex
Definition: element.c:1935

◆ create_enumvariant()

HRESULT create_enumvariant ( IUnknown outer,
BOOL  own,
const struct enumvariant_funcs funcs,
IEnumVARIANT **  penum 
)

Definition at line 565 of file selection.c.

566{
568
569 This = malloc(sizeof(enumvariant));
570 if (!This) return E_OUTOFMEMORY;
571
572 This->IEnumVARIANT_iface.lpVtbl = &EnumVARIANTVtbl;
573 This->ref = 0;
574 This->outer = outer;
575 This->own = own;
576 This->pos = 0;
577 This->funcs = funcs;
578
579 if (This->own)
580 IUnknown_AddRef(This->outer);
581
582 *penum = &This->IEnumVARIANT_iface;
583 IEnumVARIANT_AddRef(*penum);
584 return S_OK;
585}
static const struct IEnumVARIANTVtbl EnumVARIANTVtbl
Definition: selection.c:554
static struct __wine_debug_functions funcs
Definition: debug.c:48

Referenced by domselection_get__newEnum(), domselection_QueryInterface(), schema_cache_get__newEnum(), xmlnodelist__newEnum(), xmlnodelist_QueryInterface(), xmlnodemap__newEnum(), and xmlnodemap_QueryInterface().

◆ create_node()

IXMLDOMNode * create_node ( xmlNodePtr  node)

Definition at line 2225 of file node.c.

2226{
2227 IUnknown *pUnk;
2229 HRESULT hr;
2230
2231 if ( !node )
2232 return NULL;
2233
2234 TRACE("type %d\n", node->type);
2235 switch(node->type)
2236 {
2237 case XML_ELEMENT_NODE:
2239 break;
2240 case XML_ATTRIBUTE_NODE:
2242 break;
2243 case XML_TEXT_NODE:
2244 pUnk = create_text( node );
2245 break;
2246 case XML_CDATA_SECTION_NODE:
2247 pUnk = create_cdata( node );
2248 break;
2249 case XML_ENTITY_REF_NODE:
2251 break;
2252 case XML_PI_NODE:
2253 pUnk = create_pi( node );
2254 break;
2255 case XML_COMMENT_NODE:
2257 break;
2258 case XML_DOCUMENT_NODE:
2259 pUnk = create_domdoc( node );
2260 break;
2261 case XML_DOCUMENT_FRAG_NODE:
2263 break;
2264 case XML_DTD_NODE:
2265 case XML_DOCUMENT_TYPE_NODE:
2267 break;
2268 case XML_ENTITY_NODE:
2269 case XML_NOTATION_NODE: {
2270 unknode *new_node;
2271
2272 FIXME("only creating basic node for type %d\n", node->type);
2273
2274 new_node = malloc(sizeof(unknode));
2275 if(!new_node)
2276 return NULL;
2277
2278 new_node->IXMLDOMNode_iface.lpVtbl = &unknode_vtbl;
2279 new_node->ref = 1;
2280 init_xmlnode(&new_node->node, node, &new_node->IXMLDOMNode_iface, NULL);
2281 pUnk = (IUnknown*)&new_node->IXMLDOMNode_iface;
2282 break;
2283 }
2284 default:
2285 ERR("Called for unsupported node type %d\n", node->type);
2286 return NULL;
2287 }
2288
2289 hr = IUnknown_QueryInterface(pUnk, &IID_IXMLDOMNode, (LPVOID*)&ret);
2290 IUnknown_Release(pUnk);
2291 if(FAILED(hr)) return NULL;
2292 return ret;
2293}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define ERR(fmt,...)
Definition: precomp.h:57
IUnknown * create_cdata(xmlNodePtr text)
Definition: cdata.c:874
IUnknown * create_comment(xmlNodePtr comment)
Definition: comment.c:825
#define FALSE
Definition: types.h:117
IUnknown * create_attribute(xmlNodePtr attribute, BOOL floating)
Definition: attribute.c:730
IUnknown * create_domdoc(xmlNodePtr document)
Definition: domdoc.c:3813
IUnknown * create_doc_fragment(xmlNodePtr fragment)
Definition: docfrag.c:580
IUnknown * create_doc_type(xmlNodePtr doctype)
Definition: doctype.c:569
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
IUnknown * create_doc_entity_ref(xmlNodePtr entity)
Definition: entityref.c:577
HRESULT create_element(HTMLDocumentNode *doc, const WCHAR *tag, HTMLElement **ret)
Definition: htmlelem.c:275
static HGLOBAL create_text(void)
Definition: clipboard.c:1496
IUnknown * create_pi(xmlNodePtr)
Definition: pi.c:944
void init_xmlnode(xmlnode *This, xmlNodePtr node, IXMLDOMNode *node_iface, dispex_static_data_t *dispex_data)
Definition: node.c:1647
static const struct IXMLDOMNodeVtbl unknode_vtbl
Definition: node.c:2178
Definition: node.c:1662
IXMLDOMNode IXMLDOMNode_iface
Definition: node.c:1664
LONG ref
Definition: node.c:1665
xmlnode node
Definition: node.c:1663

Referenced by get_node(), and node_clone().

◆ create_nodemap()

IXMLDOMNamedNodeMap * create_nodemap ( xmlNodePtr  node,
const struct nodemap_funcs funcs 
)

Definition at line 431 of file nodemap.c.

432{
434
435 This = malloc(sizeof(*This));
436 if ( !This )
437 return NULL;
438
439 This->IXMLDOMNamedNodeMap_iface.lpVtbl = &XMLDOMNamedNodeMapVtbl;
440 This->ISupportErrorInfo_iface.lpVtbl = &SupportErrorInfoVtbl;
441 This->node = node;
442 This->ref = 1;
443 This->iterator = 0;
444 This->enumvariant = NULL;
445 This->funcs = funcs;
446
447 init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMNamedNodeMap_iface, &xmlnodemap_dispex);
448
450 xmldoc_add_ref(node->doc);
451
452 return &This->IXMLDOMNamedNodeMap_iface;
453}
void xmlnode_add_ref(xmlNodePtr node)
Definition: node.c:420
static const struct ISupportErrorInfoVtbl SupportErrorInfoVtbl
Definition: nodemap.c:356
static const struct IXMLDOMNamedNodeMapVtbl XMLDOMNamedNodeMapVtbl
Definition: nodemap.c:303
static dispex_static_data_t xmlnodemap_dispex
Definition: nodemap.c:424

Referenced by dom_pi_get_attributes(), and domelem_get_attributes().

◆ create_parseError()

IXMLDOMParseError * create_parseError ( LONG  code,
BSTR  url,
BSTR  reason,
BSTR  srcText,
LONG  line,
LONG  linepos,
LONG  filepos 
)

Definition at line 320 of file parseerror.c.

322{
324
325 This = malloc(sizeof(*This));
326 if ( !This )
327 return NULL;
328
329 This->IXMLDOMParseError2_iface.lpVtbl = &XMLDOMParseError2Vtbl;
330 This->ref = 1;
331
332 This->code = code;
333 This->url = url;
334 This->reason = reason;
335 This->srcText = srcText;
336 This->line = line;
337 This->linepos = linepos;
338 This->filepos = filepos;
339
340 init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMParseError2_iface, &parseError_dispex);
341
342 return (IXMLDOMParseError*)&This->IXMLDOMParseError2_iface;
343}
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1904
static const WCHAR url[]
Definition: encode.c:1384
static dispex_static_data_t parseError_dispex
Definition: parseerror.c:313
static const struct IXMLDOMParseError2Vtbl XMLDOMParseError2Vtbl
Definition: parseerror.c:286
Definition: inflate.c:139
Definition: parser.c:49

Referenced by domdoc_get_parseError(), and domdoc_validateNode().

◆ create_pi()

IUnknown * create_pi ( xmlNodePtr  pi)

Definition at line 944 of file pi.c.

945{
946 dom_pi *This;
947
948 This = malloc(sizeof(*This));
949 if ( !This )
950 return NULL;
951
952 This->IXMLDOMProcessingInstruction_iface.lpVtbl = &dom_pi_vtbl;
953 This->ref = 1;
954
955 init_xmlnode(&This->node, pi, (IXMLDOMNode*)&This->IXMLDOMProcessingInstruction_iface, &dompi_dispex);
956
957 return (IUnknown*)&This->IXMLDOMProcessingInstruction_iface;
958}
static PROCESS_INFORMATION pi
Definition: debugger.c:2303
static dispex_static_data_t dompi_dispex
Definition: pi.c:937
static const struct IXMLDOMProcessingInstructionVtbl dom_pi_vtbl
Definition: pi.c:778
Definition: pi.c:41

Referenced by create_node().

◆ create_selection()

HRESULT create_selection ( xmlNodePtr  node,
xmlChar query,
IXMLDOMNodeList **  out 
)

Definition at line 764 of file selection.c.

765{
767 xmlXPathContextPtr ctxt = xmlXPathNewContext(node->doc);
768 HRESULT hr;
769
770 TRACE("(%p, %s, %p)\n", node, debugstr_a((char const*)query), out);
771
772 *out = NULL;
773 if (!This || !ctxt || !query)
774 {
775 xmlXPathFreeContext(ctxt);
776 free(This);
777 return E_OUTOFMEMORY;
778 }
779
780 This->IXMLDOMSelection_iface.lpVtbl = &domselection_vtbl;
781 This->ref = 1;
782 This->resultPos = 0;
783 This->node = node;
784 This->enumvariant = NULL;
785 init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMSelection_iface, &domselection_dispex);
786 xmldoc_add_ref(This->node->doc);
787
788 ctxt->error = query_serror;
789 ctxt->node = node;
790 registerNamespaces(ctxt);
791 xmlXPathContextSetCache(ctxt, 1, -1, 0);
792
793 if (is_xpathmode(This->node->doc))
794 {
795 xmlXPathRegisterAllFunctions(ctxt);
796 This->result = xmlXPathEvalExpression(query, ctxt);
797 }
798 else
799 {
800 xmlChar* pattern_query = XSLPattern_to_XPath(ctxt, query);
801
802 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"not", xmlXPathNotFunction);
803 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"boolean", xmlXPathBooleanFunction);
804
805 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"index", XSLPattern_index);
806 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"end", XSLPattern_end);
807 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"nodeType", XSLPattern_nodeType);
808
809 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"OP_IEq", XSLPattern_OP_IEq);
810 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"OP_INEq", XSLPattern_OP_INEq);
811 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"OP_ILt", XSLPattern_OP_ILt);
812 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"OP_ILEq", XSLPattern_OP_ILEq);
813 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"OP_IGt", XSLPattern_OP_IGt);
814 xmlXPathRegisterFunc(ctxt, (xmlChar const*)"OP_IGEq", XSLPattern_OP_IGEq);
815
816 This->result = xmlXPathEvalExpression(pattern_query, ctxt);
817 xmlFree(pattern_query);
818 }
819
820 if (!This->result || This->result->type != XPATH_NODESET)
821 {
822 hr = E_FAIL;
823 goto cleanup;
824 }
825
826 *out = (IXMLDOMNodeList*)&This->IXMLDOMSelection_iface;
827 hr = S_OK;
828 TRACE("found %d matches\n", xmlXPathNodeSetGetLength(This->result->nodesetval));
829
830cleanup:
831 if (FAILED(hr))
832 IXMLDOMSelection_Release( &This->IXMLDOMSelection_iface );
833 xmlXPathFreeContext(ctxt);
834 return hr;
835}
#define E_FAIL
Definition: ddrawi.h:102
#define free
Definition: debug_ros.c:5
static void cleanup(void)
Definition: main.c:1335
BOOL is_xpathmode(const xmlDocPtr doc)
Definition: domdoc.c:225
#define debugstr_a
Definition: kernel32.h:31
static void XSLPattern_nodeType(xmlXPathParserContextPtr pctx, int nargs)
Definition: selection.c:681
static void XSLPattern_OP_INEq(xmlXPathParserContextPtr pctx, int nargs)
Definition: selection.c:699
static void XSLPattern_end(xmlXPathParserContextPtr pctx, int nargs)
Definition: selection.c:669
static void query_serror(void *ctx, const xmlError *err)
Definition: selection.c:759
int registerNamespaces(xmlXPathContextPtr ctxt)
Definition: domdoc.c:235
static void XSLPattern_index(xmlXPathParserContextPtr pctx, int nargs)
Definition: selection.c:661
static void XSLPattern_OP_IGEq(xmlXPathParserContextPtr pctx, int nargs)
Definition: selection.c:747
static dispex_static_data_t domselection_dispex
Definition: selection.c:646
static void XSLPattern_OP_IGt(xmlXPathParserContextPtr pctx, int nargs)
Definition: selection.c:735
static void XSLPattern_OP_ILEq(xmlXPathParserContextPtr pctx, int nargs)
Definition: selection.c:723
static void XSLPattern_OP_ILt(xmlXPathParserContextPtr pctx, int nargs)
Definition: selection.c:711
static void XSLPattern_OP_IEq(xmlXPathParserContextPtr pctx, int nargs)
Definition: selection.c:687
xmlChar * XSLPattern_to_XPath(xmlXPathContextPtr ctxt, xmlChar const *xslpat_str)
static const struct IXMLDOMSelectionVtbl domselection_vtbl
Definition: selection.c:409
xmlFreeFunc xmlFree
Definition: globals.c:184
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

Referenced by domdoc_getElementsByTagName(), domelem_getElementsByTagName(), and node_select_nodes().

◆ create_text()

IUnknown * create_text ( xmlNodePtr  text)

Definition at line 940 of file text.c.

941{
942 domtext *This;
943
944 This = malloc(sizeof(*This));
945 if ( !This )
946 return NULL;
947
948 This->IXMLDOMText_iface.lpVtbl = &domtext_vtbl;
949 This->ref = 1;
950
951 init_xmlnode(&This->node, text, (IXMLDOMNode*)&This->IXMLDOMText_iface, &domtext_dispex);
952
953 return (IUnknown*)&This->IXMLDOMText_iface;
954}
static const struct IXMLDOMTextVtbl domtext_vtbl
Definition: text.c:872
static dispex_static_data_t domtext_dispex
Definition: text.c:933
Definition: text.c:42

◆ create_xmldoc()

IUnknown * create_xmldoc ( void  )

◆ debugstr_dt()

const char * debugstr_dt ( XDR_DT  dt)

Definition at line 585 of file schema.c.

586{
587 return debugstr_a(dt != DT_INVALID ? (const char*)DT_string_table[dt] : NULL);
588}
static const xmlChar *const DT_string_table[LAST_DT]
Definition: schema.c:399

Referenced by domelem_put_dataType(), domelem_put_nodeTypedValue(), dt_validate(), element_get_dt(), and variant_from_dt().

◆ destroy_xmlnode()

void destroy_xmlnode ( xmlnode This)

Definition at line 1638 of file node.c.

1639{
1640 if(This->node)
1641 {
1642 xmlnode_release(This->node);
1643 xmldoc_release(This->node->doc);
1644 }
1645}
LONG xmldoc_release(xmlDocPtr doc)
Definition: domdoc.c:653
void xmlnode_release(xmlNodePtr node)
Definition: node.c:426

Referenced by dom_pi_Release(), domattr_Release(), domcdata_Release(), domcomment_Release(), domdoc_Release(), domdoctype_Release(), domelem_Release(), domfrag_Release(), domtext_Release(), entityref_Release(), and unknode_Release().

◆ dom_pi_put_xml_decl()

HRESULT dom_pi_put_xml_decl ( IXMLDOMNode node,
BSTR  data 
)

Definition at line 750 of file pi.c.

751{
752 static const WCHAR xmlW[] = {'x','m','l',0};
753 xmlnode *node_obj;
754 HRESULT hr;
755 BSTR name;
756
757 if (!data)
758 return XML_E_XMLDECLSYNTAX;
759
760 node_obj = get_node_obj(node);
761 hr = node_set_content(node_obj, data);
762 if (FAILED(hr))
763 return hr;
764
765 hr = node_get_nodeName(node_obj, &name);
766 if (FAILED(hr))
767 return hr;
768
769 if (!lstrcmpW(name, xmlW) && !node_obj->node->properties)
770 hr = parse_xml_decl(node_obj->node);
771 else
772 hr = S_OK;
773
775 return hr;
776}
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4246
@ XML_E_XMLDECLSYNTAX
Definition: xmlparser.idl:109
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
static HTMLDOMNode * get_node_obj(IHTMLDOMNode *)
Definition: htmlnode.c:1045
HRESULT node_set_content(xmlnode *, LPCWSTR)
Definition: node.c:241
HRESULT node_get_nodeName(xmlnode *, BSTR *)
Definition: node.c:178
static const WCHAR xmlW[]
Definition: mxnamespace.c:54
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
static HRESULT parse_xml_decl(xmlNodePtr node)
Definition: pi.c:330
xmlNodePtr node
Definition: name.c:39
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by domdoc_createProcessingInstruction().

◆ DOMDocument_version()

const CLSID * DOMDocument_version ( MSXML_VERSION  v)

Definition at line 348 of file main.c.

349{
350 switch (v)
351 {
352 default:
353 case MSXML_DEFAULT: return &CLSID_DOMDocument;
354 case MSXML3: return &CLSID_DOMDocument30;
355 case MSXML4: return &CLSID_DOMDocument40;
356 case MSXML6: return &CLSID_DOMDocument60;
357 }
358}
const GLdouble * v
Definition: gl.h:2040
const struct _GUID CLSID_DOMDocument
@ MSXML_DEFAULT
Definition: msxml_dispex.h:28
@ MSXML4
Definition: msxml_dispex.h:32
@ MSXML6
Definition: msxml_dispex.h:33
@ MSXML3
Definition: msxml_dispex.h:31

Referenced by PersistStreamInit_GetClassID().

◆ dt_to_bstr()

OLECHAR const * dt_to_bstr ( XDR_DT  dt)

Definition at line 577 of file schema.c.

578{
579 if (dt == DT_INVALID)
580 return NULL;
581
582 return DT_wstring_table[dt];
583}

Referenced by domelem_get_dataType().

◆ dt_to_str()

xmlChar const * dt_to_str ( XDR_DT  dt)

Definition at line 569 of file schema.c.

570{
571 if (dt == DT_INVALID)
572 return NULL;
573
574 return DT_string_table[dt];
575}

Referenced by domelem_put_dataType(), and dt_validate().

◆ dt_validate()

HRESULT dt_validate ( XDR_DT  dt,
xmlChar const content 
)

Definition at line 590 of file schema.c.

591{
592 xmlDocPtr tmp_doc;
593 xmlNodePtr node;
594 xmlNsPtr ns;
595 HRESULT hr;
596
597 TRACE("(dt:%s, %s)\n", debugstr_dt(dt), debugstr_a((char const*)content));
598
599 if (!datatypes_schema)
600 {
601 xmlSchemaParserCtxtPtr spctx;
603 spctx = xmlSchemaNewMemParserCtxt((char const*)datatypes_src, datatypes_len);
605 xmlSchemaFreeParserCtxt(spctx);
606 }
607
608 switch (dt)
609 {
610 case DT_INVALID:
611 return E_FAIL;
612 case DT_BIN_BASE64:
613 case DT_BIN_HEX:
614 case DT_BOOLEAN:
615 case DT_CHAR:
616 case DT_DATE:
617 case DT_DATE_TZ:
618 case DT_DATETIME:
619 case DT_DATETIME_TZ:
620 case DT_FIXED_14_4:
621 case DT_FLOAT:
622 case DT_I1:
623 case DT_I2:
624 case DT_I4:
625 case DT_I8:
626 case DT_INT:
627 case DT_NMTOKEN:
628 case DT_NMTOKENS:
629 case DT_NUMBER:
630 case DT_R4:
631 case DT_R8:
632 case DT_STRING:
633 case DT_TIME:
634 case DT_TIME_TZ:
635 case DT_UI1:
636 case DT_UI2:
637 case DT_UI4:
638 case DT_UI8:
639 case DT_URI:
640 case DT_UUID:
641 if (!datatypes_schema)
642 {
643 ERR("failed to load schema for urn:schemas-microsoft-com:datatypes, "
644 "you're probably using an old version of libxml2: " LIBXML_DOTTED_VERSION "\n");
645
646 /* Hopefully they don't need much in the way of XDR datatypes support... */
647 return S_OK;
648 }
649
650 if (content && xmlStrlen(content))
651 {
652 tmp_doc = xmlNewDoc(NULL);
653 node = xmlNewChild((xmlNodePtr)tmp_doc, NULL, dt_to_str(dt), content);
654 ns = xmlNewNs(node, DT_nsURI, BAD_CAST "dt");
655 xmlSetNs(node, ns);
656 xmlDocSetRootElement(tmp_doc, node);
657
658 hr = Schema_validate_tree(datatypes_schema, (xmlNodePtr)tmp_doc);
659 xmlFreeDoc(tmp_doc);
660 }
661 else
662 { /* probably the node is being created manually and has no content yet */
663 hr = S_OK;
664 }
665 return hr;
666 default:
667 FIXME("need to handle dt:%s\n", debugstr_dt(dt));
668 return S_OK;
669 }
670}
content
Definition: atl_ax.c:994
#define DT_STRING
Definition: datetime.c:117
#define assert(_expr)
Definition: assert.h:32
xmlChar const * dt_to_str(XDR_DT dt)
Definition: schema.c:569
static xmlSchemaPtr Schema_parse(xmlSchemaParserCtxtPtr spctx)
Definition: schema.c:251
static xmlSchemaPtr datatypes_schema
Definition: schema.c:69
static int datatypes_len
Definition: schema.c:66
static const xmlChar DT_nsURI[]
Definition: schema.c:63
static HRESULT Schema_validate_tree(xmlSchemaPtr schema, xmlNodePtr tree)
Definition: schema.c:292
const char * debugstr_dt(XDR_DT dt)
Definition: schema.c:585
static xmlChar * datatypes_src
Definition: schema.c:65
XMLPUBFUN int xmlStrlen(const xmlChar *str)
Definition: xmlstring.c:428
#define BAD_CAST
Definition: xmlstring.h:35
#define LIBXML_DOTTED_VERSION
Definition: xmlversion.h:32

Referenced by domelem_put_dataType().

◆ EnsureCorrectEOL()

BSTR EnsureCorrectEOL ( BSTR  sInput)

Definition at line 885 of file node.c.

886{
887 int nNum = 0;
888 BSTR sNew;
889 int nLen;
890 int i;
891
892 nLen = SysStringLen(sInput);
893 /* Count line endings */
894 for(i=0; i < nLen; i++)
895 {
896 if(sInput[i] == '\n')
897 nNum++;
898 }
899
900 TRACE("len=%d, num=%d\n", nLen, nNum);
901
902 /* Add linefeed as needed */
903 if(nNum > 0)
904 {
905 int nPlace = 0;
906 sNew = SysAllocStringLen(NULL, nLen + nNum);
907 for(i=0; i < nLen; i++)
908 {
909 if(sInput[i] == '\n')
910 {
911 sNew[i+nPlace] = '\r';
912 nPlace++;
913 }
914 sNew[i+nPlace] = sInput[i];
915 }
916
917 SysFreeString(sInput);
918 }
919 else
920 {
921 sNew = sInput;
922 }
923
924 TRACE("len %d\n", SysStringLen(sNew));
925
926 return sNew;
927}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
UINT WINAPI SysStringLen(BSTR str)
Definition: oleaut.c:196

Referenced by domdoc_get_xml(), and node_get_xml().

◆ get_domdoc_from_xmldoc()

HRESULT get_domdoc_from_xmldoc ( xmlDocPtr  xmldoc,
IXMLDOMDocument3 **  document 
)

Definition at line 3749 of file domdoc.c.

3750{
3751 domdoc *doc;
3752
3753 doc = malloc(sizeof(*doc));
3754 if( !doc )
3755 return E_OUTOFMEMORY;
3756
3762 doc->ref = 1;
3763 doc->async = VARIANT_TRUE;
3764 doc->resolving = 0;
3766 doc->error = S_OK;
3767 doc->site = NULL;
3768 doc->base_uri = NULL;
3769 doc->safeopt = 0;
3770 doc->cp_list = NULL;
3771 doc->namespaces = NULL;
3772 memset(doc->events, 0, sizeof(doc->events));
3773
3774 /* events connection points */
3777 ConnectionPoint_Init(&doc->cp_domdocevents, doc, &DIID_XMLDOMDocumentEvents);
3778
3779 init_xmlnode(&doc->node, (xmlNodePtr)xmldoc, (IXMLDOMNode*)&doc->IXMLDOMDocument3_iface,
3780 &domdoc_dispex);
3781
3782 *document = &doc->IXMLDOMDocument3_iface;
3783
3784 TRACE("returning iface %p\n", *document);
3785 return S_OK;
3786}
static domdoc_properties * properties_from_xmlDocPtr(xmlDocPtr doc)
Definition: domdoc.c:220
static void ConnectionPoint_Init(ConnectionPoint *cp, struct domdoc *doc, REFIID riid)
Definition: domdoc.c:3588
static const IObjectSafetyVtbl domdocObjectSafetyVtbl
Definition: domdoc.c:3729
static const IPersistStreamInitVtbl xmldoc_IPersistStreamInit_VTable
Definition: domdoc.c:902
static dispex_static_data_t domdoc_dispex
Definition: domdoc.c:3742
static const struct IConnectionPointContainerVtbl ConnectionPointContainerVtbl
Definition: domdoc.c:3441
static const IObjectWithSiteVtbl domdocObjectSite
Definition: domdoc.c:3668
static const struct IXMLDOMDocument3Vtbl XMLDOMDocument3Vtbl
Definition: domdoc.c:3298
static domdoc_properties * properties_add_ref(domdoc_properties *properties)
Definition: domdoc.c:340
const GUID IID_IPropertyNotifySink
const GUID IID_IDispatch
#define memset(x, y, z)
Definition: compat.h:39
Definition: xmldoc.c:49
Definition: domdoc.c:111
ConnectionPoint * cp_list
Definition: domdoc.c:132
IUri * base_uri
Definition: domdoc.c:126
VARIANT_BOOL async
Definition: domdoc.c:119
ConnectionPoint cp_propnotif
Definition: domdoc.c:134
IPersistStreamInit IPersistStreamInit_iface
Definition: domdoc.c:114
ConnectionPoint cp_domdocevents
Definition: domdoc.c:133
LONG ref
Definition: domdoc.c:118
IXMLDOMSchemaCollection2 * namespaces
Definition: domdoc.c:140
xmlnode node
Definition: domdoc.c:112
ConnectionPoint cp_dispatch
Definition: domdoc.c:135
HRESULT error
Definition: domdoc.c:122
IObjectSafety IObjectSafety_iface
Definition: domdoc.c:116
IDispatch * events[EVENTID_LAST]
Definition: domdoc.c:138
domdoc_properties * properties
Definition: domdoc.c:121
IObjectWithSite IObjectWithSite_iface
Definition: domdoc.c:115
VARIANT_BOOL resolving
Definition: domdoc.c:120
IConnectionPointContainer IConnectionPointContainer_iface
Definition: domdoc.c:117
IXMLDOMDocument3 IXMLDOMDocument3_iface
Definition: domdoc.c:113
IUnknown * site
Definition: domdoc.c:125
DWORD safeopt
Definition: domdoc.c:129

Referenced by create_domdoc(), dom_document_create(), node_get_owner_doc(), and schema_cache_get().

◆ get_node_obj()

xmlnode * get_node_obj ( IXMLDOMNode node)

Definition at line 168 of file node.c.

169{
170 xmlnode *obj = NULL;
172
173 hres = IXMLDOMNode_QueryInterface(node, &IID_xmlnode, (void**)&obj);
174 if (!obj) WARN("node is not our IXMLDOMNode implementation\n");
175 return SUCCEEDED(hres) ? obj : NULL;
176}
#define WARN(fmt,...)
Definition: precomp.h:61
#define SUCCEEDED(hr)
Definition: intsafe.h:50
HRESULT hres
Definition: protocol.c:465
static const IID IID_xmlnode
Definition: node.c:50

Referenced by node_insert_before(), node_remove_child(), node_replace_child(), node_transform_node_params(), and xmlNodePtr_from_domnode().

◆ init_xmlnode()

void init_xmlnode ( xmlnode This,
xmlNodePtr  node,
IXMLDOMNode node_iface,
dispex_static_data_t dispex_data 
)

Definition at line 1647 of file node.c.

1648{
1649 if(node)
1650 {
1652 xmldoc_add_ref(node->doc);
1653 }
1654
1655 This->node = node;
1656 This->iface = node_iface;
1657 This->parent = NULL;
1658
1659 init_dispex(&This->dispex, (IUnknown*)This->iface, dispex_data);
1660}
void xmlnode_add_ref(xmlNodePtr node)
Definition: node.c:420

Referenced by create_attribute(), create_cdata(), create_comment(), create_doc_entity_ref(), create_doc_fragment(), create_doc_type(), create_element(), create_node(), create_pi(), create_text(), and get_domdoc_from_xmldoc().

◆ is_preserving_whitespace()

BOOL is_preserving_whitespace ( xmlNodePtr  node)

Definition at line 419 of file domdoc.c.

420{
421 domdoc_properties* properties = NULL;
422 /* during parsing the xmlDoc._private stuff is not there */
423 if (priv_from_xmlDocPtr(node->doc))
424 properties = properties_from_xmlDocPtr(node->doc);
425 return ((properties && properties->preserving == VARIANT_TRUE) ||
426 xmlNodeGetSpacePreserve(node) == 1);
427}
static xmldoc_priv * priv_from_xmlDocPtr(const xmlDocPtr doc)
Definition: domdoc.c:215
VARIANT_BOOL preserving
Definition: domdoc.c:72

Referenced by do_get_text(), and sax_characters().

◆ is_xpathmode()

BOOL is_xpathmode ( const xmlDocPtr  doc)

Definition at line 225 of file domdoc.c.

226{
227 return properties_from_xmlDocPtr(doc)->XPath;
228}

Referenced by create_selection(), and domelem_getElementsByTagName().

◆ MXNamespaceManager_create()

HRESULT MXNamespaceManager_create ( void **  obj)

Definition at line 638 of file mxnamespace.c.

639{
641 struct nscontext *ctxt;
642
643 TRACE("(%p)\n", obj);
644
645 This = malloc(sizeof(*This));
646 if( !This )
647 return E_OUTOFMEMORY;
648
649 This->IMXNamespaceManager_iface.lpVtbl = &MXNamespaceManagerVtbl;
650 This->IVBMXNamespaceManager_iface.lpVtbl = &VBMXNamespaceManagerVtbl;
651 This->ref = 1;
652 init_dispex(&This->dispex, (IUnknown*)&This->IVBMXNamespaceManager_iface, &namespacemanager_dispex);
653
654 list_init(&This->ctxts);
655 ctxt = alloc_ns_context();
656 if (!ctxt)
657 {
658 free(This);
659 return E_OUTOFMEMORY;
660 }
661
662 list_add_head(&This->ctxts, &ctxt->entry);
663
664 This->override = VARIANT_TRUE;
665
666 *obj = &This->IMXNamespaceManager_iface;
667
668 TRACE("returning iface %p\n", *obj);
669
670 return S_OK;
671}
static void list_add_head(struct list_entry *head, struct list_entry *entry)
Definition: list.h:76
static void list_init(struct list_entry *head)
Definition: list.h:51
static const struct IVBMXNamespaceManagerVtbl VBMXNamespaceManagerVtbl
Definition: mxnamespace.c:604
static struct nscontext * alloc_ns_context(void)
Definition: mxnamespace.c:172
static const struct IMXNamespaceManagerVtbl MXNamespaceManagerVtbl
Definition: mxnamespace.c:382
static dispex_static_data_t namespacemanager_dispex
Definition: mxnamespace.c:631
struct list entry
Definition: mxnamespace.c:45

◆ MXWriter_create()

HRESULT MXWriter_create ( MSXML_VERSION  version,
void **  ppObj 
)

Definition at line 2590 of file mxwriter.c.

2591{
2592 static const WCHAR version10W[] = {'1','.','0',0};
2593 mxwriter *This;
2594 HRESULT hr;
2595
2596 TRACE("(%p)\n", ppObj);
2597
2598 This = malloc(sizeof(*This));
2599 if(!This)
2600 return E_OUTOFMEMORY;
2601
2602 This->IMXWriter_iface.lpVtbl = &MXWriterVtbl;
2603 This->ISAXContentHandler_iface.lpVtbl = &SAXContentHandlerVtbl;
2604 This->ISAXLexicalHandler_iface.lpVtbl = &SAXLexicalHandlerVtbl;
2605 This->ISAXDeclHandler_iface.lpVtbl = &SAXDeclHandlerVtbl;
2606 This->ISAXDTDHandler_iface.lpVtbl = &SAXDTDHandlerVtbl;
2607 This->ISAXErrorHandler_iface.lpVtbl = &SAXErrorHandlerVtbl;
2608 This->IVBSAXDeclHandler_iface.lpVtbl = &VBSAXDeclHandlerVtbl;
2609 This->IVBSAXLexicalHandler_iface.lpVtbl = &VBSAXLexicalHandlerVtbl;
2610 This->IVBSAXContentHandler_iface.lpVtbl = &VBSAXContentHandlerVtbl;
2611 This->IVBSAXDTDHandler_iface.lpVtbl = &VBSAXDTDHandlerVtbl;
2612 This->IVBSAXErrorHandler_iface.lpVtbl = &VBSAXErrorHandlerVtbl;
2613 This->ref = 1;
2614 This->class_version = version;
2615
2616 This->props[MXWriter_BOM] = VARIANT_TRUE;
2617 This->props[MXWriter_DisableEscaping] = VARIANT_FALSE;
2618 This->props[MXWriter_Indent] = VARIANT_FALSE;
2619 This->props[MXWriter_OmitXmlDecl] = VARIANT_FALSE;
2620 This->props[MXWriter_Standalone] = VARIANT_FALSE;
2621 This->prop_changed = FALSE;
2622 This->encoding = SysAllocString(utf16W);
2623 This->version = SysAllocString(version10W);
2624 This->xml_enc = XmlEncoding_UTF16;
2625
2626 This->element = NULL;
2627 This->cdata = FALSE;
2628 This->indent = 0;
2629 This->text = FALSE;
2630 This->newline = FALSE;
2631
2632 This->dest = NULL;
2633
2634 hr = init_output_buffer(This->xml_enc, &This->buffer);
2635 if (hr != S_OK) {
2636 SysFreeString(This->encoding);
2637 SysFreeString(This->version);
2638 free(This);
2639 return hr;
2640 }
2641
2642 init_dispex(&This->dispex, (IUnknown*)&This->IMXWriter_iface, &mxwriter_dispex);
2643
2644 *ppObj = &This->IMXWriter_iface;
2645
2646 TRACE("returning iface %p\n", *ppObj);
2647
2648 return S_OK;
2649}
static const WCHAR version[]
Definition: asmname.c:66
static const IVBSAXErrorHandlerVtbl VBSAXErrorHandlerVtbl
Definition: mxwriter.c:2565
static const IVBSAXDeclHandlerVtbl VBSAXDeclHandlerVtbl
Definition: mxwriter.c:1917
static const IVBSAXDTDHandlerVtbl VBSAXDTDHandlerVtbl
Definition: mxwriter.c:2437
static dispex_static_data_t mxwriter_dispex
Definition: mxwriter.c:2583
static const struct ISAXContentHandlerVtbl SAXContentHandlerVtbl
Definition: mxwriter.c:1489
@ MXWriter_Standalone
Definition: mxwriter.c:130
@ MXWriter_DisableEscaping
Definition: mxwriter.c:127
@ MXWriter_OmitXmlDecl
Definition: mxwriter.c:129
@ MXWriter_BOM
Definition: mxwriter.c:126
@ MXWriter_Indent
Definition: mxwriter.c:128
static const IVBSAXLexicalHandlerVtbl VBSAXLexicalHandlerVtbl
Definition: mxwriter.c:2044
static const ISAXDTDHandlerVtbl SAXDTDHandlerVtbl
Definition: mxwriter.c:2357
static const struct ISAXLexicalHandlerVtbl SAXLexicalHandlerVtbl
Definition: mxwriter.c:1651
static const ISAXErrorHandlerVtbl SAXErrorHandlerVtbl
Definition: mxwriter.c:2492
static const WCHAR utf16W[]
Definition: mxwriter.c:89
static const struct IMXWriterVtbl MXWriterVtbl
Definition: mxwriter.c:1148
@ XmlEncoding_UTF16
Definition: mxwriter.c:59
static const IVBSAXContentHandlerVtbl VBSAXContentHandlerVtbl
Definition: mxwriter.c:2263
static const ISAXDeclHandlerVtbl SAXDeclHandlerVtbl
Definition: mxwriter.c:1809
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
static void init_output_buffer(void)
Definition: tools.h:791

Referenced by DllGetClassObject().

◆ node_append_child()

HRESULT node_append_child ( xmlnode This,
IXMLDOMNode child,
IXMLDOMNode **  outChild 
)

Definition at line 639 of file node.c.

640{
642 VARIANT var;
643 HRESULT hr;
644
645 if (!child)
646 return E_INVALIDARG;
647
648 hr = IXMLDOMNode_get_nodeType(child, &type);
649 if(FAILED(hr) || type == NODE_ATTRIBUTE) {
650 if (outChild) *outChild = NULL;
651 return E_FAIL;
652 }
653
655 return IXMLDOMNode_insertBefore(This->iface, child, var, outChild);
656}
#define E_INVALIDARG
Definition: ddrawi.h:101
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
const char * var
Definition: shader.c:5666
static HWND child
Definition: cursoricon.c:298
enum tagDOMNodeType DOMNodeType
@ NODE_ATTRIBUTE
Definition: msxml6.idl:114
void WINAPI VariantInit(VARIANTARG *pVarg)
Definition: variant.c:568

Referenced by dom_pi_appendChild(), domattr_appendChild(), domcomment_appendChild(), domdoc_appendChild(), domelem_appendChild(), domfrag_appendChild(), domtext_appendChild(), entityref_appendChild(), and unknode_appendChild().

◆ node_clone()

HRESULT node_clone ( xmlnode This,
VARIANT_BOOL  deep,
IXMLDOMNode **  cloneNode 
)

Definition at line 679 of file node.c.

680{
682 xmlNodePtr clone;
683
684 if(!cloneNode) return E_INVALIDARG;
685
686 clone = xmlCopyNode(This->node, deep ? 1 : 2);
687 if (clone)
688 {
689 xmlSetTreeDoc(clone, This->node->doc);
690 xmldoc_add_orphan(clone->doc, clone);
691
692 node = create_node(clone);
693 if (!node)
694 {
695 ERR("Copy failed\n");
696 xmldoc_remove_orphan(clone->doc, clone);
697 xmlFreeNode(clone);
698 return E_FAIL;
699 }
700
701 *cloneNode = node;
702 }
703 else
704 {
705 ERR("Copy failed\n");
706 return E_FAIL;
707 }
708
709 return S_OK;
710}
HRESULT xmldoc_remove_orphan(xmlDocPtr doc, xmlNodePtr node)
Definition: domdoc.c:672
HRESULT xmldoc_add_orphan(xmlDocPtr doc, xmlNodePtr node)
Definition: domdoc.c:658
IXMLDOMNode * create_node(xmlNodePtr node)
Definition: node.c:2225

Referenced by dom_pi_cloneNode(), domattr_cloneNode(), domcdata_cloneNode(), domcomment_cloneNode(), domelem_cloneNode(), domfrag_cloneNode(), domtext_cloneNode(), entityref_cloneNode(), test_cloneNode(), test_validate_on_parse_values(), and unknode_cloneNode().

◆ node_create_supporterrorinfo()

◆ node_get_base_name()

HRESULT node_get_base_name ( xmlnode This,
BSTR name 
)

Definition at line 1622 of file node.c.

1623{
1624 if (!name) return E_INVALIDARG;
1625
1626 if (xmldoc_version(This->node->doc) != MSXML6 &&
1627 xmlStrEqual(This->node->name, BAD_CAST "xmlns"))
1628 *name = SysAllocString(L"");
1629 else
1630 *name = bstr_from_xmlChar(This->node->name);
1631 if (!*name) return E_OUTOFMEMORY;
1632
1633 TRACE("returning %s\n", debugstr_w(*name));
1634
1635 return S_OK;
1636}
MSXML_VERSION xmldoc_version(xmlDocPtr doc)
Definition: domdoc.c:414
#define L(x)
Definition: resources.c:13
#define debugstr_w
Definition: kernel32.h:32
static BSTR bstr_from_xmlChar(const xmlChar *str)

Referenced by dom_pi_get_baseName(), domattr_get_baseName(), domelem_get_baseName(), node_get_nodeName(), and unknode_get_baseName().

◆ node_get_child_nodes()

HRESULT node_get_child_nodes ( xmlnode This,
IXMLDOMNodeList **  ret 
)

◆ node_get_content()

HRESULT node_get_content ( xmlnode This,
VARIANT value 
)

Definition at line 225 of file node.c.

226{
228
229 if(!value)
230 return E_INVALIDARG;
231
232 content = xmlNodeGetContent(This->node);
233 V_VT(value) = VT_BSTR;
236
237 TRACE("%p returned %s\n", This, debugstr_w(V_BSTR(value)));
238 return S_OK;
239}
@ VT_BSTR
Definition: compat.h:2303
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
Definition: pdh_main.c:96

Referenced by dom_pi_get_nodeTypedValue(), dom_pi_get_nodeValue(), domattr_get_nodeValue(), domattr_get_value(), domcdata_get_nodeTypedValue(), domcdata_get_nodeValue(), domcomment_get_nodeTypedValue(), domcomment_get_nodeValue(), and domtext_get_nodeValue().

◆ node_get_first_child()

HRESULT node_get_first_child ( xmlnode This,
IXMLDOMNode **  ret 
)

Definition at line 365 of file node.c.

366{
367 return get_node(This, "firstChild", This->node->children, ret);
368}
static HRESULT get_node(xmlnode *This, const char *name, xmlNodePtr node, IXMLDOMNode **out)
Definition: node.c:327

Referenced by domattr_get_firstChild(), domdoc_get_firstChild(), domelem_get_firstChild(), domfrag_get_firstChild(), entityref_get_firstChild(), and unknode_get_firstChild().

◆ node_get_last_child()

HRESULT node_get_last_child ( xmlnode This,
IXMLDOMNode **  ret 
)

Definition at line 370 of file node.c.

371{
372 return get_node(This, "lastChild", This->node->last, ret);
373}

Referenced by domattr_get_lastChild(), domdoc_get_lastChild(), domelem_get_lastChild(), domfrag_get_lastChild(), entityref_get_lastChild(), and unknode_get_lastChild().

◆ node_get_namespaceURI()

HRESULT node_get_namespaceURI ( xmlnode This,
BSTR namespaceURI 
)

Definition at line 1589 of file node.c.

1590{
1591 xmlNsPtr ns = This->node->ns;
1592
1593 if(!namespaceURI)
1594 return E_INVALIDARG;
1595
1596 *namespaceURI = NULL;
1597
1598 if (ns && ns->href)
1599 *namespaceURI = bstr_from_xmlChar(ns->href);
1600
1601 TRACE("uri: %s\n", debugstr_w(*namespaceURI));
1602
1603 return *namespaceURI ? S_OK : S_FALSE;
1604}
#define S_FALSE
Definition: winerror.h:3451

Referenced by dom_pi_get_namespaceURI(), domcdata_get_namespaceURI(), domcomment_get_namespaceURI(), domelem_get_namespaceURI(), domfrag_get_namespaceURI(), domtext_get_namespaceURI(), entityref_get_namespaceURI(), and unknode_get_namespaceURI().

◆ node_get_next_sibling()

HRESULT node_get_next_sibling ( xmlnode This,
IXMLDOMNode **  ret 
)

◆ node_get_nodeName()

HRESULT node_get_nodeName ( xmlnode This,
BSTR name 
)

Definition at line 178 of file node.c.

179{
181 HRESULT hr;
182
183 if (!name)
184 return E_INVALIDARG;
185
187 if (hr != S_OK) return hr;
188
189 if (!base[0] && xmldoc_version(This->node->doc) != MSXML6)
190 {
192 *name = SysAllocString(L"xmlns");
193 return S_OK;
194 }
195
197 if (hr == S_OK)
198 {
199 static const WCHAR colW = ':';
200 WCHAR *ptr;
201
202 /* +1 for ':' */
205 {
208 }
210 {
212 memcpy(ptr++, &colW, sizeof(WCHAR));
214 }
215
218 }
219 else
220 *name = base;
221
222 return S_OK;
223}
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static PVOID ptr
Definition: dispmode.c:27
HRESULT node_get_base_name(xmlnode *This, BSTR *name)
Definition: node.c:1622
HRESULT node_get_prefix(xmlnode *This, BSTR *prefix)
Definition: node.c:1606
UINT WINAPI SysStringByteLen(BSTR str)
Definition: oleaut.c:215
Character const *const prefix
Definition: tempnam.cpp:195

Referenced by dom_pi_get_attributes(), dom_pi_get_nodeName(), dom_pi_get_target(), dom_pi_put_xml_decl(), domattr_get_name(), domattr_get_nodeName(), domdoctype_get_name(), domdoctype_get_nodeName(), domelem_get_nodeName(), entityref_get_nodeName(), unknode_get_nodeName(), and unknode_get_nodeTypeString().

◆ node_get_owner_doc()

◆ node_get_parent()

HRESULT node_get_parent ( xmlnode This,
IXMLDOMNode **  parent 
)

◆ node_get_prefix()

HRESULT node_get_prefix ( xmlnode This,
BSTR prefix 
)

Definition at line 1606 of file node.c.

1607{
1608 xmlNsPtr ns = This->node->ns;
1609
1610 if (!prefix) return E_INVALIDARG;
1611
1612 *prefix = NULL;
1613
1614 if (ns && ns->prefix)
1616
1617 TRACE("prefix: %s\n", debugstr_w(*prefix));
1618
1619 return *prefix ? S_OK : S_FALSE;
1620}
BSTR prefix
Definition: mxnamespace.c:39

Referenced by domelem_get_prefix(), node_get_nodeName(), and unknode_get_prefix().

◆ node_get_previous_sibling()

◆ node_get_text()

HRESULT node_get_text ( const xmlnode This,
BSTR text 
)

Definition at line 842 of file node.c.

843{
844 BSTR str = NULL;
847 BOOL tmp;
848
849 if (!text) return E_INVALIDARG;
850
851 content = do_get_text(This->node, TRUE, &first, &last, &tmp);
852 if (content)
853 {
856 }
857
858 /* Always return a string. */
859 if (!str) str = SysAllocStringLen( NULL, 0 );
860
861 TRACE("%p %s\n", This, debugstr_w(str) );
862 *text = str;
863
864 return S_OK;
865}
#define TRUE
Definition: types.h:120
unsigned int BOOL
Definition: ntddk_ex.h:94
const GLint * first
Definition: glext.h:5794
static UINT UINT last
Definition: font.c:45
static xmlChar * do_get_text(xmlNodePtr node, BOOL trim, DWORD *first, DWORD *last, BOOL *trail_ig_ws)
Definition: node.c:712

Referenced by dom_pi_get_text(), domattr_get_text(), domcdata_get_text(), domcomment_get_text(), domdoc_get_text(), domelem_get_nodeTypedValue(), domelem_get_text(), domfrag_get_text(), domtext_get_text(), entityref_get_text(), and unknode_get_text().

◆ node_get_xml()

HRESULT node_get_xml ( xmlnode This,
BOOL  ensure_eol,
BSTR ret 
)

Definition at line 936 of file node.c.

937{
938 xmlBufferPtr xml_buf;
939 xmlNodePtr xmldecl;
940 int size;
941
942 if(!ret)
943 return E_INVALIDARG;
944
945 *ret = NULL;
946
947 xml_buf = xmlBufferCreate();
948 if(!xml_buf)
949 return E_OUTOFMEMORY;
950
951 xmldecl = xmldoc_unlink_xmldecl( This->node->doc );
952
953 size = xmlNodeDump(xml_buf, This->node->doc, This->node, 0, 1);
954 if(size > 0) {
955 const xmlChar *buf_content;
957
958 /* Attribute Nodes return a space in front of their name */
959 buf_content = xmlBufferContent(xml_buf);
960
961 content = bstr_from_xmlChar(buf_content + (buf_content[0] == ' ' ? 1 : 0));
962 if(ensure_eol)
964
965 *ret = content;
966 }else {
968 }
969
970 xmlBufferFree(xml_buf);
971 xmldoc_link_xmldecl( This->node->doc, xmldecl );
972 return *ret ? S_OK : E_OUTOFMEMORY;
973}
void xmldoc_link_xmldecl(xmlDocPtr doc, xmlNodePtr node)
Definition: domdoc.c:386
xmlNodePtr xmldoc_unlink_xmldecl(xmlDocPtr doc)
Definition: domdoc.c:393
GLsizeiptr size
Definition: glext.h:5919
BSTR EnsureCorrectEOL(BSTR sInput)
Definition: node.c:885

Referenced by dom_pi_get_xml(), domattr_get_xml(), domcdata_get_xml(), domcomment_get_xml(), domelem_get_xml(), domfrag_get_xml(), domtext_get_xml(), entityref_get_xml(), and unknode_get_xml().

◆ node_has_childnodes()

HRESULT node_has_childnodes ( const xmlnode This,
VARIANT_BOOL ret 
)

Definition at line 658 of file node.c.

659{
660 if (!ret) return E_INVALIDARG;
661
662 if (!This->node->children)
663 {
664 *ret = VARIANT_FALSE;
665 return S_FALSE;
666 }
667
668 *ret = VARIANT_TRUE;
669 return S_OK;
670}

Referenced by dom_pi_hasChildNodes(), domattr_hasChildNodes(), domdoc_hasChildNodes(), domelem_hasChildNodes(), domfrag_hasChildNodes(), entityref_hasChildNodes(), and unknode_hasChildNodes().

◆ node_insert_before()

HRESULT node_insert_before ( xmlnode This,
IXMLDOMNode new_child,
const VARIANT ref_child,
IXMLDOMNode **  ret 
)

Definition at line 432 of file node.c.

434{
436 xmlnode *node_obj;
437 int refcount = 0;
438 xmlDocPtr doc;
439 HRESULT hr;
440
441 if(!new_child)
442 return E_INVALIDARG;
443
444 node_obj = get_node_obj(new_child);
445 if(!node_obj) return E_FAIL;
446
447 switch(V_VT(ref_child))
448 {
449 case VT_EMPTY:
450 case VT_NULL:
451 break;
452
453 case VT_UNKNOWN:
454 case VT_DISPATCH:
455 if (V_UNKNOWN(ref_child))
456 {
457 hr = IUnknown_QueryInterface(V_UNKNOWN(ref_child), &IID_IXMLDOMNode, (void**)&before);
458 if(FAILED(hr)) return hr;
459 }
460 break;
461
462 default:
463 FIXME("refChild var type %x\n", V_VT(ref_child));
464 return E_FAIL;
465 }
466
467 TRACE("new child %p, This->node %p\n", node_obj->node, This->node);
468
469 if(!node_obj->node->parent)
470 if(xmldoc_remove_orphan(node_obj->node->doc, node_obj->node) != S_OK)
471 WARN("%p is not an orphan of %p\n", node_obj->node, node_obj->node->doc);
472
473 refcount = xmlnode_get_inst_cnt(node_obj);
474
475 if(before)
476 {
477 xmlnode *before_node_obj = get_node_obj(before);
478 IXMLDOMNode_Release(before);
479 if(!before_node_obj) return E_FAIL;
480 }
481
482 /* unlink from current parent first */
483 if(node_obj->parent)
484 {
485 hr = IXMLDOMNode_removeChild(node_obj->parent, node_obj->iface, NULL);
486 if (hr == S_OK) xmldoc_remove_orphan(node_obj->node->doc, node_obj->node);
487 }
488 doc = node_obj->node->doc;
489
490 if(before)
491 {
492 xmlNodePtr new_node;
493 xmlnode *before_node_obj = get_node_obj(before);
494
495 /* refs count including subtree */
496 if (doc != before_node_obj->node->doc)
497 refcount = xmlnode_get_inst_cnt(node_obj);
498
499 if (refcount) xmldoc_add_refs(before_node_obj->node->doc, refcount);
500 new_node = xmlAddPrevSibling(before_node_obj->node, node_obj->node);
501 if (new_node != node_obj->node)
502 {
503 if (refcount != 1)
504 FIXME("referenced xmlNode was freed, expect crashes\n");
505 xmlnode_add_ref(new_node);
506 node_obj->node = new_node;
507 }
508 if (refcount) xmldoc_release_refs(doc, refcount);
509 node_obj->parent = This->parent;
510 }
511 else
512 {
513 xmlNodePtr new_node;
514
515 if (doc != This->node->doc)
516 refcount = xmlnode_get_inst_cnt(node_obj);
517
518 if (refcount) xmldoc_add_refs(This->node->doc, refcount);
519 /* xmlAddChild doesn't unlink node from previous parent */
520 xmlUnlinkNode(node_obj->node);
521 new_node = xmlAddChild(This->node, node_obj->node);
522 if (new_node != node_obj->node)
523 {
524 if (refcount != 1)
525 FIXME("referenced xmlNode was freed, expect crashes\n");
526 xmlnode_add_ref(new_node);
527 node_obj->node = new_node;
528 }
529 if (refcount) xmldoc_release_refs(doc, refcount);
530 node_obj->parent = This->iface;
531 }
532
533 if(ret)
534 {
535 IXMLDOMNode_AddRef(new_child);
536 *ret = new_child;
537 }
538
539 TRACE("ret S_OK\n");
540 return S_OK;
541}
@ VT_NULL
Definition: compat.h:2296
@ VT_UNKNOWN
Definition: compat.h:2308
@ VT_EMPTY
Definition: compat.h:2295
@ VT_DISPATCH
Definition: compat.h:2304
LONG xmldoc_release_refs(xmlDocPtr doc, LONG refs)
Definition: domdoc.c:624
LONG xmldoc_add_refs(xmlDocPtr doc, LONG refs)
Definition: domdoc.c:612
xmlnode * get_node_obj(IXMLDOMNode *node)
Definition: node.c:168
int xmlnode_get_inst_cnt(xmlnode *node)
Definition: node.c:413
#define V_UNKNOWN(A)
Definition: oleauto.h:281
IXMLDOMNode * parent
IXMLDOMNode * iface
__inline int before(__u32 seq1, __u32 seq2)
Definition: tcpcore.h:2390

Referenced by dom_pi_insertBefore(), domattr_insertBefore(), domcomment_insertBefore(), domdoc_insertBefore(), domelem_insertBefore(), domfrag_insertBefore(), domtext_insertBefore(), entityref_insertBefore(), and unknode_insertBefore().

◆ node_put_text()

HRESULT node_put_text ( xmlnode This,
BSTR  text 
)

Definition at line 867 of file node.c.

868{
869 xmlChar *str, *str2;
870
871 TRACE("(%p)->(%s)\n", This, debugstr_w(text));
872
874
875 /* Escape the string. */
877 free(str);
878
879 xmlNodeSetContent(This->node, str2);
880 xmlFree(str2);
881
882 return S_OK;
883}
XMLPUBFUN xmlChar * xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input)
static xmlChar * xmlchar_from_wchar(const WCHAR *str)
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
Definition: parser.h:35

Referenced by dom_pi_put_text(), domattr_put_text(), domcdata_put_text(), domcomment_put_text(), domelem_put_text(), domfrag_put_text(), domtext_put_text(), entityref_put_text(), and unknode_put_text().

◆ node_put_value()

HRESULT node_put_value ( xmlnode This,
VARIANT value 
)

Definition at line 279 of file node.c.

280{
281 HRESULT hr;
282
283 if (V_VT(value) != VT_BSTR)
284 {
285 VARIANT string_value;
286
287 VariantInit(&string_value);
288 hr = VariantChangeType(&string_value, value, 0, VT_BSTR);
289 if(FAILED(hr)) {
290 WARN("Couldn't convert to VT_BSTR\n");
291 return hr;
292 }
293
294 hr = node_set_content(This, V_BSTR(&string_value));
295 VariantClear(&string_value);
296 }
297 else
299
300 return hr;
301}
HRESULT node_set_content(xmlnode *This, LPCWSTR value)
Definition: node.c:241
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
Definition: variant.c:962
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:648

Referenced by dom_pi_put_nodeValue(), domcdata_put_nodeValue(), domcomment_put_nodeValue(), and domtext_put_nodeValue().

◆ node_put_value_escaped()

HRESULT node_put_value_escaped ( xmlnode This,
VARIANT value 
)

Definition at line 303 of file node.c.

304{
305 HRESULT hr;
306
307 if (V_VT(value) != VT_BSTR)
308 {
309 VARIANT string_value;
310
311 VariantInit(&string_value);
312 hr = VariantChangeType(&string_value, value, 0, VT_BSTR);
313 if(FAILED(hr)) {
314 WARN("Couldn't convert to VT_BSTR\n");
315 return hr;
316 }
317
318 hr = node_set_content_escaped(This, V_BSTR(&string_value));
319 VariantClear(&string_value);
320 }
321 else
323
324 return hr;
325}
static HRESULT node_set_content_escaped(xmlnode *This, LPCWSTR value)
Definition: node.c:255

Referenced by domattr_put_nodeValue(), and domattr_put_value().

◆ node_query_interface()

BOOL node_query_interface ( xmlnode This,
REFIID  riid,
void **  ppv 
)

Definition at line 66 of file node.c.

67{
69 TRACE("(%p)->(IID_xmlnode %p)\n", This, ppv);
70 *ppv = This;
71 return TRUE;
72 }
73
74 return dispex_query_interface(&This->dispex, riid, ppv);
75}
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
BOOL dispex_query_interface(DispatchEx *This, REFIID riid, void **ppv)
Definition: dispex.c:1656
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

Referenced by dom_pi_QueryInterface(), domattr_QueryInterface(), domcdata_QueryInterface(), domcomment_QueryInterface(), domdoc_QueryInterface(), domdoctype_QueryInterface(), domelem_QueryInterface(), domfrag_QueryInterface(), domtext_QueryInterface(), entityref_QueryInterface(), and unknode_QueryInterface().

◆ node_remove_child()

HRESULT node_remove_child ( xmlnode This,
IXMLDOMNode child,
IXMLDOMNode **  oldChild 
)

Definition at line 608 of file node.c.

609{
610 xmlnode *child_node;
611
612 if(!child) return E_INVALIDARG;
613
614 if(oldChild)
615 *oldChild = NULL;
616
617 child_node = get_node_obj(child);
618 if(!child_node) return E_FAIL;
619
620 if(child_node->node->parent != This->node)
621 {
622 WARN("childNode %p is not a child of %p\n", child, This);
623 return E_INVALIDARG;
624 }
625
626 xmlUnlinkNode(child_node->node);
627 child_node->parent = NULL;
628 xmldoc_add_orphan(child_node->node->doc, child_node->node);
629
630 if(oldChild)
631 {
632 IXMLDOMNode_AddRef(child);
633 *oldChild = child;
634 }
635
636 return S_OK;
637}

Referenced by dom_pi_removeChild(), domattr_removeChild(), domcomment_removeChild(), domdoc_removeChild(), domelem_removeChild(), domfrag_removeChild(), domtext_removeChild(), entityref_removeChild(), and unknode_removeChild().

◆ node_replace_child()

HRESULT node_replace_child ( xmlnode This,
IXMLDOMNode newChild,
IXMLDOMNode oldChild,
IXMLDOMNode **  ret 
)

Definition at line 543 of file node.c.

545{
546 xmlnode *old_child, *new_child;
547 xmlDocPtr leaving_doc;
548 xmlNode *my_ancestor;
549 int refcount = 0;
550
551 /* Do not believe any documentation telling that newChild == NULL
552 means removal. It does certainly *not* apply to msxml3! */
553 if(!newChild || !oldChild)
554 return E_INVALIDARG;
555
556 if(ret)
557 *ret = NULL;
558
559 old_child = get_node_obj(oldChild);
560 if(!old_child) return E_FAIL;
561
562 if(old_child->node->parent != This->node)
563 {
564 WARN("childNode %p is not a child of %p\n", oldChild, This);
565 return E_INVALIDARG;
566 }
567
568 new_child = get_node_obj(newChild);
569 if(!new_child) return E_FAIL;
570
571 my_ancestor = This->node;
572 while(my_ancestor)
573 {
574 if(my_ancestor == new_child->node)
575 {
576 WARN("tried to create loop\n");
577 return E_FAIL;
578 }
579 my_ancestor = my_ancestor->parent;
580 }
581
582 if(!new_child->node->parent)
583 if(xmldoc_remove_orphan(new_child->node->doc, new_child->node) != S_OK)
584 WARN("%p is not an orphan of %p\n", new_child->node, new_child->node->doc);
585
586 leaving_doc = new_child->node->doc;
587
588 if (leaving_doc != old_child->node->doc)
589 refcount = xmlnode_get_inst_cnt(new_child);
590
591 if (refcount) xmldoc_add_refs(old_child->node->doc, refcount);
592 xmlReplaceNode(old_child->node, new_child->node);
593 if (refcount) xmldoc_release_refs(leaving_doc, refcount);
594 new_child->parent = old_child->parent;
595 old_child->parent = NULL;
596
597 xmldoc_add_orphan(old_child->node->doc, old_child->node);
598
599 if(ret)
600 {
601 IXMLDOMNode_AddRef(oldChild);
602 *ret = oldChild;
603 }
604
605 return S_OK;
606}

Referenced by dom_pi_replaceChild(), domattr_replaceChild(), domcomment_replaceChild(), domdoc_replaceChild(), domelem_replaceChild(), domfrag_replaceChild(), domtext_replaceChild(), entityref_replaceChild(), and unknode_replaceChild().

◆ node_select_nodes()

HRESULT node_select_nodes ( const xmlnode This,
BSTR  query,
IXMLDOMNodeList **  nodes 
)

Definition at line 1558 of file node.c.

1559{
1560 xmlChar* str;
1561 HRESULT hr;
1562
1563 if (!query || !nodes) return E_INVALIDARG;
1564
1566 hr = create_selection(This->node, str, nodes);
1567 free(str);
1568
1569 return hr;
1570}
HRESULT create_selection(xmlNodePtr, xmlChar *, IXMLDOMNodeList **)
Definition: selection.c:764

Referenced by dom_pi_selectNodes(), domattr_selectNodes(), domcdata_selectNodes(), domcomment_selectNodes(), domdoc_selectNodes(), domelem_selectNodes(), domfrag_selectNodes(), domtext_selectNodes(), entityref_selectNodes(), node_select_singlenode(), and unknode_selectNodes().

◆ node_select_singlenode()

HRESULT node_select_singlenode ( const xmlnode This,
BSTR  query,
IXMLDOMNode **  node 
)

Definition at line 1572 of file node.c.

1573{
1575 HRESULT hr;
1576
1577 if (node)
1578 *node = NULL;
1579
1581 if (hr == S_OK)
1582 {
1583 hr = IXMLDOMNodeList_nextNode(list, node);
1584 IXMLDOMNodeList_Release(list);
1585 }
1586 return hr;
1587}
Definition: list.h:37
HRESULT node_select_nodes(const xmlnode *This, BSTR query, IXMLDOMNodeList **nodes)
Definition: node.c:1558
#define list
Definition: rosglue.h:35

Referenced by dom_pi_selectSingleNode(), domattr_selectSingleNode(), domcdata_selectSingleNode(), domcomment_selectSingleNode(), domdoc_selectSingleNode(), domelem_selectSingleNode(), domfrag_selectSingleNode(), domtext_selectSingleNode(), entityref_selectSingleNode(), and unknode_selectSingleNode().

◆ node_set_content()

HRESULT node_set_content ( xmlnode This,
LPCWSTR  value 
)

Definition at line 241 of file node.c.

242{
243 xmlChar *str;
244
245 TRACE("(%p)->(%s)\n", This, debugstr_w(value));
247 if(!str)
248 return E_OUTOFMEMORY;
249
250 xmlNodeSetContent(This->node, str);
251 free(str);
252 return S_OK;
253}

Referenced by dom_pi_put_data(), dom_pi_put_xml_decl(), domcdata_put_data(), domcomment_put_data(), domelem_put_nodeTypedValue(), domtext_put_data(), and node_put_value().

◆ node_transform_node()

HRESULT node_transform_node ( const xmlnode node,
IXMLDOMNode stylesheet,
BSTR p 
)

Definition at line 1553 of file node.c.

1554{
1555 return node_transform_node_params(node, stylesheet, p, NULL, NULL);
1556}
GLfloat GLfloat p
Definition: glext.h:8902
HRESULT node_transform_node_params(const xmlnode *This, IXMLDOMNode *stylesheet, BSTR *p, ISequentialStream *stream, const struct xslprocessor_params *params)
Definition: node.c:1480

Referenced by dom_pi_transformNode(), domattr_transformNode(), domcdata_transformNode(), domcomment_transformNode(), domdoc_transformNode(), domdoc_transformNodeToObject(), domelem_transformNode(), domfrag_transformNode(), domtext_transformNode(), entityref_transformNode(), and unknode_transformNode().

◆ node_transform_node_params()

HRESULT node_transform_node_params ( const xmlnode This,
IXMLDOMNode stylesheet,
BSTR p,
ISequentialStream stream,
const struct xslprocessor_params params 
)

Definition at line 1480 of file node.c.

1482{
1483 xsltStylesheetPtr xsltSS;
1484 xmlDocPtr sheet_doc;
1485 HRESULT hr = S_OK;
1486 xmlnode *sheet;
1487
1488 if (!stylesheet || (!p && !stream)) return E_INVALIDARG;
1489
1490 if (p) *p = NULL;
1491
1492 sheet = get_node_obj(stylesheet);
1493 if(!sheet) return E_FAIL;
1494
1495 sheet_doc = xmlCopyDoc(sheet->node->doc, 1);
1496 xsltSS = xsltParseStylesheetDoc(sheet_doc);
1497 if (xsltSS)
1498 {
1499 const char **xslparams = NULL;
1500 xmlDocPtr result;
1501 unsigned int i;
1502
1503 /* convert our parameter list to libxml2 format */
1504 if (params && params->count)
1505 {
1506 struct xslprocessor_par *par;
1507
1508 i = 0;
1509 xslparams = malloc((params->count * 2 + 1) * sizeof(char*));
1510 LIST_FOR_EACH_ENTRY(par, &params->list, struct xslprocessor_par, entry)
1511 {
1512 xslparams[i++] = (char*)xmlchar_from_wchar(par->name);
1513 xslparams[i++] = (char*)xmlchar_from_wchar(par->value);
1514 }
1515 xslparams[i] = NULL;
1516 }
1517
1518 if (xslparams)
1519 {
1520 xsltTransformContextPtr ctxt = xsltNewTransformContext(xsltSS, This->node->doc);
1521
1522 /* push parameters to user context */
1523 xsltQuoteUserParams(ctxt, xslparams);
1524 result = xsltApplyStylesheetUser(xsltSS, This->node->doc, NULL, NULL, NULL, ctxt);
1526
1527 for (i = 0; i < params->count*2; i++)
1528 free((char*)xslparams[i]);
1529 free(xslparams);
1530 }
1531 else
1532 result = xsltApplyStylesheet(xsltSS, This->node->doc, NULL);
1533
1534 if (result)
1535 {
1536 if (stream)
1538 else
1540 xmlFreeDoc(result);
1541 }
1542
1543 xsltFreeStylesheet(xsltSS);
1544 }
1545 else
1546 xmlFreeDoc(sheet_doc);
1547
1548 if (p && !*p) *p = SysAllocStringLen(NULL, 0);
1549
1550 return hr;
1551}
xsltTransformContextPtr xsltNewTransformContext(xsltStylesheetPtr style, xmlDocPtr doc)
Definition: transform.c:564
xmlDocPtr xsltApplyStylesheetUser(xsltStylesheetPtr style, xmlDocPtr doc, const char **params, const char *output, FILE *profile, xsltTransformContextPtr userCtxt)
Definition: transform.c:6273
xmlDocPtr xsltApplyStylesheet(xsltStylesheetPtr style, xmlDocPtr doc, const char **params)
Definition: transform.c:6230
void xsltFreeTransformContext(xsltTransformContextPtr ctxt)
Definition: transform.c:721
GLenum const GLfloat * params
Definition: glext.h:5645
GLuint64EXT * result
Definition: glext.h:11304
static HRESULT node_transform_write_to_bstr(xsltStylesheetPtr style, xmlDocPtr result, BSTR *str)
Definition: node.c:1234
static HRESULT node_transform_write_to_stream(xsltStylesheetPtr style, xmlDocPtr result, ISequentialStream *stream)
Definition: node.c:1262
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
Definition: parse.h:23
int xsltQuoteUserParams(xsltTransformContextPtr ctxt, const char **params)
Definition: variables.c:1716
void xsltFreeStylesheet(xsltStylesheetPtr style)
Definition: xslt.c:965
xsltStylesheetPtr xsltParseStylesheetDoc(xmlDocPtr doc)
Definition: xslt.c:6736

Referenced by domdoc_transformNodeToObject(), node_transform_node(), and xslprocessor_transform().

◆ return_null_bstr()

◆ return_null_node()

◆ return_null_ptr()

static HRESULT return_null_ptr ( void **  p)
inlinestatic

◆ return_null_var()

◆ return_var_false()

static HRESULT return_var_false ( VARIANT_BOOL p)
inlinestatic

Definition at line 333 of file msxml_private.h.

334{
335 if(!p)
336 return E_INVALIDARG;
337
338 *p = VARIANT_FALSE;
339 return S_FALSE;
340}

Referenced by domcdata_hasChildNodes(), domcomment_hasChildNodes(), and domtext_hasChildNodes().

◆ SAXAttributes_create()

HRESULT SAXAttributes_create ( MSXML_VERSION  version,
void **  ppObj 
)

Definition at line 3555 of file mxwriter.c.

3556{
3557 static const int default_count = 10;
3559
3560 TRACE("(%p)\n", ppObj);
3561
3562 This = malloc(sizeof(*This));
3563 if( !This )
3564 return E_OUTOFMEMORY;
3565
3566 This->IMXAttributes_iface.lpVtbl = &MXAttributesVtbl;
3567 This->ISAXAttributes_iface.lpVtbl = &SAXAttributesVtbl;
3568 This->IVBSAXAttributes_iface.lpVtbl = &VBSAXAttributesVtbl;
3569 This->ref = 1;
3570
3571 This->class_version = version;
3572
3573 This->attr = malloc(default_count * sizeof(mxattribute));
3574 This->length = 0;
3575 This->allocated = default_count;
3576
3577 *ppObj = &This->IMXAttributes_iface;
3578
3579 init_dispex(&This->dispex, (IUnknown*)&This->IMXAttributes_iface, &mxattrs_dispex);
3580
3581 TRACE("returning iface %p\n", *ppObj);
3582
3583 return S_OK;
3584}
static const struct IVBSAXAttributesVtbl VBSAXAttributesVtbl
Definition: mxwriter.c:3520
static dispex_static_data_t mxattrs_dispex
Definition: mxwriter.c:3548
static const ISAXAttributesVtbl SAXAttributesVtbl
Definition: mxwriter.c:3199
static const IMXAttributesVtbl MXAttributesVtbl
Definition: mxwriter.c:2928

Referenced by DllGetClassObject().

◆ SAXXMLReader_create()

HRESULT SAXXMLReader_create ( MSXML_VERSION  ,
void **   
)

Referenced by DllGetClassObject().

◆ SchemaCache_create()

HRESULT SchemaCache_create ( MSXML_VERSION  version,
void **  obj 
)

Definition at line 1601 of file schema.c.

1602{
1604 if (!This)
1605 return E_OUTOFMEMORY;
1606
1607 TRACE("(%d %p)\n", version, obj);
1608
1609 This->IXMLDOMSchemaCollection2_iface.lpVtbl = &XMLDOMSchemaCollection2Vtbl;
1611 This->allocated = 10;
1612 This->count = 0;
1613 This->uris = malloc(This->allocated * sizeof(xmlChar*));
1614 This->ref = 1;
1615 This->version = version;
1616 This->validateOnLoad = VARIANT_TRUE;
1617 This->read_only = 0;
1618 init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMSchemaCollection2_iface, &schemacache_dispex);
1619
1620 *obj = &This->IXMLDOMSchemaCollection2_iface;
1621 return S_OK;
1622}
static const struct IXMLDOMSchemaCollection2Vtbl XMLDOMSchemaCollection2Vtbl
Definition: schema.c:788
static dispex_static_data_t schemacache_dispex
Definition: schema.c:1594
#define DEFAULT_HASHTABLE_SIZE
Definition: schema.c:55
xmlHashTablePtr xmlHashCreate(int size)
Definition: hash.c:160

Referenced by DllGetClassObject(), and domdoc_get_namespaces().

◆ SchemaCache_get_node_dt()

XDR_DT SchemaCache_get_node_dt ( IXMLDOMSchemaCollection2 iface,
xmlNodePtr  node 
)

Definition at line 1561 of file schema.c.

1562{
1564 xmlSchemaPtr schema = get_node_schema(This, node);
1565 XDR_DT dt = DT_INVALID;
1566
1567 TRACE("(%p, %p)\n", This, node);
1568
1569 if (node->ns && xmlStrEqual(node->ns->href, DT_nsURI))
1570 {
1571 dt = str_to_dt(node->name, -1);
1572 }
1573 else if (schema)
1574 {
1575 xmlChar* str;
1576 xmlNodePtr schema_node = lookup_schema_element(schema, node);
1577
1578 str = xmlGetNsProp(schema_node, BAD_CAST "dt", DT_nsURI);
1579 if (str)
1580 {
1581 dt = str_to_dt(str, -1);
1582 xmlFree(str);
1583 }
1584 }
1585
1586 return dt;
1587}
static xmlNodePtr lookup_schema_element(xmlSchemaPtr schema, xmlNodePtr node)
Definition: schema.c:1529
static xmlSchemaPtr get_node_schema(schema_cache *This, xmlNodePtr node)
Definition: schema.c:683
XDR_DT str_to_dt(xmlChar const *str, int len)
Definition: schema.c:541
const WCHAR * schema

Referenced by element_get_dt().

◆ SchemaCache_validate_tree()

HRESULT SchemaCache_validate_tree ( IXMLDOMSchemaCollection2 iface,
xmlNodePtr  tree 
)

Definition at line 1537 of file schema.c.

1538{
1540 xmlSchemaPtr schema;
1541
1542 TRACE("(%p, %p)\n", This, tree);
1543
1544 if (!tree)
1545 return E_POINTER;
1546
1547 if (tree->type == XML_DOCUMENT_NODE)
1548 tree = xmlDocGetRootElement(tree->doc);
1549
1551 /* TODO: if the ns is not in the cache, and it's a URL,
1552 * do we try to load from that? */
1553 if (schema)
1555 else
1556 WARN("no schema found for xmlns=%s\n", get_node_nsURI(tree));
1557
1558 return E_FAIL;
1559}
static xmlChar const * get_node_nsURI(xmlNodePtr node)
Definition: schema.c:672
#define E_POINTER
Definition: winerror.h:3480

Referenced by domdoc_validateNode().

◆ schemasCleanup()

void schemasCleanup ( void  )

Definition at line 748 of file schema.c.

749{
750 xmlSchemaFree(datatypes_schema);
753}
static xmlExternalEntityLoader _external_entity_loader
Definition: schema.c:689
XMLPUBFUN void xmlSetExternalEntityLoader(xmlExternalEntityLoader f)

Referenced by DllMain().

◆ schemasInit()

void schemasInit ( void  )

Definition at line 717 of file schema.c.

718{
719 xmlChar* buf;
720 if (!(datatypes_rsrc = FindResourceA(MSXML_hInstance, "DATATYPES", "XML")))
721 {
722 FIXME("failed to find resource for %s\n", DT_nsURI);
723 return;
724 }
725
727 {
728 FIXME("failed to load resource for %s\n", DT_nsURI);
729 return;
730 }
733
734 /* Resource is loaded as raw data,
735 * need a null-terminated string */
736 while (buf[datatypes_len - 1] != '>') datatypes_len--;
740
742 {
745 }
746}
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
Definition: res.c:155
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:568
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
HINSTANCE MSXML_hInstance
Definition: main.c:51
static xmlParserInputPtr external_entity_loader(const char *URL, const char *ID, xmlParserCtxtPtr ctxt)
Definition: schema.c:691
static HGLOBAL datatypes_handle
Definition: schema.c:67
static HRSRC datatypes_rsrc
Definition: schema.c:68
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
XMLPUBFUN xmlExternalEntityLoader xmlGetExternalEntityLoader(void)

Referenced by DllMain().

◆ ServerXMLHTTP_create()

HRESULT ServerXMLHTTP_create ( void **  obj)

Definition at line 2106 of file httprequest.c.

2107{
2108 serverhttp *req;
2109
2110 TRACE("(%p)\n", obj);
2111
2112 req = malloc(sizeof(*req));
2113 if( !req )
2114 return E_OUTOFMEMORY;
2115
2116 init_httprequest(&req->req);
2118
2120
2121 TRACE("returning iface %p\n", *obj);
2122
2123 return S_OK;
2124}
static void init_httprequest(httprequest *req)
Definition: httprequest.c:2057
static const struct IServerXMLHTTPRequestVtbl ServerXMLHTTPRequestVtbl
Definition: httprequest.c:2028
IServerXMLHTTPRequest IServerXMLHTTPRequest_iface
Definition: httprequest.c:107
httprequest req
Definition: httprequest.c:106

◆ set_xpathmode()

void set_xpathmode ( xmlDocPtr  doc,
BOOL  xpath 
)

Definition at line 230 of file domdoc.c.

231{
232 properties_from_xmlDocPtr(doc)->XPath = xpath;
233}

Referenced by domelem_getElementsByTagName().

◆ str_to_dt()

XDR_DT str_to_dt ( xmlChar const str,
int  len 
)

Definition at line 541 of file schema.c.

542{
544 XDR_DT dt = DT_INVALID;
545
546 if (hash <= DT_MAX_HASH_VALUE)
547 dt = DT_lookup_table[hash];
548
549 if (dt != DT_INVALID && xmlStrcasecmp(str, DT_string_table[dt]) == 0)
550 return dt;
551
552 return DT_INVALID;
553}
static DWORD dt_hash(xmlChar const *str, int len)
Definition: schema.c:313
XMLPUBFUN int xmlStrcasecmp(const xmlChar *str1, const xmlChar *str2)
Definition: xmlstring.c:277

Referenced by element_get_dt(), and SchemaCache_get_node_dt().

◆ strdupxmlChar()

static xmlChar * strdupxmlChar ( const xmlChar str)
inlinestatic

Definition at line 284 of file msxml_private.h.

285{
286 xmlChar *ret = NULL;
287
288 if(str) {
289 DWORD size;
290
291 size = (xmlStrlen(str)+1)*sizeof(xmlChar);
292 ret = malloc(size);
293 memcpy(ret, str, size);
294 }
295
296 return ret;
297}

Referenced by cache_add_entry().

◆ tagName_to_XPath()

xmlChar * tagName_to_XPath ( const BSTR  tagName)

Definition at line 1955 of file domdoc.c.

1956{
1957 xmlChar *query, *tmp;
1958 static const xmlChar everything[] = "/descendant::node()";
1959 static const xmlChar mod_pre[] = "*[local-name()='";
1960 static const xmlChar mod_post[] = "']";
1961 static const xmlChar prefix[] = "descendant::";
1962 const WCHAR *tokBegin, *tokEnd;
1963 int len;
1964
1965 /* Special case - empty tagname - means select all nodes,
1966 except document itself. */
1967 if (!*tagName)
1968 return xmlStrdup(everything);
1969
1971
1972 tokBegin = tagName;
1973 while (tokBegin && *tokBegin)
1974 {
1975 switch (*tokBegin)
1976 {
1977 case '/':
1978 query = xmlStrcat(query, BAD_CAST "/");
1979 ++tokBegin;
1980 break;
1981 case '*':
1982 query = xmlStrcat(query, BAD_CAST "*");
1983 ++tokBegin;
1984 break;
1985 default:
1986 query = xmlStrcat(query, mod_pre);
1987 tokEnd = tokBegin;
1988 while (*tokEnd && *tokEnd != '/')
1989 ++tokEnd;
1990 len = WideCharToMultiByte(CP_UTF8, 0, tokBegin, tokEnd-tokBegin, NULL, 0, NULL, NULL);
1991 tmp = xmlMalloc(len);
1992 WideCharToMultiByte(CP_UTF8, 0, tokBegin, tokEnd-tokBegin, (char*)tmp, len, NULL, NULL);
1993 query = xmlStrncat(query, tmp, len);
1994 xmlFree(tmp);
1995 tokBegin = tokEnd;
1996 query = xmlStrcat(query, mod_post);
1997 }
1998 }
1999
2000 return query;
2001}
#define WideCharToMultiByte
Definition: compat.h:111
xmlMallocFunc xmlMalloc
Definition: globals.c:193
XMLPUBFUN xmlChar * xmlStrncat(xmlChar *cur, const xmlChar *add, int len)
Definition: xmlstring.c:448
XMLPUBFUN xmlChar * xmlStrcat(xmlChar *cur, const xmlChar *add)
Definition: xmlstring.c:524
XMLPUBFUN xmlChar * xmlStrdup(const xmlChar *cur)
Definition: xmlstring.c:69

Referenced by domdoc_getElementsByTagName(), and domelem_getElementsByTagName().

◆ wineXmlCallbackError()

void wineXmlCallbackError ( char const caller,
const xmlError err 
)

Definition at line 81 of file main.c.

82{
83 enum __wine_debug_class dbcl;
84
85 switch (err->level)
86 {
87 case XML_ERR_NONE: dbcl = __WINE_DBCL_TRACE; break;
88 case XML_ERR_WARNING: dbcl = __WINE_DBCL_WARN; break;
89 default: dbcl = __WINE_DBCL_ERR; break;
90 }
91
92 wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, "error code %d", err->code);
93 if (err->message)
94 wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, ": %s", err->message);
95 else
96 wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, "\n");
97}
#define err(...)
__wine_debug_class
Definition: debug.h:50
@ __WINE_DBCL_ERR
Definition: debug.h:52
@ __WINE_DBCL_TRACE
Definition: debug.h:54
@ __WINE_DBCL_WARN
Definition: debug.h:53
const char int int wine_dbg_log(enum __wine_debug_class cls, struct __wine_debug_channel *ch, const char *func, const char *format,...) __WINE_PRINTF_ATTR(4
@ XML_ERR_WARNING
Definition: xmlerror.h:26
@ XML_ERR_NONE
Definition: xmlerror.h:25

◆ wineXmlCallbackLog()

void wineXmlCallbackLog ( char const caller,
xmlErrorLevel  lvl,
char const msg,
va_list  ap 
)

Definition at line 55 of file main.c.

56{
57 enum __wine_debug_class dbcl;
58 char buff[200];
59 const int max_size = ARRAY_SIZE(buff);
60 int len;
61
62 switch (lvl)
63 {
64 case XML_ERR_NONE:
65 dbcl = __WINE_DBCL_TRACE;
66 break;
67 case XML_ERR_WARNING:
68 dbcl = __WINE_DBCL_WARN;
69 break;
70 default:
71 dbcl = __WINE_DBCL_ERR;
72 break;
73 }
74
76 if (len == -1 || len >= max_size) buff[max_size-1] = 0;
77
78 wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, "%s", buff);
79}
#define msg(x)
Definition: auth_time.c:54
#define ARRAY_SIZE(A)
Definition: main.h:20
static INT max_size
Definition: history.c:51
static unsigned char buff[32768]
Definition: fatten.c:17
#define vsnprintf
Definition: tif_win32.c:406
void int int ULONGLONG int va_list * ap
Definition: winesup.h:36

◆ xmlchar_from_wchar()

◆ xmlChar_from_wchar()

xmlChar * xmlChar_from_wchar ( LPCWSTR  str)

◆ xmlchar_from_wcharn()

static xmlChar * xmlchar_from_wcharn ( const WCHAR str,
int  nchars,
BOOL  use_xml_alloc 
)
inlinestatic

Definition at line 265 of file msxml_private.h.

266{
267 xmlChar *xmlstr;
268 DWORD len = WideCharToMultiByte( CP_UTF8, 0, str, nchars, NULL, 0, NULL, NULL );
269
270 xmlstr = use_xml_alloc ? xmlMalloc( len + 1 ) : malloc( len + 1 );
271 if ( xmlstr )
272 {
273 WideCharToMultiByte( CP_UTF8, 0, str, nchars, (LPSTR) xmlstr, len+1, NULL, NULL );
274 xmlstr[len] = 0;
275 }
276 return xmlstr;
277}
char * LPSTR
Definition: xmlstorage.h:182

Referenced by domdoc_load(), xmlchar_from_wchar(), and xslt_doc_default_loader().

◆ xmldoc_add_orphan()

HRESULT xmldoc_add_orphan ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Definition at line 658 of file domdoc.c.

659{
660 xmldoc_priv *priv = priv_from_xmlDocPtr(doc);
662
663 entry = malloc(sizeof(*entry));
664 if(!entry)
665 return E_OUTOFMEMORY;
666
667 entry->node = node;
668 list_add_head( &priv->orphans, &entry->entry );
669 return S_OK;
670}
Definition: domdoc.c:202
struct list orphans
Definition: domdoc.c:198

Referenced by domdoc_cloneNode(), domdoc_createNode(), domdoc_put_documentElement(), domelem_remove_qualified_item(), node_clone(), node_remove_child(), and node_replace_child().

◆ xmldoc_add_ref()

LONG xmldoc_add_ref ( xmlDocPtr  doc)

◆ xmldoc_add_refs()

LONG xmldoc_add_refs ( xmlDocPtr  doc,
LONG  refs 
)

Definition at line 612 of file domdoc.c.

613{
614 LONG ref = InterlockedExchangeAdd(&priv_from_xmlDocPtr(doc)->refs, refs) + refs;
615 TRACE("%p, refcount %ld.\n", doc, ref);
616 return ref;
617}
#define InterlockedExchangeAdd
Definition: interlocked.h:196
long LONG
Definition: pedump.c:60
Definition: send.c:48

Referenced by domdoc_put_documentElement(), node_insert_before(), node_replace_child(), and xmldoc_add_ref().

◆ xmldoc_init()

void xmldoc_init ( xmlDocPtr  doc,
MSXML_VERSION  version 
)

Definition at line 606 of file domdoc.c.

607{
608 doc->_private = create_priv();
610}
static domdoc_properties * create_properties(MSXML_VERSION version)
Definition: domdoc.c:277
static xmldoc_priv * create_priv(void)
Definition: domdoc.c:262
domdoc_properties * properties
Definition: domdoc.c:199

Referenced by cache_entry_from_xdr_doc(), cache_entry_from_xsd_doc(), and dom_document_create().

◆ xmldoc_link_xmldecl()

void xmldoc_link_xmldecl ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Definition at line 386 of file domdoc.c.

387{
388 assert(doc != NULL);
389 if (doc->standalone != -1) xmlAddPrevSibling( doc->children, node );
390}

Referenced by doparse(), and node_get_xml().

◆ xmldoc_release()

LONG xmldoc_release ( xmlDocPtr  doc)

◆ xmldoc_release_refs()

LONG xmldoc_release_refs ( xmlDocPtr  doc,
LONG  refs 
)

Definition at line 624 of file domdoc.c.

625{
626 xmldoc_priv *priv = priv_from_xmlDocPtr(doc);
627 LONG ref = InterlockedExchangeAdd(&priv->refs, -refs) - refs;
628
629 TRACE("%p, refcount %ld.\n", doc, ref);
630
631 if (ref < 0)
632 WARN("negative refcount, expect troubles\n");
633
634 if (ref == 0)
635 {
636 orphan_entry *orphan, *orphan2;
637 TRACE("freeing docptr %p\n", doc);
638
640 {
641 xmlFreeNode( orphan->node );
642 free( orphan );
643 }
645 free(doc->_private);
646
647 xmlFreeDoc(doc);
648 }
649
650 return ref;
651}
static void properties_release(domdoc_properties *properties)
Definition: domdoc.c:351
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Definition: list.h:204
LONG refs
Definition: domdoc.c:197
Definition: send.c:34

Referenced by domdoc_put_documentElement(), node_insert_before(), node_replace_child(), and xmldoc_release().

◆ xmldoc_remove_orphan()

HRESULT xmldoc_remove_orphan ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Definition at line 672 of file domdoc.c.

673{
674 xmldoc_priv *priv = priv_from_xmlDocPtr(doc);
675 orphan_entry *entry, *entry2;
676
678 {
679 if( entry->node == node )
680 {
681 list_remove( &entry->entry );
682 free( entry );
683 return S_OK;
684 }
685 }
686
687 return S_FALSE;
688}
static void list_remove(struct list_entry *entry)
Definition: list.h:90

Referenced by domdoc_put_documentElement(), domelem_set_named_item(), node_clone(), node_insert_before(), and node_replace_child().

◆ xmldoc_unlink_xmldecl()

xmlNodePtr xmldoc_unlink_xmldecl ( xmlDocPtr  doc)

Definition at line 393 of file domdoc.c.

394{
395 static const xmlChar xmlA[] = "xml";
396 xmlNodePtr node, first_child;
397
398 assert(doc != NULL);
399
400 /* xml declaration node could be created automatically after parsing or added
401 to a tree later */
402 first_child = doc->children;
403 if (first_child && first_child->type == XML_PI_NODE && xmlStrEqual(first_child->name, xmlA))
404 {
405 node = first_child;
406 xmlUnlinkNode( node );
407 }
408 else
409 node = NULL;
410
411 return node;
412}

Referenced by node_get_xml().

◆ xmldoc_version()

MSXML_VERSION xmldoc_version ( xmlDocPtr  doc)

Definition at line 414 of file domdoc.c.

415{
417}
MSXML_VERSION version
Definition: domdoc.c:71

Referenced by domattr_get_namespaceURI(), domattr_get_prefix(), node_get_base_name(), and node_get_nodeName().

◆ XMLDocument_create()

HRESULT XMLDocument_create ( void **  )

◆ XMLElement_create()

HRESULT XMLElement_create ( xmlNodePtr  node,
LPVOID ppObj,
BOOL  own 
)

Definition at line 480 of file xmlelem.c.

481{
482 xmlelem *elem;
483
484 TRACE("(%p)\n", ppObj);
485
486 if (!ppObj)
487 return E_INVALIDARG;
488
489 *ppObj = NULL;
490
491 elem = malloc(sizeof(*elem));
492 if(!elem)
493 return E_OUTOFMEMORY;
494
495 elem->IXMLElement_iface.lpVtbl = &xmlelem_vtbl;
496 elem->ref = 1;
497 elem->node = node;
498 elem->own = own;
499
500 *ppObj = &elem->IXMLElement_iface;
501
502 TRACE("returning iface %p\n", *ppObj);
503 return S_OK;
504}
static size_t elem
Definition: string.c:71
static const struct IXMLElementVtbl xmlelem_vtbl
Definition: xmlelem.c:457

Referenced by xmldoc_createElement(), xmldoc_get_root(), xmlelem_collection_IEnumVARIANT_Next(), xmlelem_collection_item(), and xmlelem_get_parent().

◆ XMLHTTPRequest_create()

HRESULT XMLHTTPRequest_create ( void **  obj)

Definition at line 2088 of file httprequest.c.

2089{
2090 httprequest *req;
2091
2092 TRACE("(%p)\n", obj);
2093
2094 req = malloc(sizeof(*req));
2095 if( !req )
2096 return E_OUTOFMEMORY;
2097
2098 init_httprequest(req);
2099 *obj = &req->IXMLHTTPRequest_iface;
2100
2101 TRACE("returning iface %p\n", *obj);
2102
2103 return S_OK;
2104}
IXMLHTTPRequest IXMLHTTPRequest_iface
Definition: httprequest.c:63

◆ xmlnode_add_ref()

void xmlnode_add_ref ( xmlNodePtr  node)

Definition at line 420 of file node.c.

421{
422 if (node->type == XML_DOCUMENT_NODE) return;
423 InterlockedIncrement((LONG*)&node->_private);
424}
#define InterlockedIncrement
Definition: armddk.h:53

Referenced by create_nodemap(), init_xmlnode(), and node_insert_before().

◆ xmlnode_get_inst_cnt()

int xmlnode_get_inst_cnt ( xmlnode node)

Definition at line 413 of file node.c.

414{
415 return node_get_inst_cnt(node->node);
416}
static int node_get_inst_cnt(xmlNodePtr node)
Definition: node.c:385

Referenced by domdoc_put_documentElement(), node_insert_before(), and node_replace_child().

◆ xmlnode_release()

void xmlnode_release ( xmlNodePtr  node)

Definition at line 426 of file node.c.

427{
428 if (node->type == XML_DOCUMENT_NODE) return;
429 InterlockedDecrement((LONG*)&node->_private);
430}
#define InterlockedDecrement
Definition: armddk.h:52

Referenced by destroy_xmlnode(), and xmlnodemap_Release().

◆ xmlNodePtr_from_domnode()

xmlNodePtr xmlNodePtr_from_domnode ( IXMLDOMNode iface,
xmlElementType  type 
)

Definition at line 52 of file node.c.

53{
55
56 if ( !iface )
57 return NULL;
58 This = get_node_obj( iface );
59 if ( !This || !This->node )
60 return NULL;
61 if ( type && This->node->type != type )
62 return NULL;
63 return This->node;
64}

Referenced by cache_entry_from_url(), and schema_cache_add().

◆ XMLParser_create()

HRESULT XMLParser_create ( void **  ppObj)

Definition at line 414 of file xmlparser.c.

415{
417
418 TRACE("(%p)\n", ppObj);
419
420 This = malloc(sizeof(xmlparser));
421 if(!This)
422 return E_OUTOFMEMORY;
423
424 This->IXMLParser_iface.lpVtbl = &xmlparser_vtbl;
425 This->nodefactory = NULL;
426 This->input = NULL;
427 This->flags = 0;
428 This->state = XMLPARSER_IDLE;
429 This->ref = 1;
430
431 *ppObj = &This->IXMLParser_iface;
432
433 TRACE("returning iface %p\n", *ppObj);
434
435 return S_OK;
436}
static const struct IXMLParserVtbl xmlparser_vtbl
Definition: xmlparser.c:379
@ XMLPARSER_IDLE
Definition: xmlparser.idl:195

◆ XMLView_create()

HRESULT XMLView_create ( void **  ppObj)

Definition at line 1404 of file xmlview.c.

1405{
1406 XMLView *This;
1407 HRESULT hres;
1408
1409 TRACE("(%p)\n", ppObj);
1410
1411 This = calloc(1, sizeof(*This));
1412 if(!This)
1413 return E_OUTOFMEMORY;
1414
1415 This->IPersistMoniker_iface.lpVtbl = &XMLView_PersistMonikerVtbl;
1416 This->IPersistHistory_iface.lpVtbl = &XMLView_PersistHistoryVtbl;
1417 This->IOleCommandTarget_iface.lpVtbl = &XMLView_OleCommandTargetVtbl;
1418 This->IOleObject_iface.lpVtbl = &XMLView_OleObjectVtbl;
1419 This->ref = 1;
1420
1421 hres = CoCreateInstance(&CLSID_HTMLDocument, (IUnknown*)&This->IPersistMoniker_iface,
1422 CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&This->html_doc);
1423 if(FAILED(hres)) {
1424 free(This);
1425 return hres;
1426 }
1427
1428 *ppObj = &This->IPersistMoniker_iface;
1429 return S_OK;
1430}
const GUID IID_IUnknown
static IPersistHistoryVtbl XMLView_PersistHistoryVtbl
Definition: xmlview.c:1139
static IPersistMonikerVtbl XMLView_PersistMonikerVtbl
Definition: xmlview.c:1064
static IOleCommandTargetVtbl XMLView_OleCommandTargetVtbl
Definition: xmlview.c:1190
static IOleObjectVtbl XMLView_OleObjectVtbl
Definition: xmlview.c:1377
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
#define calloc
Definition: rosglue.h:14

◆ xslt_doc_default_loader()

xmlDocPtr xslt_doc_default_loader ( const xmlChar uri,
xmlDictPtr  dict,
int  options,
void _ctxt,
xsltLoadType  type 
)

Definition at line 1401 of file node.c.

1403{
1404 IUri *import_uri = NULL;
1405 xmlParserInputPtr input;
1406 xmlParserCtxtPtr pctxt;
1407 xmlDocPtr doc = NULL;
1409 HRESULT hr;
1410 bsc_t *bsc;
1411 BSTR uriW;
1412
1413 TRACE("%s, %p, %#x, %p, %d\n", debugstr_a((const char *)uri), dict, options, _ctxt, type);
1414
1415 pctxt = xmlNewParserCtxt();
1416 if (!pctxt)
1417 return NULL;
1418
1419 if (dict && pctxt->dict)
1420 {
1421 xmlDictFree(pctxt->dict);
1422 pctxt->dict = NULL;
1423 }
1424
1425 if (dict)
1426 {
1427 pctxt->dict = dict;
1428 xmlDictReference(pctxt->dict);
1429 }
1430
1431 xmlCtxtUseOptions(pctxt, options);
1432
1433 hr = xslt_doc_get_uri(uri, _ctxt, type, &import_uri);
1434 if (FAILED(hr))
1435 goto failed;
1436
1437 hr = CreateURLMonikerEx2(NULL, import_uri, &moniker, 0);
1438 if (FAILED(hr))
1439 goto failed;
1440
1442 IMoniker_Release(moniker);
1443 if (FAILED(hr))
1444 goto failed;
1445
1446 if (FAILED(detach_bsc(bsc)))
1447 goto failed;
1448
1449 if (!input)
1450 goto failed;
1451
1452 inputPush(pctxt, input);
1453 xmlParseDocument(pctxt);
1454
1455 if (pctxt->wellFormed)
1456 {
1457 doc = pctxt->myDoc;
1458 /* Set imported uri, to give nested imports a chance. */
1459 if (IUri_GetPropertyBSTR(import_uri, Uri_PROPERTY_ABSOLUTE_URI, &uriW, 0) == S_OK)
1460 {
1461 doc->name = (char *)xmlchar_from_wcharn(uriW, SysStringLen(uriW), TRUE);
1462 SysFreeString(uriW);
1463 }
1464 }
1465 else
1466 {
1467 doc = NULL;
1468 xmlFreeDoc(pctxt->myDoc);
1469 pctxt->myDoc = NULL;
1470 }
1471
1472failed:
1473 xmlFreeParserCtxt(pctxt);
1474 if (import_uri)
1475 IUri_Release(import_uri);
1476
1477 return doc;
1478}
HRESULT detach_bsc(bsc_t *bsc)
Definition: bsc.c:342
HRESULT bind_url(IMoniker *mon, HRESULT(*onDataAvailable)(void *, char *, DWORD), void *obj, bsc_t **ret)
Definition: bsc.c:299
GLenum GLenum GLenum input
Definition: glext.h:9031
const char * uri
Definition: sec_mgr.c:1588
static HRESULT import_loader_onDataAvailable(void *ctxt, char *ptr, DWORD len)
Definition: node.c:1331
static HRESULT xslt_doc_get_uri(const xmlChar *uri, void *_ctxt, xsltLoadType type, IUri **doc_uri)
Definition: node.c:1353
XMLPUBFUN int inputPush(xmlParserCtxtPtr ctxt, xmlParserInputPtr value)
Definition: parser.c:1897
void xmlDictFree(xmlDictPtr dict)
Definition: dict.c:333
int xmlDictReference(xmlDictPtr dict)
Definition: dict.c:317
XMLPUBFUN int xmlParseDocument(xmlParserCtxtPtr ctxt)
Definition: parser.c:11009
XMLPUBFUN int xmlCtxtUseOptions(xmlParserCtxtPtr ctxt, int options)
Definition: parser.c:14698
XMLPUBFUN void xmlFreeParserCtxt(xmlParserCtxtPtr ctxt)
XMLPUBFUN xmlParserCtxtPtr xmlNewParserCtxt(void)
Definition: bsc.c:39
Definition: xmldoc.c:231
Definition: main.c:40
HRESULT WINAPI CreateURLMonikerEx2(IMoniker *pmkContext, IUri *pUri, IMoniker **ppmk, DWORD dwFlags)
Definition: umon.c:668

Referenced by init_libxslt().

◆ XSLTemplate_create()

HRESULT XSLTemplate_create ( void **  ppObj)

Definition at line 264 of file stylesheet.c.

265{
267
268 TRACE("(%p)\n", ppObj);
269
270 This = malloc(sizeof(*This));
271 if(!This)
272 return E_OUTOFMEMORY;
273
274 This->IXSLTemplate_iface.lpVtbl = &XSLTemplateVtbl;
275 This->ref = 1;
276 This->node = NULL;
277 init_dispex(&This->dispex, (IUnknown*)&This->IXSLTemplate_iface, &xsltemplate_dispex);
278
279 *ppObj = &This->IXSLTemplate_iface;
280
281 TRACE("returning iface %p\n", *ppObj);
282
283 return S_OK;
284}
static dispex_static_data_t xsltemplate_dispex
Definition: stylesheet.c:257
static const struct IXSLTemplateVtbl XSLTemplateVtbl
Definition: stylesheet.c:238

Variable Documentation

◆ MSXML_hInstance

HINSTANCE MSXML_hInstance
extern

Definition at line 51 of file main.c.

Referenced by DllMain(), external_entity_loader(), and schemasInit().