fastdo  0.6.8
utilities.hpp 文件参考
#include "system_detection.inl"
#include <string>
#include <sstream>
#include <vector>
#include <map>
#include <tuple>
#include <queue>
#include <functional>
#include <algorithm>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include "func_traits.inl"
#include "func_runable.inl"
#include "func_invoker.inl"
#include "mixed_ref_specified_type.inl"
utilities.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  winux::Bin0< n >
 二进制数,编译时计算, 0开头(基于8进制) 更多...
 
struct  winux::Bin0< 0 >
 
class  winux::RefParam< _Ty >
 
struct  winux::IndexSequence< _Index >
 Tuple参数序列 更多...
 
struct  winux::MakeIndexSequence< _Num, _IdxSeq >
 
struct  winux::MakeIndexSequence< _Num, IndexSequence< _Index... > >
 
struct  winux::MakeIndexSequence< 0, IndexSequence< _Index... > >
 
struct  winux::FuncTraits< _Callable >
 函数特征 更多...
 
struct  winux::FuncTraits< _RetType __cdecl(_ArgTypes...) >
 
struct  winux::FuncTraits< _RetType __cdecl(_ArgTypes...) >::Argument< _Idx >
 
struct  winux::FuncTraits< _RetType(__cdecl *)(_ArgTypes...) >
 
struct  winux::FuncTraits< std::function< _RetType __cdecl(_ArgTypes...) > >
 
struct  winux::FuncTraits< _RetType __stdcall(_ArgTypes...) >
 
struct  winux::FuncTraits< _RetType __stdcall(_ArgTypes...) >::Argument< _Idx >
 
struct  winux::FuncTraits< _RetType(__stdcall *)(_ArgTypes...) >
 
struct  winux::FuncTraits< std::function< _RetType __stdcall(_ArgTypes...) > >
 
struct  winux::FuncTraits< _RetType __fastcall(_ArgTypes...) >
 
struct  winux::FuncTraits< _RetType __fastcall(_ArgTypes...) >::Argument< _Idx >
 
struct  winux::FuncTraits< _RetType(__fastcall *)(_ArgTypes...) >
 
struct  winux::FuncTraits< std::function< _RetType __fastcall(_ArgTypes...) > >
 
struct  winux::FuncTraits< _RetType(_Cls::*)(_ArgTypes...) >
 
struct  winux::FuncTraits< _RetType(_Cls::*)(_ArgTypes...) const >
 
struct  winux::FuncTraits< _RetType(_Cls::*)(_ArgTypes...) volatile >
 
struct  winux::FuncTraits< _RetType(_Cls::*)(_ArgTypes...) const volatile >
 
struct  winux::FuncTraits< _Callable >
 函数特征 更多...
 
class  winux::Runable
 Runable模板 更多...
 
class  winux::RunableInvoker< _RetType >
 
class  winux::RunableT< _Fx, _TargetTuple, typename >
 
class  winux::RunableT< _Fx, _TargetTuple, void >
 
class  winux::Invoker< _Fx, typename, typename >
 Invoker模板 更多...
 
class  winux::Invoker< _Fx, typename std::enable_if< !std::is_same< typename winux::FuncTraits< _Fx >::ClassType, void >::value, typename winux::FuncTraits< _Fx >::ClassType >::type, void >
 
class  winux::Invoker< _Fx, void, typename std::enable_if< !std::is_same< typename winux::FuncTraits< _Fx >::ReturnType, void >::value, typename winux::FuncTraits< _Fx >::ReturnType >::type >
 
class  winux::Invoker< _Fx, void, void >
 
struct  winux::FuncWrapper< _PfnType, pfn >
 函数包装,用来将不同调用约定的函数统一包装成默认约定 更多...
 
class  winux::MapAssigner< _KTy, _VTy >
 MAP赋值器 更多...
 
class  winux::ArrayAssigner< _Ty >
 Array赋值器 更多...
 
class  winux::MembersWrapper< _TargetCls >
 成员包装 更多...
 
class  winux::Error
 错误类 更多...
 
class  winux::Buffer
 缓冲区,表示内存中一块二进制数据(利用malloc/realloc进行内存分配) 更多...
 
class  winux::GrowBuffer
 高效的可增长缓冲区,1.33倍冗余量 更多...
 
class  winux::MixedError
 混合体错误 更多...
 
