| 792 | } |
| 793 | |
| 794 | class VariantObject { |
| 795 | public: |
| 796 | VariantObject() {} |
| 797 | VariantObject(const string& metadata, int64 value) |
| 798 | : metadata_(metadata), value_(value) {} |
| 799 | |
| 800 | string TypeName() const { return "TEST VariantObject"; } |
| 801 | void Encode(VariantTensorData* data) const { |
| 802 | data->set_type_name(TypeName()); |
| 803 | data->set_metadata(metadata_); |
| 804 | Tensor val_t = Tensor(DT_INT64, TensorShape({})); |
| 805 | val_t.scalar<int64>()() = value_; |
| 806 | *(data->add_tensors()) = val_t; |
| 807 | } |
| 808 | bool Decode(const VariantTensorData& data) { |
| 809 | EXPECT_EQ(data.type_name(), TypeName()); |
| 810 | data.get_metadata(&metadata_); |
| 811 | EXPECT_EQ(data.tensors_size(), 1); |
| 812 | value_ = data.tensors(0).scalar<int64>()(); |
| 813 | return true; |
| 814 | } |
| 815 | bool operator==(const VariantObject other) const { |
| 816 | return metadata_ == other.metadata_ && value_ == other.value_; |
| 817 | } |
| 818 | string metadata_; |
| 819 | int64 value_; |
| 820 | }; |
| 821 | |
| 822 | REGISTER_UNARY_VARIANT_DECODE_FUNCTION(VariantObject, "TEST VariantObject"); |
| 823 | |