자주 쓰는데 쓸때마다 치기도 귀찮고, 한동안 안쓰다 또 쓰려면 까먹고 귀찮아서 자주 쓰는 모듈들을 개인용 클래스 하나로 묶어버렸습니다. 라이브러리로 뽑을까도 싶은데.. 매우 귀찮..;;




PreDefined.h

 

 각 모듈에서 그때그때 필요에 따라 재정의할 것들만 밖으로 빼놓은 헤더.


CloudTree.h


 CloudTree 클래스와 각 모듈에서 필요한 클래스 정의가 들어있는 헤더. 

 

CloudTree.cpp


 CloudTree 클래스와 각 모듈이 구현되어 있는 소스파일.


소스코드가 있는 폴더에 위 세파일 복사하고, class view에서 각 파일 등록해준 후 쓰면 됨.

당연한 말이지만, Cloudtree 클래스 포인터 선언할 곳에 #include "CloudTree.h" 포함하는건 기본 센스아니겠음?!


version : 0.01

date : 2012. 11. 22

class CloudTree // 개인용 레퍼런스 클래스

{
public:
CloudTree(void);
~CloudTree(void);

// 자주쓰는 수학 모듈
double EuclideanDistance(double src_xdouble src_ydouble dest_xdouble dext_y);
// x-y 2차원 좌표간 거리 반환.

double EuclideanDistance(double src_xdouble src_ydouble src_z
double dest_xdouble dest_ydouble dest_z); // x-y-z 3차원 좌표간 거리 반환.

double Gaussian(double meandouble stdev); // mean을 기준으로 stdev를 표준편차로 하는 가우시안 랜덤값 반환.

// 공유 메모리 할당과 해제 모듈
void *CreateSharedMem(HANDLE hMappingint sizechar * str); // 공유메모리 할당.
void DestroySharedMem(HANDLE hMappingvoid * mapptr); // 공유메모리 해제.

// 간편하게 쓰도록 만들어둔 공유 메모리 모듈
// PreDefined.h에 정의된 stShareData 구조체와 stShareData* m_pShared를 사용.
void CreateSharedMemSimple(); // stShareData* m_pShared 에 연동되는 공유메모리 자동 할당.
void DestroySharedMemSimple();  // stShareData* m_pShared 에 연동되는 공유메모리 자동 해제.
// 클럭타이머를 이용한 경과시간 체크 모듈
double GetDuration(clock_t start_time); // 입력 인자 start_time 으로부터 몇초가 지났는지를 반환.

// TCP/IP 서버 모듈
void CreateTCPServer(); // TCP 서버 생성.
void AddRecieveCallbackServer(void* chvoid* parent); // 서버 리시브 콜백함수 설정.
void DestroyTCPServer(); // TCP 서버 해제.

// TCP/IP 클라이언트 모듈
void CreateTCPClient(); // TCP 클라이언트 생성.
void AddRecieveCallbackClient(void* chvoid* parent); // 클라이언트 리시브 콜백함수 설정.
void DestroyTCPClient(); // TCP 클라이언트 해제.

private:
// 생략 데헷~♡



이렇게까지 설명해줬는데 행여라도 어떻게 쓰는지 모른다는 사람이 있을까봐 써보는 간단한 활용 예제.


  CloudTree * cloudtree = new CloudTree ();
  cloudtree->CreateSharedMemSimple();
  cloudtree->DestroySharedMemSimple();


Cloudtree형 클래스 포인터 하나 만들어서 각 모듈 불러오면 됩니다.

공유메모리 모듈의 경우 두가지가 있는데, 일반 모듈은 직접 정의해서 쓰고 싶을때 쓰시고 Simple 붙은 모듈은 그냥 호출만 하시면 PreDefined.h에 정의된 stShareData 구조체의 포인터 m_pShared를 통해 공유 메모리에 접근할 수 있습니다.

stShareData 구조체는 필요에 따라 각자 알아서 수정해서 쓰시면 됩니다.



TCP/IP 서버와 클라이언트 모듈의 경우 각 Send() 모듈을 만드는 중인데, 어떻게 만들어야 누가 써도 편할까 고민중이라..

뭐 어쨋든 조만간 업데이트 예정입니다.



ps. 추후 활용빈도에 따라 모듈을 첨삭하며 버전업할 예정입니다.