// Copyright (c) 2012 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.

#ifndef QUICHE_COMMON_QUICHE_SIMPLE_BUFFER_ALLOCATOR_H_
#define QUICHE_COMMON_QUICHE_SIMPLE_BUFFER_ALLOCATOR_H_

#include "common/platform/api/quiche_export.h"
#include "common/quiche_buffer_allocator.h"

namespace quiche {

// Provides buffer allocation using operators new[] and delete[] on char arrays.
// Note that some of the QUICHE code relies on this being the case for deleting
// new[]-allocated arrays from elsewhere.
class QUICHE_EXPORT_PRIVATE SimpleBufferAllocator
    : public QuicheBufferAllocator {
 public:
  static SimpleBufferAllocator* Get() {
    static SimpleBufferAllocator* singleton = new SimpleBufferAllocator();
    return singleton;
  }

  char* New(size_t size) override;
  char* New(size_t size, bool flag_enable) override;
  void Delete(char* buffer) override;
};

}  // namespace quiche

#endif  // QUICHE_COMMON_QUICHE_SIMPLE_BUFFER_ALLOCATOR_H_
