YSTest  PreAlpha_b400_20130424
The YSLib Test Project
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
Language Implementation Hints

语言实现的提供的附加提示。 更多...

宏定义

#define YB_ATTR(...)
 属性。
 
#define YB_ALLOCATOR
 指示修饰的是分配器,或返回分配器调用的函数或函数模板。
 
#define YB_EXPECT(expr, constant)   (expr)
 
#define YB_LIKELY   (expr) (expr)
 
#define YB_UNLIKELY   (expr) (expr)
 分支预测提示。
 
#define YB_NORETURN
 指定无返回值函数。
 
#define YB_PURE
 指示函数或函数模板实例为纯函数。
 
#define YB_STATELESS
 指示函数或函数模板实例为无状态函数。
 

详细描述

语言实现的提供的附加提示。

自从
build 294

保证忽略时不导致运行时语义差异的提示,主要用于便于实现可能的优化。

宏定义说明

#define YB_ALLOCATOR

指示修饰的是分配器,或返回分配器调用的函数或函数模板。

注解
指示行为类似 std::malloc 或 std::calloc 等的函数。
警告
要求满足指示的假定,否则行为未定义。
自从
build 373

指示函数若返回非空指针,返回的指针不是其它任何有效指针的别名, 且指针指向的存储内容不由其它存储决定。

在文件 ydef.h182 行定义.

#define YB_ATTR (   ...)

属性。

警告
不对指令进行检查。用户应验证可能使用的指令中的标识符在宏替换后能保持正确。
自从
build 373

在文件 ydef.h166 行定义.

#define YB_EXPECT (   expr,
  constant 
)    (expr)

在文件 ydef.h197 行定义.

#define YB_LIKELY   (expr) (expr)

在文件 ydef.h198 行定义.

参考自 YSLib::Drawing::Blit(),YSLib::Drawing::TextRenderer::ClearLine(),YSLib::Drawing::TextRegion::ClearLine(),YSLib::ClearSequence(),CopyBuffer(),CreateRawBitmap(),DrawCross(),YSLib::UI::Menu::DrawItem(),YSLib::Drawing::DrawPoint(),DrawRect(),DrawRectRoundCorner(),DrawThumbBackground(),FetchEncodingString(),FillRect(),YSLib::Drawing::FontCache::FontCache(),YSLib::Drawing::Font::GetAdvance(),platform::getcwd_n(),YSLib::Text::TextFileBuffer::GetIterator(),YSLib::Drawing::FontCache::GetNativeFace(),YSLib::Text::TextFileBuffer::GetPosition(),HandleToReference(),YSLib::Drawing::FontCache::InitializeDefaultTypeface(),YSLib::IO::FileList::ListItems(),DualScreenReader::LoadText(),ShlTextReader::Locate(),YSLib::UI::LocateForWidgetNode(),CHRLib::GUCS2Mapper< CharSet::UTF_8 >::Map(),GUCS2Mapper< CharSet::GBK >::Map(),ShlTextReader::OnKeyDown(),YSLib::Drawing::SequenceTransformer::operator()(),YSLib::Drawing::VerticalLineTransfomer::operator()(),YSLib::ExpandMemberFirst< _type, _tRet, _tPara, _tNew >::operator()(),YSLib::ExpandMemberFirstBinder< _type, _tRet, _tPara, _tNew >::operator()(),platform::HFileNode::operator++(),YSLib::Text::TextFileBuffer::operator[](),YSLib::Messaging::MessageQueue::Peek(),YSLib::Messaging::MessageQueue::Pop(),YSLib::Drawing::PrintChar(),ReadConfiguration(),YSL_BEGIN::RectDrawButton(),YSL_BEGIN::RectDrawCheckBox(),YSLib::UI::ProgressBar::Refresh(),YSLib::Timers::Timer::Refresh(),YSLib::Timers::Timer::RefreshAll(),YSLib::Timers::Timer::ResetAll(),YSLib::Drawing::TextRegion::Scroll(),DualScreenReader::ScrollByPixel(),YSLib::UI::GSequenceViewer< ListType >::SetContainer(),YSLib::Drawing::BitmapBuffer::SetContent(),YSLib::UI::MTextList::SetList(),YSLib::UI::ProgressBar::SetMaxValue(),YSLib::Drawing::Font::SetSize(),simpleFaceRequester(),smooth_scroll_duration(),YSLib::Drawing::TransformRect(),YSLib::Drawing::Typeface::Typeface(),platform::u16getcwd_n(),ucsdup(),ReaderBox::UpdateData(),DualScreenReader::UpdateView() , 以及 platform_ex::WriteCursor().

#define YB_NORETURN

指定无返回值函数。

警告
当指定的函数调用实际返回时行为未定义。
自从
build 396
待办事项:
使用 ISO C++11 noreturn 属性。

在文件 ydef.h212 行定义.

#define YB_PURE

指示函数或函数模板实例为纯函数。

后置条件
函数外可访问的存储保持不变。
注解
假定函数保证可返回;返回类型 void 时无意义。
假定函数无外部可见的副作用:局部记忆化合并重复调用后不改变可观察行为。
不修改函数外部的存储;不访问函数外部 volatile 存储; 通常不调用不可被 YB_PURE 安全指定的函数。
警告
要求满足指示的假定,否则行为未定义。
自从
build 373

指示函数或函数模板的求值是返回值的计算,无影响其它的存储的副作用, 且返回值只依赖于参数和/或编译时确定内存位置(如具有静态存储期的对象的)存储的值。

在文件 ydef.h232 行定义.

#define YB_STATELESS

指示函数或函数模板实例为无状态函数。

后置条件
函数外可访问的存储保持不变。
注解
假定函数保证可返回;返回类型 void 时无意义。
假定函数无外部可见的副作用:局部记忆化合并重复调用后不改变可观察行为。
假定函数调用的结果总是相同:返回值总是不可分辨的右值或指示同一个内存位置的左值。 任意以一次调用结果替代调用或合并重复调用时不改变可观察行为。
不访问函数外部的存储;通常不调用不可被 YB_STATELESS 安全指定的函数。
可被安全指定的函数或函数模板是 YB_PURE 限定的函数或函数模板的真子集。
警告
要求满足指示的假定,否则行为未定义。
自从
build 373

指示函数或函数模板的求值是返回值的计算,且返回值只依赖于参数的值,和其它存储无关。 若参数是对象指针或引用类型,还必须保证指向或引用的对象是其它参数,或者不被使用。 函数实现不能调用其它不能以 YB_STATELESS 限定的函数。

在文件 ydef.h255 行定义.