表格线识别通用库文档
载入中...
搜索中...
未找到
cm::Scope< T > 模板类 参考

作用域类 更多...

#include <scope.hpp>

Public 成员函数

 Scope (const std::string &scope_name="__INITIAL__")
 作用域类带参构造函数
 
 Scope (const Scope< T > &scope)
 作用域类拷贝构造函数
 
 ~Scope ()
 作用域类析构函数
 
TValue ()
 获取当前作用域的值
 
ScopeSet (const std::string &scope_name, T value)
 设置作用域的值
 
ScopeSwitch (const std::string &scope_name)
 切换作用域
 
ScopeFinish ()
 结束作用域
 
ScopeExit ()
 退出作用域
 
bool Has (const std::string &scope_name) const
 判断作用域是否存在
 
bool IsInitial () const
 判断是否为初始作用域
 

友元

template<typename U >
std::ostream & operator<< (std::ostream &out, const Scope< U > &scope)
 作用域类重载输出流运算符
 

详细描述

template<typename T>
class cm::Scope< T >

作用域类

该类表示一个作用域,可以在作用域中存储和管理值。每个作用域都有一个名称,并且可以进行切换和激活操作。

模板参数
T作用域中存储值的类型
警告
  • 值的类型必须支持默认构造函数和复制构造函数。
  • 作用域名称需要保证唯一性,否则可能导致作用域切换错误。
注解
  • 支持任意类型的值存储,提供了构造函数、赋值操作、作用域切换等功能。
  • 作用域类内部使用了哈希表来存储作用域名称和对应的值,因此具有较快的查找速度和插入速度。
  • 在切换作用域时,原始作用域会被保存在栈中,可以通过 Finish() 方法将作用域栈弹出并回到之前的作用域。
  • 可以通过 Exit() 方法退出当前作用域并返回到初始作用域。 。
注意
  • 作用域类不提供作用域嵌套功能,即不支持在已存在的作用域中再次创建同名作用域,若要实现作用域嵌套,可以使用多个作用域对象进行管理。
  • 作用域类不支持删除作用域和值,一旦值被设置,只能通过切换作用域或退出作用域来间接删除。
示例
// 创建一个整型作用域并设置值
scope.Set("x", 10);
// 切换到新的作用域并设置值
scope.Switch("new_scope");
scope.Set("y", 20);
// 切换回原始作用域并获取值
scope.Switch("__INITIAL__");
int value = scope.Value();
// 打印作用域信息
std::cout << scope << std::endl;
点类
Definition point.hpp:52
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp66 行定义.

构造及析构函数说明

◆ Scope() [1/2]

template<typename T >
cm::Scope< T >::Scope ( const std::string & initial_scope_name = "__INITIAL__")
inline

作用域类带参构造函数

创建一个作用域对象,并设置初始作用域的名称。

参数
initial_scope_name初始作用域的名称 默认为 "__INITIAL__"
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp101 行定义.

◆ Scope() [2/2]

template<typename T >
cm::Scope< T >::Scope ( const Scope< T > & scope)
inline

作用域类拷贝构造函数

创建一个作用域对象,并复制另一个作用域对象的值。

参数
scope被复制的作用域对象
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp115 行定义.

◆ ~Scope()

template<typename T >
cm::Scope< T >::~Scope ( )
inline

作用域类析构函数

销毁作用域对象,释放内存空间。

作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp125 行定义.

成员函数说明

◆ Exit()

template<typename T >
Scope< T > & cm::Scope< T >::Exit ( )
inline

退出作用域

退出当前激活作用域,并返回到初始作用域。如果当前作用域是初始作用域,则不执行任何操作。

返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp227 行定义.

◆ Finish()

template<typename T >
Scope< T > & cm::Scope< T >::Finish ( )
inline

结束作用域

结束当前激活作用域,并返回到上一个激活作用域。如果当前作用域是初始作用域,则不执行任何操作。

返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp207 行定义.

◆ Has()

template<typename T >
bool cm::Scope< T >::Has ( const std::string & scope_name) const
inline

判断作用域是否存在

判断指定名称的作用域是否存在。

参数
scope_name作用域名称
返回
是否存在作用域
返回值
true作用域存在
false作用域不存在
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp250 行定义.

◆ IsInitial()

template<typename T >
bool cm::Scope< T >::IsInitial ( ) const
inline

判断是否为初始作用域

判断当前激活的作用域是否为初始作用域。

返回
返回当前激活作用域是否为初始作用域
返回值
true是初始作用域
false不是初始作用域
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp266 行定义.

◆ Set()

template<typename T >
Scope< T > & cm::Scope< T >::Set ( const std::string & scope_name,
T value )
inline

设置作用域的值

在当前激活作用域中设置一个名称为 scope_name 的值,并赋予一个初始值 value。如果作用域已存在该名称的值,则更新该值;如果作用域不存在该名称的值,则创建并添加该值。

参数
scope_name作用域名称
value初始值
返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp170 行定义.

函数调用图:

◆ Switch()

template<typename T >
Scope< T > & cm::Scope< T >::Switch ( const std::string & scope_name)
inline

切换作用域

切换到指定名称的作用域,并将其设置为当前激活作用域。如果指定的作用域不存在,则创建该作用域并设置为当前激活作用域。

参数
scope_name作用域名称
返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp187 行定义.

函数调用图:

◆ Value()

template<typename T >
T & cm::Scope< T >::Value ( )
inline

获取当前作用域的值

返回当前激活作用域的值的引用。

返回
当前作用域的值的引用
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp155 行定义.

友元及相关函数文档

◆ operator<<

template<typename T >
template<typename U >
std::ostream & operator<< ( std::ostream & out,
const Scope< U > & scope )
friend

作用域类重载输出流运算符

将作用域对象的信息以字符串形式输出到输出流中。

参数
out输出流
scope作用域对象
返回
输出流
作者
dreamy-xay
日期
2023-12-06

在文件 scope.hpp140 行定义.


该类的文档由以下文件生成: