ycpp_function.hpp

来自「一个类STL的多平台可移植的算法容器库,主要用于嵌入式系统编程时的内存管理等方面」· HPP 代码 · 共 73 行

HPP
73
字号
/*
 * The young Library
 * Copyright (c) 2005 by Yang Huan(杨桓)

 * Permission to use, copy, modify, distribute and sell this software for any
 * purpose is hereby granted without fee, provided that the above copyright
 * notice appear in all copies and that both that copyright notice and this
 * permission notice appear in supporting documentation.
 * The author make no representations about the suitability of this software
 * for any purpose. It is provided "as is" without express or implied warranty.
 */

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
#ifndef __MACRO_CPLUSPLUS_YOUNG_LIBRARY_FUNCTION_HEADER_FILE__
#define __MACRO_CPLUSPLUS_YOUNG_LIBRARY_FUNCTION_HEADER_FILE__
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
namespace youngcpp {
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

template< typename T >
inline int eq_adapter( const void* left, const void* right )
{
    return *((const T*)left) == *((const T*)right) ? 0 : 1;
}

template< typename T, typename Equal >
inline int eq_adapter( const void* left, const void* right )
{
    static Equal eq;
    return eq( *((const T*)left), *((const T*)right) ) ? 0 : 1;
}

template< typename T >
inline int cmp_adapter( const void* left, const void* right )
{
    int ret = 0;
    if( *((const T*)left) < *((const T*)right) )
        ret = -1;
    else if( *((const T*)right) < *((const T*)left) )
        ret = 1;
    return ret;
}

template< typename T, typename Compare >
inline int cmp_adapter( const void* left, const void* right )
{
    static Compare cmp;
    int ret = 0;
    if( cmp( *((const T*)left), *((const T*)right) ) )
        ret = -1;
    else if( cmp( *((const T*)right), *((const T*)left) ) )
        ret = 1;
    return ret;
}

template< typename T, typename Predicate >
inline int pred_adapter( const void* elmt, const void* )
{
    static Predicate pred;
    return pred( *((const T*)elmt) ) ? 0 : 1;
}

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
}  //end namespace
#endif
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

⌨️ 快捷键说明

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