From 45a3634cb925301cbf2ce9018bda24022fc3bce2 Mon Sep 17 00:00:00 2001
From: qhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Date: Mon, 23 Feb 2009 03:23:43 +0000
Subject: [PATCH] Add Print.h, an EDKII public include file for thunk driver

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7583 6f19259b-4bc3-4df7-8a09-765794883524
---
 .../Compatibility/Include/Protocol/Print.h    | 78 +++++++++++++++++++
 1 file changed, 78 insertions(+)
 create mode 100644 EdkCompatibilityPkg/Compatibility/Include/Protocol/Print.h

diff --git a/EdkCompatibilityPkg/Compatibility/Include/Protocol/Print.h b/EdkCompatibilityPkg/Compatibility/Include/Protocol/Print.h
new file mode 100644
index 0000000000..3e26c520f9
--- /dev/null
+++ b/EdkCompatibilityPkg/Compatibility/Include/Protocol/Print.h
@@ -0,0 +1,78 @@
+/** @file
+
+  The lite print protocol defines only one print function to 
+  print the format unicode string.
+
+Copyright (c) 2006 - 2008, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef __PPRINT_H__
+#define __PPRINT_H__
+
+#define EFI_PRINT_PROTOCOL_GUID  \
+   { 0xdf2d868e, 0x32fc, 0x4cf0, {0x8e, 0x6b, 0xff, 0xd9, 0x5d, 0x13, 0x43, 0xd0} }
+
+//
+// Forward reference for pure ANSI compatability
+//
+typedef struct _EFI_PRINT_PROTOCOL  EFI_PRINT_PROTOCOL;
+
+/**
+  Produces a Null-terminated Unicode string in an output buffer based on 
+  a Null-terminated Unicode format string and a VA_LIST argument list
+  
+  Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
+  and BufferSize.  
+  The Unicode string is produced by parsing the format string specified by FormatString.  
+  Arguments are pulled from the variable argument list specified by Marker based on the 
+  contents of the format string.  
+  The number of Unicode characters in the produced output buffer is returned not including
+  the Null-terminator.
+  If BufferSize is 0 or 1, then no output buffer is produced and 0 is returned.
+
+  If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT().
+  If BufferSize > 1 and StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().
+  If BufferSize > 1 and FormatString is NULL, then ASSERT().
+  If BufferSize > 1 and FormatString is not aligned on a 16-bit boundary, then ASSERT().
+  If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than 
+  PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then
+  ASSERT().
+  If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
+  contains more than PcdMaximumUnicodeStringLength Unicode characters not including the
+  Null-terminator, then ASSERT().
+
+  @param  StartOfBuffer   A pointer to the output buffer for the produced Null-terminated 
+                          Unicode string.
+  @param  BufferSize      The size, in bytes, of the output buffer specified by StartOfBuffer.
+  @param  FormatString    Null-terminated Unicode format string.
+  @param  Marker          VA_LIST marker for the variable argument list.
+  
+  @return The number of Unicode characters in the produced output buffer not including the
+          Null-terminator.
+
+**/
+typedef
+UINTN
+(EFIAPI *UNI_VSPRINT)(
+  OUT CHAR16        *StartOfBuffer,
+  IN  UINTN         BufferSize,
+  IN  CONST CHAR16  *FormatString,
+  IN  VA_LIST       Marker
+  );
+
+
+struct _EFI_PRINT_PROTOCOL {
+  UNI_VSPRINT               VSPrint;
+};
+
+extern EFI_GUID gEfiPrintProtocolGuid;
+
+#endif