https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			3014 lines
		
	
	
		
			100 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			3014 lines
		
	
	
		
			100 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  This library provides helper functions to prevent integer overflow during
 | 
						|
  type conversion, addition, subtraction, and multiplication.
 | 
						|
 | 
						|
  Copyright (c) 2017, Microsoft Corporation
 | 
						|
 | 
						|
  All rights reserved.
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
#ifndef __INT_SAFE_LIB_H__
 | 
						|
#define __INT_SAFE_LIB_H__
 | 
						|
 | 
						|
//
 | 
						|
// It is common for -1 to be used as an error value
 | 
						|
//
 | 
						|
#define INT8_ERROR    ((INT8) -1)
 | 
						|
#define UINT8_ERROR   MAX_UINT8
 | 
						|
#define CHAR8_ERROR   ((CHAR8)(MAX_INT8))
 | 
						|
#define INT16_ERROR   ((INT16) -1)
 | 
						|
#define UINT16_ERROR  MAX_UINT16
 | 
						|
#define CHAR16_ERROR  MAX_UINT16
 | 
						|
#define INT32_ERROR   ((INT32) -1)
 | 
						|
#define UINT32_ERROR  MAX_UINT32
 | 
						|
#define INT64_ERROR   ((INT64) -1)
 | 
						|
#define UINT64_ERROR  MAX_UINT64
 | 
						|
#define INTN_ERROR    ((INTN) -1)
 | 
						|
#define UINTN_ERROR   MAX_UINTN
 | 
						|
 | 
						|
//
 | 
						|
// CHAR16 is defined to be the same as UINT16, so for CHAR16
 | 
						|
// operations redirect to the UINT16 ones:
 | 
						|
//
 | 
						|
#define SafeInt8ToChar16    SafeInt8ToUint16
 | 
						|
#define SafeInt16ToChar16   SafeInt16ToUint16
 | 
						|
#define SafeInt32ToChar16   SafeInt32ToUint16
 | 
						|
#define SafeUint32ToChar16  SafeUint32ToUint16
 | 
						|
#define SafeInt64ToChar16   SafeInt64ToUint16
 | 
						|
#define SafeUint64ToChar16  SafeUint64ToUint16
 | 
						|
#define SafeIntnToChar16    SafeIntnToUint16
 | 
						|
#define SafeUintnToChar16   SafeUintnToUint16
 | 
						|
 | 
						|
#define SafeChar16ToInt8    SafeUint16ToInt8
 | 
						|
#define SafeChar16ToUint8   SafeUint16ToUint8
 | 
						|
#define SafeChar16ToChar8   SafeUint16ToChar8
 | 
						|
#define SafeChar16ToInt16   SafeUint16ToInt16
 | 
						|
 | 
						|
#define SafeChar16Mult      SafeUint16Mult
 | 
						|
#define SafeChar16Sub       SafeUint16Sub
 | 
						|
#define SafeChar16Add       SafeUint16Add
 | 
						|
 | 
						|
//
 | 
						|
// Conversion functions
 | 
						|
//
 | 
						|
// There are three reasons for having conversion functions:
 | 
						|
//
 | 
						|
// 1. We are converting from a signed type to an unsigned type of the same
 | 
						|
//    size, or vice-versa.
 | 
						|
//
 | 
						|
// 2. We are converting to a smaller type, and we could therefore possibly
 | 
						|
//    overflow.
 | 
						|
//
 | 
						|
// 3. We are converting to a bigger type, and we are signed and the type we are
 | 
						|
