SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送
メインページ   名前空間一覧   クラス階層   構成   ファイル一覧   名前空間メンバ   構成メンバ   ファイルメンバ  

dKingyoMacro.h の解説

#include "dkutilConfig.h"

dKingyoMacro.hのインクルード依存関係図

Include dependency graph

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

Included by dependency graph

ソースコードを見る。

マクロ定義

#define VISUAL_LASTERROR()
 GetLastError 可視化.

#define DEBUGMB(s)
#define MB(str)   MessageBox(NULL,str,"Message",MB_OK)
 MessageBoxを表示.

#define ODS(str)   OutputDebugString(str)
 OutputDebugStringを使用.

#define SWAP_NUM(a, b)
 正統派 整数、実数専用スワップ

#define SM_OFFSET(p_type, field)   ((unsigned int)&(((p_type)NULL)->field))
 構造体のオフセットを求める Struct Member Offset

#define SET_RECT(rect, l, t, r, b)
 RECT構造体に入れる。.

#define NULL_CHAR_ARRAY(s)   memset((void *)s,0,sizeof(s))
 CHARの配列を初期化する。.

#define SET_VA_LIST(buff, buffnum, origin)
 沢山引数をつける関数のサポート^^;

#define SET_VA_LIST_INSERT_YEN_N(s, snum, origin)
 SET_VA_LISTの文字列の最後に'
'を付け足すバージョン.


#define BEGIN_GET_MANY_ARG(result, s, add, str)
 沢山引数をつける関数のサポート(高機能版)

#define END_GET_MANY_ARG(mem)
 沢山引数をつける関数のサポートを終了する

#define YANE_WARNING(var, s)   {}
#define DK_WARNING(s)   {}
#define DINLINE
 状況に応じてインラインを作る(dkutilはC++オンリーだからすでにもう無用のものかも!?

#define DK_THROW(str)   MessageBox(NULL,str,"例外発生",MB_OK);


マクロ定義の解説

#define BEGIN_GET_MANY_ARG result,
s,
add,
str   ) 
 

値:

{ \
        size_t strnum = strlen(str) + add;\
        s = (char *)::malloc(strnum);\
        result = false;\
        if(s){\
            SET_VA_LIST(s,strnum,str);\
            result = true;\
        }\
    }
沢山引数をつける関数のサポート(高機能版)

引数:
result[out] 成功したかどうかを返す true = 成功 false = 失敗 s[out] char * の変数を渡す。これに文字列を格納する内部でmallocするのでEND_GET_MANY_ARGを呼び出すこと
add[in] size_t (unsigned long)型の文字列拡張バッファのbyte単位の数を渡す。大体200前後が目安(凄い長い文字列の場合はやっぱりかなり必要になりそう
str[in] 元の文字列を渡す

#define DEBUGMB  ) 
 

#define DINLINE
 

状況に応じてインラインを作る(dkutilはC++オンリーだからすでにもう無用のものかも!?

#define DK_THROW str   )     MessageBox(NULL,str,"例外発生",MB_OK);
 

#define DK_WARNING  )     {}
 

#define END_GET_MANY_ARG mem   ) 
 

値:

{\
        if(mem){::free(mem);mem=NULL;}\
    }
沢山引数をつける関数のサポートを終了する

引数:
mem[in] BEGIN_GET_MANY_ARGのsでもらったものを渡す

#define MB str   )     MessageBox(NULL,str,"Message",MB_OK)
 

MessageBoxを表示.

#define NULL_CHAR_ARRAY  )     memset((void *)s,0,sizeof(s))
 

CHARの配列を初期化する。.

#define ODS str   )     OutputDebugString(str)
 

OutputDebugStringを使用.

#define SET_RECT rect,
l,
t,
r,
 ) 
 

値:

{\
    rect##.left   = l;\
    rect##.top    = t;\
    rect##.right  = r;\
    rect##.bottom = b;\
}
RECT構造体に入れる。.

#define SET_VA_LIST buff,
buffnum,
origin   ) 
 

値:

va_list VaList;\
    va_start( VaList , origin ) ;\
    _vsnprintf( buff ,buffnum, origin , VaList ) ;\
    va_end( VaList )
沢山引数をつける関数のサポート^^;

後ろの方に沢山引数をつけられるようにするva_listの初期化。
buff = charのバッファ
buffnum = buffのサイズ(バイト単位)
origin = 最初の文字列
例:例えば、普通に書くとこんな感じ。

void ERROR_BOX(char *str,...){ char s[512]; va_list VaList ; va_start( VaList , str ) ; vsprintf( s , str , VaList ) ; va_end( VaList ) ; MessageBox(NULL,s,"ERROR_BOX",MB_OK); } このマクロはこのように使う。 void ERROR_BOX(char *str,...){< char s[512]; SET_VA_LIST(s,512,str); MessageBox(NULL,s,"ERROR_BOX",MB_OK); }
どうだ!!!これでかなり面倒な文が減った!!
引数:
buff [out] 文字列バッファ
buffnum [in] バッファのサイズ(バイト単位
origin [in] 元の文字列

#define SET_VA_LIST_INSERT_YEN_N s,
snum,
origin   ) 
 

値:

{\
        SET_VA_LIST(s,snum,origin);\
        size_t len = strlen(s);\
        if(s[len-1] != '\n'){\
            if(len >= snum - 1){\
                s[len-1]='\n';\
            }else{\
                strncat(s,"\n",len);\
            }\
        }\
    }
SET_VA_LISTの文字列の最後に'
'を付け足すバージョン.

SET_VA_LISTの文字列の最後に'
'を付け足すバージョン
文字列バッファが全部埋まっている場合でも強制的に付け足す。
また、d金魚が発見したバグ(strncatにバッファ数を 指定しても文字列最後のNULL文字を破壊する行為)も回避します。

引数:
s[out] char *のバッファを入れる
snum[in] バッファの数
origin[in] 元の文字列

#define SM_OFFSET p_type,
field   )     ((unsigned int)&(((p_type)NULL)->field))
 

構造体のオフセットを求める Struct Member Offset

#define SWAP_NUM a,
 ) 
 

値:

a = b - a ;\
    b -= a ;\
    a += b
正統派 整数、実数専用スワップ

 
#define VISUAL_LASTERROR  ) 
 

値:

{\
  LPVOID lpMsgBuf;\
  FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,\
               NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );\
  ::MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );\
  LocalFree( lpMsgBuf );\
}
GetLastError 可視化.

#define YANE_WARNING var,
 )     {}
 


dKingyoUtilClass (dkutil)に対してMon Jun 9 01:32:59 2003に生成されました。 doxygen1.3