REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the DynamicTablesPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
		
			
				
	
	
		
			127 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  AML Tree.
 | 
						|
 | 
						|
  Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.<BR>
 | 
						|
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef AML_TREE_H_
 | 
						|
#define AML_TREE_H_
 | 
						|
 | 
						|
#include <AmlNodeDefines.h>
 | 
						|
 | 
						|
/** Get the root node from any node of the tree.
 | 
						|
    This is done by climbing up the tree until the root node is reached.
 | 
						|
 | 
						|
  @param  [in]  Node    Pointer to a node.
 | 
						|
 | 
						|
  @return The root node of the tree.
 | 
						|
          NULL if error.
 | 
						|
*/
 | 
						|
AML_ROOT_NODE *
 | 
						|
EFIAPI
 | 
						|
AmlGetRootNode (
 | 
						|
  IN  CONST AML_NODE_HEADER  *Node
 | 
						|
  );
 | 
						|
 | 
						|
/** Check whether the input Node is in the fixed argument list of its parent
 | 
						|
    node.
 | 
						|
 | 
						|
  If so, IndexPtr contains this Index.
 | 
						|
 | 
						|
  @param  [in]  Node          Pointer to a Node.
 | 
						|
  @param  [out] IndexPtr      Pointer holding the Index of the Node in
 | 
						|
                              its parent's fixed argument list.
 | 
						|
 | 
						|
  @retval TRUE   The node is a fixed argument and the index
 | 
						|
                 in IndexPtr is valid.
 | 
						|
  @retval FALSE  The node is not a fixed argument.
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EFIAPI
 | 
						|
AmlIsNodeFixedArgument (
 | 
						|
  IN  CONST  AML_NODE_HEADER   *Node,
 | 
						|
  OUT        EAML_PARSE_INDEX  *IndexPtr
 | 
						|
  );
 | 
						|
 | 
						|
/** Set the fixed argument of the ObjectNode at the Index to the NewNode.
 | 
						|
 | 
						|
  It is the caller's responsibility to save the old node, if desired,
 | 
						|
  otherwise the reference to the old node will be lost.
 | 
						|
  If NewNode is not NULL, set its parent to ObjectNode.
 | 
						|
 | 
						|
  @param  [in]  ObjectNode    Pointer to an object node.
 | 
						|
  @param  [in]  Index         Index in the fixed argument list of
 | 
						|
                              the ObjectNode to set.
 | 
						|
  @param  [in]  NewNode       Pointer to the NewNode.
 | 
						|
                              Can be NULL, a data node or an object node.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The function completed successfully.
 | 
						|
  @retval EFI_INVALID_PARAMETER   Invalid parameter.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
AmlSetFixedArgument (
 | 
						|
  IN  AML_OBJECT_NODE   *ObjectNode,
 | 
						|
  IN  EAML_PARSE_INDEX  Index,
 | 
						|
  IN  AML_NODE_HEADER   *NewNode
 | 
						|
  );
 | 
						|
 | 
						|
/** If the given AML_NODE_HEADER has a variable list of arguments,
 | 
						|
    return a pointer to this list.
 | 
						|
    Return NULL otherwise.
 | 
						|
 | 
						|
  @param  [in]  Node  Pointer to the AML_NODE_HEADER to check.
 | 
						|
 | 
						|
  @return The list of variable arguments if there is one.
 | 
						|
          NULL otherwise.
 | 
						|
**/
 | 
						|
LIST_ENTRY *
 | 
						|
EFIAPI
 | 
						|
AmlNodeGetVariableArgList (
 | 
						|
  IN  CONST AML_NODE_HEADER  *Node
 | 
						|
  );
 | 
						|
 | 
						|
/** Add the NewNode to the tail of the variable list of arguments
 | 
						|
    of the ParentNode.
 | 
						|
 | 
						|
  NOTE: This is an internal function which does not propagate the size
 | 
						|
        when a new node is added.
 | 
						|
 | 
						|
  @param  [in]  ParentNode  Pointer to the parent node.
 | 
						|
                            Must be a root or an object node.
 | 
						|
  @param  [in]  NewNode     Pointer to the node to add.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The function completed successfully.
 | 
						|
  @retval EFI_INVALID_PARAMETER   Invalid parameter.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
AmlVarListAddTailInternal (
 | 
						|
  IN  AML_NODE_HEADER  *ParentNode,
 | 
						|
  IN  AML_NODE_HEADER  *NewNode
 | 
						|
  );
 | 
						|
 | 
						|
/** Replace the OldNode by the NewNode.
 | 
						|
 | 
						|
  Note: This function unlinks the OldNode from the tree. It is the callers
 | 
						|
        responsibility to delete the OldNode if needed.
 | 
						|
 | 
						|
  @param  [in]  OldNode   Pointer to the node to replace.
 | 
						|
                          Must be a data node or an object node.
 | 
						|
  @param  [in]  NewNode   The new node to insert.
 | 
						|
                          Must be a data node or an object node.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The function completed successfully.
 | 
						|
  @retval EFI_INVALID_PARAMETER   Invalid parameter.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
AmlReplaceArgument (
 | 
						|
  IN  AML_NODE_HEADER  *OldNode,
 | 
						|
  IN  AML_NODE_HEADER  *NewNode
 | 
						|
  );
 | 
						|
 | 
						|
#endif // AML_TREE_H_
 |