mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 12:21:27 +01:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/45249 Reland of https://github.com/pytorch/pytorch/pull/45055 and https://github.com/pytorch/pytorch/pull/45020 See https://github.com/pytorch/pytorch/pull/45018 for context. Test Plan: Imported from OSS Reviewed By: jamesr66a Differential Revision: D23892645 Pulled By: suo fbshipit-source-id: e7fe58d5e1a5a0c44f4e2aec9694145afabde0fd
37 lines
772 B
C++
37 lines
772 B
C++
#include <torch/custom_class.h>
|
|
#include <torch/script.h>
|
|
|
|
namespace torch {
|
|
namespace jit {
|
|
|
|
template <class T>
|
|
struct MyStackClass : torch::CustomClassHolder {
|
|
std::vector<T> stack_;
|
|
MyStackClass(std::vector<T> init) : stack_(init.begin(), init.end()) {}
|
|
|
|
void push(T x) {
|
|
stack_.push_back(x);
|
|
}
|
|
T pop() {
|
|
auto val = stack_.back();
|
|
stack_.pop_back();
|
|
return val;
|
|
}
|
|
|
|
c10::intrusive_ptr<MyStackClass> clone() const {
|
|
return c10::make_intrusive<MyStackClass>(stack_);
|
|
}
|
|
|
|
void merge(const c10::intrusive_ptr<MyStackClass>& c) {
|
|
for (auto& elem : c->stack_) {
|
|
push(elem);
|
|
}
|
|
}
|
|
|
|
std::tuple<double, int64_t> return_a_tuple() const {
|
|
return std::make_tuple(1337.0f, 123);
|
|
}
|
|
};
|
|
} // namespace jit
|
|
} // namespace torch
|