Skip to content

Instantly share code, notes, and snippets.

@hirosof
Last active August 29, 2015 14:05
Show Gist options
  • Save hirosof/c84f9e45b81029babdfb to your computer and use it in GitHub Desktop.
Save hirosof/c84f9e45b81029babdfb to your computer and use it in GitHub Desktop.
#ifndef __HSMATHLIB__
#define __HSMATHLIB__
#include <Windows.h>
#ifdef HSMATHLIB_EXPORTS
#ifdef HSMATHDLL_EXPORTS
#define HSMATHLIB_EXPORT extern "C" __declspec (dllexport)
#define HSMATHLIB_VAREXPORT extern
#else
#define HSMATHLIB_EXPORT
#define HSMATHLIB_VAREXPORT extern
#endif
#else
#ifdef HSMATHLIB_USESTATIC
#define HSMATHLIB_EXPORT
#define HSMATHLIB_VAREXPORT extern
#else
#define HSMATHLIB_EXPORT extern "C" __declspec (dllimport)
#define HSMATHLIB_VAREXPORT extern __declspec(dllimport)
#endif
#endif
//基本クラス
HSMATHLIB_VAREXPORT const GUID IID_IHSMathBase;
class __declspec(uuid("{1FE06D33-B8D3-40E0-B433-B89FF2FD45D1}")) IHSMathBase {
public:
virtual DWORD AddReference(void) = 0;
virtual DWORD GetReference(void) = 0;
virtual BOOL InquiryType(const GUID TargetGuid) = 0;
virtual void Dispose(void) = 0;
virtual DWORD Release(void) = 0;
};
//基本クラスの継承先で使うマクロ
#define HSMATHLIB_CLASSWITHGUID(uuidstr , name) class __declspec(uuid(uuidstr)) name : public IHSMathBase
#define HSMATHLIB_PROPERTY_RW(GetFunc , SetFunc , Type ,PropName) __declspec(property(get = GetFunc , put = SetFunc)) Type PropName
//複素数インタフェースクラス
HSMATHLIB_VAREXPORT const GUID IID_IHSMathComplex;
HSMATHLIB_CLASSWITHGUID("{4F3E7885-91E4-4DBE-A56F-A2BEC9342829}", IHSMathComplex) {
public:
//実数部
virtual void SetRealNumber(double Real) = 0;
virtual double GetRealNumber(void) = 0;
HSMATHLIB_PROPERTY_RW(GetRealNumber, SetRealNumber, double, Real);
//虚数部
virtual void SetImaginaryNumber(double Real) = 0;
virtual double GetImaginaryNumber(void) = 0;
HSMATHLIB_PROPERTY_RW(GetImaginaryNumber, SetImaginaryNumber, double, Imag);
//基本演算
virtual bool Add(IHSMathComplex *pComplex) = 0;
virtual void Add(double Real , double Imaginary) = 0;
};
#endif /*__HSMATHLIB__*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment