APPENDIX A Common Examples

File Heading

/** @file
  Brief description of file’s purpose.

  Detailed description of file’s purpose.

  Copyright (c) 2006 - 2014, Acme Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

  @par Specification Reference:
  - UEFI 2.3, Chapter 9, Device Path Protocol
  - PI 1.1, Chapter 10, Boot Paths
**/
#ifndef FOO_BAR_H_
#define FOO_BAR_H_

// Body of the file goes here

#endif // FOO_BAR_H_

Functioon Declarations

/** Brief description of this function's purpose.

  Follow it immediately with the detailed description.

  @param[in]       Arg1  Description of Arg1.
  @param[in]       Arg2  Description of Arg2 This is complicated and requires
                         multiple lines to describe.
  @param[out]      Arg3  Description of Arg3.
  @param[in, out]  Arg4  Description of Arg4.

  @retval  VAL_ONE  Description of what VAL_ONE signifies.
  @retval  OTHER    This is the only other return value. If there were other
                    return values, they would be listed.

**/
EFI_STATUS
EFIAPI
FooBar (
  IN     UINTN  Arg1,
  IN     UINTN  Arg2, OPTIONAL
     OUT UINTN  *Arg3,
  IN OUT UINTN  *Arg4
  );

Type Declarations

/// Brief description of this enum.
/// Detailed description if justified.
typedef enum {
  EnumMenberOne,  ///< First member description.
  EnumMemberTwo,  ///< Second member description.
  EnumMemberMax   ///< Number of members in this enum.
} ENUMERATE_TYPE;

/// Structure without forward reference.
typedef struct {
  UINT32                   Signature;  ///< Signature description.
  EFI_HANDLE               Handle;     ///< Handle description.
  EFI_PROD_PROT1_PROTOCOL  ProdProt1;  ///< ProdProt1 description.
  EFI_PROD_PROT2_PROTOCOL  ProdProt2;  ///< ProdProt2 description.
} DRIVER_NAME_INSTANCE;

/// Self referential Structure.
typedef struct EFI_CPU_IO_PROTO {
  struct EFI_CPU_IO_PROTO     *Mem;
  EFI_CPU_IO_PROTOCOL_ACCESS  Io;
} EFI_CPU_IO_PROTOCOL;

/// Forward reference
typedef struct StructTag MyStruct;

/// Forward reference target
struct StructTag {
  INT32 First;
  INT32 Second;
};

Function Calling

Status = TestString ();
Status = TestString (String, Index + 3, &Value);
Status = TestString (
           String,
           Index + 3,
           &Value
           );

Control Statements

if (Test && !Test2) {
  // This is an example comment to explain why this behavior
  // is appropriate.
  IamTheCode ();
} else if (Test2) {
  // This is an example comment to explain why this behavior
  // is appropriate.
  IamTheCode ();
} else {
  // This is an example comment to explain why this behavior
  // is appropriate.
  IamTheCode ();
}

while (TRUE) {
  IamTheCode ();
}

do {
  IamTheCode ();
} while (TRUE);

for (Index = 0; Index < MAX_INDEX; Index++) {
  IamTheCode (Index);
}

switch (Variable) {
case 1:
  IamTheCode ();
  break;

case 2:
  IamTheCode ();
  break;

default:
  IamTheCode ();
  break;
};