// Copyright (c) 2009 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 "base/profiler.h"
#include "base/string_util.h"

// When actually using quantify, uncomment the following line.
// #define QUANTIFY

#ifdef QUANTIFY
// this #define is used to prevent people from directly using pure.h
// instead of profiler.h
#define PURIFY_PRIVATE_INCLUDE
#include "base/third_party/purify/pure.h"
#endif // QUANTIFY

namespace base {

void Profiler::StartRecording() {
#ifdef QUANTIFY
  QuantifyStartRecordingData();
#endif
}

void Profiler::StopRecording() {
#ifdef QUANTIFY
  QuantifyStopRecordingData();
#endif
}

void Profiler::ClearData() {
#ifdef QUANTIFY
  QuantifyClearData();
#endif
}

void Profiler::SetThreadName(const char *name) {
#ifdef QUANTIFY
  // make a copy since the Quantify function takes a char*, not const char*
  char buffer[512];
  base::snprintf(buffer, sizeof(buffer)-1, "%s", name);
  QuantifySetThreadName(buffer);
#endif
}

}  // namespace base
