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.