// Copyright 2013 The Chromium 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/lib/url/url_canon_stdstring.h"

namespace url {

StdStringCanonOutput::StdStringCanonOutput(std::string* str) : CanonOutput(), str_(str) {
  cur_len_ = static_cast<int>(str_->size());  // Append to existing data.
  str_->resize(str_->capacity());
  buffer_ = str_->empty() ? NULL : &(*str_)[0];
  buffer_len_ = static_cast<int>(str_->size());
}

StdStringCanonOutput::~StdStringCanonOutput() {
  // Nothing to do, we don't own the string.
}

void StdStringCanonOutput::Complete() {
  str_->resize(cur_len_);
  buffer_len_ = cur_len_;
}

void StdStringCanonOutput::Resize(size_t sz) {
  str_->resize(sz);
  buffer_ = str_->empty() ? NULL : &(*str_)[0];
  buffer_len_ = sz;
}

}  // namespace url
