/////////////////////////////////////////////////////////////////////////////////////////
//
// Please refer to "COPYRIGHT.md" for the relevant copyright statement of this software.
//
/////////////////////////////////////////////////////////////////////////////////////////
//
#ifndef __GXMAT3D_H_
#define __GXMAT3D_H_

#include "gemat3d.h"
#pragma pack(push, 8)

#ifndef AXAUTOEXP
#  ifdef AXAUTO_DLL
#    define AXAUTOEXP __declspec(dllexport)
#  else
#    define AXAUTOEXP __declspec(dllimport)
#  endif
#endif

class AXAUTOEXP GcAxMatrix3d : public GcGeMatrix3d
{
public:
  GcAxMatrix3d();
  GcAxMatrix3d(const VARIANT* var) noexcept(false);
  GcAxMatrix3d(const VARIANT& var) noexcept(false);
  GcAxMatrix3d(const SAFEARRAY* safeArrayPt) noexcept(false);

  GcAxMatrix3d& operator=(const VARIANT* var) noexcept(false);
  GcAxMatrix3d& operator=(const VARIANT& var) noexcept(false);
  GcAxMatrix3d& operator=(const SAFEARRAY* safeArrayPt) noexcept(false);

private:
  GcAxMatrix3d& fromSafeArray(const SAFEARRAY* safeArrayPt) noexcept(false);
};

#pragma pack(pop)
#endif
