// 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 "src/developer/debug/shared/address_range.h"

#include <inttypes.h>

#include "src/lib/fxl/strings/string_printf.h"

namespace debug {

// Implemented out-of-line to avoid bringing <algorithm> into all headers that use address_range.h.
AddressRange AddressRange::Union(const AddressRange& other) const {
  if (other.empty())
    return *this;
  if (empty())
    return other;
  return AddressRange(std::min(begin_, other.begin_), std::max(end_, other.end_));
}

std::string AddressRange::ToString() const {
  return fxl::StringPrintf("[0x%" PRIx64 ", 0x%" PRIx64 ")", begin_, end_);
}

}  // namespace debug
