Skip to content

File constitution_uid_auto_register.h

File List > builtin > constitution_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 ConstitutionUIDAutoRegister
{
  public:
    using Creator = UIDInfoCreator;

    ConstitutionUIDAutoRegister(Creator creator) noexcept;

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

#define REGISTER_CONSTITUTION_UIDS_INTERNAL(counter)                                                  \
    namespace auto_register                                                                           \
    {                                                                                                 \
        static ::uipc::list<::uipc::builtin::UIDInfo> ConstitutionUIDAutoRegisterFunction##counter(); \
        static ::uipc::builtin::ConstitutionUIDAutoRegister ConstitutionUIDAutoRegister##counter{     \
            ::uipc::builtin::ConstitutionUIDAutoRegister::Creator{                                    \
                ConstitutionUIDAutoRegisterFunction##counter, __FILE__, __LINE__}};                   \
    }                                                                                                 \
    static ::uipc::list<::uipc::builtin::UIDInfo> auto_register::ConstitutionUIDAutoRegisterFunction##counter()

#define REGISTER_CONSTITUTION_UIDS(...)                                        \
    REGISTER_CONSTITUTION_UIDS_INTERNAL(__COUNTER__)