⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcospec.h

📁 PB 熟悉的哥们希望大家可以互相学习一下
💻 H
字号:
/*******************************************************************
 *                                                                 *
 *  mcospec.h                                                      *
 *                                                                 *
 *  This file is a part of the eXtremeDB source code               *
 *  Copyright (c) 2001-2007 McObject LLC                           *
 *  All Rights Reserved                                            *
 *                                                                 *
 *  eXtremeDB compiler & platform specific configuration           *
 *                                                                 *
 ***************************************************************** */

#ifndef MCO_MCOSPEC_H__
    #define MCO_MCOSPEC_H__

    #ifdef __cplusplus
        extern "C"
        {
        #endif 


        #ifdef MCO_PLATFORM_X64
            #undef MCO_CFG_QUAD_STRUCT
        #else //MCO_PLATFORM_X64
            //#define	MCO_CFG_QUAD_STRUCT
        #endif //MCO_PLATFORM_X64

        #define MCO_CFG_QUAD_SCALAR


        #include "mcotargt.h"
        #include "mcoquad.h"

        #define MCO_HA_USE_BIN_SERIALIZATION


        // typedef int mcoint; /* best-int: int or short, signed or unsigned, depending on target; min 2 bytes */
        //typedef uint2 mcoint; /* also must work */

        #ifndef MCO_BASE_TYPES_DEFINED

            /* define MCO_BASE_TYPES_DEFINED if want to use external definitions */

            typedef unsigned char uint1;
            typedef unsigned short uint2;
            typedef unsigned int uint4; /* can be 3 or 4 bytes long */
            typedef signed char int1;
            typedef short int2;
            typedef int int4; /* can be 3 or 4 bytes long */
            typedef unsigned int mco_date;
            typedef unsigned int mco_time; /* time_t ok */
            typedef mco_uquad uint8;
            typedef mco_iquad int8;
            typedef mco_iquad autoid_t;
            typedef unsigned short nchar_t;

            #ifdef MCO_PLATFORM_X64
                #define MCO_MEM_ALIGN	8
                #if defined _MSC_VER
                    // platform dependent int == sizeof(void*)
                    typedef __int64 mco_pint;
                    // platform dependent uint == sizeof(void*)
                    typedef unsigned __int64 mco_puint;

                    typedef uint8 mco_size_t;
                    typedef int8 mco_size_sig_t;
                    typedef uint4 mco_size32_t;
                    typedef int4 mco_size32_sig_t;

                    typedef uint8 mco_offs_t;
                    typedef int8 mco_offs_sig_t;

                    typedef uint8 mco_counter_t;
                    typedef uint4 mco_counter32_t;
                    typedef uint4 mco_hash_counter_t;

                    typedef uint4 mco_conid_t;
                    typedef uint8 mco_addr_t;

                #else 
                    // platform dependent int == sizeof(void*)
                    typedef long long mco_pint;
                    // platform dependent uint == sizeof(void*)
                    typedef unsigned long long mco_puint;
                #endif //_MSC_VER
            #else //MCO_PLATFORM_X64
                #define MCO_MEM_ALIGN	4
                // platform dependent int == sizeof(void*)
                typedef int mco_pint;
                // platform dependent uint == sizeof(void*)
                typedef unsigned int mco_puint;

                typedef uint4 mco_size_t;
                typedef int4 mco_size_sig_t;
                typedef uint4 mco_size32_t;
                typedef int4 mco_size32_sig_t;

                typedef uint4 mco_offs_t;
                typedef int4 mco_offs_sig_t;

                typedef uint4 mco_counter_t;
                typedef uint4 mco_counter32_t;
                typedef uint4 mco_hash_counter_t;

                typedef uint4 mco_conid_t;
                typedef uint4 mco_addr_t;

            #endif //MCO_PLATFORM_X64

            #define MCO_MAKE_MEM_ALIGN(memAddr) ((((mco_puint)memAddr)+MCO_MEM_ALIGN-1) & (~(MCO_MEM_ALIGN-1)))

        #endif 

        /* null pointer */
        #define NULLPTR (void*)0
        #define MCO_PTRSIZE sizeof(void*) /* 3 on zilog */
        /* symbol used to fill out char<n> field with the shorter contents */
        #define MCO_SPACE_CHAR '\0' 


        #ifdef WIN32
            #pragma warning(disable: 4100)
            #pragma warning(disable: 4505)
            #pragma warning(disable: 4206)
        #endif 

        /* ZILOG build */
        //#define MCO_CFG_ZILOG

        #define MCO_STDCALL /* __stdcall */


        #ifdef MCO_CFG_ZILOG

            #define MCO_NO_SHIFT2
            #define MCO_XCOMP_COPYSTRUCTBUG
            #define MCO_XCOMP_ICASTBUG
            #define MCO_RTL_MEMCPY
            #define MCO_RTL_MEMMOVE
            #define MCO_UINT4_UNAVAIL /* uint4 is really 2 or 3 bytes long */
            #define MCO_NO_EXTRA_HEAP_FN /* disable additional heap functions to reduce code size */
            #undef MCO_HA_USE_BIN_SERIALIZATION

            void* memcpy(void* s1, void* s2, int n);
            int memcmp(void* s1, void* s2, int n);
            void* memset(void* s, int c, int n);
            void* memmove(void* s1, void* s2, int n);

            #define MCO_NO_FORWARDS /* compiler does not support forward declarations */
            #define MCO_NO_REPORTS  /* just turn off */
            #define MCO_CFG_COMPARE_SUBCALLS
            #define MCO_CFG_SUBCALLS /* use less inlines, as possible */
            #define MCO_CFG_HASH_VIA_BTREE

        #endif 

        #ifdef MCO_NO_FORWARDS
            #define TRNP1(t) mco_trans_h t__
            #define TRNP2(t) struct mco_trans_t_ * t = (struct mco_trans_t_ *)t__;
            #define OBJH1(h) mco_objhandle_h h__
            #define OBJH2(h) struct mco_objhandle_t_ * h = (struct mco_objhandle_t_ *)h__;
            #define OBJH1_(h) mco_objhandle_h h___
            #define OBJH2_(h) struct mco_objhandle_t_ * h = (struct mco_objhandle_t_ *)h___;
            #define SEMP1(s) mco_sem_h s__
            #define SEMP2(s) struct mco_sem_t_ * s = (struct mco_sem_t_ *)s__;
        #else 
            #define TRNP1(t) mco_trans_h t
            #define TRNP2(t) /* nothing */
            #define OBJH1(h) mco_objhandle_h h
            #define OBJH2(h) /* nothing */
            #define OBJH1_(h) mco_objhandle_h h
            #define OBJH2_(h) /* nothing */
            #define SEMP1(s) mco_sem_h s
            #define SEMP2(s) /* nothing */
        #endif 

        #ifdef __cplusplus
        }
    #endif 

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -