Home
About
Blog
Products
Forum
Support
Contact
Sunbelt Computer Software
PL/B Language Development and Support
Home
About
Blog
Products
Forum
Support
Contact
cefpython/src/include/wrapper/cef_xml_object.h at master · BitCoding/cefpython · GitHub
Skip to content
Navigation Menu
Sign in
Appearance settings
Platform
AI CODE CREATION
GitHub Copilot
Write better code with AI
GitHub Copilot app
Direct agents from issue to merge
MCP Registry
Integrate external tools
DEVELOPER WORKFLOWS
Actions
Automate any workflow
Codespaces
Instant dev environments
Issues
Plan and track work
Code Review
Manage code changes
Code Quality
Enforce quality at merge
APPLICATION SECURITY
GitHub Advanced Security
Find and fix vulnerabilities
Code security
Secure your code as you build
Secret protection
Stop leaks before they start
EXPLORE
Why GitHub
Documentation
Blog
Changelog
Marketplace
View all features
Solutions
BY COMPANY SIZE
Enterprises
Small and medium teams
Startups
Nonprofits
BY USE CASE
App Modernization
DevSecOps
DevOps
CI/CD
View all use cases
BY INDUSTRY
Healthcare
Financial services
Manufacturing
Government
View all industries
View all solutions
Resources
EXPLORE BY TOPIC
AI
Software Development
DevOps
Security
View all topics
EXPLORE BY TYPE
Customer stories
Events & webinars
Ebooks & reports
Business insights
GitHub Skills
SUPPORT & SERVICES
Documentation
Customer support
Community forum
Trust center
Partners
View all resources
Open Source
COMMUNITY
GitHub Sponsors
Fund open source developers
PROGRAMS
Security Lab
Maintainer Community
GitHub Stars
Archive Program
REPOSITORIES
Topics
Trending
Collections
Enterprise
ENTERPRISE SOLUTIONS
Enterprise platform
AI-powered developer platform
AVAILABLE ADD-ONS
GitHub Advanced Security
Enterprise-grade security features
Copilot for Business
Enterprise-grade AI features
Premium Support
Enterprise-grade 24/7 support
Pricing
Search
/
Sign in
Sign up
Appearance settings
You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
Dismiss alert
{{ message }}
BitCoding
/
cefpython
Public
forked from
cztomczak/cefpython
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Files
Expand file tree
master
Breadcrumbs
cefpython
/
src
/
include
/
wrapper
/
cef_xml_object.h
Copy path
Blame
More file actions
Blame
More file actions
Latest commit
History
History
History
197 lines (173 loc) · 7.09 KB
master
Breadcrumbs
cefpython
/
src
/
include
/
wrapper
/
cef_xml_object.h
Copy path
Top
File metadata and controls
Code
Blame
197 lines (173 loc) · 7.09 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
//
Copyright (c) 2011 Marshall A. Greenblatt. All rights reserved.
//
//
Redistribution and use in source and binary forms, with or without
//
modification, are permitted provided that the following conditions are
//
met:
//
//
* Redistributions of source code must retain the above copyright
//
notice, this list of conditions and the following disclaimer.
//
* Redistributions in binary form must reproduce the above
//
copyright notice, this list of conditions and the following disclaimer
//
in the documentation and/or other materials provided with the
//
distribution.
//
* Neither the name of Google Inc. nor the name Chromium Embedded
//
Framework nor the names of its contributors may be used to endorse
//
or promote products derived from this software without specific prior
//
written permission.
//
//
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
//
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
//
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
//
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
//
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
//
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
//
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
//
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
//
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
//
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
//
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//
---------------------------------------------------------------------------
//
//
The contents of this file are only available to applications that link
//
against the libcef_dll_wrapper target.
//
#
ifndef
CEF_INCLUDE_WRAPPER_CEF_XML_OBJECT_H_
#
define
CEF_INCLUDE_WRAPPER_CEF_XML_OBJECT_H_
#
pragma
once
#
include
<
map
>
#
include
<
vector
>
#
include
"
include/base/cef_lock.h
"
#
include
"
include/base/cef_macros.h
"
#
include
"
include/base/cef_ref_counted.h
"
#
include
"
include/cef_base.h
"
#
include
"
include/cef_xml_reader.h
"
class
CefStreamReader
;
//
/
//
Thread safe class for representing XML data as a structured object. This
//
class should not be used with large XML documents because all data will be
//
resident in memory at the same time. This implementation supports a
//
restricted set of XML features:
//
<pre>
//
(1) Processing instructions, whitespace and comments are ignored.
//
(2) Elements and attributes must always be referenced using the fully
//
qualified name (ie, namespace:localname).
//
(3) Empty elements (<a/>) and elements with zero-length values (<a></a>)
//
are considered the same.
//
(4) Element nodes are considered part of a value if:
//
(a) The element node follows a non-element node at the same depth
//
(see 5), or
//
(b) The element node does not have a namespace and the parent node does.
//
(5) Mixed node types at the same depth are combined into a single element
//
value as follows:
//
(a) All node values are concatenated to form a single string value.
//
(b) Entity reference nodes are resolved to the corresponding entity
//
value.
//
(c) Element nodes are represented by their outer XML string.
//
</pre>
//
/
class
CefXmlObject
:
public
base
::RefCountedThreadSafe<CefXmlObject> {
public:
typedef
std::vector<CefRefPtr<CefXmlObject>> ObjectVector;
typedef
std::map<CefString, CefString> AttributeMap;
//
/
//
Create a new object with the specified name. An object name must always be
//
at least one character long.
//
/
explicit
CefXmlObject
(
const
CefString& name);
//
/
//
Load the contents of the specified XML stream into this object. The
//
existing children and attributes, if any, will first be cleared.
//
/
bool
Load
(CefRefPtr<CefStreamReader> stream,
CefXmlReader::EncodingType encodingType,
const
CefString&
URI
,
CefString* loadError);
//
/
//
Set the name, children and attributes of this object to a duplicate of the
//
specified object's contents. The existing children and attributes, if any,
//
will first be cleared.
//
/
void
Set
(CefRefPtr<CefXmlObject> object);
//
/
//
Append a duplicate of the children and attributes of the specified object
//
to this object. If |overwriteAttributes| is true then any attributes in
//
this object that also exist in the specified object will be overwritten
//
with the new values. The name of this object is not changed.
//
/
void
Append
(CefRefPtr<CefXmlObject> object,
bool
overwriteAttributes);
//
/
//
Return a new object with the same name, children and attributes as this
//
object. The parent of the new object will be NULL.
//
/
CefRefPtr<CefXmlObject>
Duplicate
();
//
/
//
Clears this object's children and attributes. The name and parenting of
//
this object are not changed.
//
/
void
Clear
();
//
/
//
Access the object's name. An object name must always be at least one
//
character long.
//
/
CefString
GetName
();
bool
SetName
(
const
CefString& name);
//
/
//
Access the object's parent. The parent can be NULL if this object has not
//
been added as the child on another object.
//
/
bool
HasParent
();
CefRefPtr<CefXmlObject>
GetParent
();
//
/
//
Access the object's value. An object cannot have a value if it also has
//
children. Attempting to set the value while children exist will fail.
//
/
bool
HasValue
();
CefString
GetValue
();
bool
SetValue
(
const
CefString& value);
//
/
//
Access the object's attributes. Attributes must have unique names.
//
/
bool
HasAttributes
();
size_t
GetAttributeCount
();
bool
HasAttribute
(
const
CefString& name);
CefString
GetAttributeValue
(
const
CefString& name);
bool
SetAttributeValue
(
const
CefString& name,
const
CefString& value);
size_t
GetAttributes
(AttributeMap& attributes);
void
ClearAttributes
();
//
/
//
Access the object's children. Each object can only have one parent so
//
attempting to add an object that already has a parent will fail. Removing a
//
child will set the child's parent to NULL. Adding a child will set the
//
child's parent to this object. This object's value, if any, will be cleared
//
if a child is added.
//
/
bool
HasChildren
();
size_t
GetChildCount
();
bool
HasChild
(CefRefPtr<CefXmlObject> child);
bool
AddChild
(CefRefPtr<CefXmlObject> child);
bool
RemoveChild
(CefRefPtr<CefXmlObject> child);
size_t
GetChildren
(ObjectVector& children);
void
ClearChildren
();
//
/
//
Find the first child with the specified name.
//
/
CefRefPtr<CefXmlObject>
FindChild
(
const
CefString& name);
//
/
//
Find all children with the specified name.
//
/
size_t
FindChildren
(
const
CefString& name, ObjectVector& children);
private:
//
Protect against accidental deletion of this object.
friend
class
base
::RefCountedThreadSafe<CefXmlObject>;
~CefXmlObject
();
void
SetParent
(CefXmlObject* parent);
CefString name_;
CefXmlObject* parent_;
CefString value_;
AttributeMap attributes_;
ObjectVector children_;
base::Lock lock_;
DISALLOW_COPY_AND_ASSIGN
(CefXmlObject);
};
#
endif
//
CEF_INCLUDE_WRAPPER_CEF_XML_OBJECT_H_
You can’t perform that action at this time.