mre下的控件实现(一、公共的宏定义)


//typedef.h一些公共的宏定义

#ifndef  __TYPEDEF_H__
#define __TYPEDEF_H__

#include "vmlog.h"
#include "vmgraph.h"
#include "vmio.h"

#define LOG_FILE "E:\\mre\\MtidLog.txt"

void* wbh_malloc(int size);
void wbh_free(void* ptr);
void wbh_write(char* path, char* mode, char* buf);

#define WBH_MALLOC(size) wbh_malloc(size);
#define WBH_FREE(ptr) wbh_free(ptr); ptr = NULL;

#ifdef __cplusplus
    #define    DECLS_BEGIN extern "C" {
    #define DECLS_END }
#else
    #define DECLS_BEGIN
    #define DECLS_END
#endif

#ifdef __arm
    #define _INLINE_    __inline
#elif defined(_MSC_VER)
    #define _INLINE_    // vc c language compiler not support inline
#endif

#ifdef __arm
    #define _WBH_FILENAME_    __MODULE__
    #define _WBH_FUNC_        __func__
    #define _WBH_LINE_        __LINE__
#elif defined(_MSC_VER)
    #define _WBH_FILENAME_    __FILE__
    #define _WBH_LINE_        __LINE__
    #if (_MSC_VER > 1200)
        #define _WBH_FUNC_   __FUNCTION__ /* VS2003,2005,2008 etc */
    #else
        #define _WBH_FUNC_ ""           /* vc6 no support _FUNCTION_ */
    #endif
#endif

#define return_if_fail(v) if(!v)\
{\
    vm_log_info("%s line:%d failed.\n", _WBH_FILENAME_, _WBH_LINE_);\
    return;\
}

#define return_val_if_fail(v,r) if(!v)\
{\
    vm_log_info("%s line:%d failed.\n", _WBH_FILENAME_, _WBH_LINE_);\
    return r;\
}

#endif /*__TYPEDEF_H__*/

//typedef.c 几个公共函数
#include "typedef.h"

void* wbh_malloc(int size)
{
    void* ptr = NULL;
    ptr = vm_malloc(size);

    if(NULL != ptr)
        memset(ptr, 0, size);

    return ptr;
}

void wbh_free(void* ptr)
{
    vm_free(ptr);
}

void wbh_write(char* path, char* mode, char* buf)
{
    VMWCHAR w_path[256] = {0};
    VMFILE file_handle = -1;
    VMINT m = MODE_CREATE_ALWAYS_WRITE;
    VMUINT file_size = 0;

    vm_gb2312_to_ucs2(w_path, 256, path);
    if(0 == strcmp(mode, "w"))
        m = MODE_CREATE_ALWAYS_WRITE;
    else if(0 == strcmp(mode, "a"))
        m = MODE_APPEND;

    file_handle = vm_file_open(w_path, m, FALSE);
    if(file_handle < 0)
    {
        file_handle = vm_file_open(w_path, MODE_CREATE_ALWAYS_WRITE, FALSE);
    }
    if(file_handle < 0)
    {
        return;
    }

    if(m = MODE_APPEND)
    {
        VMINT ret = -1;
        ret = vm_file_getfilesize(file_handle, (VMUINT *)&file_size);
        if(ret != 0)
        {
            vm_file_close(file_handle);
            return;
        }
        ret = vm_file_seek(file_handle, file_size, BASE_BEGIN);
    }
    vm_file_write(file_handle, buf, strlen(buf), &file_size);
    vm_file_close(file_handle);

}





   
posted @ 2012-08-07 14:33  $逝水无痕$  阅读(184)  评论(0)    收藏  举报