git » swiftpm » main » tree

[main] / Sources / c_snikket / iinclude / hx / Interface.h

#ifndef HX_INTERFACE_H
#define HX_INTERFACE_H

namespace hx
{

HXCPP_EXTERN_CLASS_ATTRIBUTES void InvalidInterface();

template<typename T>
inline T interface_cast(void *ptr)
{
   #if defined(HXCPP_GC_CHECK_POINTER) || defined(HXCPP_DEBUG)
   if (!ptr) hx::InvalidInterface();
   #endif
   return static_cast<T>(ptr);
}

template<typename T>
inline T interface_check(T inObj,int interfaceId)
{
   Dynamic d(inObj);
   if ( !d.mPtr || !d->_hx_getInterface(interfaceId))
      hx::BadCast();
   return inObj;
}

}


#endif