pytorch/torch/csrc/jit/script/object.cpp
James Reed 18bdf97dbb Factor Module into Object and Module
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/29500

Test Plan: Imported from OSS

Differential Revision: D18463064

Pulled By: jamesr66a

fbshipit-source-id: d37bef242a8626593d4b8754042152cfc0f0acb2
2019-11-17 22:58:50 -08:00

45 lines
1.1 KiB
C++

#include <torch/csrc/jit/script/object.h>
#include <ATen/core/jit_type.h>
#include <torch/csrc/jit/script/compilation_unit.h>
#include <torch/csrc/jit/script/resolver.h>
#include <torch/csrc/jit/script/sugared_value.h>
namespace torch {
namespace jit {
namespace script {
Object::Object(
std::shared_ptr<CompilationUnit> cu,
const c10::ClassTypePtr& type)
: Object(c10::ivalue::Object::create(
c10::StrongTypePtr(std::move(cu), type),
type->numAttributes())) {}
ObjectPtr Object::_ivalue() const {
TORCH_INTERNAL_ASSERT(_ivalue_);
return _ivalue_;
}
c10::optional<Method> Object::find_method(const std::string& basename) const {
for (Function* fn : type()->methods()) {
if (fn->name() == basename) {
return Method(_ivalue(), fn);
}
}
return c10::nullopt;
}
void Object::define(const std::string& src, const ResolverPtr& resolver) {
const auto self = SimpleSelf(type());
_ivalue()->compilation_unit()->define(
*type()->name(),
src,
resolver ? resolver : script::nativeResolver(),
&self);
}
} // namespace script
} // namespace jit
} // namespace torch