// RuntimeForStatic base library | C+- (SysRoutine) | Author: Sergei Y.Kitáev
#include "Precompiled.h"
#include "SharedIncludes.h"
namespace RuntimeForStatic {
//==================================================================================================

$COMAutoArray::$COMAutoArray($A, const std::initializer_list<$PIUnknown volatile*>&
                                 interfacePtrPointers $p_optional_list )
{
   for (auto pInterfacePointer: interfacePtrPointers)
      $$VERIFY_POINTER_ARG( pInterfacePointer );
   _InterfacePtrPointers_ = interfacePtrPointers;
   ValidateDisposable($$);
}

//==================================================================================================

void $COMAutoArray::DoDispose($CI_REF)
{
   Free($ci);
}

void $COMAutoArray::ResetSuperstructure()
{
   _InterfacePtrPointers_ = std::initializer_list<$PIUnknown volatile*>();
}

//==================================================================================================

void $COMAutoArray::Free($O)
{
   if ( IsValidDisposable )
   {
      $COMInterface::ResetAndRelease($$, _InterfacePtrPointers_ );
      ResetSuperstructure();
      InvalidateDisposable();
   }
}

//==================================================================================================
} // RuntimeForStatic
