9 #include <rtti/object.h>
10 #include <rtti/jsonreader.h>
11 #include <rtti/defaultlinkresolver.h>
13 #include <rtti/objectptr.h>
14 #include <nap/logger.h>
18 namespace sequenceguiclipboard
37 explicit Clipboard(
const rttr::type& trackType);
67 std::vector<T*> deserialize(std::vector<std::unique_ptr<rtti::Object>>& createdObjects,
utility::ErrorState& errorState);
78 return this->get_type() == RTTI_OF(T);
91 assert(isClipboard<T>());
92 return static_cast<T*
>(
this);
100 std::vector<std::string> getObjectIDs()
const;
108 bool containsObject(
const std::string& objectID,
const std::string& sequenceName)
const;
114 void removeObject(
const std::string& objectID);
157 template<
typename T,
typename ... Args>
160 return std::make_unique<T>(std::forward<Args>(args)...);
183 std::vector<T *> deserialized_objects;
185 createdObjects.clear();
189 std::string serialized_object = pair.second;
196 return std::vector<T *>();
200 return std::vector<T *>();
203 T *root_object =
nullptr;
205 return std::vector<T *>();
208 if(!errorState.
check(first_object->get_type() == RTTI_OF(T) ||
209 first_object->get_type().is_derived_from<T>(),
"Root object not of correct type"))
210 return std::vector<T *>();
213 root_object =
static_cast<T *
>(first_object);
216 createdObjects.emplace_back(std::move(read_object));
220 for(
auto &object_ptr: createdObjects)
222 if(!errorState.
check(object_ptr->init(errorState),
"Error initializing object : %s ", errorState.
toString().c_str()))
223 return std::vector<T *>();
226 if(!errorState.
check(root_object !=
nullptr,
"return object is null"))
227 return std::vector<T *>();
229 deserialized_objects.emplace_back(root_object);
232 return deserialized_objects;
@ NoRawPointers
Raw pointers cannot be used to point to other object, only ObjectPtr, ResourcePtr or ComponentPtr,...
std::map< std::string, std::string > mSerializedObjects
Definition: sequenceeditorguiclipboard.h:147
bool check(bool successCondition, T &&errorMessage)
Definition: errorstate.h:36
bool isClipboard()
Definition: sequenceeditorguiclipboard.h:76
rttr::type getTrackType() const
Definition: sequenceeditorguiclipboard.h:126
Definition: errorstate.h:19
T * getDerived()
Definition: sequenceeditorguiclipboard.h:89
bool NAPAPI deserializeJSON(const std::string &json, EPropertyValidationMode propertyValidationMode, EPointerPropertyMode pointerPropertyMode, Factory &factory, DeserializeResult &result, utility::ErrorState &errorState)
std::vector< T * > deserialize(std::vector< std::unique_ptr< rtti::Object >> &createdObjects, utility::ErrorState &errorState)
Definition: sequenceeditorguiclipboard.h:181
rttr::type mTrackType
Definition: sequenceeditorguiclipboard.h:148
const std::string toString() const
UnresolvedPointerList mUnresolvedPointers
Definition: deserializeresult.h:48
Definition: deserializeresult.h:40
Empty()
Definition: sequenceeditorguiclipboard.h:171
static bool sResolveLinks(const OwnedObjectList &objects, const UnresolvedPointerList &unresolvedPointers, utility::ErrorState &errorState)
Definition: sequenceeditorguiclipboard.h:28
std::unique_ptr< Clipboard > SequenceClipboardPtr
Definition: sequenceeditorguiclipboard.h:153
int getObjectCount() const
Definition: sequenceeditorguiclipboard.h:120
Definition: templateapp.h:17
OwnedObjectList mReadObjects
Definition: deserializeresult.h:46
Definition: sequenceeditorguiclipboard.h:167
std::string mSequenceName
Definition: sequenceeditorguiclipboard.h:149
@ DisallowMissingProperties
When a required property is missing from the file, an error will be returned.