Blob Blame History Raw
//
//                         __ __ __ __   __ __ __ __   __ __ __ __   __ __ __ __
//                        /_//_//_//_/\ /_//_//_//_/\ /_//_//_//_/\ /_//_//_//_/\
//                        \_/_//_/\\_\/ \_/_//_/\\_\//_/\\_\\_\\_\//_/\\_\\_/_/\/
//                         /_//_/\/      /_//_/\/   /_/\/ __      /_/\/ __ /_/\/
//                        /_//_/\/      /_//_/\/   /_//_//_/\    /_//_//_//_/\/
//                       /_//_/\/      /_//_/\/   /_/\\_\\_\/   /_/\\_\\_\\_\/
//                   __ /_//_/\/   __ /_//_/\/   /_/\/ __ __   /_/\/
//                  /_//_//_//_/\ /_//_//_//_/\ /_//_//_//_/\ /_/\/
//                  \_\\_\\_\\_\/ \_\\_\\_\\_\/ \_\\_\\_\\_\/ \_\/
//                                                    
//
//                     ..::  Interactive Internet Entertainment Platform  ::..
//
//                         (C) 2000-2006, FAN YI PENG. ALL RIGHTS RESERVED
//
// ________________________________________________________________________________________________
//
/// @file  IIEP_Def.H
/// @brief 基本定义
// ________________________________________________________________________________________________
//
//
//                               _____________________________________
//                              |                                     |
//                              |                DATA                 |
// _____________________________|_____________________________________|____________________________
//
//                                            __________
// __________________________________________|  CONFIG  |__________________________________________

#pragma once

#ifdef _DEBUG
  #pragma comment(lib, "IIEP_DBG.LIB")
#else
  #pragma comment(lib, "IIEP.LIB")
#endif

// ____________________________________________ CONFIG ____________________________________________
//
//                                            __________
// __________________________________________|  DEFINE  |__________________________________________
//
//      _____________
// ____/  Data Type  \_____________________________________________________________________________

typedef unsigned char  BYTE;
typedef unsigned short WORD;
typedef unsigned long  DWORD;
typedef __int64        QWORD;

typedef BYTE  *PBYTE;
typedef WORD  *PWORD;
typedef DWORD *PDWORD;
typedef QWORD *PQWORD;

typedef void *PVOID;

// ______ Data Type _______________________________________________________________________________
//
//      ___________
// ____/  Release  \_______________________________________________________________________________

#define SAFE_DELETE(p)       if (p) { delete (p);       (p) = 0; }
#define SAFE_DELETE_ARRAY(p) if (p) { delete[] (p);     (p) = 0; }
#define SAFE_RELEASE(p)	     if (p) { (p) -> Release(); (p) = 0; }

// ______ Release _________________________________________________________________________________
//
//      __________
// ____/  Assert  \________________________________________________________________________________

#ifndef ASSERT
  #ifdef _DEBUG
    namespace IIEP { bool AssertFunction(bool, long, const char *, const char *); }
    #define ASSERT(expression) \
    if (IIEP::AssertFunction((bool) (expression), __LINE__, __FILE__, __FUNCTION__)) {_asm {int 3}}
  #else
    #define ASSERT(expression)
  #endif
#endif

// ______ Assert __________________________________________________________________________________
//
//      _______
// ____/  LOG  \___________________________________________________________________________________

namespace IIEP
{
  void DebugLog(const char *pcszFormat, ...);
  void DebugLog(const WORD *pcwsFormat, ...);

  void WriteLog(const char *pcszFormat, ...);
  void WriteLog(const WORD *pcwsFormat, ...);
}

// ______ LOG _____________________________________________________________________________________
//
//      ________
// ____/  TODO  \__________________________________________________________________________________

#ifdef _DEBUG
  #define TODO \
  IIEP::DebugLog("\n[TODO] %d: \"%s\"- %s()\n~~~~~~\n", __LINE__, __FILE__, __FUNCTION__);
  #define ToDo(x) \
  IIEP::DebugLog("\n[TODO] %d: \"%s\"- %s(): %s\n~~~~~~\n", __LINE__, __FILE__, __FUNCTION__, (x));
#else
  #define TODO
  #define ToDo(x)
#endif

// ______ TODO ____________________________________________________________________________________
//
//      ________
// ____/  Path  \__________________________________________________________________________________

namespace IIEP
{
  void ResetToExePath(void);
}

// ______ Path ____________________________________________________________________________________
//
//      __________
// ____/  CMutex  \________________________________________________________________________________

namespace IIEP
{
  class CMutex
  {
    public:

    CMutex(void) { m_bLocked = false; }
    ~CMutex(void) {}

    void Lock(void);
    void Unlock(void) { m_bLocked = false; }
    void Set(void)    { m_bLocked = true;  }
    void Wait(void);

    bool IsLock(void) const { return m_bLocked; }

    private:

    volatile bool m_bLocked;
  };
}

// ______ CMutex __________________________________________________________________________________
//
//      _________
// ____/  SRect  \_________________________________________________________________________________

namespace IIEP
{
  /// @brief 矩形结构

  struct SRect
  {
    SRect(void) {}

    SRect(long nX, long nY, long nWidth, long nHeight)
    {
      m_nX      = nX;
      m_nY      = nY;
      m_nWidth  = nWidth;
      m_nHeight = nHeight;
    }

    // -------------------------------------------------------------------------------------------

    void Set(long nX, long nY, long nWidth, long nHeight)
    {
      m_nX      = nX;
      m_nY      = nY;
      m_nWidth  = nWidth;
      m_nHeight = nHeight;
    }

    // -------------------------------------------------------------------------------------------

    long m_nX;      ///< 矩形左上角 X 轴坐标
    long m_nY;      ///< 矩形左上角 Y 轴坐标
    long m_nWidth;  ///< 矩形宽度
    long m_nHeight; ///< 矩形高度
  };
}

// ______ SRect ___________________________________________________________________________________
//
//      ___________________________
// ____/  Sample Grabber CallBack  \_______________________________________________________________

namespace IIEP
{
  typedef void (*CALLBACK_SampleGrabberBuffer) (PVOID, DWORD);
}

// ______ Sample Grabber CallBack _________________________________________________________________
//
// ____________________________________________ DEFINE ____________________________________________
//
// ____________________________________________________________________________________ DATA ______
//
// ___________________________________________ FILE END ___________________________________________