//    converting to is unsigned.
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  INT8 -> UINT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt8ToUint8 (
 | 
						|
  IN  INT8   Operand,
 | 
						|
  OUT UINT8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT8 -> CHAR8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt8ToChar8 (
 | 
						|
  IN  INT8   Operand,
 | 
						|
  OUT CHAR8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT8 -> UINT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt8ToUint16 (
 | 
						|
  IN  INT8    Operand,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT8 -> UINT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt8ToUint32 (
 | 
						|
  IN  INT8    Operand,
 | 
						|
  OUT UINT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT8 -> UINTN conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt8ToUintn (
 | 
						|
  IN  INT8   Operand,
 | 
						|
  OUT UINTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT8 -> UINT64 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt8ToUint64 (
 | 
						|
  IN  INT8    Operand,
 | 
						|
  OUT UINT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT8 -> INT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint8ToInt8 (
 | 
						|
  IN  UINT8  Operand,
 | 
						|
  OUT INT8   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT8 -> CHAR8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint8ToChar8 (
 | 
						|
  IN  UINT8  Operand,
 | 
						|
  OUT CHAR8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT16 -> INT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt16ToInt8 (
 | 
						|
  IN  INT16  Operand,
 | 
						|
  OUT INT8   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT16 -> CHAR8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt16ToChar8 (
 | 
						|
  IN  INT16  Operand,
 | 
						|
  OUT CHAR8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT16 -> UINT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt16ToUint8 (
 | 
						|
  IN INT16 Operand,
 | 
						|
  OUT UINT8 *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT16 -> UINT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt16ToUint16 (
 | 
						|
  IN  INT16   Operand,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT16 -> UINT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt16ToUint32 (
 | 
						|
  IN  INT16   Operand,
 | 
						|
  OUT UINT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT16 -> UINTN conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt16ToUintn (
 | 
						|
  IN  INT16  Operand,
 | 
						|
  OUT UINTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT16 -> UINT64 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt16ToUint64 (
 | 
						|
  IN  INT16   Operand,
 | 
						|
  OUT UINT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT16 -> INT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint16ToInt8 (
 | 
						|
  IN  UINT16  Operand,
 | 
						|
  OUT INT8    *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT16 -> CHAR8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint16ToChar8 (
 | 
						|
  IN  UINT16  Operand,
 | 
						|
  OUT CHAR8   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT16 -> UINT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint16ToUint8 (
 | 
						|
  IN UINT16 Operand,
 | 
						|
  OUT UINT8 *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT16 -> INT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint16ToInt16 (
 | 
						|
  IN  UINT16  Operand,
 | 
						|
  OUT INT16   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 -> INT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32ToInt8 (
 | 
						|
  IN  INT32  Operand,
 | 
						|
  OUT INT8   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 -> CHAR8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32ToChar8 (
 | 
						|
  IN  INT32  Operand,
 | 
						|
  OUT CHAR8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 -> UINT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32ToUint8 (
 | 
						|
  IN INT32 Operand,
 | 
						|
  OUT UINT8 *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 -> INT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32ToInt16 (
 | 
						|
  IN  INT32  Operand,
 | 
						|
  OUT INT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 -> UINT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32ToUint16 (
 | 
						|
  IN  INT32   Operand,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 -> UINT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32ToUint32 (
 | 
						|
  IN  INT32   Operand,
 | 
						|
  OUT UINT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 -> UINTN conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32ToUintn (
 | 
						|
  IN  INT32  Operand,
 | 
						|
  OUT UINTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 -> UINT64 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32ToUint64 (
 | 
						|
  IN  INT32   Operand,
 | 
						|
  OUT UINT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT32 -> INT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint32ToInt8 (
 | 
						|
  IN  UINT32  Operand,
 | 
						|
  OUT INT8    *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT32 -> CHAR8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint32ToChar8 (
 | 
						|
  IN  UINT32  Operand,
 | 
						|
  OUT CHAR8   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT32 -> UINT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint32ToUint8 (
 | 
						|
  IN UINT32 Operand,
 | 
						|
  OUT UINT8 *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT32 -> INT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint32ToInt16 (
 | 
						|
  IN  UINT32  Operand,
 | 
						|
  OUT INT16   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT32 -> UINT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint32ToUint16 (
 | 
						|
  IN  UINT32  Operand,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT32 -> INT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint32ToInt32 (
 | 
						|
  IN  UINT32  Operand,
 | 
						|
  OUT INT32   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT32 -> INTN conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint32ToIntn (
 | 
						|
  IN  UINT32  Operand,
 | 
						|
  OUT INTN    *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN -> INT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnToInt8 (
 | 
						|
  IN  INTN  Operand,
 | 
						|
  OUT INT8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN -> CHAR8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnToChar8 (
 | 
						|
  IN  INTN   Operand,
 | 
						|
  OUT CHAR8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN -> UINT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnToUint8 (
 | 
						|
  IN INTN Operand,
 | 
						|
  OUT UINT8 *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN -> INT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnToInt16 (
 | 
						|
  IN  INTN   Operand,
 | 
						|
  OUT INT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN -> UINT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnToUint16 (
 | 
						|
  IN  INTN    Operand,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN -> INT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnToInt32 (
 | 
						|
  IN  INTN   Operand,
 | 
						|
  OUT INT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN -> UINT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnToUint32 (
 | 
						|
  IN  INTN    Operand,
 | 
						|
  OUT UINT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN -> UINTN conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnToUintn (
 | 
						|
  IN  INTN   Operand,
 | 
						|
  OUT UINTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN -> UINT64 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnToUint64 (
 | 
						|
  IN  INTN    Operand,
 | 
						|
  OUT UINT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN -> INT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnToInt8 (
 | 
						|
  IN  UINTN  Operand,
 | 
						|
  OUT INT8   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN -> CHAR8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnToChar8 (
 | 
						|
  IN  UINTN  Operand,
 | 
						|
  OUT CHAR8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN -> UINT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnToUint8 (
 | 
						|
  IN UINTN Operand,
 | 
						|
  OUT UINT8 *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN -> INT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnToInt16 (
 | 
						|
  IN  UINTN  Operand,
 | 
						|
  OUT INT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN -> UINT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnToUint16 (
 | 
						|
  IN  UINTN   Operand,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN -> INT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnToInt32 (
 | 
						|
  IN  UINTN  Operand,
 | 
						|
  OUT INT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN -> UINT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnToUint32 (
 | 
						|
  IN  UINTN   Operand,
 | 
						|
  OUT UINT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN -> INTN conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnToIntn (
 | 
						|
  IN  UINTN  Operand,
 | 
						|
  OUT INTN   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN -> INT64 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnToInt64 (
 | 
						|
  IN  UINTN  Operand,
 | 
						|
  OUT INT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 -> INT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64ToInt8 (
 | 
						|
  IN  INT64  Operand,
 | 
						|
  OUT INT8   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 -> CHAR8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64ToChar8 (
 | 
						|
  IN  INT64  Operand,
 | 
						|
  OUT CHAR8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 -> UINT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64ToUint8 (
 | 
						|
  IN  INT64  Operand,
 | 
						|
  OUT UINT8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 -> INT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64ToInt16 (
 | 
						|
  IN  INT64  Operand,
 | 
						|
  OUT INT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 -> UINT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64ToUint16 (
 | 
						|
  IN  INT64   Operand,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 -> INT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64ToInt32 (
 | 
						|
  IN  INT64  Operand,
 | 
						|
  OUT INT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 -> UINT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64ToUint32 (
 | 
						|
  IN  INT64   Operand,
 | 
						|
  OUT UINT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 -> INTN conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64ToIntn (
 | 
						|
  IN  INT64  Operand,
 | 
						|
  OUT INTN   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 -> UINTN conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64ToUintn (
 | 
						|
  IN  INT64  Operand,
 | 
						|
  OUT UINTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 -> UINT64 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64ToUint64 (
 | 
						|
  IN  INT64   Operand,
 | 
						|
  OUT UINT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 -> INT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64ToInt8 (
 | 
						|
  IN  UINT64  Operand,
 | 
						|
  OUT INT8    *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 -> CHAR8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64ToChar8 (
 | 
						|
  IN  UINT64  Operand,
 | 
						|
  OUT CHAR8   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 -> UINT8 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64ToUint8 (
 | 
						|
  IN  UINT64  Operand,
 | 
						|
  OUT UINT8   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 -> INT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64ToInt16 (
 | 
						|
  IN  UINT64  Operand,
 | 
						|
  OUT INT16   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 -> UINT16 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64ToUint16 (
 | 
						|
  IN  UINT64  Operand,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 -> INT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64ToInt32 (
 | 
						|
  IN  UINT64  Operand,
 | 
						|
  OUT INT32   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 -> UINT32 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64ToUint32 (
 | 
						|
  IN  UINT64  Operand,
 | 
						|
  OUT UINT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 -> INTN conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64ToIntn (
 | 
						|
  IN  UINT64  Operand,
 | 
						|
  OUT INTN    *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 -> UINTN conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to UINTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64ToUintn (
 | 
						|
  IN  UINT64  Operand,
 | 
						|
  OUT UINTN   *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 -> INT64 conversion
 | 
						|
 | 
						|
  Converts the value specified by Operand to a value specified by Result type
 | 
						|
  and stores the converted value into the caller allocated output buffer
 | 
						|
  specified by Result.  The caller must pass in a Result buffer that is at
 | 
						|
  least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the conversion results in an overflow or an underflow condition, then
 | 
						|
  Result is set to INT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Operand  Operand to be converted to new type
 | 
						|
  @param[out]  Result   Pointer to the result of conversion
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful conversion
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64ToInt64 (
 | 
						|
  IN  UINT64  Operand,
 | 
						|
  OUT INT64   *Result
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// Addition functions
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  UINT8 addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint8Add (
 | 
						|
  IN  UINT8  Augend,
 | 
						|
  IN  UINT8  Addend,
 | 
						|
  OUT UINT8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT16 addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint16Add (
 | 
						|
  IN  UINT16  Augend,
 | 
						|
  IN  UINT16  Addend,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT32 addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint32Add (
 | 
						|
  IN  UINT32  Augend,
 | 
						|
  IN  UINT32  Addend,
 | 
						|
  OUT UINT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnAdd (
 | 
						|
  IN  UINTN  Augend,
 | 
						|
  IN  UINTN  Addend,
 | 
						|
  OUT UINTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64Add (
 | 
						|
  IN  UINT64  Augend,
 | 
						|
  IN  UINT64  Addend,
 | 
						|
  OUT UINT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// Subtraction functions
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  UINT8 subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint8Sub (
 | 
						|
  IN  UINT8  Minuend,
 | 
						|
  IN  UINT8  Subtrahend,
 | 
						|
  OUT UINT8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT16 subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint16Sub (
 | 
						|
  IN  UINT16  Minuend,
 | 
						|
  IN  UINT16  Subtrahend,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT32 subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint32Sub (
 | 
						|
  IN  UINT32  Minuend,
 | 
						|
  IN  UINT32  Subtrahend,
 | 
						|
  OUT UINT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnSub (
 | 
						|
  IN  UINTN  Minuend,
 | 
						|
  IN  UINTN  Subtrahend,
 | 
						|
  OUT UINTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64Sub (
 | 
						|
  IN  UINT64  Minuend,
 | 
						|
  IN  UINT64  Subtrahend,
 | 
						|
  OUT UINT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// Multiplication functions
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  UINT8 multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint8Mult (
 | 
						|
  IN  UINT8  Multiplicand,
 | 
						|
  IN  UINT8  Multiplier,
 | 
						|
  OUT UINT8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT16 multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint16Mult (
 | 
						|
  IN  UINT16  Multiplicand,
 | 
						|
  IN  UINT16  Multiplier,
 | 
						|
  OUT UINT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT32 multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint32Mult (
 | 
						|
  IN  UINT32  Multiplicand,
 | 
						|
  IN  UINT32  Multiplier,
 | 
						|
  OUT UINT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINTN multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUintnMult (
 | 
						|
  IN  UINTN  Multiplicand,
 | 
						|
  IN  UINTN  Multiplier,
 | 
						|
  OUT UINTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  UINT64 multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to UINT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeUint64Mult (
 | 
						|
  IN  UINT64  Multiplicand,
 | 
						|
  IN  UINT64  Multiplier,
 | 
						|
  OUT UINT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// Signed operations
 | 
						|
//
 | 
						|
// Strongly consider using unsigned numbers.
 | 
						|
//
 | 
						|
// Signed numbers are often used where unsigned numbers should be used.
 | 
						|
// For example file sizes and array indices should always be unsigned.
 | 
						|
// Subtracting a larger positive signed number from a smaller positive
 | 
						|
// signed number with SafeInt32Sub will succeed, producing a negative number,
 | 
						|
// that then must not be used as an array index (but can occasionally be
 | 
						|
// used as a pointer index.) Similarly for adding a larger magnitude
 | 
						|
// negative number to a smaller magnitude positive number.
 | 
						|
//
 | 
						|
// This library does not protect you from such errors. It tells you if your
 | 
						|
// integer operations overflowed, not if you are doing the right thing
 | 
						|
// with your non-overflowed integers.
 | 
						|
//
 | 
						|
// Likewise you can overflow a buffer with a non-overflowed unsigned index.
 | 
						|
//
 | 
						|
 | 
						|
//
 | 
						|
// Signed addition functions
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  INT8 Addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt8Add (
 | 
						|
  IN  INT8  Augend,
 | 
						|
  IN  INT8  Addend,
 | 
						|
  OUT INT8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  CHAR8 Addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeChar8Add (
 | 
						|
  IN  CHAR8  Augend,
 | 
						|
  IN  CHAR8  Addend,
 | 
						|
  OUT CHAR8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT16 Addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt16Add (
 | 
						|
  IN  INT16  Augend,
 | 
						|
  IN  INT16  Addend,
 | 
						|
  OUT INT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 Addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32Add (
 | 
						|
  IN  INT32  Augend,
 | 
						|
  IN  INT32  Addend,
 | 
						|
  OUT INT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN Addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnAdd (
 | 
						|
  IN  INTN  Augend,
 | 
						|
  IN  INTN  Addend,
 | 
						|
  OUT INTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 Addition
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Augend  A number to which addend will be added
 | 
						|
  @param[in]   Addend  A number to be added to another
 | 
						|
  @param[out]  Result  Pointer to the result of addition
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful addition
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64Add (
 | 
						|
  IN  INT64  Augend,
 | 
						|
  IN  INT64  Addend,
 | 
						|
  OUT INT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// Signed subtraction functions
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  INT8 Subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt8Sub (
 | 
						|
  IN  INT8  Minuend,
 | 
						|
  IN  INT8  Subtrahend,
 | 
						|
  OUT INT8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  CHAR8 Subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeChar8Sub (
 | 
						|
  IN  CHAR8  Minuend,
 | 
						|
  IN  CHAR8  Subtrahend,
 | 
						|
  OUT CHAR8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT16 Subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt16Sub (
 | 
						|
  IN  INT16  Minuend,
 | 
						|
  IN  INT16  Subtrahend,
 | 
						|
  OUT INT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 Subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32Sub (
 | 
						|
  IN  INT32  Minuend,
 | 
						|
  IN  INT32  Subtrahend,
 | 
						|
  OUT INT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN Subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnSub (
 | 
						|
  IN  INTN  Minuend,
 | 
						|
  IN  INTN  Subtrahend,
 | 
						|
  OUT INTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 Subtraction
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Minuend     A number from which another is to be subtracted.
 | 
						|
  @param[in]   Subtrahend  A number to be subtracted from another
 | 
						|
  @param[out]  Result      Pointer to the result of subtraction
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful subtraction
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Underflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64Sub (
 | 
						|
  IN  INT64  Minuend,
 | 
						|
  IN  INT64  Subtrahend,
 | 
						|
  OUT INT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// Signed multiplication functions
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  INT8 multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt8Mult (
 | 
						|
  IN  INT8  Multiplicand,
 | 
						|
  IN  INT8  Multiplier,
 | 
						|
  OUT INT8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  CHAR8 multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to CHAR8_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeChar8Mult (
 | 
						|
  IN  CHAR8  Multiplicand,
 | 
						|
  IN  CHAR8  Multiplier,
 | 
						|
  OUT CHAR8  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT16 multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT16_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt16Mult (
 | 
						|
  IN  INT16  Multiplicand,
 | 
						|
  IN  INT16  Multiplier,
 | 
						|
  OUT INT16  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT32 multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT32_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt32Mult (
 | 
						|
  IN  INT32  Multiplicand,
 | 
						|
  IN  INT32  Multiplier,
 | 
						|
  OUT INT32  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INTN multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INTN_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeIntnMult (
 | 
						|
  IN  INTN  Multiplicand,
 | 
						|
  IN  INTN  Multiplier,
 | 
						|
  OUT INTN  *Result
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  INT64 multiplication
 | 
						|
 | 
						|
  Performs the requested operation using the input parameters into a value
 | 
						|
  specified by Result type and stores the converted value into the caller
 | 
						|
  allocated output buffer specified by Result.  The caller must pass in a
 | 
						|
  Result buffer that is at least as large as the Result type.
 | 
						|
 | 
						|
  If Result is NULL, RETURN_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the requested operation results in an overflow or an underflow condition,
 | 
						|
  then Result is set to INT64_ERROR and RETURN_BUFFER_TOO_SMALL is returned.
 | 
						|
 | 
						|
  @param[in]   Multiplicand  A number that is to be multiplied by another
 | 
						|
  @param[in]   Multiplier    A number by which the multiplicand is to be multiplied
 | 
						|
  @param[out]  Result        Pointer to the result of multiplication
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Successful multiplication
 | 
						|
  @retval  RETURN_BUFFER_TOO_SMALL   Overflow
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Result is NULL
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SafeInt64Mult (
 | 
						|
  IN  INT64  Multiplicand,
 | 
						|
  IN  INT64  Multiplier,
 | 
						|
  OUT INT64  *Result
 | 
						|
  );
 | 
						|
 | 
						|
#endif // __INT_SAFE_LIB_H__
 |