struct  winux::$a
 Mixed构造数组辅助类 更多...
 
struct  winux::$c
 Mixed构造集合辅助类 更多...
 
class  winux::Mixed
 混合体,能表示多种类型的值 更多...
 
class  winux::Mixed::MixedLess
 
class  winux::Mixed::CollectionAssigner
 
class  winux::Mixed::ArrayAssigner
 

命名空间

 winux
 跨平台基础功能库
 

宏定义

#define WINUX_DLL
 
#define WINUX_API
 
#define WINUX_FUNC_DECL(ret)   WINUX_DLL ret WINUX_API
 
#define WINUX_FUNC_IMPL(ret)   ret WINUX_API
 
#define countof(arr)   ( sizeof(arr) / sizeof(arr[0]) )
 
#define TEXT(__x)   __x
 
#define DISABLE_OBJECT_COPY(clsname)
 
#define CBufferToAnsiString(buf, size)   winux::AnsiString( (char const *)(buf), (size_t)(size) )
 
#define CBufferToBuffer(buf, size)   winux::Buffer( (void *)(buf), (size_t)(size), false )
 
#define CBufferToBufferPeek(buf, size)   winux::Buffer( (void *)(buf), (size_t)(size), true )
 
#define IF_PTR(ptr)   if ( (ptr) != NULL ) (ptr)
 
#define ASSIGN_PTR(ptr)   if ( (ptr) != NULL ) (*(ptr))
 
#define UNUSED(s)
 
#define DEFINE_ATTR_MEMBER(ty, name, memname)
 
#define DEFINE_ATTR_MEMBER_READONLY(ty, name, memname)
 
#define DEFINE_ATTR(ty, name, getcode, setcode)
 
#define DEFINE_ATTR_READONLY(ty, name, getcode)
 
#define DEFINE_FUNC_NEWINSTANCE(cls, ret, paramtypes, params)
 
#define DEFINE_CUSTOM_EVENT(evtname, paramtypes, calledparams)
 
#define DEFINE_CUSTOM_EVENT_RETURN_EX(ret, evtname, paramtypes)
 
#define GCC_VERSION_GREAT_THAN(Major, Minor, Patchlevel)   ( __GNUC__ > Major || ( __GNUC__ == Major && ( __GNUC_MINOR__ > Minor || ( __GNUC_MINOR__ == Minor && __GNUC_PATCHLEVEL__ > Patchlevel ) ) ) )
 
#define BinVal(x)   winux::Bin0<0##x>::val
 
#define MixedType_ENUM_ITEM(item)   item,
 
#define MixedType_ENUM_ITEMSTRING(item)   #item,
 
#define MixedType_ENUM_ITEMLIST(_)
 

类型定义

typedef int winux::int32
 
typedef unsigned int winux::uint
 
typedef unsigned int winux::uint32
 
typedef unsigned long winux::ulong
 
typedef short winux::int16
 
typedef unsigned short winux::ushort
 
typedef unsigned short winux::uint16
 
typedef char winux::int8
 
typedef unsigned char winux::uint8
 
typedef char16_t winux::char16
 
typedef char32_t winux::char32
 
typedef intptr_t winux::offset_t
 
typedef intptr_t winux::ssize_t
 
typedef size_t winux::usize_t
 
typedef wchar_t winux::wchar
 
typedef unsigned __int64 winux::uint64
 
typedef unsigned __int64 winux::ulonglong
 
typedef __int64 winux::int64
 
typedef __int64 winux::longlong
 
typedef char winux::tchar
 
typedef unsigned char winux::byte
 
template<typename _ChTy >
using winux::XString = std::basic_string< _ChTy >
 
typedef XString< char > winux::AnsiString
 
typedef XString< char > winux::Utf8String
 
typedef XString< wchar > winux::UnicodeString
 
typedef XString< char16 > winux::UnicodeString16
 
typedef XString< char16 > winux::Utf16String
 
typedef XString< char32 > winux::UnicodeString32
 
typedef XString< char32 > winux::Utf32String
 
typedef XString< tchar > winux::String
 
template<typename _ChTy >
using winux::XStringArray = std::vector< XString< _ChTy > >
 
typedef XStringArray< char > winux::AnsiStringArray
 
typedef XStringArray< char > winux::Utf8StringArray
 
