## @file
#  An OrderedCollectionLib instance that provides a red-black tree
#  implementation, and allocates and releases tree nodes with
#  MemoryAllocationLib.
#
#  This library instance is useful when a fast associative container is needed.
#  Worst case time complexity is O(log n) for Find(), Next(), Prev(), Min(),
#  Max(), Insert(), and Delete(), where "n" is the number of elements in the
#  tree. Complete ordered traversal takes O(n) time.
#
#  The implementation is also useful as a fast priority queue.
#
#  Copyright (C) 2014, Red Hat, Inc.
#
#  This program and the accompanying materials are licensed and made available
#  under the terms and conditions of the BSD License that accompanies this
#  distribution. The full text of the license may be found at
#  http://opensource.org/licenses/bsd-license.php.
#
#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
#  IMPLIED.
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = BaseOrderedCollectionRedBlackTreeLib
  MODULE_UNI_FILE                = BaseOrderedCollectionRedBlackTreeLib.uni
  FILE_GUID                      = 699F73C3-0058-484C-A9E5-61189276A985
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = OrderedCollectionLib

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  BaseOrderedCollectionRedBlackTreeLib.c

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  DebugLib
  MemoryAllocationLib

[FeaturePcd]
  gEfiMdePkgTokenSpaceGuid.PcdValidateOrderedCollection ## CONSUMES
