File attribute_collection_factory.h
File List > geometry > attribute_collection_factory.h
Go to the documentation of this file
#pragma once
#include <uipc/geometry/attribute_collection.h>
#include <uipc/geometry/attribute_collection_commit.h>
#include <uipc/geometry/shared_attribute_context.h>
namespace uipc::geometry
{
class UIPC_CORE_API AttributeCollectionFactory
{
    class Impl;
  public:
    AttributeCollectionFactory();
    ~AttributeCollectionFactory();
    [[nodiscard]] S<AttributeCollection> from_json(const Json& j,
                                                   DeserialSharedAttributeContext& ctx);
    [[nodiscard]] Json to_json(const AttributeCollection&    ac,
                               SerialSharedAttributeContext& ctx);
    [[nodiscard]] Json commit_to_json(const AttributeCollectionCommit& acc,
                                      SerialSharedAttributeContext&    ctx);
    [[nodiscard]] S<AttributeCollectionCommit> commit_from_json(const Json& j,
                                                                DeserialSharedAttributeContext& ctx);
    [[nodiscard]] AttributeCollectionCommit diff(const AttributeCollection& current,
                                                 const AttributeCollection& reference);
  private:
    U<Impl> m_impl;
};
}  // namespace uipc::geometry