text: #pragma once
  
  #include "__zz_cib_internal/__zz_cib_CibPoDoFo-type-converters.h"
  #include "__zz_cib_internal/__zz_cib_CibPoDoFo-def.h"
  #include "__zz_cib_internal/__zz_cib_CibPoDoFo-ids.h"
  #include "__zz_cib_internal/__zz_cib_CibPoDoFo-handle-proxy-map.h"
  #include "__zz_cib_internal/__zz_cib_CibPoDoFo-mtable-helper.h"
  
  namespace __zz_cib_ {
  using namespace ::PoDoFo;
  template <typename T>
  struct __zz_cib_Helper<::PoDoFo::PdfInputDevice, T> : public __zz_cib_MethodTableHelper {
    static_assert(std::is_same_v<T, ::PoDoFo::PdfInputDevice>,
      "Parameter 'T' is only to delay instantiation of the specialization. It is always the same as first parameter.");
  
    using _ProxyClass = T;
    using __zz_cib_AbiType = typename _ProxyClass::__zz_cib_AbiType;
    friend class ::PoDoFo::PdfInputDevice;
    static bool instanceDeleted_;
    CibPoDoFo::__zz_cib_ImplProxyMap<_ProxyClass> implProxyMap_;
    using __zz_cib_MethodId = __zz_cib_::__zz_cib_ids::__zz_cib_Class333::__zz_cib_Class377::__zz_cib_MethodId;
  
    __zz_cib_Helper()
      : __zz_cib_MethodTableHelper(
        __zz_cib_CibPoDoFoGetMethodTable(__zz_cib_ids::__zz_cib_Class333::__zz_cib_Class377::__zz_cib_classId))
    {}
    ~__zz_cib_Helper() {
      instanceDeleted_ = true;
    }
    static __zz_cib_Helper& __zz_cib_Instance() {
      static __zz_cib_Helper helper;
      return helper;
    }
    static __zz_cib_MethodTableHelper& __zz_cib_GetMethodTable() {
      return __zz_cib_Instance();
    }
  
    template <typename ..._Args>
    static __zz_cib_AbiType __zz_cib_Copy_0(_Args... __zz_cib_args) {
      using __zz_cib_ProcType = __zz_cib_AbiType (__zz_cib_decl *) (_Args...);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::__zz_cib_Copy_0>(
        __zz_cib_args...);
    }
    template <typename ..._Args>
    static __zz_cib_AbiType __zz_cib_New_1(_Args... __zz_cib_args) {
      using __zz_cib_ProcType = __zz_cib_AbiType (__zz_cib_decl *) (_Args...);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::__zz_cib_New_1>(
        __zz_cib_args...);
    }
    template <typename ..._Args>
    static __zz_cib_AbiType __zz_cib_New_2(_Args... __zz_cib_args) {
      using __zz_cib_ProcType = __zz_cib_AbiType (__zz_cib_decl *) (_Args...);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::__zz_cib_New_2>(
        __zz_cib_args...);
    }
    template <typename ..._Args>
    static __zz_cib_AbiType __zz_cib_New_3(_Args... __zz_cib_args) {
      using __zz_cib_ProcType = __zz_cib_AbiType (__zz_cib_decl *) (_Args...);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::__zz_cib_New_3>(
        __zz_cib_args...);
    }
    static auto __zz_cib_Delete_4(__zz_cib_AbiType __zz_cib_obj) {
      if (__zz_cib_obj) {
        using __zz_cib_ProcType = void (__zz_cib_decl *) (__zz_cib_AbiType);
        return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::__zz_cib_Delete_4>(
          __zz_cib_obj
          );
      }
    }
    template <typename _RT>
    static auto Close_5(__zz_cib_AbiType __zz_cib_obj) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (__zz_cib_AbiType);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::Close_5>(
        __zz_cib_obj
        );
    }
    template <typename _RT>
    static auto Tell_6(const __zz_cib_AbiType __zz_cib_obj) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (const __zz_cib_AbiType);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::Tell_6>(
        __zz_cib_obj
        );
    }
    template <typename _RT>
    static auto GetChar_7(const __zz_cib_AbiType __zz_cib_obj) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (const __zz_cib_AbiType);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::GetChar_7>(
        __zz_cib_obj
        );
    }
    template <typename _RT>
    static auto Look_8(const __zz_cib_AbiType __zz_cib_obj) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (const __zz_cib_AbiType);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::Look_8>(
        __zz_cib_obj
        );
    }
    template <typename _RT, typename ..._Args>
    static auto Seek_9(__zz_cib_AbiType __zz_cib_obj, _Args... __zz_cib_args) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (__zz_cib_AbiType, _Args...);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::Seek_9>(
        __zz_cib_obj,
        __zz_cib_args...);
    }
    template <typename _RT, typename ..._Args>
    static auto Read_10(__zz_cib_AbiType __zz_cib_obj, _Args... __zz_cib_args) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (__zz_cib_AbiType, _Args...);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::Read_10>(
        __zz_cib_obj,
        __zz_cib_args...);
    }
    template <typename _RT>
    static auto Eof_11(const __zz_cib_AbiType __zz_cib_obj) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (const __zz_cib_AbiType);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::Eof_11>(
        __zz_cib_obj
        );
    }
    template <typename _RT>
    static auto Bad_12(const __zz_cib_AbiType __zz_cib_obj) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (const __zz_cib_AbiType);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::Bad_12>(
        __zz_cib_obj
        );
    }
    template <typename _RT, typename ..._Args>
    static auto Clear_13(const __zz_cib_AbiType __zz_cib_obj, _Args... __zz_cib_args) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (const __zz_cib_AbiType, _Args...);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::Clear_13>(
        __zz_cib_obj,
        __zz_cib_args...);
    }
    template <typename _RT>
    static auto IsSeekable_14(const __zz_cib_AbiType __zz_cib_obj) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (const __zz_cib_AbiType);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::IsSeekable_14>(
        __zz_cib_obj
        );
    }
    template <typename _RT, typename ..._Args>
    static auto SetSeekable_15(__zz_cib_AbiType __zz_cib_obj, _Args... __zz_cib_args) {
      using __zz_cib_ProcType = _RT (__zz_cib_decl *) (__zz_cib_AbiType, _Args...);
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::SetSeekable_15>(
        __zz_cib_obj,
        __zz_cib_args...);
    }
    static __zz_cib_AbiType __zz_cib_New_16() {
      using __zz_cib_ProcType = __zz_cib_AbiType (__zz_cib_decl *) ();
      return __zz_cib_GetMethodTable().Invoke<__zz_cib_ProcType, __zz_cib_MethodId::__zz_cib_New_16>(
        );
    }
    static T* __zz_cib_CreateProxy(__zz_cib_AbiType h) {
      auto* const __zz_cib_obj = new T(h);
      return __zz_cib_obj;
    }
    static T __zz_cib_ObjectFromHandle(__zz_cib_AbiType h) {
      return T(h);
    }
    static __zz_cib_AbiType& __zz_cib_GetHandle(T* __zz_cib_obj) {
      return __zz_cib_obj->__zz_cib_h_;
    }
    static __zz_cib_AbiType const& __zz_cib_GetHandle(const T* __zz_cib_obj) {
      return __zz_cib_obj->__zz_cib_h_;
    }
    static __zz_cib_AbiType __zz_cib_ReleaseHandle(T* __zz_cib_obj) {
      if (__zz_cib_obj->__zz_cib_h_ == nullptr) return nullptr;
      __zz_cib_RemoveProxy(__zz_cib_obj->__zz_cib_h_);
      auto h = __zz_cib_obj->__zz_cib_h_;
      __zz_cib_obj->__zz_cib_h_ = nullptr;
      return h;
    }
    static _ProxyClass* __zz_cib_FromHandle(__zz_cib_AbiType h) {
      if (h == nullptr)
        return nullptr;
      auto&  dis   = __zz_cib_Instance();
      auto* proxy = dis.implProxyMap_.FindProxy(h);
      if (proxy == nullptr)
        proxy = __zz_cib_CreateProxy(h);
      return proxy;
    }
    static void __zz_cib_AddProxy(_ProxyClass* __zz_cib_obj, __zz_cib_AbiType h) {
      auto& dis = __zz_cib_Instance();
      dis.implProxyMap_.AddProxy(__zz_cib_obj, h);
    }
    static void __zz_cib_RemoveProxy(__zz_cib_AbiType h) {
      if (instanceDeleted_) return;
      auto& dis = __zz_cib_Instance();
        dis.implProxyMap_.RemoveProxy(h);
    }
  };
  template <typename T>
  bool __zz_cib_Helper<::PoDoFo::PdfInputDevice, T>::instanceDeleted_ = false;
  }
  