• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

PredatorCZ / HavokLib / 89

06 Nov 2025 01:09PM UTC coverage: 63.837% (-3.2%) from 67.014%
89

push

github

PredatorCZ
s

3354 of 5254 relevant lines covered (63.84%)

129082.83 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

86.67
/source/xml/base.cpp
1
/*  Havok Format Library
2
    Copyright(C) 2016-2023 Lukas Cone
3

4
    This program is free software : you can redistribute it and / or modify
5
    it under the terms of the GNU General Public License as published by
6
    the Free Software Foundation, either version 3 of the License, or
7
    (at your option) any later version.
8

9
    This program is distributed in the hope that it will be useful,
10
    but WITHOUT ANY WARRANTY; without even the implied warranty of
11
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
12
    GNU General Public License for more details.
13

14
    You should have received a copy of the GNU General Public License
15
    along with this program.If not, see <https://www.gnu.org/licenses/>.
16
*/
17

18
#include "base.hpp"
19
#include "hklib/hk_packfile.hpp"
20
#include "hklib/hk_rootlevelcontainer.hpp"
21
#include "internal/hk_internal_api.hpp"
22

23
const std::map<hkToolset, xmlToolsetProp> xmlToolsetProps = {
24
    {HK500, xmlToolsetProp{{}, 5, "Havok-5.0.0-r1"}},
25
    {HK510, xmlToolsetProp{{}, 5, "Havok-5.1.0-r1"}},
26
    {HK550, xmlToolsetProp{{}, 5, "Havok-5.5.0-r1"}},
27
    {HK600,
28
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 6, "Havok-6.0.0-r1"}},
29
    {HK610,
30
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 6, "Havok-6.1.0-r1"}},
31
    {HK650,
32
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 6, "Havok-6.5.0-r1"}},
33
    {HK660,
34
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 7, "Havok-6.6.0-r1"}},
35
    {HK700,
36
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 7, "Havok-7.0.0-r1"}},
37
    {HK710,
38
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 7, "Havok-7.1.0-r1"}},
39
    {HK2010_1,
40
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 8, "hk_2010.1.0-r1"}},
41
    {HK2010_2,
42
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 8, "hk_2010.2.0-r1"}},
43
    {HK2011_1,
44
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 9, "hk_2011.1.0-r1"}},
45
    {HK2011_2,
46
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 9, "hk_2011.2.0-r1"}},
47
    {HK2011_3,
48
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 9, "hk_2011.3.0-r1"}},
49
    {HK2012_1,
50
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 9, "hk_2012.1.0-r1"}},
51
    {HK2012_2,
52
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 9, "hk_2012.2.0-r1"}},
53
    {HK2013_1,
54
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 9, "hk_2013.1.0-r1"}},
55
    {HK2013_2,
56
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 9, "hk_2013.2.0-r1"}},
57
    {HK2013_3,
58
     xmlToolsetProp{xmlToolsetProp::TopLevelObject, 9, "hk_2013.3.0-r1"}},
59
    {HK2014, xmlToolsetProp{{xmlToolsetProp::TopLevelObject,
60
                             xmlToolsetProp::MaxPredicate},
61
                            11,
62
                            "hk_2014.1.0-r1"}},
63
};
64

65
void IhkPackFile::ToXML(pugi::xml_node nde, hkToolset toolsetVersion) {
8✔
66
  pugi::xml_node master = nde.append_child("hkpackfile");
8✔
67

68
  const xmlToolsetProp &propRef = xmlToolsetProps.at(toolsetVersion);
8✔
69

70
  master.append_attribute("classversion").set_value(propRef.version);
8✔
71
  master.append_attribute("contentsversion").set_value(propRef.name);
8✔
72

73
  if (propRef.flags[xmlToolsetProp::MaxPredicate]) {
8✔
74
    master.append_attribute("maxpredicate").set_value(21);
1✔
75
    master.append_attribute("predicates");
1✔
76
  }
77

78
  pugi::xml_node dataSection = master.append_child("hksection");
8✔
79
  dataSection.append_attribute(_hkName).set_value("__data__");
8✔
80

81
  const VirtualClasses &allClasses = GetAllClasses();
8✔
82

83
  for (auto &c : allClasses) {
56✔
84
    auto cls = checked_deref_cast<const hkVirtualClass>(c.get());
48✔
85
    pugi::xml_node classNode = dataSection.append_child(_hkObject);
48✔
86
    pugi::xml_attribute addrAttr = classNode.append_attribute(_hkName);
48✔
87

88
    std::string _buffer;
48✔
89
    PointerToString(c->GetPointer(), _buffer);
48✔
90

91
    addrAttr.set_value(_buffer.c_str());
48✔
92
    classNode.append_attribute(_hkClass).set_value(
96✔
93
        cls->GetClassName(toolsetVersion).data());
48✔
94

95
    if (cls->HasHash(hkRootLevelContainer::GetHash()) &&
56✔
96
        propRef.flags[xmlToolsetProp::TopLevelObject])
8✔
97
      master.append_attribute("toplevelobject").set_value(addrAttr.as_string());
6✔
98

99
    cls->ToXML({&classNode, toolsetVersion});
48✔
100
  }
48✔
101
}
8✔
102

103
void IhkPackFile::ToXML(const std::string &fileName, hkToolset toolset) {
×
104
  pugi::xml_document doc;
×
105
  ToXML(doc, toolset);
×
106
  XMLToFile(fileName, doc);
×
107
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc