// /** @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.
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "An OrderedCollectionLib instance that provides a red-black tree implementation."

#string STR_MODULE_DESCRIPTION          #language en-US "An OrderedCollectionLib instance that provides a red-black tree implementation."

