| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #include "pocketpy/objects/tuplelist.hpp"
- namespace pkpy {
- Tuple::Tuple(int n) {
- if(n <= INLINED_SIZE) {
- this->_args = _inlined;
- } else {
- this->_args = (PyVar*)std::malloc(n * sizeof(PyVar));
- }
- this->_size = n;
- }
- Tuple::Tuple(Tuple&& other) noexcept {
- _size = other._size;
- if(other.is_inlined()) {
- _args = _inlined;
- for(int i = 0; i < _size; i++)
- _args[i] = other._args[i];
- } else {
- _args = other._args;
- other._args = other._inlined;
- other._size = 0;
- }
- }
- Tuple::Tuple(PyVar _0, PyVar _1) : Tuple(2) {
- _args[0] = _0;
- _args[1] = _1;
- }
- Tuple::Tuple(PyVar _0, PyVar _1, PyVar _2) : Tuple(3) {
- _args[0] = _0;
- _args[1] = _1;
- _args[2] = _2;
- }
- Tuple::~Tuple() {
- if(!is_inlined()) std::free(_args);
- }
- List ArgsView::to_list() const {
- List ret(size());
- for(int i = 0; i < size(); i++)
- ret[i] = _begin[i];
- return ret;
- }
- Tuple ArgsView::to_tuple() const {
- Tuple ret(size());
- for(int i = 0; i < size(); i++)
- ret[i] = _begin[i];
- return ret;
- }
- } // namespace pkpy
|