YSTest: Language Implementation Hints

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.h 第 182 行定义.

#define YB_ATTR | ( |  | ... | ) |

属性。

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

自从
  build 373

在文件 ydef.h 第 166 行定义.

#define YB_EXPECT | ( |  | expr,
|  |  | constant
| ) |  | (expr)

在文件 ydef.h 第 197 行定义.

#define YB_LIKELY (expr) (expr)

在文件 ydef.h 第 198 行定义.

参考自 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.h 第 212 行定义.

#define YB_PURE

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

后置条件
  函数外可访问的存储保持不变。

注解
  假定函数保证可返回；返回类型 void 时无意义。
  假定函数无外部可见的副作用：局部记忆化合并重复调用后不改变可观察行为。
  不修改函数外部的存储；不访问函数外部 volatile 存储； 通常不调用不可被 YB_PURE 安全指定的函数。

警告
  要求满足指示的假定，否则行为未定义。

自从
  build 373

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

在文件 ydef.h 第 232 行定义.

#define YB_STATELESS

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

后置条件
  函数外可访问的存储保持不变。

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

警告
  要求满足指示的假定，否则行为未定义。

自从
  build 373

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

在文件 ydef.h 第 255 行定义.

#define YB_UNLIKELY (expr) (expr)

分支预测提示。

自从
  build 313

在文件 ydef.h 第 199 行定义.

参考自 ChangeDirectory(),YSLib::Drawing::TextRegion::ClearLine(),GUIApplication::DealMessage(),Execute(),DualScreenReader::Execute(),FetchDefaultTypeface(),CHRLib::FillByte(),YSLib::Drawing::Font::GetAdvance(),YSLib::Drawing::Font::GetInternalInfo(),YSLib::Drawing::FontCache::GetTypefacePtr(),YSL_BEGIN::Init(),CHRLib::GUCS2Mapper< CharSet::UTF_8 >::Map(),GUCS2Mapper< CharSet::GBK >::Map(),CHRLib::GUCS2Mapper< CharSet::UTF_16BE >::Map(),CHRLib::GUCS2Mapper< CharSet::UTF_16LE >::Map(),YSLib::IO::Path::NormalizeTrailingSlash(),YSLib::Text::TextFileBuffer::Iterator::operator++(),ystdex::ifile_iterator::operator++(),YSLib::Text::TextFileBuffer::operator[](),PutCharBase(),ReadConfiguration(),YSLib::UI::InputTimer::Refresh(),FPSCounter::Refresh(),ShlTextReader::Scroll(),DualScreenReader::ScrollByPixel(),Session::Session(),YSLib::Drawing::BitmapBuffer::SetSize(),YSLib::Drawing::BitmapBufferEx::SetSize(),simpleFaceRequester(),ystdex::strcpycat(),TranslateTime(),YSLib::Drawing::Typeface::Typeface(),DualScreenReader::UpdateView() , 以及 WriteConfiguration().