1 #define LOG_TAG "com.android.xml.permission.configfile"
2 #include "com_android_xml_permission_configfile.h"
3 
4 #include <assert.h>
5 #ifndef __BIONIC__
6 #define __assert2(f,n,fun,e) do { fprintf(stderr, "%s:%d: %s: Assertion `%s' failed", (f), (n), (fun), (e)); abort(); } while (false)
7 #endif
8 #define _xsdc_assert(e) do if (!(e)) __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, #e); while (false)
9 
10 namespace com {
11     namespace android {
12         namespace xml {
13             namespace permission {
14                 namespace configfile {
15                     template <class T>
16                     constexpr void (*xmlDeleter)(T* t);
17                     template <>
18                     constexpr auto xmlDeleter<xmlDoc> = xmlFreeDoc;
19                     template <>
__anon84b8445c0102(xmlChar *s) 20                     auto xmlDeleter<xmlChar> = [](xmlChar *s) { xmlFree(s); };
21 
22                     template <class T>
make_xmlUnique(T * t)23                     constexpr auto make_xmlUnique(T *t) {
24                         auto deleter = [](T *t) { xmlDeleter<T>(t); };
25                         return std::unique_ptr<T, decltype(deleter)>{t, deleter};
26                     }
27 
getXmlAttribute(const xmlNode * cur,const char * attribute)28                     static std::string getXmlAttribute(const xmlNode *cur, const char *attribute) {
29                         auto xmlValue = make_xmlUnique(xmlGetProp(cur, reinterpret_cast<const xmlChar*>(attribute)));
30                         if (xmlValue == nullptr) {
31                             return "";
32                         }
33                         std::string value(reinterpret_cast<const char*>(xmlValue.get()));
34                         return value;
35                     }
36 
read(const char * configFile)37                     std::optional<Permissions> read(const char* configFile) {
38                         auto doc = make_xmlUnique(xmlParseFile(configFile));
39                         if (doc == nullptr) {
40                             return std::nullopt;
41                         }
42                         xmlNodePtr _child = xmlDocGetRootElement(doc.get());
43                         if (_child == nullptr) {
44                             return std::nullopt;
45                         }
46                         if (xmlXIncludeProcess(doc.get()) < 0) {
47                             return std::nullopt;
48                         }
49 
50                         if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permissions"))) {
51                             Permissions _value = Permissions::read(_child);
52                             return _value;
53                         }
54                         return std::nullopt;
55                     }
56 
parse(const char * xml)57                     std::optional<Permissions> parse(const char* xml) {
58                         auto doc = make_xmlUnique(xmlParseDoc(reinterpret_cast<const xmlChar*>(xml)));
59                         if (doc == nullptr) {
60                             return std::nullopt;
61                         }
62                         xmlNodePtr _child = xmlDocGetRootElement(doc.get());
63                         if (_child == nullptr) {
64                             return std::nullopt;
65                         }
66                         if (xmlXIncludeProcess(doc.get()) < 0) {
67                             return std::nullopt;
68                         }
69 
70                         if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permissions"))) {
71                             Permissions _value = Permissions::read(_child);
72                             return _value;
73                         }
74                         return std::nullopt;
75                     }
76 
77 
Group(std::optional<int> gid)78                     Group::Group(std::optional<int> gid) : gid_(gid) {
79                     }
80 
getGid() const81                     const int& Group::getGid() const {
82                         _xsdc_assert(hasGid());
83                         return gid_.value();
84                     }
85 
hasGid() const86                     bool Group::hasGid() const {
87                         return gid_.has_value();
88                     }
89 
read(xmlNode * root)90                     Group Group::read(xmlNode *root) {
91                         std::string _raw;
92                         _raw = getXmlAttribute(root, "gid");
93                         std::optional<int> gid = std::nullopt;
94                         if (_raw != "") {
95                             int _value = std::stoi(_raw);
96                             gid = _value;
97                         }
98                         Group instance(gid);
99                         return instance;
100                     }
101 
Permission(std::optional<std::string> name)102                     Permission::Permission(std::optional<std::string> name) : name_(std::move(name)) {
103                     }
104 
getName() const105                     const std::string& Permission::getName() const {
106                         _xsdc_assert(hasName());
107                         return name_.value();
108                     }
109 
hasName() const110                     bool Permission::hasName() const {
111                         return name_.has_value();
112                     }
113 
read(xmlNode * root)114                     Permission Permission::read(xmlNode *root) {
115                         std::string _raw;
116                         _raw = getXmlAttribute(root, "name");
117                         std::optional<std::string> name = std::nullopt;
118                         if (_raw != "") {
119                             std::string &_value = _raw;
120                             name = _value;
121                         }
122                         Permission instance(name);
123                         return instance;
124                     }
125 
AssignPermission(std::optional<std::string> name,std::optional<int> uid)126                     AssignPermission::AssignPermission(std::optional<std::string> name, std::optional<int> uid) : name_(std::move(name)), uid_(uid) {
127                     }
128 
getName() const129                     const std::string& AssignPermission::getName() const {
130                         _xsdc_assert(hasName());
131                         return name_.value();
132                     }
133 
hasName() const134                     bool AssignPermission::hasName() const {
135                         return name_.has_value();
136                     }
137 
getUid() const138                     const int& AssignPermission::getUid() const {
139                         _xsdc_assert(hasUid());
140                         return uid_.value();
141                     }
142 
hasUid() const143                     bool AssignPermission::hasUid() const {
144                         return uid_.has_value();
145                     }
146 
read(xmlNode * root)147                     AssignPermission AssignPermission::read(xmlNode *root) {
148                         std::string _raw;
149                         _raw = getXmlAttribute(root, "name");
150                         std::optional<std::string> name = std::nullopt;
151                         if (_raw != "") {
152                             std::string &_value = _raw;
153                             name = _value;
154                         }
155                         _raw = getXmlAttribute(root, "uid");
156                         std::optional<int> uid = std::nullopt;
157                         if (_raw != "") {
158                             int _value = std::stoi(_raw);
159                             uid = _value;
160                         }
161                         AssignPermission instance(name, uid);
162                         return instance;
163                     }
164 
Library(std::optional<std::string> name)165                     SplitPermission::Library::Library(std::optional<std::string> name) : name_(std::move(name)) {
166                     }
167 
getName() const168                     const std::string& SplitPermission::Library::getName() const {
169                         _xsdc_assert(hasName());
170                         return name_.value();
171                     }
172 
hasName() const173                     bool SplitPermission::Library::hasName() const {
174                         return name_.has_value();
175                     }
176 
read(xmlNode * root)177                     SplitPermission::Library SplitPermission::Library::read(xmlNode *root) {
178                         std::string _raw;
179                         _raw = getXmlAttribute(root, "name");
180                         std::optional<std::string> name = std::nullopt;
181                         if (_raw != "") {
182                             std::string &_value = _raw;
183                             name = _value;
184                         }
185                         SplitPermission::Library instance(name);
186                         return instance;
187                     }
188 
SplitPermission(std::vector<Library> library,std::optional<std::string> name,std::optional<int> targetSdk)189                     SplitPermission::SplitPermission(std::vector<Library> library, std::optional<std::string> name, std::optional<int> targetSdk) : library_(std::move(library)), name_(std::move(name)), targetSdk_(targetSdk) {
190                     }
191 
getLibrary() const192                     const std::vector<SplitPermission::Library>& SplitPermission::getLibrary() const {
193                         return library_;
194                     }
195 
hasLibrary() const196                     bool SplitPermission::hasLibrary() const {
197                         return !(library_.empty());
198                     }
199 
getFirstLibrary() const200                     const SplitPermission::Library* SplitPermission::getFirstLibrary() const {
201                         if (library_.empty()) {
202                             return nullptr;
203                         }
204                         return &library_[0];
205                     }
206 
getName() const207                     const std::string& SplitPermission::getName() const {
208                         _xsdc_assert(hasName());
209                         return name_.value();
210                     }
211 
hasName() const212                     bool SplitPermission::hasName() const {
213                         return name_.has_value();
214                     }
215 
getTargetSdk() const216                     const int& SplitPermission::getTargetSdk() const {
217                         _xsdc_assert(hasTargetSdk());
218                         return targetSdk_.value();
219                     }
220 
hasTargetSdk() const221                     bool SplitPermission::hasTargetSdk() const {
222                         return targetSdk_.has_value();
223                     }
224 
read(xmlNode * root)225                     SplitPermission SplitPermission::read(xmlNode *root) {
226                         std::string _raw;
227                         _raw = getXmlAttribute(root, "name");
228                         std::optional<std::string> name = std::nullopt;
229                         if (_raw != "") {
230                             std::string &_value = _raw;
231                             name = _value;
232                         }
233                         _raw = getXmlAttribute(root, "targetSdk");
234                         std::optional<int> targetSdk = std::nullopt;
235                         if (_raw != "") {
236                             int _value = std::stoi(_raw);
237                             targetSdk = _value;
238                         }
239                         std::vector<Library> library;
240                         for (auto *_child = root->xmlChildrenNode; _child != nullptr; _child = _child->next) {
241                             if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("library"))) {
242                                 Library _value = Library::read(_child);
243                                 library.push_back(std::move(_value));
244                             }
245                         }
246                         SplitPermission instance(library, name, targetSdk);
247                         return instance;
248                     }
249 
Library(std::optional<std::string> name,std::optional<std::string> file,std::optional<std::string> dependency)250                     Library::Library(std::optional<std::string> name, std::optional<std::string> file, std::optional<std::string> dependency) : name_(std::move(name)), file_(std::move(file)), dependency_(std::move(dependency)) {
251                     }
252 
getName() const253                     const std::string& Library::getName() const {
254                         _xsdc_assert(hasName());
255                         return name_.value();
256                     }
257 
hasName() const258                     bool Library::hasName() const {
259                         return name_.has_value();
260                     }
261 
getFile() const262                     const std::string& Library::getFile() const {
263                         _xsdc_assert(hasFile());
264                         return file_.value();
265                     }
266 
hasFile() const267                     bool Library::hasFile() const {
268                         return file_.has_value();
269                     }
270 
getDependency() const271                     const std::string& Library::getDependency() const {
272                         _xsdc_assert(hasDependency());
273                         return dependency_.value();
274                     }
275 
hasDependency() const276                     bool Library::hasDependency() const {
277                         return dependency_.has_value();
278                     }
279 
read(xmlNode * root)280                     Library Library::read(xmlNode *root) {
281                         std::string _raw;
282                         _raw = getXmlAttribute(root, "name");
283                         std::optional<std::string> name = std::nullopt;
284                         if (_raw != "") {
285                             std::string &_value = _raw;
286                             name = _value;
287                         }
288                         _raw = getXmlAttribute(root, "file");
289                         std::optional<std::string> file = std::nullopt;
290                         if (_raw != "") {
291                             std::string &_value = _raw;
292                             file = _value;
293                         }
294                         _raw = getXmlAttribute(root, "dependency");
295                         std::optional<std::string> dependency = std::nullopt;
296                         if (_raw != "") {
297                             std::string &_value = _raw;
298                             dependency = _value;
299                         }
300                         Library instance(name, file, dependency);
301                         return instance;
302                     }
303 
Feature(std::optional<std::string> name,std::optional<std::string> notLowRam,std::optional<int> version)304                     Feature::Feature(std::optional<std::string> name, std::optional<std::string> notLowRam, std::optional<int> version) : name_(std::move(name)), notLowRam_(std::move(notLowRam)), version_(version) {
305                     }
306 
getName() const307                     const std::string& Feature::getName() const {
308                         _xsdc_assert(hasName());
309                         return name_.value();
310                     }
311 
hasName() const312                     bool Feature::hasName() const {
313                         return name_.has_value();
314                     }
315 
getNotLowRam() const316                     const std::string& Feature::getNotLowRam() const {
317                         _xsdc_assert(hasNotLowRam());
318                         return notLowRam_.value();
319                     }
320 
hasNotLowRam() const321                     bool Feature::hasNotLowRam() const {
322                         return notLowRam_.has_value();
323                     }
324 
getVersion() const325                     const int& Feature::getVersion() const {
326                         _xsdc_assert(hasVersion());
327                         return version_.value();
328                     }
329 
hasVersion() const330                     bool Feature::hasVersion() const {
331                         return version_.has_value();
332                     }
333 
read(xmlNode * root)334                     Feature Feature::read(xmlNode *root) {
335                         std::string _raw;
336                         _raw = getXmlAttribute(root, "name");
337                         std::optional<std::string> name = std::nullopt;
338                         if (_raw != "") {
339                             std::string &_value = _raw;
340                             name = _value;
341                         }
342                         _raw = getXmlAttribute(root, "notLowRam");
343                         std::optional<std::string> notLowRam = std::nullopt;
344                         if (_raw != "") {
345                             std::string &_value = _raw;
346                             notLowRam = _value;
347                         }
348                         _raw = getXmlAttribute(root, "version");
349                         std::optional<int> version = std::nullopt;
350                         if (_raw != "") {
351                             int _value = std::stoi(_raw);
352                             version = _value;
353                         }
354                         Feature instance(name, notLowRam, version);
355                         return instance;
356                     }
357 
UnavailableFeature(std::optional<std::string> name)358                     UnavailableFeature::UnavailableFeature(std::optional<std::string> name) : name_(std::move(name)) {
359                     }
360 
getName() const361                     const std::string& UnavailableFeature::getName() const {
362                         _xsdc_assert(hasName());
363                         return name_.value();
364                     }
365 
hasName() const366                     bool UnavailableFeature::hasName() const {
367                         return name_.has_value();
368                     }
369 
read(xmlNode * root)370                     UnavailableFeature UnavailableFeature::read(xmlNode *root) {
371                         std::string _raw;
372                         _raw = getXmlAttribute(root, "name");
373                         std::optional<std::string> name = std::nullopt;
374                         if (_raw != "") {
375                             std::string &_value = _raw;
376                             name = _value;
377                         }
378                         UnavailableFeature instance(name);
379                         return instance;
380                     }
381 
AllowInPowerSaveExceptIdle(std::optional<std::string> package)382                     AllowInPowerSaveExceptIdle::AllowInPowerSaveExceptIdle(std::optional<std::string> package) : package_(std::move(package)) {
383                     }
384 
getPackage() const385                     const std::string& AllowInPowerSaveExceptIdle::getPackage() const {
386                         _xsdc_assert(hasPackage());
387                         return package_.value();
388                     }
389 
hasPackage() const390                     bool AllowInPowerSaveExceptIdle::hasPackage() const {
391                         return package_.has_value();
392                     }
393 
read(xmlNode * root)394                     AllowInPowerSaveExceptIdle AllowInPowerSaveExceptIdle::read(xmlNode *root) {
395                         std::string _raw;
396                         _raw = getXmlAttribute(root, "package");
397                         std::optional<std::string> package = std::nullopt;
398                         if (_raw != "") {
399                             std::string &_value = _raw;
400                             package = _value;
401                         }
402                         AllowInPowerSaveExceptIdle instance(package);
403                         return instance;
404                     }
405 
AllowInPowerSave(std::optional<std::string> package)406                     AllowInPowerSave::AllowInPowerSave(std::optional<std::string> package) : package_(std::move(package)) {
407                     }
408 
getPackage() const409                     const std::string& AllowInPowerSave::getPackage() const {
410                         _xsdc_assert(hasPackage());
411                         return package_.value();
412                     }
413 
hasPackage() const414                     bool AllowInPowerSave::hasPackage() const {
415                         return package_.has_value();
416                     }
417 
read(xmlNode * root)418                     AllowInPowerSave AllowInPowerSave::read(xmlNode *root) {
419                         std::string _raw;
420                         _raw = getXmlAttribute(root, "package");
421                         std::optional<std::string> package = std::nullopt;
422                         if (_raw != "") {
423                             std::string &_value = _raw;
424                             package = _value;
425                         }
426                         AllowInPowerSave instance(package);
427                         return instance;
428                     }
429 
AllowInDataUsageSave(std::optional<std::string> package)430                     AllowInDataUsageSave::AllowInDataUsageSave(std::optional<std::string> package) : package_(std::move(package)) {
431                     }
432 
getPackage() const433                     const std::string& AllowInDataUsageSave::getPackage() const {
434                         _xsdc_assert(hasPackage());
435                         return package_.value();
436                     }
437 
hasPackage() const438                     bool AllowInDataUsageSave::hasPackage() const {
439                         return package_.has_value();
440                     }
441 
read(xmlNode * root)442                     AllowInDataUsageSave AllowInDataUsageSave::read(xmlNode *root) {
443                         std::string _raw;
444                         _raw = getXmlAttribute(root, "package");
445                         std::optional<std::string> package = std::nullopt;
446                         if (_raw != "") {
447                             std::string &_value = _raw;
448                             package = _value;
449                         }
450                         AllowInDataUsageSave instance(package);
451                         return instance;
452                     }
453 
AllowUnthrottledLocation(std::optional<std::string> package)454                     AllowUnthrottledLocation::AllowUnthrottledLocation(std::optional<std::string> package) : package_(std::move(package)) {
455                     }
456 
getPackage() const457                     const std::string& AllowUnthrottledLocation::getPackage() const {
458                         _xsdc_assert(hasPackage());
459                         return package_.value();
460                     }
461 
hasPackage() const462                     bool AllowUnthrottledLocation::hasPackage() const {
463                         return package_.has_value();
464                     }
465 
read(xmlNode * root)466                     AllowUnthrottledLocation AllowUnthrottledLocation::read(xmlNode *root) {
467                         std::string _raw;
468                         _raw = getXmlAttribute(root, "package");
469                         std::optional<std::string> package = std::nullopt;
470                         if (_raw != "") {
471                             std::string &_value = _raw;
472                             package = _value;
473                         }
474                         AllowUnthrottledLocation instance(package);
475                         return instance;
476                     }
477 
AllowIgnoreLocationSettings(std::optional<std::string> package,std::optional<std::string> attributionTag)478                     AllowIgnoreLocationSettings::AllowIgnoreLocationSettings(std::optional<std::string> package, std::optional<std::string> attributionTag) : package_(std::move(package)), attributionTag_(std::move(attributionTag)) {
479                     }
480 
getPackage() const481                     const std::string& AllowIgnoreLocationSettings::getPackage() const {
482                         _xsdc_assert(hasPackage());
483                         return package_.value();
484                     }
485 
hasPackage() const486                     bool AllowIgnoreLocationSettings::hasPackage() const {
487                         return package_.has_value();
488                     }
489 
getAttributionTag() const490                     const std::string& AllowIgnoreLocationSettings::getAttributionTag() const {
491                         _xsdc_assert(hasAttributionTag());
492                         return attributionTag_.value();
493                     }
494 
hasAttributionTag() const495                     bool AllowIgnoreLocationSettings::hasAttributionTag() const {
496                         return attributionTag_.has_value();
497                     }
498 
read(xmlNode * root)499                     AllowIgnoreLocationSettings AllowIgnoreLocationSettings::read(xmlNode *root) {
500                         std::string _raw;
501                         _raw = getXmlAttribute(root, "package");
502                         std::optional<std::string> package = std::nullopt;
503                         if (_raw != "") {
504                             std::string &_value = _raw;
505                             package = _value;
506                         }
507                         _raw = getXmlAttribute(root, "attributionTag");
508                         std::optional<std::string> attributionTag = std::nullopt;
509                         if (_raw != "") {
510                             std::string &_value = _raw;
511                             attributionTag = _value;
512                         }
513                         AllowIgnoreLocationSettings instance(package, attributionTag);
514                         return instance;
515                     }
516 
AllowImplicitBroadcast(std::optional<std::string> action)517                     AllowImplicitBroadcast::AllowImplicitBroadcast(std::optional<std::string> action) : action_(std::move(action)) {
518                     }
519 
getAction() const520                     const std::string& AllowImplicitBroadcast::getAction() const {
521                         _xsdc_assert(hasAction());
522                         return action_.value();
523                     }
524 
hasAction() const525                     bool AllowImplicitBroadcast::hasAction() const {
526                         return action_.has_value();
527                     }
528 
read(xmlNode * root)529                     AllowImplicitBroadcast AllowImplicitBroadcast::read(xmlNode *root) {
530                         std::string _raw;
531                         _raw = getXmlAttribute(root, "action");
532                         std::optional<std::string> action = std::nullopt;
533                         if (_raw != "") {
534                             std::string &_value = _raw;
535                             action = _value;
536                         }
537                         AllowImplicitBroadcast instance(action);
538                         return instance;
539                     }
540 
AppLink(std::optional<std::string> package)541                     AppLink::AppLink(std::optional<std::string> package) : package_(std::move(package)) {
542                     }
543 
getPackage() const544                     const std::string& AppLink::getPackage() const {
545                         _xsdc_assert(hasPackage());
546                         return package_.value();
547                     }
548 
hasPackage() const549                     bool AppLink::hasPackage() const {
550                         return package_.has_value();
551                     }
552 
read(xmlNode * root)553                     AppLink AppLink::read(xmlNode *root) {
554                         std::string _raw;
555                         _raw = getXmlAttribute(root, "package");
556                         std::optional<std::string> package = std::nullopt;
557                         if (_raw != "") {
558                             std::string &_value = _raw;
559                             package = _value;
560                         }
561                         AppLink instance(package);
562                         return instance;
563                     }
564 
SystemUserWhitelistedApp(std::optional<std::string> package)565                     SystemUserWhitelistedApp::SystemUserWhitelistedApp(std::optional<std::string> package) : package_(std::move(package)) {
566                     }
567 
getPackage() const568                     const std::string& SystemUserWhitelistedApp::getPackage() const {
569                         _xsdc_assert(hasPackage());
570                         return package_.value();
571                     }
572 
hasPackage() const573                     bool SystemUserWhitelistedApp::hasPackage() const {
574                         return package_.has_value();
575                     }
576 
read(xmlNode * root)577                     SystemUserWhitelistedApp SystemUserWhitelistedApp::read(xmlNode *root) {
578                         std::string _raw;
579                         _raw = getXmlAttribute(root, "package");
580                         std::optional<std::string> package = std::nullopt;
581                         if (_raw != "") {
582                             std::string &_value = _raw;
583                             package = _value;
584                         }
585                         SystemUserWhitelistedApp instance(package);
586                         return instance;
587                     }
588 
SystemUserBlacklistedApp(std::optional<std::string> package)589                     SystemUserBlacklistedApp::SystemUserBlacklistedApp(std::optional<std::string> package) : package_(std::move(package)) {
590                     }
591 
getPackage() const592                     const std::string& SystemUserBlacklistedApp::getPackage() const {
593                         _xsdc_assert(hasPackage());
594                         return package_.value();
595                     }
596 
hasPackage() const597                     bool SystemUserBlacklistedApp::hasPackage() const {
598                         return package_.has_value();
599                     }
600 
read(xmlNode * root)601                     SystemUserBlacklistedApp SystemUserBlacklistedApp::read(xmlNode *root) {
602                         std::string _raw;
603                         _raw = getXmlAttribute(root, "package");
604                         std::optional<std::string> package = std::nullopt;
605                         if (_raw != "") {
606                             std::string &_value = _raw;
607                             package = _value;
608                         }
609                         SystemUserBlacklistedApp instance(package);
610                         return instance;
611                     }
612 
DefaultEnabledVrApp(std::optional<std::string> package,std::optional<std::string> _class)613                     DefaultEnabledVrApp::DefaultEnabledVrApp(std::optional<std::string> package, std::optional<std::string> _class) : package_(std::move(package)), _class_(std::move(_class)) {
614                     }
615 
getPackage() const616                     const std::string& DefaultEnabledVrApp::getPackage() const {
617                         _xsdc_assert(hasPackage());
618                         return package_.value();
619                     }
620 
hasPackage() const621                     bool DefaultEnabledVrApp::hasPackage() const {
622                         return package_.has_value();
623                     }
624 
get_class() const625                     const std::string& DefaultEnabledVrApp::get_class() const {
626                         _xsdc_assert(has_class());
627                         return _class_.value();
628                     }
629 
has_class() const630                     bool DefaultEnabledVrApp::has_class() const {
631                         return _class_.has_value();
632                     }
633 
read(xmlNode * root)634                     DefaultEnabledVrApp DefaultEnabledVrApp::read(xmlNode *root) {
635                         std::string _raw;
636                         _raw = getXmlAttribute(root, "package");
637                         std::optional<std::string> package = std::nullopt;
638                         if (_raw != "") {
639                             std::string &_value = _raw;
640                             package = _value;
641                         }
642                         _raw = getXmlAttribute(root, "class");
643                         std::optional<std::string> _class = std::nullopt;
644                         if (_raw != "") {
645                             std::string &_value = _raw;
646                             _class = _value;
647                         }
648                         DefaultEnabledVrApp instance(package, _class);
649                         return instance;
650                     }
651 
BackupTransportWhitelistedService(std::optional<std::string> service)652                     BackupTransportWhitelistedService::BackupTransportWhitelistedService(std::optional<std::string> service) : service_(std::move(service)) {
653                     }
654 
getService() const655                     const std::string& BackupTransportWhitelistedService::getService() const {
656                         _xsdc_assert(hasService());
657                         return service_.value();
658                     }
659 
hasService() const660                     bool BackupTransportWhitelistedService::hasService() const {
661                         return service_.has_value();
662                     }
663 
read(xmlNode * root)664                     BackupTransportWhitelistedService BackupTransportWhitelistedService::read(xmlNode *root) {
665                         std::string _raw;
666                         _raw = getXmlAttribute(root, "service");
667                         std::optional<std::string> service = std::nullopt;
668                         if (_raw != "") {
669                             std::string &_value = _raw;
670                             service = _value;
671                         }
672                         BackupTransportWhitelistedService instance(service);
673                         return instance;
674                     }
675 
DisabledUntilUsedPreinstalledCarrierAssociatedApp(std::optional<std::string> package,std::optional<std::string> carrierAppPackage)676                     DisabledUntilUsedPreinstalledCarrierAssociatedApp::DisabledUntilUsedPreinstalledCarrierAssociatedApp(std::optional<std::string> package, std::optional<std::string> carrierAppPackage) : package_(std::move(package)), carrierAppPackage_(std::move(carrierAppPackage)) {
677                     }
678 
getPackage() const679                     const std::string& DisabledUntilUsedPreinstalledCarrierAssociatedApp::getPackage() const {
680                         _xsdc_assert(hasPackage());
681                         return package_.value();
682                     }
683 
hasPackage() const684                     bool DisabledUntilUsedPreinstalledCarrierAssociatedApp::hasPackage() const {
685                         return package_.has_value();
686                     }
687 
getCarrierAppPackage() const688                     const std::string& DisabledUntilUsedPreinstalledCarrierAssociatedApp::getCarrierAppPackage() const {
689                         _xsdc_assert(hasCarrierAppPackage());
690                         return carrierAppPackage_.value();
691                     }
692 
hasCarrierAppPackage() const693                     bool DisabledUntilUsedPreinstalledCarrierAssociatedApp::hasCarrierAppPackage() const {
694                         return carrierAppPackage_.has_value();
695                     }
696 
read(xmlNode * root)697                     DisabledUntilUsedPreinstalledCarrierAssociatedApp DisabledUntilUsedPreinstalledCarrierAssociatedApp::read(xmlNode *root) {
698                         std::string _raw;
699                         _raw = getXmlAttribute(root, "package");
700                         std::optional<std::string> package = std::nullopt;
701                         if (_raw != "") {
702                             std::string &_value = _raw;
703                             package = _value;
704                         }
705                         _raw = getXmlAttribute(root, "carrierAppPackage");
706                         std::optional<std::string> carrierAppPackage = std::nullopt;
707                         if (_raw != "") {
708                             std::string &_value = _raw;
709                             carrierAppPackage = _value;
710                         }
711                         DisabledUntilUsedPreinstalledCarrierAssociatedApp instance(package, carrierAppPackage);
712                         return instance;
713                     }
714 
DisabledUntilUsedPreinstalledCarrierApp(std::optional<std::string> package)715                     DisabledUntilUsedPreinstalledCarrierApp::DisabledUntilUsedPreinstalledCarrierApp(std::optional<std::string> package) : package_(std::move(package)) {
716                     }
717 
getPackage() const718                     const std::string& DisabledUntilUsedPreinstalledCarrierApp::getPackage() const {
719                         _xsdc_assert(hasPackage());
720                         return package_.value();
721                     }
722 
hasPackage() const723                     bool DisabledUntilUsedPreinstalledCarrierApp::hasPackage() const {
724                         return package_.has_value();
725                     }
726 
read(xmlNode * root)727                     DisabledUntilUsedPreinstalledCarrierApp DisabledUntilUsedPreinstalledCarrierApp::read(xmlNode *root) {
728                         std::string _raw;
729                         _raw = getXmlAttribute(root, "package");
730                         std::optional<std::string> package = std::nullopt;
731                         if (_raw != "") {
732                             std::string &_value = _raw;
733                             package = _value;
734                         }
735                         DisabledUntilUsedPreinstalledCarrierApp instance(package);
736                         return instance;
737                     }
738 
Permission(std::optional<std::string> name)739                     PrivappPermissions::Permission::Permission(std::optional<std::string> name) : name_(std::move(name)) {
740                     }
741 
getName() const742                     const std::string& PrivappPermissions::Permission::getName() const {
743                         _xsdc_assert(hasName());
744                         return name_.value();
745                     }
746 
hasName() const747                     bool PrivappPermissions::Permission::hasName() const {
748                         return name_.has_value();
749                     }
750 
read(xmlNode * root)751                     PrivappPermissions::Permission PrivappPermissions::Permission::read(xmlNode *root) {
752                         std::string _raw;
753                         _raw = getXmlAttribute(root, "name");
754                         std::optional<std::string> name = std::nullopt;
755                         if (_raw != "") {
756                             std::string &_value = _raw;
757                             name = _value;
758                         }
759                         PrivappPermissions::Permission instance(name);
760                         return instance;
761                     }
762 
DenyPermission(std::optional<std::string> name)763                     PrivappPermissions::DenyPermission::DenyPermission(std::optional<std::string> name) : name_(std::move(name)) {
764                     }
765 
getName() const766                     const std::string& PrivappPermissions::DenyPermission::getName() const {
767                         _xsdc_assert(hasName());
768                         return name_.value();
769                     }
770 
hasName() const771                     bool PrivappPermissions::DenyPermission::hasName() const {
772                         return name_.has_value();
773                     }
774 
read(xmlNode * root)775                     PrivappPermissions::DenyPermission PrivappPermissions::DenyPermission::read(xmlNode *root) {
776                         std::string _raw;
777                         _raw = getXmlAttribute(root, "name");
778                         std::optional<std::string> name = std::nullopt;
779                         if (_raw != "") {
780                             std::string &_value = _raw;
781                             name = _value;
782                         }
783                         PrivappPermissions::DenyPermission instance(name);
784                         return instance;
785                     }
786 
PrivappPermissions(std::vector<Permission> permission,std::vector<DenyPermission> denyPermission,std::optional<std::string> package)787                     PrivappPermissions::PrivappPermissions(std::vector<Permission> permission, std::vector<DenyPermission> denyPermission, std::optional<std::string> package) : permission_(std::move(permission)), denyPermission_(std::move(denyPermission)), package_(std::move(package)) {
788                     }
789 
getPermission() const790                     const std::vector<PrivappPermissions::Permission>& PrivappPermissions::getPermission() const {
791                         return permission_;
792                     }
793 
hasPermission() const794                     bool PrivappPermissions::hasPermission() const {
795                         return !(permission_.empty());
796                     }
797 
getFirstPermission() const798                     const PrivappPermissions::Permission* PrivappPermissions::getFirstPermission() const {
799                         if (permission_.empty()) {
800                             return nullptr;
801                         }
802                         return &permission_[0];
803                     }
804 
getDenyPermission() const805                     const std::vector<PrivappPermissions::DenyPermission>& PrivappPermissions::getDenyPermission() const {
806                         return denyPermission_;
807                     }
808 
hasDenyPermission() const809                     bool PrivappPermissions::hasDenyPermission() const {
810                         return !(denyPermission_.empty());
811                     }
812 
getFirstDenyPermission() const813                     const PrivappPermissions::DenyPermission* PrivappPermissions::getFirstDenyPermission() const {
814                         if (denyPermission_.empty()) {
815                             return nullptr;
816                         }
817                         return &denyPermission_[0];
818                     }
819 
getPackage() const820                     const std::string& PrivappPermissions::getPackage() const {
821                         _xsdc_assert(hasPackage());
822                         return package_.value();
823                     }
824 
hasPackage() const825                     bool PrivappPermissions::hasPackage() const {
826                         return package_.has_value();
827                     }
828 
read(xmlNode * root)829                     PrivappPermissions PrivappPermissions::read(xmlNode *root) {
830                         std::string _raw;
831                         _raw = getXmlAttribute(root, "package");
832                         std::optional<std::string> package = std::nullopt;
833                         if (_raw != "") {
834                             std::string &_value = _raw;
835                             package = _value;
836                         }
837                         std::vector<Permission> permission;
838                         std::vector<DenyPermission> denyPermission;
839                         for (auto *_child = root->xmlChildrenNode; _child != nullptr; _child = _child->next) {
840                             if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permission"))) {
841                                 Permission _value = Permission::read(_child);
842                                 permission.push_back(std::move(_value));
843                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("deny-permission"))) {
844                                 DenyPermission _value = DenyPermission::read(_child);
845                                 denyPermission.push_back(std::move(_value));
846                             }
847                         }
848                         PrivappPermissions instance(permission, denyPermission, package);
849                         return instance;
850                     }
851 
Permission(std::optional<std::string> name)852                     OemPermissions::Permission::Permission(std::optional<std::string> name) : name_(std::move(name)) {
853                     }
854 
getName() const855                     const std::string& OemPermissions::Permission::getName() const {
856                         _xsdc_assert(hasName());
857                         return name_.value();
858                     }
859 
hasName() const860                     bool OemPermissions::Permission::hasName() const {
861                         return name_.has_value();
862                     }
863 
read(xmlNode * root)864                     OemPermissions::Permission OemPermissions::Permission::read(xmlNode *root) {
865                         std::string _raw;
866                         _raw = getXmlAttribute(root, "name");
867                         std::optional<std::string> name = std::nullopt;
868                         if (_raw != "") {
869                             std::string &_value = _raw;
870                             name = _value;
871                         }
872                         OemPermissions::Permission instance(name);
873                         return instance;
874                     }
875 
DenyPermission(std::optional<std::string> name)876                     OemPermissions::DenyPermission::DenyPermission(std::optional<std::string> name) : name_(std::move(name)) {
877                     }
878 
getName() const879                     const std::string& OemPermissions::DenyPermission::getName() const {
880                         _xsdc_assert(hasName());
881                         return name_.value();
882                     }
883 
hasName() const884                     bool OemPermissions::DenyPermission::hasName() const {
885                         return name_.has_value();
886                     }
887 
read(xmlNode * root)888                     OemPermissions::DenyPermission OemPermissions::DenyPermission::read(xmlNode *root) {
889                         std::string _raw;
890                         _raw = getXmlAttribute(root, "name");
891                         std::optional<std::string> name = std::nullopt;
892                         if (_raw != "") {
893                             std::string &_value = _raw;
894                             name = _value;
895                         }
896                         OemPermissions::DenyPermission instance(name);
897                         return instance;
898                     }
899 
OemPermissions(std::vector<Permission> permission,std::vector<DenyPermission> denyPermission,std::optional<std::string> package)900                     OemPermissions::OemPermissions(std::vector<Permission> permission, std::vector<DenyPermission> denyPermission, std::optional<std::string> package) : permission_(std::move(permission)), denyPermission_(std::move(denyPermission)), package_(std::move(package)) {
901                     }
902 
getPermission() const903                     const std::vector<OemPermissions::Permission>& OemPermissions::getPermission() const {
904                         return permission_;
905                     }
906 
hasPermission() const907                     bool OemPermissions::hasPermission() const {
908                         return !(permission_.empty());
909                     }
910 
getFirstPermission() const911                     const OemPermissions::Permission* OemPermissions::getFirstPermission() const {
912                         if (permission_.empty()) {
913                             return nullptr;
914                         }
915                         return &permission_[0];
916                     }
917 
getDenyPermission() const918                     const std::vector<OemPermissions::DenyPermission>& OemPermissions::getDenyPermission() const {
919                         return denyPermission_;
920                     }
921 
hasDenyPermission() const922                     bool OemPermissions::hasDenyPermission() const {
923                         return !(denyPermission_.empty());
924                     }
925 
getFirstDenyPermission() const926                     const OemPermissions::DenyPermission* OemPermissions::getFirstDenyPermission() const {
927                         if (denyPermission_.empty()) {
928                             return nullptr;
929                         }
930                         return &denyPermission_[0];
931                     }
932 
getPackage() const933                     const std::string& OemPermissions::getPackage() const {
934                         _xsdc_assert(hasPackage());
935                         return package_.value();
936                     }
937 
hasPackage() const938                     bool OemPermissions::hasPackage() const {
939                         return package_.has_value();
940                     }
941 
read(xmlNode * root)942                     OemPermissions OemPermissions::read(xmlNode *root) {
943                         std::string _raw;
944                         _raw = getXmlAttribute(root, "package");
945                         std::optional<std::string> package = std::nullopt;
946                         if (_raw != "") {
947                             std::string &_value = _raw;
948                             package = _value;
949                         }
950                         std::vector<Permission> permission;
951                         std::vector<DenyPermission> denyPermission;
952                         for (auto *_child = root->xmlChildrenNode; _child != nullptr; _child = _child->next) {
953                             if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permission"))) {
954                                 Permission _value = Permission::read(_child);
955                                 permission.push_back(std::move(_value));
956                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("deny-permission"))) {
957                                 DenyPermission _value = DenyPermission::read(_child);
958                                 denyPermission.push_back(std::move(_value));
959                             }
960                         }
961                         OemPermissions instance(permission, denyPermission, package);
962                         return instance;
963                     }
964 
Permission(std::optional<std::string> name)965                     SignaturePermissions::Permission::Permission(std::optional<std::string> name) : name_(std::move(name)) {
966                     }
967 
getName() const968                     const std::string& SignaturePermissions::Permission::getName() const {
969                         _xsdc_assert(hasName());
970                         return name_.value();
971                     }
972 
hasName() const973                     bool SignaturePermissions::Permission::hasName() const {
974                         return name_.has_value();
975                     }
976 
read(xmlNode * root)977                     SignaturePermissions::Permission SignaturePermissions::Permission::read(xmlNode *root) {
978                         std::string _raw;
979                         _raw = getXmlAttribute(root, "name");
980                         std::optional<std::string> name = std::nullopt;
981                         if (_raw != "") {
982                             std::string &_value = _raw;
983                             name = _value;
984                         }
985                         SignaturePermissions::Permission instance(name);
986                         return instance;
987                     }
988 
DenyPermission(std::optional<std::string> name)989                     SignaturePermissions::DenyPermission::DenyPermission(std::optional<std::string> name) : name_(std::move(name)) {
990                     }
991 
getName() const992                     const std::string& SignaturePermissions::DenyPermission::getName() const {
993                         _xsdc_assert(hasName());
994                         return name_.value();
995                     }
996 
hasName() const997                     bool SignaturePermissions::DenyPermission::hasName() const {
998                         return name_.has_value();
999                     }
1000 
read(xmlNode * root)1001                     SignaturePermissions::DenyPermission SignaturePermissions::DenyPermission::read(xmlNode *root) {
1002                         std::string _raw;
1003                         _raw = getXmlAttribute(root, "name");
1004                         std::optional<std::string> name = std::nullopt;
1005                         if (_raw != "") {
1006                             std::string &_value = _raw;
1007                             name = _value;
1008                         }
1009                         SignaturePermissions::DenyPermission instance(name);
1010                         return instance;
1011                     }
1012 
SignaturePermissions(std::vector<Permission> permission,std::vector<DenyPermission> denyPermission,std::optional<std::string> package)1013                     SignaturePermissions::SignaturePermissions(std::vector<Permission> permission, std::vector<DenyPermission> denyPermission, std::optional<std::string> package) : permission_(std::move(permission)), denyPermission_(std::move(denyPermission)), package_(std::move(package)) {
1014                     }
1015 
getPermission() const1016                     const std::vector<SignaturePermissions::Permission>& SignaturePermissions::getPermission() const {
1017                         return permission_;
1018                     }
1019 
hasPermission() const1020                     bool SignaturePermissions::hasPermission() const {
1021                         return !(permission_.empty());
1022                     }
1023 
getFirstPermission() const1024                     const SignaturePermissions::Permission* SignaturePermissions::getFirstPermission() const {
1025                         if (permission_.empty()) {
1026                             return nullptr;
1027                         }
1028                         return &permission_[0];
1029                     }
1030 
getDenyPermission() const1031                     const std::vector<SignaturePermissions::DenyPermission>& SignaturePermissions::getDenyPermission() const {
1032                         return denyPermission_;
1033                     }
1034 
hasDenyPermission() const1035                     bool SignaturePermissions::hasDenyPermission() const {
1036                         return !(denyPermission_.empty());
1037                     }
1038 
getFirstDenyPermission() const1039                     const SignaturePermissions::DenyPermission* SignaturePermissions::getFirstDenyPermission() const {
1040                         if (denyPermission_.empty()) {
1041                             return nullptr;
1042                         }
1043                         return &denyPermission_[0];
1044                     }
1045 
getPackage() const1046                     const std::string& SignaturePermissions::getPackage() const {
1047                         _xsdc_assert(hasPackage());
1048                         return package_.value();
1049                     }
1050 
hasPackage() const1051                     bool SignaturePermissions::hasPackage() const {
1052                         return package_.has_value();
1053                     }
1054 
read(xmlNode * root)1055                     SignaturePermissions SignaturePermissions::read(xmlNode *root) {
1056                         std::string _raw;
1057                         _raw = getXmlAttribute(root, "package");
1058                         std::optional<std::string> package = std::nullopt;
1059                         if (_raw != "") {
1060                             std::string &_value = _raw;
1061                             package = _value;
1062                         }
1063                         std::vector<Permission> permission;
1064                         std::vector<DenyPermission> denyPermission;
1065                         for (auto *_child = root->xmlChildrenNode; _child != nullptr; _child = _child->next) {
1066                             if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permission"))) {
1067                                 Permission _value = Permission::read(_child);
1068                                 permission.push_back(std::move(_value));
1069                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("deny-permission"))) {
1070                                 DenyPermission _value = DenyPermission::read(_child);
1071                                 denyPermission.push_back(std::move(_value));
1072                             }
1073                         }
1074                         SignaturePermissions instance(permission, denyPermission, package);
1075                         return instance;
1076                     }
1077 
HiddenApiWhitelistedApp(std::optional<std::string> package)1078                     HiddenApiWhitelistedApp::HiddenApiWhitelistedApp(std::optional<std::string> package) : package_(std::move(package)) {
1079                     }
1080 
getPackage() const1081                     const std::string& HiddenApiWhitelistedApp::getPackage() const {
1082                         _xsdc_assert(hasPackage());
1083                         return package_.value();
1084                     }
1085 
hasPackage() const1086                     bool HiddenApiWhitelistedApp::hasPackage() const {
1087                         return package_.has_value();
1088                     }
1089 
read(xmlNode * root)1090                     HiddenApiWhitelistedApp HiddenApiWhitelistedApp::read(xmlNode *root) {
1091                         std::string _raw;
1092                         _raw = getXmlAttribute(root, "package");
1093                         std::optional<std::string> package = std::nullopt;
1094                         if (_raw != "") {
1095                             std::string &_value = _raw;
1096                             package = _value;
1097                         }
1098                         HiddenApiWhitelistedApp instance(package);
1099                         return instance;
1100                     }
1101 
AllowAssociation(std::optional<std::string> target,std::optional<std::string> allowed)1102                     AllowAssociation::AllowAssociation(std::optional<std::string> target, std::optional<std::string> allowed) : target_(std::move(target)), allowed_(std::move(allowed)) {
1103                     }
1104 
getTarget() const1105                     const std::string& AllowAssociation::getTarget() const {
1106                         _xsdc_assert(hasTarget());
1107                         return target_.value();
1108                     }
1109 
hasTarget() const1110                     bool AllowAssociation::hasTarget() const {
1111                         return target_.has_value();
1112                     }
1113 
getAllowed() const1114                     const std::string& AllowAssociation::getAllowed() const {
1115                         _xsdc_assert(hasAllowed());
1116                         return allowed_.value();
1117                     }
1118 
hasAllowed() const1119                     bool AllowAssociation::hasAllowed() const {
1120                         return allowed_.has_value();
1121                     }
1122 
read(xmlNode * root)1123                     AllowAssociation AllowAssociation::read(xmlNode *root) {
1124                         std::string _raw;
1125                         _raw = getXmlAttribute(root, "target");
1126                         std::optional<std::string> target = std::nullopt;
1127                         if (_raw != "") {
1128                             std::string &_value = _raw;
1129                             target = _value;
1130                         }
1131                         _raw = getXmlAttribute(root, "allowed");
1132                         std::optional<std::string> allowed = std::nullopt;
1133                         if (_raw != "") {
1134                             std::string &_value = _raw;
1135                             allowed = _value;
1136                         }
1137                         AllowAssociation instance(target, allowed);
1138                         return instance;
1139                     }
1140 
AppDataIsolationWhitelistedApp(std::optional<std::string> package)1141                     AppDataIsolationWhitelistedApp::AppDataIsolationWhitelistedApp(std::optional<std::string> package) : package_(std::move(package)) {
1142                     }
1143 
getPackage() const1144                     const std::string& AppDataIsolationWhitelistedApp::getPackage() const {
1145                         _xsdc_assert(hasPackage());
1146                         return package_.value();
1147                     }
1148 
hasPackage() const1149                     bool AppDataIsolationWhitelistedApp::hasPackage() const {
1150                         return package_.has_value();
1151                     }
1152 
read(xmlNode * root)1153                     AppDataIsolationWhitelistedApp AppDataIsolationWhitelistedApp::read(xmlNode *root) {
1154                         std::string _raw;
1155                         _raw = getXmlAttribute(root, "package");
1156                         std::optional<std::string> package = std::nullopt;
1157                         if (_raw != "") {
1158                             std::string &_value = _raw;
1159                             package = _value;
1160                         }
1161                         AppDataIsolationWhitelistedApp instance(package);
1162                         return instance;
1163                     }
1164 
BugreportWhitelisted(std::optional<std::string> package)1165                     BugreportWhitelisted::BugreportWhitelisted(std::optional<std::string> package) : package_(std::move(package)) {
1166                     }
1167 
getPackage() const1168                     const std::string& BugreportWhitelisted::getPackage() const {
1169                         _xsdc_assert(hasPackage());
1170                         return package_.value();
1171                     }
1172 
hasPackage() const1173                     bool BugreportWhitelisted::hasPackage() const {
1174                         return package_.has_value();
1175                     }
1176 
read(xmlNode * root)1177                     BugreportWhitelisted BugreportWhitelisted::read(xmlNode *root) {
1178                         std::string _raw;
1179                         _raw = getXmlAttribute(root, "package");
1180                         std::optional<std::string> package = std::nullopt;
1181                         if (_raw != "") {
1182                             std::string &_value = _raw;
1183                             package = _value;
1184                         }
1185                         BugreportWhitelisted instance(package);
1186                         return instance;
1187                     }
1188 
Permissions(std::vector<Group> group_optional,std::vector<Permission> permission_optional,std::vector<AssignPermission> assignPermission_optional,std::vector<SplitPermission> splitPermission_optional,std::vector<Library> library_optional,std::vector<Feature> feature_optional,std::vector<UnavailableFeature> unavailableFeature_optional,std::vector<AllowInPowerSaveExceptIdle> allowInPowerSaveExceptIdle_optional,std::vector<AllowInPowerSave> allowInPowerSave_optional,std::vector<AllowInDataUsageSave> allowInDataUsageSave_optional,std::vector<AllowUnthrottledLocation> allowUnthrottledLocation_optional,std::vector<AllowIgnoreLocationSettings> allowIgnoreLocationSettings_optional,std::vector<AllowImplicitBroadcast> allowImplicitBroadcast_optional,std::vector<AppLink> appLink_optional,std::vector<SystemUserWhitelistedApp> systemUserWhitelistedApp_optional,std::vector<SystemUserBlacklistedApp> systemUserBlacklistedApp_optional,std::vector<DefaultEnabledVrApp> defaultEnabledVrApp_optional,std::vector<BackupTransportWhitelistedService> backupTransportWhitelistedService_optional,std::vector<DisabledUntilUsedPreinstalledCarrierAssociatedApp> disabledUntilUsedPreinstalledCarrierAssociatedApp_optional,std::vector<DisabledUntilUsedPreinstalledCarrierApp> disabledUntilUsedPreinstalledCarrierApp_optional,std::vector<PrivappPermissions> privappPermissions_optional,std::vector<OemPermissions> oemPermissions_optional,std::vector<SignaturePermissions> signaturePermissions_optional,std::vector<HiddenApiWhitelistedApp> hiddenApiWhitelistedApp_optional,std::vector<AllowAssociation> allowAssociation_optional,std::vector<BugreportWhitelisted> bugreportWhitelisted_optional,std::vector<AppDataIsolationWhitelistedApp> appDataIsolationWhitelistedApp_optional)1189                     Permissions::Permissions(std::vector<Group> group_optional, std::vector<Permission> permission_optional, std::vector<AssignPermission> assignPermission_optional, std::vector<SplitPermission> splitPermission_optional, std::vector<Library> library_optional, std::vector<Feature> feature_optional, std::vector<UnavailableFeature> unavailableFeature_optional, std::vector<AllowInPowerSaveExceptIdle> allowInPowerSaveExceptIdle_optional, std::vector<AllowInPowerSave> allowInPowerSave_optional, std::vector<AllowInDataUsageSave> allowInDataUsageSave_optional, std::vector<AllowUnthrottledLocation> allowUnthrottledLocation_optional, std::vector<AllowIgnoreLocationSettings> allowIgnoreLocationSettings_optional, std::vector<AllowImplicitBroadcast> allowImplicitBroadcast_optional, std::vector<AppLink> appLink_optional, std::vector<SystemUserWhitelistedApp> systemUserWhitelistedApp_optional, std::vector<SystemUserBlacklistedApp> systemUserBlacklistedApp_optional, std::vector<DefaultEnabledVrApp> defaultEnabledVrApp_optional, std::vector<BackupTransportWhitelistedService> backupTransportWhitelistedService_optional, std::vector<DisabledUntilUsedPreinstalledCarrierAssociatedApp> disabledUntilUsedPreinstalledCarrierAssociatedApp_optional, std::vector<DisabledUntilUsedPreinstalledCarrierApp> disabledUntilUsedPreinstalledCarrierApp_optional, std::vector<PrivappPermissions> privappPermissions_optional, std::vector<OemPermissions> oemPermissions_optional, std::vector<SignaturePermissions> signaturePermissions_optional, std::vector<HiddenApiWhitelistedApp> hiddenApiWhitelistedApp_optional, std::vector<AllowAssociation> allowAssociation_optional, std::vector<BugreportWhitelisted> bugreportWhitelisted_optional, std::vector<AppDataIsolationWhitelistedApp> appDataIsolationWhitelistedApp_optional) : group_optional_(std::move(group_optional)), permission_optional_(std::move(permission_optional)), assignPermission_optional_(std::move(assignPermission_optional)), splitPermission_optional_(std::move(splitPermission_optional)), library_optional_(std::move(library_optional)), feature_optional_(std::move(feature_optional)), unavailableFeature_optional_(std::move(unavailableFeature_optional)), allowInPowerSaveExceptIdle_optional_(std::move(allowInPowerSaveExceptIdle_optional)), allowInPowerSave_optional_(std::move(allowInPowerSave_optional)), allowInDataUsageSave_optional_(std::move(allowInDataUsageSave_optional)), allowUnthrottledLocation_optional_(std::move(allowUnthrottledLocation_optional)), allowIgnoreLocationSettings_optional_(std::move(allowIgnoreLocationSettings_optional)), allowImplicitBroadcast_optional_(std::move(allowImplicitBroadcast_optional)), appLink_optional_(std::move(appLink_optional)), systemUserWhitelistedApp_optional_(std::move(systemUserWhitelistedApp_optional)), systemUserBlacklistedApp_optional_(std::move(systemUserBlacklistedApp_optional)), defaultEnabledVrApp_optional_(std::move(defaultEnabledVrApp_optional)), backupTransportWhitelistedService_optional_(std::move(backupTransportWhitelistedService_optional)), disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_(std::move(disabledUntilUsedPreinstalledCarrierAssociatedApp_optional)), disabledUntilUsedPreinstalledCarrierApp_optional_(std::move(disabledUntilUsedPreinstalledCarrierApp_optional)), privappPermissions_optional_(std::move(privappPermissions_optional)), oemPermissions_optional_(std::move(oemPermissions_optional)), signaturePermissions_optional_(std::move(signaturePermissions_optional)), hiddenApiWhitelistedApp_optional_(std::move(hiddenApiWhitelistedApp_optional)), allowAssociation_optional_(std::move(allowAssociation_optional)), bugreportWhitelisted_optional_(std::move(bugreportWhitelisted_optional)), appDataIsolationWhitelistedApp_optional_(std::move(appDataIsolationWhitelistedApp_optional)) {
1190                     }
1191 
getGroup_optional() const1192                     const std::vector<Group>& Permissions::getGroup_optional() const {
1193                         return group_optional_;
1194                     }
1195 
hasGroup_optional() const1196                     bool Permissions::hasGroup_optional() const {
1197                         return !(group_optional_.empty());
1198                     }
1199 
getFirstGroup_optional() const1200                     const Group* Permissions::getFirstGroup_optional() const {
1201                         if (group_optional_.empty()) {
1202                             return nullptr;
1203                         }
1204                         return &group_optional_[0];
1205                     }
1206 
getPermission_optional() const1207                     const std::vector<Permission>& Permissions::getPermission_optional() const {
1208                         return permission_optional_;
1209                     }
1210 
hasPermission_optional() const1211                     bool Permissions::hasPermission_optional() const {
1212                         return !(permission_optional_.empty());
1213                     }
1214 
getFirstPermission_optional() const1215                     const Permission* Permissions::getFirstPermission_optional() const {
1216                         if (permission_optional_.empty()) {
1217                             return nullptr;
1218                         }
1219                         return &permission_optional_[0];
1220                     }
1221 
getAssignPermission_optional() const1222                     const std::vector<AssignPermission>& Permissions::getAssignPermission_optional() const {
1223                         return assignPermission_optional_;
1224                     }
1225 
hasAssignPermission_optional() const1226                     bool Permissions::hasAssignPermission_optional() const {
1227                         return !(assignPermission_optional_.empty());
1228                     }
1229 
getFirstAssignPermission_optional() const1230                     const AssignPermission* Permissions::getFirstAssignPermission_optional() const {
1231                         if (assignPermission_optional_.empty()) {
1232                             return nullptr;
1233                         }
1234                         return &assignPermission_optional_[0];
1235                     }
1236 
getSplitPermission_optional() const1237                     const std::vector<SplitPermission>& Permissions::getSplitPermission_optional() const {
1238                         return splitPermission_optional_;
1239                     }
1240 
hasSplitPermission_optional() const1241                     bool Permissions::hasSplitPermission_optional() const {
1242                         return !(splitPermission_optional_.empty());
1243                     }
1244 
getFirstSplitPermission_optional() const1245                     const SplitPermission* Permissions::getFirstSplitPermission_optional() const {
1246                         if (splitPermission_optional_.empty()) {
1247                             return nullptr;
1248                         }
1249                         return &splitPermission_optional_[0];
1250                     }
1251 
getLibrary_optional() const1252                     const std::vector<Library>& Permissions::getLibrary_optional() const {
1253                         return library_optional_;
1254                     }
1255 
hasLibrary_optional() const1256                     bool Permissions::hasLibrary_optional() const {
1257                         return !(library_optional_.empty());
1258                     }
1259 
getFirstLibrary_optional() const1260                     const Library* Permissions::getFirstLibrary_optional() const {
1261                         if (library_optional_.empty()) {
1262                             return nullptr;
1263                         }
1264                         return &library_optional_[0];
1265                     }
1266 
getFeature_optional() const1267                     const std::vector<Feature>& Permissions::getFeature_optional() const {
1268                         return feature_optional_;
1269                     }
1270 
hasFeature_optional() const1271                     bool Permissions::hasFeature_optional() const {
1272                         return !(feature_optional_.empty());
1273                     }
1274 
getFirstFeature_optional() const1275                     const Feature* Permissions::getFirstFeature_optional() const {
1276                         if (feature_optional_.empty()) {
1277                             return nullptr;
1278                         }
1279                         return &feature_optional_[0];
1280                     }
1281 
getUnavailableFeature_optional() const1282                     const std::vector<UnavailableFeature>& Permissions::getUnavailableFeature_optional() const {
1283                         return unavailableFeature_optional_;
1284                     }
1285 
hasUnavailableFeature_optional() const1286                     bool Permissions::hasUnavailableFeature_optional() const {
1287                         return !(unavailableFeature_optional_.empty());
1288                     }
1289 
getFirstUnavailableFeature_optional() const1290                     const UnavailableFeature* Permissions::getFirstUnavailableFeature_optional() const {
1291                         if (unavailableFeature_optional_.empty()) {
1292                             return nullptr;
1293                         }
1294                         return &unavailableFeature_optional_[0];
1295                     }
1296 
getAllowInPowerSaveExceptIdle_optional() const1297                     const std::vector<AllowInPowerSaveExceptIdle>& Permissions::getAllowInPowerSaveExceptIdle_optional() const {
1298                         return allowInPowerSaveExceptIdle_optional_;
1299                     }
1300 
hasAllowInPowerSaveExceptIdle_optional() const1301                     bool Permissions::hasAllowInPowerSaveExceptIdle_optional() const {
1302                         return !(allowInPowerSaveExceptIdle_optional_.empty());
1303                     }
1304 
getFirstAllowInPowerSaveExceptIdle_optional() const1305                     const AllowInPowerSaveExceptIdle* Permissions::getFirstAllowInPowerSaveExceptIdle_optional() const {
1306                         if (allowInPowerSaveExceptIdle_optional_.empty()) {
1307                             return nullptr;
1308                         }
1309                         return &allowInPowerSaveExceptIdle_optional_[0];
1310                     }
1311 
getAllowInPowerSave_optional() const1312                     const std::vector<AllowInPowerSave>& Permissions::getAllowInPowerSave_optional() const {
1313                         return allowInPowerSave_optional_;
1314                     }
1315 
hasAllowInPowerSave_optional() const1316                     bool Permissions::hasAllowInPowerSave_optional() const {
1317                         return !(allowInPowerSave_optional_.empty());
1318                     }
1319 
getFirstAllowInPowerSave_optional() const1320                     const AllowInPowerSave* Permissions::getFirstAllowInPowerSave_optional() const {
1321                         if (allowInPowerSave_optional_.empty()) {
1322                             return nullptr;
1323                         }
1324                         return &allowInPowerSave_optional_[0];
1325                     }
1326 
getAllowInDataUsageSave_optional() const1327                     const std::vector<AllowInDataUsageSave>& Permissions::getAllowInDataUsageSave_optional() const {
1328                         return allowInDataUsageSave_optional_;
1329                     }
1330 
hasAllowInDataUsageSave_optional() const1331                     bool Permissions::hasAllowInDataUsageSave_optional() const {
1332                         return !(allowInDataUsageSave_optional_.empty());
1333                     }
1334 
getFirstAllowInDataUsageSave_optional() const1335                     const AllowInDataUsageSave* Permissions::getFirstAllowInDataUsageSave_optional() const {
1336                         if (allowInDataUsageSave_optional_.empty()) {
1337                             return nullptr;
1338                         }
1339                         return &allowInDataUsageSave_optional_[0];
1340                     }
1341 
getAllowUnthrottledLocation_optional() const1342                     const std::vector<AllowUnthrottledLocation>& Permissions::getAllowUnthrottledLocation_optional() const {
1343                         return allowUnthrottledLocation_optional_;
1344                     }
1345 
hasAllowUnthrottledLocation_optional() const1346                     bool Permissions::hasAllowUnthrottledLocation_optional() const {
1347                         return !(allowUnthrottledLocation_optional_.empty());
1348                     }
1349 
getFirstAllowUnthrottledLocation_optional() const1350                     const AllowUnthrottledLocation* Permissions::getFirstAllowUnthrottledLocation_optional() const {
1351                         if (allowUnthrottledLocation_optional_.empty()) {
1352                             return nullptr;
1353                         }
1354                         return &allowUnthrottledLocation_optional_[0];
1355                     }
1356 
getAllowIgnoreLocationSettings_optional() const1357                     const std::vector<AllowIgnoreLocationSettings>& Permissions::getAllowIgnoreLocationSettings_optional() const {
1358                         return allowIgnoreLocationSettings_optional_;
1359                     }
1360 
hasAllowIgnoreLocationSettings_optional() const1361                     bool Permissions::hasAllowIgnoreLocationSettings_optional() const {
1362                         return !(allowIgnoreLocationSettings_optional_.empty());
1363                     }
1364 
getFirstAllowIgnoreLocationSettings_optional() const1365                     const AllowIgnoreLocationSettings* Permissions::getFirstAllowIgnoreLocationSettings_optional() const {
1366                         if (allowIgnoreLocationSettings_optional_.empty()) {
1367                             return nullptr;
1368                         }
1369                         return &allowIgnoreLocationSettings_optional_[0];
1370                     }
1371 
getAllowImplicitBroadcast_optional() const1372                     const std::vector<AllowImplicitBroadcast>& Permissions::getAllowImplicitBroadcast_optional() const {
1373                         return allowImplicitBroadcast_optional_;
1374                     }
1375 
hasAllowImplicitBroadcast_optional() const1376                     bool Permissions::hasAllowImplicitBroadcast_optional() const {
1377                         return !(allowImplicitBroadcast_optional_.empty());
1378                     }
1379 
getFirstAllowImplicitBroadcast_optional() const1380                     const AllowImplicitBroadcast* Permissions::getFirstAllowImplicitBroadcast_optional() const {
1381                         if (allowImplicitBroadcast_optional_.empty()) {
1382                             return nullptr;
1383                         }
1384                         return &allowImplicitBroadcast_optional_[0];
1385                     }
1386 
getAppLink_optional() const1387                     const std::vector<AppLink>& Permissions::getAppLink_optional() const {
1388                         return appLink_optional_;
1389                     }
1390 
hasAppLink_optional() const1391                     bool Permissions::hasAppLink_optional() const {
1392                         return !(appLink_optional_.empty());
1393                     }
1394 
getFirstAppLink_optional() const1395                     const AppLink* Permissions::getFirstAppLink_optional() const {
1396                         if (appLink_optional_.empty()) {
1397                             return nullptr;
1398                         }
1399                         return &appLink_optional_[0];
1400                     }
1401 
getSystemUserWhitelistedApp_optional() const1402                     const std::vector<SystemUserWhitelistedApp>& Permissions::getSystemUserWhitelistedApp_optional() const {
1403                         return systemUserWhitelistedApp_optional_;
1404                     }
1405 
hasSystemUserWhitelistedApp_optional() const1406                     bool Permissions::hasSystemUserWhitelistedApp_optional() const {
1407                         return !(systemUserWhitelistedApp_optional_.empty());
1408                     }
1409 
getFirstSystemUserWhitelistedApp_optional() const1410                     const SystemUserWhitelistedApp* Permissions::getFirstSystemUserWhitelistedApp_optional() const {
1411                         if (systemUserWhitelistedApp_optional_.empty()) {
1412                             return nullptr;
1413                         }
1414                         return &systemUserWhitelistedApp_optional_[0];
1415                     }
1416 
getSystemUserBlacklistedApp_optional() const1417                     const std::vector<SystemUserBlacklistedApp>& Permissions::getSystemUserBlacklistedApp_optional() const {
1418                         return systemUserBlacklistedApp_optional_;
1419                     }
1420 
hasSystemUserBlacklistedApp_optional() const1421                     bool Permissions::hasSystemUserBlacklistedApp_optional() const {
1422                         return !(systemUserBlacklistedApp_optional_.empty());
1423                     }
1424 
getFirstSystemUserBlacklistedApp_optional() const1425                     const SystemUserBlacklistedApp* Permissions::getFirstSystemUserBlacklistedApp_optional() const {
1426                         if (systemUserBlacklistedApp_optional_.empty()) {
1427                             return nullptr;
1428                         }
1429                         return &systemUserBlacklistedApp_optional_[0];
1430                     }
1431 
getDefaultEnabledVrApp_optional() const1432                     const std::vector<DefaultEnabledVrApp>& Permissions::getDefaultEnabledVrApp_optional() const {
1433                         return defaultEnabledVrApp_optional_;
1434                     }
1435 
hasDefaultEnabledVrApp_optional() const1436                     bool Permissions::hasDefaultEnabledVrApp_optional() const {
1437                         return !(defaultEnabledVrApp_optional_.empty());
1438                     }
1439 
getFirstDefaultEnabledVrApp_optional() const1440                     const DefaultEnabledVrApp* Permissions::getFirstDefaultEnabledVrApp_optional() const {
1441                         if (defaultEnabledVrApp_optional_.empty()) {
1442                             return nullptr;
1443                         }
1444                         return &defaultEnabledVrApp_optional_[0];
1445                     }
1446 
getBackupTransportWhitelistedService_optional() const1447                     const std::vector<BackupTransportWhitelistedService>& Permissions::getBackupTransportWhitelistedService_optional() const {
1448                         return backupTransportWhitelistedService_optional_;
1449                     }
1450 
hasBackupTransportWhitelistedService_optional() const1451                     bool Permissions::hasBackupTransportWhitelistedService_optional() const {
1452                         return !(backupTransportWhitelistedService_optional_.empty());
1453                     }
1454 
getFirstBackupTransportWhitelistedService_optional() const1455                     const BackupTransportWhitelistedService* Permissions::getFirstBackupTransportWhitelistedService_optional() const {
1456                         if (backupTransportWhitelistedService_optional_.empty()) {
1457                             return nullptr;
1458                         }
1459                         return &backupTransportWhitelistedService_optional_[0];
1460                     }
1461 
getDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const1462                     const std::vector<DisabledUntilUsedPreinstalledCarrierAssociatedApp>& Permissions::getDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const {
1463                         return disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_;
1464                     }
1465 
hasDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const1466                     bool Permissions::hasDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const {
1467                         return !(disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_.empty());
1468                     }
1469 
getFirstDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const1470                     const DisabledUntilUsedPreinstalledCarrierAssociatedApp* Permissions::getFirstDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const {
1471                         if (disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_.empty()) {
1472                             return nullptr;
1473                         }
1474                         return &disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_[0];
1475                     }
1476 
getDisabledUntilUsedPreinstalledCarrierApp_optional() const1477                     const std::vector<DisabledUntilUsedPreinstalledCarrierApp>& Permissions::getDisabledUntilUsedPreinstalledCarrierApp_optional() const {
1478                         return disabledUntilUsedPreinstalledCarrierApp_optional_;
1479                     }
1480 
hasDisabledUntilUsedPreinstalledCarrierApp_optional() const1481                     bool Permissions::hasDisabledUntilUsedPreinstalledCarrierApp_optional() const {
1482                         return !(disabledUntilUsedPreinstalledCarrierApp_optional_.empty());
1483                     }
1484 
getFirstDisabledUntilUsedPreinstalledCarrierApp_optional() const1485                     const DisabledUntilUsedPreinstalledCarrierApp* Permissions::getFirstDisabledUntilUsedPreinstalledCarrierApp_optional() const {
1486                         if (disabledUntilUsedPreinstalledCarrierApp_optional_.empty()) {
1487                             return nullptr;
1488                         }
1489                         return &disabledUntilUsedPreinstalledCarrierApp_optional_[0];
1490                     }
1491 
getPrivappPermissions_optional() const1492                     const std::vector<PrivappPermissions>& Permissions::getPrivappPermissions_optional() const {
1493                         return privappPermissions_optional_;
1494                     }
1495 
hasPrivappPermissions_optional() const1496                     bool Permissions::hasPrivappPermissions_optional() const {
1497                         return !(privappPermissions_optional_.empty());
1498                     }
1499 
getFirstPrivappPermissions_optional() const1500                     const PrivappPermissions* Permissions::getFirstPrivappPermissions_optional() const {
1501                         if (privappPermissions_optional_.empty()) {
1502                             return nullptr;
1503                         }
1504                         return &privappPermissions_optional_[0];
1505                     }
1506 
getOemPermissions_optional() const1507                     const std::vector<OemPermissions>& Permissions::getOemPermissions_optional() const {
1508                         return oemPermissions_optional_;
1509                     }
1510 
hasOemPermissions_optional() const1511                     bool Permissions::hasOemPermissions_optional() const {
1512                         return !(oemPermissions_optional_.empty());
1513                     }
1514 
getFirstOemPermissions_optional() const1515                     const OemPermissions* Permissions::getFirstOemPermissions_optional() const {
1516                         if (oemPermissions_optional_.empty()) {
1517                             return nullptr;
1518                         }
1519                         return &oemPermissions_optional_[0];
1520                     }
1521 
getSignaturePermissions_optional() const1522                     const std::vector<SignaturePermissions>& Permissions::getSignaturePermissions_optional() const {
1523                         return signaturePermissions_optional_;
1524                     }
1525 
hasSignaturePermissions_optional() const1526                     bool Permissions::hasSignaturePermissions_optional() const {
1527                         return !(signaturePermissions_optional_.empty());
1528                     }
1529 
getFirstSignaturePermissions_optional() const1530                     const SignaturePermissions* Permissions::getFirstSignaturePermissions_optional() const {
1531                         if (signaturePermissions_optional_.empty()) {
1532                             return nullptr;
1533                         }
1534                         return &signaturePermissions_optional_[0];
1535                     }
1536 
getHiddenApiWhitelistedApp_optional() const1537                     const std::vector<HiddenApiWhitelistedApp>& Permissions::getHiddenApiWhitelistedApp_optional() const {
1538                         return hiddenApiWhitelistedApp_optional_;
1539                     }
1540 
hasHiddenApiWhitelistedApp_optional() const1541                     bool Permissions::hasHiddenApiWhitelistedApp_optional() const {
1542                         return !(hiddenApiWhitelistedApp_optional_.empty());
1543                     }
1544 
getFirstHiddenApiWhitelistedApp_optional() const1545                     const HiddenApiWhitelistedApp* Permissions::getFirstHiddenApiWhitelistedApp_optional() const {
1546                         if (hiddenApiWhitelistedApp_optional_.empty()) {
1547                             return nullptr;
1548                         }
1549                         return &hiddenApiWhitelistedApp_optional_[0];
1550                     }
1551 
getAllowAssociation_optional() const1552                     const std::vector<AllowAssociation>& Permissions::getAllowAssociation_optional() const {
1553                         return allowAssociation_optional_;
1554                     }
1555 
hasAllowAssociation_optional() const1556                     bool Permissions::hasAllowAssociation_optional() const {
1557                         return !(allowAssociation_optional_.empty());
1558                     }
1559 
getFirstAllowAssociation_optional() const1560                     const AllowAssociation* Permissions::getFirstAllowAssociation_optional() const {
1561                         if (allowAssociation_optional_.empty()) {
1562                             return nullptr;
1563                         }
1564                         return &allowAssociation_optional_[0];
1565                     }
1566 
getBugreportWhitelisted_optional() const1567                     const std::vector<BugreportWhitelisted>& Permissions::getBugreportWhitelisted_optional() const {
1568                         return bugreportWhitelisted_optional_;
1569                     }
1570 
hasBugreportWhitelisted_optional() const1571                     bool Permissions::hasBugreportWhitelisted_optional() const {
1572                         return !(bugreportWhitelisted_optional_.empty());
1573                     }
1574 
getFirstBugreportWhitelisted_optional() const1575                     const BugreportWhitelisted* Permissions::getFirstBugreportWhitelisted_optional() const {
1576                         if (bugreportWhitelisted_optional_.empty()) {
1577                             return nullptr;
1578                         }
1579                         return &bugreportWhitelisted_optional_[0];
1580                     }
1581 
getAppDataIsolationWhitelistedApp_optional() const1582                     const std::vector<AppDataIsolationWhitelistedApp>& Permissions::getAppDataIsolationWhitelistedApp_optional() const {
1583                         return appDataIsolationWhitelistedApp_optional_;
1584                     }
1585 
hasAppDataIsolationWhitelistedApp_optional() const1586                     bool Permissions::hasAppDataIsolationWhitelistedApp_optional() const {
1587                         return !(appDataIsolationWhitelistedApp_optional_.empty());
1588                     }
1589 
getFirstAppDataIsolationWhitelistedApp_optional() const1590                     const AppDataIsolationWhitelistedApp* Permissions::getFirstAppDataIsolationWhitelistedApp_optional() const {
1591                         if (appDataIsolationWhitelistedApp_optional_.empty()) {
1592                             return nullptr;
1593                         }
1594                         return &appDataIsolationWhitelistedApp_optional_[0];
1595                     }
1596 
read(xmlNode * root)1597                     Permissions Permissions::read(xmlNode *root) {
1598                         std::string _raw;
1599                         std::vector<Group> group_optional;
1600                         std::vector<Permission> permission_optional;
1601                         std::vector<AssignPermission> assignPermission_optional;
1602                         std::vector<SplitPermission> splitPermission_optional;
1603                         std::vector<Library> library_optional;
1604                         std::vector<Feature> feature_optional;
1605                         std::vector<UnavailableFeature> unavailableFeature_optional;
1606                         std::vector<AllowInPowerSaveExceptIdle> allowInPowerSaveExceptIdle_optional;
1607                         std::vector<AllowInPowerSave> allowInPowerSave_optional;
1608                         std::vector<AllowInDataUsageSave> allowInDataUsageSave_optional;
1609                         std::vector<AllowUnthrottledLocation> allowUnthrottledLocation_optional;
1610                         std::vector<AllowIgnoreLocationSettings> allowIgnoreLocationSettings_optional;
1611                         std::vector<AllowImplicitBroadcast> allowImplicitBroadcast_optional;
1612                         std::vector<AppLink> appLink_optional;
1613                         std::vector<SystemUserWhitelistedApp> systemUserWhitelistedApp_optional;
1614                         std::vector<SystemUserBlacklistedApp> systemUserBlacklistedApp_optional;
1615                         std::vector<DefaultEnabledVrApp> defaultEnabledVrApp_optional;
1616                         std::vector<BackupTransportWhitelistedService> backupTransportWhitelistedService_optional;
1617                         std::vector<DisabledUntilUsedPreinstalledCarrierAssociatedApp> disabledUntilUsedPreinstalledCarrierAssociatedApp_optional;
1618                         std::vector<DisabledUntilUsedPreinstalledCarrierApp> disabledUntilUsedPreinstalledCarrierApp_optional;
1619                         std::vector<PrivappPermissions> privappPermissions_optional;
1620                         std::vector<OemPermissions> oemPermissions_optional;
1621                         std::vector<SignaturePermissions> signaturePermissions_optional;
1622                         std::vector<HiddenApiWhitelistedApp> hiddenApiWhitelistedApp_optional;
1623                         std::vector<AllowAssociation> allowAssociation_optional;
1624                         std::vector<BugreportWhitelisted> bugreportWhitelisted_optional;
1625                         std::vector<AppDataIsolationWhitelistedApp> appDataIsolationWhitelistedApp_optional;
1626                         for (auto *_child = root->xmlChildrenNode; _child != nullptr; _child = _child->next) {
1627                             if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("group"))) {
1628                                 Group _value = Group::read(_child);
1629                                 group_optional.push_back(std::move(_value));
1630                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permission"))) {
1631                                 Permission _value = Permission::read(_child);
1632                                 permission_optional.push_back(std::move(_value));
1633                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("assign-permission"))) {
1634                                 AssignPermission _value = AssignPermission::read(_child);
1635                                 assignPermission_optional.push_back(std::move(_value));
1636                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("split-permission"))) {
1637                                 SplitPermission _value = SplitPermission::read(_child);
1638                                 splitPermission_optional.push_back(std::move(_value));
1639                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("library"))) {
1640                                 Library _value = Library::read(_child);
1641                                 library_optional.push_back(std::move(_value));
1642                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("feature"))) {
1643                                 Feature _value = Feature::read(_child);
1644                                 feature_optional.push_back(std::move(_value));
1645                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("unavailable-feature"))) {
1646                                 UnavailableFeature _value = UnavailableFeature::read(_child);
1647                                 unavailableFeature_optional.push_back(std::move(_value));
1648                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-in-power-save-except-idle"))) {
1649                                 AllowInPowerSaveExceptIdle _value = AllowInPowerSaveExceptIdle::read(_child);
1650                                 allowInPowerSaveExceptIdle_optional.push_back(std::move(_value));
1651                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-in-power-save"))) {
1652                                 AllowInPowerSave _value = AllowInPowerSave::read(_child);
1653                                 allowInPowerSave_optional.push_back(std::move(_value));
1654                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-in-data-usage-save"))) {
1655                                 AllowInDataUsageSave _value = AllowInDataUsageSave::read(_child);
1656                                 allowInDataUsageSave_optional.push_back(std::move(_value));
1657                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-unthrottled-location"))) {
1658                                 AllowUnthrottledLocation _value = AllowUnthrottledLocation::read(_child);
1659                                 allowUnthrottledLocation_optional.push_back(std::move(_value));
1660                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-ignore-location-settings"))) {
1661                                 AllowIgnoreLocationSettings _value = AllowIgnoreLocationSettings::read(_child);
1662                                 allowIgnoreLocationSettings_optional.push_back(std::move(_value));
1663                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-implicit-broadcast"))) {
1664                                 AllowImplicitBroadcast _value = AllowImplicitBroadcast::read(_child);
1665                                 allowImplicitBroadcast_optional.push_back(std::move(_value));
1666                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("app-link"))) {
1667                                 AppLink _value = AppLink::read(_child);
1668                                 appLink_optional.push_back(std::move(_value));
1669                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("system-user-whitelisted-app"))) {
1670                                 SystemUserWhitelistedApp _value = SystemUserWhitelistedApp::read(_child);
1671                                 systemUserWhitelistedApp_optional.push_back(std::move(_value));
1672                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("system-user-blacklisted-app"))) {
1673                                 SystemUserBlacklistedApp _value = SystemUserBlacklistedApp::read(_child);
1674                                 systemUserBlacklistedApp_optional.push_back(std::move(_value));
1675                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("default-enabled-vr-app"))) {
1676                                 DefaultEnabledVrApp _value = DefaultEnabledVrApp::read(_child);
1677                                 defaultEnabledVrApp_optional.push_back(std::move(_value));
1678                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("backup-transport-whitelisted-service"))) {
1679                                 BackupTransportWhitelistedService _value = BackupTransportWhitelistedService::read(_child);
1680                                 backupTransportWhitelistedService_optional.push_back(std::move(_value));
1681                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("disabled-until-used-preinstalled-carrier-associated-app"))) {
1682                                 DisabledUntilUsedPreinstalledCarrierAssociatedApp _value = DisabledUntilUsedPreinstalledCarrierAssociatedApp::read(_child);
1683                                 disabledUntilUsedPreinstalledCarrierAssociatedApp_optional.push_back(std::move(_value));
1684                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("disabled-until-used-preinstalled-carrier-app"))) {
1685                                 DisabledUntilUsedPreinstalledCarrierApp _value = DisabledUntilUsedPreinstalledCarrierApp::read(_child);
1686                                 disabledUntilUsedPreinstalledCarrierApp_optional.push_back(std::move(_value));
1687                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("privapp-permissions"))) {
1688                                 PrivappPermissions _value = PrivappPermissions::read(_child);
1689                                 privappPermissions_optional.push_back(std::move(_value));
1690                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("oem-permissions"))) {
1691                                 OemPermissions _value = OemPermissions::read(_child);
1692                                 oemPermissions_optional.push_back(std::move(_value));
1693                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("signature-permissions"))) {
1694                                 SignaturePermissions _value = SignaturePermissions::read(_child);
1695                                 signaturePermissions_optional.push_back(std::move(_value));
1696                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("hidden-api-whitelisted-app"))) {
1697                                 HiddenApiWhitelistedApp _value = HiddenApiWhitelistedApp::read(_child);
1698                                 hiddenApiWhitelistedApp_optional.push_back(std::move(_value));
1699                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-association"))) {
1700                                 AllowAssociation _value = AllowAssociation::read(_child);
1701                                 allowAssociation_optional.push_back(std::move(_value));
1702                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("bugreport-whitelisted"))) {
1703                                 BugreportWhitelisted _value = BugreportWhitelisted::read(_child);
1704                                 bugreportWhitelisted_optional.push_back(std::move(_value));
1705                             } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("app-data-isolation-whitelisted-app"))) {
1706                                 AppDataIsolationWhitelistedApp _value = AppDataIsolationWhitelistedApp::read(_child);
1707                                 appDataIsolationWhitelistedApp_optional.push_back(std::move(_value));
1708                             }
1709                         }
1710                         Permissions instance(group_optional, permission_optional, assignPermission_optional, splitPermission_optional, library_optional, feature_optional, unavailableFeature_optional, allowInPowerSaveExceptIdle_optional, allowInPowerSave_optional, allowInDataUsageSave_optional, allowUnthrottledLocation_optional, allowIgnoreLocationSettings_optional, allowImplicitBroadcast_optional, appLink_optional, systemUserWhitelistedApp_optional, systemUserBlacklistedApp_optional, defaultEnabledVrApp_optional, backupTransportWhitelistedService_optional, disabledUntilUsedPreinstalledCarrierAssociatedApp_optional, disabledUntilUsedPreinstalledCarrierApp_optional, privappPermissions_optional, oemPermissions_optional, signaturePermissions_optional, hiddenApiWhitelistedApp_optional, allowAssociation_optional, bugreportWhitelisted_optional, appDataIsolationWhitelistedApp_optional);
1711                         return instance;
1712                     }
1713                 } // configfile
1714             } // permission
1715         } // xml
1716     } // android
1717 } // com
1718