Skip to content

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