// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "lib/fidl/cpp/clone.h"

namespace fidl {

zx_status_t Clone(const StringPtr& value, StringPtr* result) {
  if (!value) {
    *result = StringPtr();
  } else {
    *result = value.value();
  }
  return ZX_OK;
}

zx_status_t Clone(const ::std::string& value, std::string* result) {
  *result = value;
  return ZX_OK;
}

}  // namespace fidl
