bool operator()(const IValue& lhs, const IValue& rhs) const;
};
-template <typename Key, typename Value>
-using DictUnorderedMap = std::unordered_map<Key, Value, DictHash, DictEqualTo>;
-
-template <typename Key, typename Value>
-struct CAFFE2_API Dict : c10::intrusive_ptr_target {
- private:
- DictUnorderedMap<Key, Value> elements_;
-
- public:
- Dict(DictUnorderedMap<Key, Value> elements_)
- : elements_(std::move(elements_)) {}
- static c10::intrusive_ptr<Dict> create(
- DictUnorderedMap<Key, Value> elements_) {
- return c10::make_intrusive<Dict>(std::move(elements_));
- }
- const DictUnorderedMap<Key, Value>& elements() const {
- return elements_;
- }
- operator const DictUnorderedMap<Key, Value>&() const {
- return elements();
- }
-
- DictUnorderedMap<Key, Value>& elements() {
- return elements_;
- }
- operator DictUnorderedMap<Key, Value>&() {
- return elements();
- }
-};
+using UnorderedMap = std::unordered_map<IValue, IValue, DictHash, DictEqualTo>;
struct Future;
+struct GenericDict;
struct CAFFE2_API Tuple : public List<IValue> {
using List<IValue>::List;
using DoubleList = List<double>;
using BoolList = List<bool>;
using GenericList = List<IValue>;
-using GenericDict = Dict<IValue, IValue>;
}
const std::vector<bool>& toBoolListRef() const;
const std::vector<at::Tensor>& toTensorListRef() const;
const std::vector<IValue>& toGenericListRef() const;
- const ivalue::DictUnorderedMap<IValue, IValue>& toGenericDictRef() const;
+ const ivalue::UnorderedMap& toGenericDictRef() const;
const std::string& toStringRef() const;
// ConstantString
// GenericDict
IValue(c10::intrusive_ptr<ivalue::GenericDict> v);
- IValue(ivalue::DictUnorderedMap<IValue, IValue> v);
+ IValue(ivalue::UnorderedMap v);
bool isGenericDict() const { return Tag::GenericDict == tag; }
c10::intrusive_ptr<ivalue::GenericDict> toGenericDict() && {
AT_ASSERT(isGenericDict());
FutureError error;
};
+struct C10_EXPORT ivalue::GenericDict : c10::intrusive_ptr_target {
+ private:
+ UnorderedMap elements_;
+
+ public:
+ GenericDict(UnorderedMap elements_)
+ : elements_(std::move(elements_)) {}
+ static c10::intrusive_ptr<GenericDict> create(
+ UnorderedMap elements_) {
+ return c10::make_intrusive<GenericDict>(std::move(elements_));
+ }
+ const UnorderedMap& elements() const {
+ return elements_;
+ }
+ operator const UnorderedMap&() const {
+ return elements();
+ }
+
+ UnorderedMap& elements() {
+ return elements_;
+ }
+ operator UnorderedMap&() {
+ return elements();
+ }
+};
+
#undef TORCH_FORALL_TAGS
namespace detail {
: tag(Tag::GenericDict), is_intrusive_ptr(true) {
payload.as_intrusive_ptr = v.release();
}
-inline IValue::IValue(ivalue::DictUnorderedMap<IValue, IValue> v)
+inline IValue::IValue(ivalue::UnorderedMap v)
: IValue(ivalue::GenericDict::create(std::move(v))) {}
inline IValue::IValue(c10::intrusive_ptr<ivalue::Future> v)
return toGenericList()->elements();
}
-inline const c10::ivalue::DictUnorderedMap<IValue, IValue>& IValue::
+inline const c10::ivalue::UnorderedMap& IValue::
toGenericDictRef() const {
return toGenericDict()->elements();
}