// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file contains the definition of the IdAllocator class.

#ifndef GPU_COMMAND_BUFFER_COMMON_ID_ALLOCATOR_H_
#define GPU_COMMAND_BUFFER_COMMON_ID_ALLOCATOR_H_

#include <stdint.h>

#include <map>
#include <utility>

#include "base/compiler_specific.h"
#include "gpu/command_buffer/common/gpu_command_buffer_common_export.h"

namespace gpu {

// A resource ID, key to the resource maps.
typedef uint32_t ResourceId;
// Invalid resource ID.
static const ResourceId kInvalidResource = 0u;

// A class to manage the allocation of resource IDs.
class GPU_COMMAND_BUFFER_COMMON_EXPORT IdAllocator {
 public:
  IdAllocator();

  IdAllocator(const IdAllocator&) = delete;
  IdAllocator& operator=(const IdAllocator&) = delete;

  ~IdAllocator();

  // Allocates a new resource ID.
  ResourceId AllocateID();

  // Allocates an Id starting at or above desired_id.
  // Note: may wrap if it starts near limit.
  ResourceId AllocateIDAtOrAbove(ResourceId desired_id);

  // Allocates |range| amount of contiguous ids.
  // Returns the first id to |first_id| or |kInvalidResource| if
  // allocation failed.
  ResourceId AllocateIDRange(uint32_t range);

  // Marks an id as used. Returns false if id was already used.
  bool MarkAsUsed(ResourceId id);

  // Frees a resource ID.
  void FreeID(ResourceId id);

  // Frees a |range| amount of contiguous ids, starting from |first_id|.
  void FreeIDRange(ResourceId first_id, uint32_t range);

  // Checks whether or not a resource ID is in use.
  bool InUse(ResourceId id) const;

 private:
  // first_id -> last_id mapping.
  typedef std::map<ResourceId, ResourceId> ResourceIdRangeMap;

  ResourceIdRangeMap used_ids_;
};

}  // namespace gpu

#endif  // GPU_COMMAND_BUFFER_COMMON_ID_ALLOCATOR_H_
