RavEngine
Loading...
Searching...
No Matches
import2ozz_config.h
1//----------------------------------------------------------------------------//
2// //
3// ozz-animation is hosted at http://github.com/guillaumeblanc/ozz-animation //
4// and distributed under the MIT License (MIT). //
5// //
6// Copyright (c) Guillaume Blanc //
7// //
8// Permission is hereby granted, free of charge, to any person obtaining a //
9// copy of this software and associated documentation files (the "Software"), //
10// to deal in the Software without restriction, including without limitation //
11// the rights to use, copy, modify, merge, publish, distribute, sublicense, //
12// and/or sell copies of the Software, and to permit persons to whom the //
13// Software is furnished to do so, subject to the following conditions: //
14// //
15// The above copyright notice and this permission notice shall be included in //
16// all copies or substantial portions of the Software. //
17// //
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR //
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, //
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL //
21// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER //
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING //
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER //
24// DEALINGS IN THE SOFTWARE. //
25// //
26//----------------------------------------------------------------------------//
27
28#ifndef OZZ_ANIMATION_OFFLINE_TOOLS_IMPORT2OZZ_CONFIG_H_
29#define OZZ_ANIMATION_OFFLINE_TOOLS_IMPORT2OZZ_CONFIG_H_
30
31#include "ozz/animation/offline/tools/export.h"
32#include "ozz/base/platform.h"
33
34#include <json/json-forwards.h>
35
36namespace ozz {
37namespace animation {
38namespace offline {
39
40// Get the sanitized (all members are set, with the right types) configuration.
41OZZ_ANIMTOOLS_DLL bool ProcessConfiguration(Json::Value* _config);
42
43// Internal function used to compare enum names.
44OZZ_ANIMTOOLS_DLL bool CompareName(const char* _a, const char* _b);
45
46// Struct allowing inheriting class to provide enum names.
47template <typename _Type, typename _Enum>
48struct JsonEnum {
49 // Struct allowing inheriting class to provide enum names.
50 struct EnumNames {
51 size_t count;
52 const char** names;
53 };
54
55 static bool GetEnumFromName(const char* _name, _Enum* _enum) {
56 const EnumNames enums = _Type::GetNames();
57 for (size_t i = 0; i < enums.count; ++i) {
58 if (CompareName(enums.names[i], _name)) {
59 *_enum = static_cast<_Enum>(i);
60 return true;
61 }
62 }
63 return false;
64 }
65
66 static const char* GetEnumName(_Enum _enum) {
67 const EnumNames enums = _Type::GetNames();
68 assert(static_cast<size_t>(_enum) < enums.count);
69 return enums.names[_enum];
70 }
71
72 static bool IsValidEnumName(const char* _name) {
73 const EnumNames enums = _Type::GetNames();
74 bool valid = false;
75 for (size_t i = 0; !valid && i < enums.count; ++i) {
76 valid = CompareName(enums.names[i], _name);
77 }
78 return valid;
79 }
80};
81
82} // namespace offline
83} // namespace animation
84} // namespace ozz
85#endif // OZZ_ANIMATION_OFFLINE_TOOLS_IMPORT2OZZ_CONFIG_H_
Represents a JSON value.
Definition json.h:536
Definition import2ozz_config.h:50
Definition import2ozz_config.h:48