🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
VariableList.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstScript/Variable.hpp"
25#include <vector>
26
27AST_NAMESPACE_BEGIN
28
38{
39public:
40 using ListType = std::vector<SharedPtr<Variable>>;
41 using iterator = ListType::iterator;
42 using const_iterator = ListType::const_iterator;
43
44
45 VariableList() = default;
46 ~VariableList() = default;
47 void clear() { variables_.clear(); }
48 void append(Variable* var) { variables_.push_back(var); }
49 void erase(size_t index) { variables_.erase(variables_.begin() + index); }
50 void move(size_t from, size_t to);
51 size_t size() const { return variables_.size(); }
52
53 Variable* at(size_t index) { return variables_.at(index).get(); }
54 Variable* at(size_t index) const { return variables_.at(index).get(); }
55 Variable* operator[](size_t index) { return variables_[index].get(); }
56 Variable* operator[](size_t index) const { return variables_[index].get(); }
57
58 iterator begin() { return variables_.begin(); }
59 iterator end() { return variables_.end(); }
60 const_iterator begin() const { return variables_.begin(); }
61 const_iterator end() const { return variables_.end(); }
62
63private:
64 ListType variables_;
65};
66
67
68inline void VariableList::move(size_t from, size_t to)
69{
70 if (from >= variables_.size() || to >= variables_.size() || from == to)
71 return;
72 SharedPtr<Variable> var = variables_[from];
73 variables_.erase(variables_.begin() + from);
74 size_t insertPos = (to > from) ? to - 1 : to;
75 variables_.insert(variables_.begin() + insertPos, var);
76}
77
80AST_NAMESPACE_END
共享指针
定义 SharedPtr.hpp:33
变量列表
定义 VariableList.hpp:38
变量
定义 Variable.hpp:40