typedef XStringArray< wchar > winux::UnicodeStringArray
 
typedef XStringArray< char16 > winux::UnicodeString16Array
 
typedef XStringArray< char32 > winux::UnicodeString32Array
 
typedef XStringArray< char16 > winux::Utf16StringArray
 
typedef XStringArray< char32 > winux::Utf32StringArray
 
typedef XStringArray< tchar > winux::StringArray
 
typedef std::map< String, String > winux::StringStringMap
 
typedef std::pair< String, String > winux::StringStringPair
 
typedef std::vector< Mixed > winux::MixedArray
 
typedef std::map< String, Mixed > winux::StringMixedMap
 
typedef std::pair< String, Mixed > winux::StringMixedPair
 

函数

template<typename _Ty >
static constexpr _Ty winux::InvertByteOrder (_Ty v)
 反转字节序 更多...
 
static bool winux::IsLittleEndian ()
 判断编译环境是否为小端序 更多...
 
static bool winux::IsBigEndian ()
 判断编译环境是否为大端序 更多...
 
template<typename _MAP , typename _KEY >
bool winux::isset (_MAP const &m, _KEY const &k)
 检测map中是否有该键的值 更多...
 
template<typename _Ty >
std::vector< _Ty > winux::ToArray (_Ty *arr, uint count)
 将C数组转换成vector 更多...
 
template<typename _Ty , uint _N>
std::vector< _Ty > winux::ToArray (_Ty(&arr)[_N])
 
template<typename _Fx , typename... _ArgType>
int winux::VoidReturnInt (_Fx fn, _ArgType &&...arg)
 调用一个返回void的函数或函数对象,返回一个数字 更多...
 
template<typename _Ty >
RefParam< _Ty > winux::Ref (_Ty &r)
 向模板参数传递引用型参数 更多...
 
template<typename _Fx , typename... _ArgType>
RunableT< _Fx, std::tuple< typename std::decay< _ArgType >::type... > > * winux::NewRunable (_Fx fn, _ArgType &&...arg)
 创建一个Runable对象 更多...
 
template<typename _Fx , typename... _ArgType>
Invoker< _Fx > * winux::NewInvoker (_Fx fn, _ArgType &&...arg)
 
template<typename _KTy , typename _VTy >
MapAssigner< _KTy, _VTy > winux::Assign (std::map< _KTy, _VTy > *m)
 给容器赋值 更多...
 
template<typename _Ty >
ArrayAssigner< _Ty > winux::Assign (std::vector< _Ty > *a)
 给容器赋值 更多...
 
bool winux::ValueIsInArray (StringArray const &arr, String const &val, bool caseInsensitive=false)
 判断一个字符串值是否在一个字符串数组里,默认大小写敏感 更多...
 
int winux::Random (int n1, int n2)
 随机数,随机产生n1~n2的数字. 包括n1,n2本身 更多...
 
std::ostream & winux::operator<< (std::ostream &o, Mixed const &m)
 扩展iostream的<< 更多...
 
std::wostream & winux::operator<< (std::wostream &o, Mixed const &m)
 

变量

static constexpr size_t const winux::npos = static_cast<size_t>(-1)
 非位置,值为-1。 更多...
 

宏定义说明

#define ASSIGN_PTR (   ptr)    if ( (ptr) != NULL ) (*(ptr))

在文件 utilities.hpp96 行定义.

#define BinVal (   x)    winux::Bin0<0##x>::val

在文件 utilities.hpp307 行定义.

#define CBufferToAnsiString (   buf,
  size 
)    winux::AnsiString( (char const *)(buf), (size_t)(size) )

在文件 utilities.hpp86 行定义.

#define CBufferToBuffer (   buf,
  size 
)    winux::Buffer( (void *)(buf), (size_t)(size), false )

在文件 utilities.hpp88 行定义.

#define CBufferToBufferPeek (   buf,
  size 
)    winux::Buffer( (void *)(buf), (size_t)(size), true )

在文件 utilities.hpp90 行定义.

#define countof (   arr)    ( sizeof(arr) / sizeof(arr[0]) )

在文件 utilities.hpp68 行定义.

#define DEFINE_ATTR (   ty,
  name,
  getcode,
  setcode 
)
值:
public:\
ty get##name() const { getcode; }\
void set##name( ty const & _VAL_ ) { setcode; }

在文件 utilities.hpp119 行定义.

#define DEFINE_ATTR_MEMBER (   ty,
  name,
  memname 
)
值:
public:\
ty const & get##name() const { return this->##memname; }\
void set##name( ty const & v ) { this->##memname = v; }\
private:\
ty memname;

在文件 utilities.hpp104 行定义.

#define DEFINE_ATTR_MEMBER_READONLY (   ty,
  name,
  memname 
)
值:
public:\
ty const & get##name() const { return this->##memname; }\
private:\
ty memname;

在文件 utilities.hpp112 行定义.

#define DEFINE_ATTR_READONLY (   ty,
  name,
  getcode 
)
值:
public:\
ty get##name() const { getcode; }

在文件 utilities.hpp125 行定义.

#define DEFINE_CUSTOM_EVENT (   evtname,
  paramtypes,
  calledparams 
)
值:
public: \
using evtname##HandlerFunction = std::function< void paramtypes >; \
void on##evtname##Handler( evtname##HandlerFunction handler ) \
{ \
this->_##evtname##Handler = handler; \
} \
protected: \
evtname##HandlerFunction _##evtname##Handler; \
virtual void on##evtname paramtypes \
{ \
if ( this->_##evtname##Handler ) this->_##evtname##Handler calledparams; \
}

在文件 utilities.hpp137 行定义.

#define DEFINE_CUSTOM_EVENT_RETURN_EX (   ret,
  evtname,
  paramtypes 
)
值:
public: \
using evtname##HandlerFunction = std::function< ret paramtypes >; \
void on##evtname##Handler( evtname##HandlerFunction handler ) \
{ \
this->_##evtname##Handler = handler; \
} \
protected: \
evtname##HandlerFunction _##evtname##Handler; \
virtual ret on##evtname paramtypes

在文件 utilities.hpp152 行定义.

#define DEFINE_FUNC_NEWINSTANCE (   cls,
  ret,
  paramtypes,
  params 
)
值:
inline static ret * NewInstance##paramtypes \
{ \
return new cls##params;\
}

在文件 utilities.hpp130 行定义.

#define DISABLE_OBJECT_COPY (   clsname)
值:
private:\
clsname( clsname const & ) = delete;\
clsname & operator = ( clsname const & ) = delete;

在文件 utilities.hpp81 行定义.

#define GCC_VERSION_GREAT_THAN (   Major,
  Minor,
  Patchlevel 
)    ( __GNUC__ > Major || ( __GNUC__ == Major && ( __GNUC_MINOR__ > Minor || ( __GNUC_MINOR__ == Minor && __GNUC_PATCHLEVEL__ > Patchlevel ) ) ) )

在文件 utilities.hpp165 行定义.

#define IF_PTR (   ptr)    if ( (ptr) != NULL ) (ptr)

在文件 utilities.hpp94 行定义.

#define MixedType_ENUM_ITEM (   item)    item,

在文件 utilities.hpp755 行定义.

#define MixedType_ENUM_ITEMLIST (   _)
值:
_(MT_NULL)\
_(MT_BOOLEAN)\
_(MT_BYTE)\
_(MT_SHORT) _(MT_USHORT)\
_(MT_INT) _(MT_UINT)\
_(MT_LONG) _(MT_ULONG)\
_(MT_INT64) _(MT_UINT64)\
_(MT_FLOAT) _(MT_DOUBLE)\
_(MT_ANSI) _(MT_UNICODE)\
_(MT_ARRAY) \
_(MT_COLLECTION) \
_(MT_BINARY)

二进制数据类型,利用Buffer类对象存储的二进制数据

在文件 utilities.hpp757 行定义.

#define MixedType_ENUM_ITEMSTRING (   item)    #item,

在文件 utilities.hpp756 行定义.

#define TEXT (   __x)    __x

在文件 utilities.hpp75 行定义.

#define UNUSED (   s)

在文件 utilities.hpp100 行定义.

#define WINUX_API

在文件 utilities.hpp61 行定义.

#define WINUX_DLL

在文件 utilities.hpp60 行定义.

#define WINUX_FUNC_DECL (   ret)    WINUX_DLL ret WINUX_API

在文件 utilities.hpp64 行定义.

#define WINUX_FUNC_IMPL (   ret)    ret WINUX_API

在文件 utilities.hpp65 行定义.