Skip to content

File implicit_geometry_uid_auto_register.h

File List > builtin > implicit_geometry_uid_auto_register.h

Go to the documentation of this file

#pragma once
#include <uipc/builtin/uid_register.h>
#include <uipc/common/list.h>

namespace uipc::builtin
{
class UIPC_CORE_API ImplicitGeometryUIDAutoRegister
{
  public:
    using Creator = UIDInfoCreator;

    ImplicitGeometryUIDAutoRegister(Creator creator) noexcept;

  private:
    friend class ImplicitGeometryUIDCollection;
    static list<Creator>& creators() noexcept;
};
}  // namespace uipc::builtin

#define REGISTER_IMPLICIT_GEOMETRY_UIDS_INTERNAL(counter)                                                 \
    namespace auto_register                                                                               \
    {                                                                                                     \
        static ::uipc::list<::uipc::builtin::UIDInfo> ImplicitGeometryUIDAutoRegisterFunction##counter(); \
        static ::uipc::builtin::ImplicitGeometryUIDAutoRegister ImplicitGeometryUIDAutoRegister##counter{ \
            ::uipc::builtin::ImplicitGeometryUIDAutoRegister::Creator{                                    \
                ImplicitGeometryUIDAutoRegisterFunction##counter, __FILE__, __LINE__}};                   \
    }                                                                                                     \
    static ::uipc::list<::uipc::builtin::UIDInfo> auto_register::ImplicitGeometryUIDAutoRegisterFunction##counter()

#define REGISTER_IMPLICIT_GEOMETRY_UIDS(...)                                   \
    REGISTER_IMPLICIT_GEOMETRY_UIDS_INTERNAL(__COUNTER__)