/* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #include "AttributedStringBox.h" namespace facebook { namespace react { AttributedStringBox::AttributedStringBox() : mode_(Mode::Value), value_(std::make_shared(AttributedString{})), opaquePointer_({}){}; AttributedStringBox::AttributedStringBox(AttributedString const &value) : mode_(Mode::Value), value_(std::make_shared(value)), opaquePointer_({}){}; AttributedStringBox::AttributedStringBox( std::shared_ptr const &opaquePointer) : mode_(Mode::OpaquePointer), value_({}), opaquePointer_(opaquePointer) {} AttributedStringBox::Mode AttributedStringBox::getMode() const { return mode_; } AttributedString const &AttributedStringBox::getValue() const { assert(mode_ == AttributedStringBox::Mode::Value); assert(value_); return *value_; } std::shared_ptr AttributedStringBox::getOpaquePointer() const { assert(mode_ == AttributedStringBox::Mode::OpaquePointer); assert(opaquePointer_); return opaquePointer_; } bool operator==( AttributedStringBox const &lhs, AttributedStringBox const &rhs) { if (lhs.getMode() != rhs.getMode()) { return false; } switch (lhs.getMode()) { case facebook::react::AttributedStringBox::Mode::Value: return lhs.getValue() == rhs.getValue(); case facebook::react::AttributedStringBox::Mode::OpaquePointer: return lhs.getOpaquePointer() == rhs.getOpaquePointer(); } } bool operator!=( AttributedStringBox const &lhs, AttributedStringBox const &rhs) { return !(lhs == rhs); } } // namespace react } // namespace facebook