Home | History | Annotate | Download | only in bluez
      1 // Copyright 2016 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.h"
      6 
      7 #include <utility>
      8 
      9 #include "base/logging.h"
     10 #include "base/memory/ptr_util.h"
     11 
     12 namespace bluez {
     13 
     14 BluetoothServiceAttributeValueBlueZ::BluetoothServiceAttributeValueBlueZ()
     15     : type_(NULLTYPE), size_(0), value_(base::MakeUnique<base::Value>()) {}
     16 
     17 BluetoothServiceAttributeValueBlueZ::BluetoothServiceAttributeValueBlueZ(
     18     Type type,
     19     size_t size,
     20     std::unique_ptr<base::Value> value)
     21     : type_(type), size_(size), value_(std::move(value)) {
     22   CHECK_NE(type, SEQUENCE);
     23 }
     24 
     25 BluetoothServiceAttributeValueBlueZ::BluetoothServiceAttributeValueBlueZ(
     26     std::unique_ptr<Sequence> sequence)
     27     : type_(SEQUENCE),
     28       size_(sequence->size()),
     29       sequence_(std::move(sequence)) {}
     30 
     31 BluetoothServiceAttributeValueBlueZ::BluetoothServiceAttributeValueBlueZ(
     32     const BluetoothServiceAttributeValueBlueZ& attribute) {
     33   *this = attribute;
     34 }
     35 
     36 BluetoothServiceAttributeValueBlueZ& BluetoothServiceAttributeValueBlueZ::
     37 operator=(const BluetoothServiceAttributeValueBlueZ& attribute) {
     38   if (this != &attribute) {
     39     type_ = attribute.type_;
     40     size_ = attribute.size_;
     41     if (attribute.type_ == SEQUENCE) {
     42       value_ = nullptr;
     43       sequence_ = base::MakeUnique<Sequence>(*attribute.sequence_);
     44     } else {
     45       value_ = attribute.value_->CreateDeepCopy();
     46       sequence_ = nullptr;
     47     }
     48   }
     49   return *this;
     50 }
     51 
     52 BluetoothServiceAttributeValueBlueZ::~BluetoothServiceAttributeValueBlueZ() {}
     53 
     54 }  // namespace bluez
     55