Changeset 26 in libcf for trunk/include/cf_debug.h


Ignore:
Timestamp:
02/04/13 17:00:53 (11 years ago)
Author:
cheese
Message:

#1 documentation with doxygen

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/cf_debug.h

    r25 r26  
    11/**
    2  * cf_debug.h
     2 * @file    cf_debug.h
     3 * @author  myusgun <myusgun@gmail.com>
     4 * @version 0.1
     5 *
     6 * @remark
     7 * 디버그 함수를 직접 호출하지 않고 정의된 매크로를 사용하면,
     8 * Preprocessor에 _DEBUG가 정의되어 있는 경우에 만
     9 * 디버그 코드가 동작하도록 할 수 있음 <br />
     10 * 디버그 메시지는 stdout 및 stderr를 이용한 파일 포인터 출력을 지원하고,
     11 * 환경에 적합하도록 사용자가 구성한 컨텍스트를 이용하여 사용할 수도 있음 <br />
     12 * (단, 콜스택의 푸시/팝은 컨텍스트를 이용해야만 사용 가능)
    313 */
    414#ifndef __CF_DEBUG_H__
     
    919#include <stdio.h>
    1020
     21/** 잘못된 컨텍스트 오류 */
    1122#define CF_ERROR_DEBUG_INVALID_CTX          CF_ERROR_DEBUG - 1
     23
     24/** 디버그 메시지 출력을 위한 파일 포인터 설정 오류 */
    1225#define CF_ERROR_DEBUG_SET_OUTPUT_FD        CF_ERROR_DEBUG - 2
     26
     27/** 콜스택 푸시 오류 */
    1328#define CF_ERROR_DEBUG_PUSH_CALLSTACK       CF_ERROR_DEBUG - 3
     29
     30/** 콜스택 팝 오류 */
    1431#define CF_ERROR_DEBUG_POP_CALLSTACK        CF_ERROR_DEBUG - 4
    1532
     33/** Windows 함수 이름 매크로 재정의 */
    1634#ifdef _WIN32
    1735# define __func__   __FUNCTION__
     
    1937
    2038#ifdef _DEBUG
     39/**
     40 * 디버그 컨텍스트 생성
     41 *
     42 * @see CF_Debug_CreateCtx
     43 */
    2144# define CF_DEBUG_CREATE_CTX()                                      \
    2245    CF_Debug_CreateCtx ()
    2346
     47/**
     48 * 디버그 컨텍스트 해제
     49 *
     50 * @param __ctx 디버그 컨텍스트
     51 *
     52 * @see CF_Debug_DestroyCtx
     53 */
    2454# define CF_DEBUG_DESTROY_CTX(__ctx)                                \
    2555    CF_Debug_DestroyCtx (__ctx)
    2656
    27 # define CF_UPDATE_CTX(__ctx)                                       \
    28     CF_Debug_UpdateCtx (__ctx,__FILE__,__func__,__LINE__)
    29 
     57/**
     58 * 디버그 메시지를 지정된 파일 포인터로 출력
     59 *
     60 * @param __fp  파일 포인터. 표준출력(stdout) 및 표준오류(stderr) 사용 가능
     61 * @param __fmt 포맷 스트링
     62 * @param ...   가변 인자
     63 *
     64 * @see CF_Debug_Print
     65 */
    3066# define CF_DEBUG_PRINT(__fp,__fmt,...)                             \
    3167    CF_Debug_Print (__fp,__FILE__,__func__,__LINE__,__fmt,##__VA_ARGS__)
    3268
     69/**
     70 * 바이너리 데이터를 디버그 메시지와 함께 지정된 파일 포인터로 출력
     71 *
     72 * @param __fp  파일 포인터. 표준출력(stdout) 및 표준오류(stderr) 사용 가능
     73 * @param __bin 바이너리 데이터
     74 * @param __len 바이너리 길이
     75 * @param __fmt 포맷 스트링
     76 * @param ...   가변 인자
     77 *
     78 * @see CF_Debug_PrintBin
     79 */
    3380# define CF_DEBUG_PRINT_BIN(__fp,__bin,__len,__fmt,...)             \
    3481    CF_Debug_PrintBin (__fp,__FILE__,__func__,__LINE__,__bin,__len,__fmt,##__VA_ARGS__)
    3582
     83/**
     84 * 컨텍스트를 업데이트하고 디버그 메시지를 출력
     85 *
     86 * @param __ctx 디버그 컨텍스트
     87 * @param __fmt 포맷 스트링
     88 * @param ...   가변 인자
     89 *
     90 * @see CF_DEBUG_UPDATE_CTX, CF_Debug_Trace
     91 */
    3692# define CF_DEBUG_TRACE(__ctx,__fmt,...)                            \
    37     do {                                                            \
    38     CF_UPDATE_CTX (__ctx);                                          \
    39     CF_Debug_Trace (__ctx,__fmt,##__VA_ARGS__);                     \
    40     } while (0)
    41 
     93    CF_Debug_Trace (__ctx,__FILE__,__func__,__LINE__,__fmt,##__VA_ARGS__)
     94
     95/**
     96 * 컨텍스트를 업데이트하고 바이너리 데이터를 디버그 메시지와 함께 출력
     97 *
     98 * @param __ctx 디버그 컨텍스트
     99 * @param __bin 바이너리 데이터
     100 * @param __len 바이너리 길이
     101 * @param __fmt 포맷 스트링
     102 * @param ...   가변 인자
     103 *
     104 * @see CF_DEBUG_UPDATE_CTX, CF_Debug_TraceBin
     105 */
    42106# define CF_DEBUG_TRACE_BIN(__ctx,__bin,__len,__fmt,...)            \
    43     do {                                                            \
    44     CF_UPDATE_CTX (__ctx);                                          \
    45     CF_Debug_TraceBin (__ctx,__bin,__len,__fmt,##__VA_ARGS__);      \
    46     } while (0)
    47 
     107    CF_Debug_TraceBin (__ctx,__FILE__,__func__,__LINE__,__bin,__len,__fmt,##__VA_ARGS__)
     108
     109/**
     110 * 컨텍스트에 콜스택 푸시
     111 *
     112 * @param __ctx 디버그 컨텍스트
     113 *
     114 * @see CF_Debug_CallStackPush
     115 */
    48116# define CF_DEBUG_CALLSTACK_PUSH(__ctx)                             \
    49117    CF_Debug_CallStackPush (__ctx,__FILE__,__func__,__LINE__)
    50118
    51 # define CF_DEBUG_CALLSTACK_POP                                     \
    52     CF_Debug_CallStackPop
     119/**
     120 * 컨텍스트에서 콜스택 팝
     121 *
     122 * @param __ctx         디버그 컨텍스트
     123 * @param __callstack   콜스택 정보를 가져올 콜스택 데이터 구조체 포인터
     124 *
     125 * @see CF_Debug_CallStackPop, CF_Debug_CallStack
     126 */
     127# define CF_DEBUG_CALLSTACK_POP(__ctx,__callstack)                  \
     128    CF_Debug_CallStackPop (__ctx,__callstack)
    53129#else // #ifdef _DEBUG
    54130# define CF_DEBUG_CREATE_CTX()                          NULL
    55131# define CF_DEBUG_DESTROY_CTX(__ctx)
    56 # define CF_UPDATE_CTX(__ctx)
     132# define CF_DEBUG_UPDATE_CTX(__ctx)
    57133# define CF_DEBUG_PRINT(__fp,__fmt,...)
    58134# define CF_DEBUG_PRINT_BIN(__fp,__bin,__len,__fmt,...)
     
    63139#endif // #ifdef _DEBUG
    64140
     141/** 디버그 컨텍스트 */
    65142typedef void *  CF_Debug_Ctx;
     143
     144/** 콜스택 데이터 */
    66145typedef struct cf_debug_callStack {
    67     char    file[NAME_LENGTH + 1];
    68     char    function[NAME_LENGTH + 1];
    69     int     line;
     146    char    file[NAME_LENGTH + 1];      /**< 파일 이름 */
     147    char    function[NAME_LENGTH + 1];  /**< 함수 이름 */
     148    int     line;                       /**< 라인 넘버 */
    70149} CF_Debug_CallStack;
    71150
     
    74153#endif
    75154
     155/**
     156 * 디버그 컨텍스트를 생성
     157 *
     158 * @return 성공 시, CF_Debug_Ctx 형태의 컨텍스트; 실패 시, NULL
     159 * @see CF_DEBUG_CREATE_CTX
     160 */
    76161CF_EXPORT CF_Debug_Ctx
    77162CF_Debug_CreateCtx      (void);
    78163
     164/**
     165 * 디버그 컨텍스트를 해제
     166 *
     167 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     168 *
     169 * @param ctx 디버그 컨텍스트
     170 *
     171 * @see CF_DEBUG_DESTROY_CTX
     172 */
    79173CF_EXPORT int
    80174CF_Debug_DestroyCtx     (CF_Debug_Ctx ctx);
    81175
     176/**
     177 * 디버그 컨텍스트에 출력할 파일 디스크립터를 설정
     178 *
     179 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     180 *
     181 * @param ctx   디버그 컨텍스트
     182 * @param fd    파일 디스크립터
     183 *
     184 * @see CF_File_Open, CF_File_Create
     185 */
    82186CF_EXPORT int
    83187CF_Debug_SetOutputFD    (CF_Debug_Ctx   ctx,
    84188                         int            fd);
    85189
     190/**
     191 * 디버그 메시지를 지정된 파일 포인터로 출력
     192 *
     193 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     194 *
     195 * @param fp    파일 포인터. 표준출력(stdout) 및 표준오류(stderr) 사용 가능
     196 * @param file  파일 경로
     197 * @param func  함수 이름
     198 * @param line  라인 넘버
     199 * @param fmt   포맷 스트링
     200 * @param ...   가변 인자
     201 *
     202 * @see CF_DEBUG_PRINT
     203 */
    86204CF_EXPORT int
    87205CF_Debug_Print          (FILE       * fp,
     
    91209                         const char * fmt, ...);
    92210
    93 int
     211/**
     212 * 바이너리 데이터를 디버그 메시지와 함께 지정된 파일 포인터로 출력
     213 *
     214 * @return CF_OK 반환
     215 *
     216 * @param fp    파일 포인터. 표준출력(stdout) 및 표준오류(stderr) 사용 가능
     217 * @param file  파일 경로
     218 * @param func  함수 이름
     219 * @param line  라인 넘버
     220 * @param bin   라인 넘버
     221 * @param len   바이너리 길이
     222 * @param fmt   포맷 스트링
     223 * @param ...   가변 인자
     224 *
     225 * @see CF_DEBUG_PRINT_BIN
     226 */
     227CF_EXPORT int
    94228CF_Debug_PrintBin       (FILE                   * fp,
    95229                         const char             * file,
     
    100234                         const char             * fmt, ...);
    101235
    102 CF_EXPORT int
    103 CF_Debug_UpdateCtx      (CF_Debug_Ctx   ctx,
    104                          const char     * file,
    105                          const char     * func,
    106                          const int      line);
    107 
     236/**
     237 * 컨텍스트를 업데이트하고 디버그 메시지를 출력
     238 *
     239 * @return CF_OK 반환
     240 *
     241 * @param ctx   디버그 컨텍스트
     242 * @param fmt   포맷 스트링
     243 * @param ...   가변 인자
     244 *
     245 * @see CF_DEBUG_UPDATE_CTX, CF_Debug_Trace
     246 */
    108247CF_EXPORT int
    109248CF_Debug_Trace          (CF_Debug_Ctx   ctx,
    110249                         const char     * fmt, ...);
    111250
     251/**
     252 * 컨텍스트를 업데이트하고 바이너리 데이터를 디버그 메시지와 함께 출력
     253 *
     254 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     255 *
     256 * @param ctx   디버그 컨텍스트
     257 * @param bin   바이너리 데이터
     258 * @param len   바이너리 길이
     259 * @param fmt   포맷 스트링
     260 * @param ...   가변 인자
     261 *
     262 * @see CF_DEBUG_UPDATE_CTX, CF_DEBUG_TRACE_BIN
     263 */
    112264CF_EXPORT int
    113265CF_Debug_TraceBin       (CF_Debug_Ctx           ctx,
     
    116268                         const char             * fmt, ...);
    117269
     270/**
     271 * 컨텍스트에 콜스택 푸시
     272 *
     273 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     274 *
     275 * @param ctx   디버그 컨텍스트
     276 * @param file  파일 경로
     277 * @param func  함수 이름
     278 * @param line  라인 넘버
     279 *
     280 * @see CF_DEBUG_CALLSTACK_PUSH
     281 */
    118282CF_EXPORT int
    119283CF_Debug_CallStackPush  (CF_Debug_Ctx   ctx,
     
    122286                         const int      line);
    123287
     288/**
     289 * 컨텍스트에서 콜스택 팝
     290 *
     291 * @return 성공 시, CF_OK; 실패 시, 오류 코드
     292 *
     293 * @param ctx       디버그 컨텍스트
     294 * @param callstack 콜스택 정보를 가져올 콜스택 데이터 구조체 포인터
     295 *
     296 * @see CF_Debug_CallStackPop, CF_Debug_CallStack
     297 */
    124298CF_EXPORT int
    125299CF_Debug_CallStackPop   (CF_Debug_Ctx       ctx,
Note: See TracChangeset for help on using the changeset viewer.