YSTest  PreAlpha_b500_20140530
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.h281 行定义.

#define YB_ATTR (   ...)

属性。

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

在文件 ydef.h265 行定义.

#define YB_EXPECT (   expr,
  constant 
)    (expr)

在文件 ydef.h296 行定义.

#define YB_LIKELY (   expr)    (expr)

在文件 ydef.h297 行定义.

参考自 YSLib::Drawing::TextRegion::ClearLine(), YSLib::ClearSequence(), YSLib::Drawing::CopyBuffer(), YSLib::Drawing::CreateRawBitmap(), YSLib::Shells::Shell::DefShlProc(), YSLib::Drawing::DrawCross(), YSLib::UI::Menu::DrawItem(), YSLib::Drawing::DrawPolygon(), YSLib::Drawing::DrawRect(), YSLib::Drawing::DrawRectRoundCorner(), YSLib::Drawing::DrawTick(), YReader::FetchEncodingString(), platform_ex::Android::FetchNativeLooper(), YSLib::Drawing::FontCache::FontCache(), platform::GetFileSizeOf(), YSLib::Text::TextFileBuffer::GetIterator(), YSLib::Text::TextFileBuffer::GetPosition(), YSLib::HandleToReference(), YSLib::Drawing::FontCache::InitializeDefaultTypeface(), YSLib::IO::ListFiles(), YSLib::DS::UI::DualScreenReader::LoadText(), YReader::ShlTextReader::Locate(), YSLib::UI::LocateForWidgetNode(), CHRLib::GUCS2Mapper< CharSet::UTF_8 >::Map(), CHRLib::GUCS2Mapper< CharSet::GBK >::Map(), YReader::ShlTextReader::OnKeyDown(), YSLib::ExpandMemberFirst< _type, _tRet, _tPara, _tNew >::operator()(), YSLib::ExpandMemberFirstBinder< _type, _tRet, _tPara, _tNew >::operator()(), YSLib::UI::Renderer::Paint(), YSLib::Drawing::PrintChar(), YSLib::ReadConfiguration(), YSLib::UI::ProgressBar::Refresh(), YSLib::Drawing::TextRegion::Scroll(), YSLib::DS::UI::DualScreenReader::ScrollByPixel(), YSLib::Drawing::CompactPixmap::SetContent(), YSLib::UI::MTextList::SetList(), YSLib::Drawing::CompactPixmap::SetSize(), YSLib::Application::Switch(), YSLib::Drawing::TransformRect(), platform::u16getcwd_n(), YSLib::Uninitialize(), YSLib::Devices::InputManager::Update(), YReader::ReaderBox::UpdateData() , 以及 YSLib::DS::UI::DualScreenReader::UpdateView().

#define YB_NORETURN

指定无返回值函数。

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

在文件 ydef.h311 行定义.

#define YB_PURE

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

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

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

在文件 ydef.h331 行定义.

#define YB_STATELESS

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

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

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

在文件 ydef.h354 行定义.

#define YB_UNLIKELY (   expr)    (expr)

分支预测提示。

自从
build 313

在文件 ydef.h298 行定义.

参考自 YSLib::CacheLookup(), YSLib::IO::ClassifyPath(), YSLib::Drawing::TextRegion::ClearLine(), platform_ex::Windows::WindowReference::Close(), YSLib::GUIApplication::DealMessage(), YSLib::Execute(), YSLib::DS::UI::DualScreenReader::Execute(), YSLib::FetchDefaultFontCache(), YSLib::Drawing::FetchDefaultTypeface(), YSLib::FetchMIMEBiMapping(), YSLib::FetchRoot(), CHRLib::FillByte(), platform_ex::Windows::WindowReference::GetClientLocation(), platform_ex::Windows::WindowReference::GetClientSize(), YSLib::Drawing::NativeFontSize::GetSizeRec(), YSLib::Drawing::FontCache::GetTypefacePtr(), YSLib::Drawing::FontFamily::GetTypefaceRef(), platform_ex::Windows::HostWindow::HostWindow(), platform_ex::Windows::WindowReference::Invalidate(), YSLib::Drawing::Typeface::LookupGlyphIndex(), YSLib::Drawing::Typeface::LookupSize(), CHRLib::GUCS2Mapper< CharSet::UTF_8 >::Map(), CHRLib::GUCS2Mapper< CharSet::GBK >::Map(), CHRLib::GUCS2Mapper< CharSet::UTF_16BE >::Map(), CHRLib::GUCS2Mapper< CharSet::UTF_16LE >::Map(), platform_ex::Windows::WindowReference::Move(), YSLib::Text::TextFileBuffer::iterator::operator++(), ystdex::ifile_iterator::operator++(), YSLib::Drawing::PutCharBase(), YSLib::ReadConfiguration(), YSLib::FPSCounter::Refresh(), YSLib::UI::InputTimer::RefreshClick(), YSLib::Timers::Timer::RefreshDelta(), YSLib::UI::InputTimer::RefreshHeld(), YSLib::Timers::Timer::RefreshRemainder(), YReader::ShlTextReader::Scroll(), YSLib::DS::UI::DualScreenReader::ScrollByPixel(), NPL::Session::Session(), platform_ex::Windows::WindowReference::SetOpacity(), platform_ex::Windows::WindowReference::SetText(), platform::StartTicks(), ystdex::strcpycat(), YSLib::TranslateTime(), platform_ex::Windows::WindowMemorySurface::UpdatePremultiplied(), YSLib::DS::UI::DualScreenReader::UpdateView() , 以及 YSLib::WriteConfiguration().