]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/Common/CommonLib.h
BaseTools: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / BaseTools / Source / C / Common / CommonLib.h
index 2041b89e2d0bc93577880431e82e92ce32db7d4e..e1cce985f7f931efc13b3b31b138c8da50abd5b6 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
 Common library assistance routines.\r
 \r
-Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -17,10 +11,30 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include <Common/UefiBaseTypes.h>\r
 #include <Common/BuildVersion.h>\r
+#include <assert.h>\r
 #define PRINTED_GUID_BUFFER_SIZE  37  // including null-termination\r
 \r
 #define MAX_LONG_FILE_PATH 500\r
 \r
+#define MAX_UINT64 ((UINT64)0xFFFFFFFFFFFFFFFFULL)\r
+#define MAX_UINT32 ((UINT32)0xFFFFFFFF)\r
+#define MAX_UINT16  ((UINT16)0xFFFF)\r
+#define MAX_UINT8   ((UINT8)0xFF)\r
+#define ARRAY_SIZE(Array) (sizeof (Array) / sizeof ((Array)[0]))\r
+#define ASCII_RSIZE_MAX 1000000\r
+#undef RSIZE_MAX\r
+#define RSIZE_MAX 1000000\r
+\r
+#define IS_COMMA(a)                ((a) == L',')\r
+#define IS_HYPHEN(a)               ((a) == L'-')\r
+#define IS_DOT(a)                  ((a) == L'.')\r
+#define IS_LEFT_PARENTH(a)         ((a) == L'(')\r
+#define IS_RIGHT_PARENTH(a)        ((a) == L')')\r
+#define IS_SLASH(a)                ((a) == L'/')\r
+#define IS_NULL(a)                 ((a) == L'\0')\r
+\r
+#define ASSERT(x) assert(x)\r
+\r
 #ifdef __cplusplus\r
 extern "C" {\r
 #endif\r
@@ -149,25 +163,278 @@ CHAR8 *
 LongFilePath (\r
  IN CHAR8 *FileName\r
 );\r
+\r
+UINTN\r
+StrLen (\r
+  CONST CHAR16   *String\r
+  );\r
+\r
+VOID *\r
+AllocateCopyPool (\r
+  UINTN       AllocationSize,\r
+  CONST VOID  *Buffer\r
+  );\r
+\r
+INTN\r
+StrnCmp (\r
+  CONST CHAR16              *FirstString,\r
+  CONST CHAR16              *SecondString,\r
+  UINTN                     Length\r
+  );\r
+\r
+RETURN_STATUS\r
+StrToGuid (\r
+  CONST CHAR16       *String,\r
+  EFI_GUID               *Guid\r
+  );\r
+\r
+RETURN_STATUS\r
+StrHexToBytes (\r
+  CONST CHAR16       *String,\r
+  UINTN              Length,\r
+  UINT8              *Buffer,\r
+  UINTN              MaxBufferSize\r
+  );\r
+\r
+UINTN\r
+InternalHexCharToUintn (\r
+  CHAR16                    Char\r
+  );\r
+\r
+VOID *\r
+InternalAllocateCopyPool (\r
+   UINTN            AllocationSize,\r
+   CONST VOID       *Buffer\r
+  );\r
+\r
+BOOLEAN\r
+InternalIsDecimalDigitCharacter (\r
+        CHAR16                    Char\r
+  );\r
+\r
+UINT32\r
+SwapBytes32 (\r
+        UINT32                    Value\r
+  );\r
+\r
+UINT16\r
+SwapBytes16 (\r
+        UINT16                    Value\r
+  );\r
+\r
+EFI_GUID *\r
+CopyGuid (\r
+   EFI_GUID       *DestinationGuid,\r
+   CONST EFI_GUID  *SourceGuid\r
+  );\r
+\r
+UINT64\r
+WriteUnaligned64 (\r
+   UINT64                    *Buffer,\r
+   UINT64                    Value\r
+  );\r
+\r
+UINT64\r
+ReadUnaligned64 (\r
+   CONST UINT64              *Buffer\r
+  );\r
+\r
+UINTN\r
+StrSize (\r
+  CONST CHAR16              *String\r
+  );\r
+\r
+UINT64\r
+StrHexToUint64 (\r
+  CONST CHAR16             *String\r
+  );\r
+\r
+UINT64\r
+StrDecimalToUint64 (\r
+  CONST CHAR16              *String\r
+  );\r
+\r
+RETURN_STATUS\r
+StrHexToUint64S (\r
+    CONST CHAR16       *String,\r
+    CHAR16             **EndPointer,\r
+    UINT64             *Data\r
+  );\r
+\r
+RETURN_STATUS\r
+StrDecimalToUint64S (\r
+    CONST CHAR16             *String,\r
+         CHAR16             **EndPointer,  OPTIONAL\r
+         UINT64             *Data\r
+  );\r
+\r
+VOID *\r
+ReallocatePool (\r
+   UINTN  OldSize,\r
+   UINTN  NewSize,\r
+   VOID   *OldBuffer  OPTIONAL\r
+  );\r
+\r
+VOID *\r
+InternalReallocatePool (\r
+   UINTN            OldSize,\r
+   UINTN            NewSize,\r
+   VOID             *OldBuffer  OPTIONAL\r
+  );\r
+\r
+VOID *\r
+InternalAllocateZeroPool (\r
+   UINTN            AllocationSize\r
+  ) ;\r
+\r
+VOID *\r
+InternalAllocatePool (\r
+   UINTN            AllocationSize\r
+  );\r
+\r
+UINTN\r
+StrnLenS (\r
+   CONST CHAR16              *String,\r
+   UINTN                     MaxSize\r
+  );\r
+\r
+CHAR16\r
+InternalCharToUpper (\r
+        CHAR16                    Char\r
+  );\r
+\r
+INTN\r
+StrCmp (\r
+  CONST CHAR16              *FirstString,\r
+  CONST CHAR16              *SecondString\r
+  );\r
+\r
+UINT64\r
+SwapBytes64 (\r
+  UINT64                    Value\r
+  );\r
+\r
+UINT64\r
+InternalMathSwapBytes64 (\r
+  UINT64                    Operand\r
+  );\r
+\r
+RETURN_STATUS\r
+StrToIpv4Address (\r
+  CONST CHAR16       *String,\r
+  CHAR16             **EndPointer,\r
+  EFI_IPv4_ADDRESS       *Address,\r
+  UINT8              *PrefixLength\r
+  );\r
+\r
+RETURN_STATUS\r
+StrToIpv6Address (\r
+  CONST CHAR16       *String,\r
+  CHAR16             **EndPointer,\r
+  EFI_IPv6_ADDRESS       *Address,\r
+  UINT8              *PrefixLength\r
+  );\r
+\r
+RETURN_STATUS\r
+StrCpyS (\r
+  CHAR16       *Destination,\r
+  UINTN        DestMax,\r
+  CONST CHAR16 *Source\r
+  );\r
+\r
+RETURN_STATUS\r
+UnicodeStrToAsciiStrS (\r
+  CONST CHAR16              *Source,\r
+  CHAR8                     *Destination,\r
+  UINTN                     DestMax\r
+  );\r
+VOID *\r
+AllocatePool (\r
+  UINTN  AllocationSize\r
+  );\r
+\r
+UINT16\r
+WriteUnaligned16 (\r
+  UINT16                    *Buffer,\r
+  UINT16                    Value\r
+  );\r
+\r
+UINT16\r
+ReadUnaligned16 (\r
+  CONST UINT16              *Buffer\r
+  );\r
+\r
+VOID *\r
+AllocateZeroPool (\r
+  UINTN  AllocationSize\r
+  );\r
+\r
+BOOLEAN\r
+InternalIsHexaDecimalDigitCharacter (\r
+  CHAR16                    Char\r
+  );\r
+\r
+BOOLEAN\r
+InternalSafeStringIsOverlap (\r
+  IN VOID    *Base1,\r
+  IN UINTN   Size1,\r
+  IN VOID    *Base2,\r
+  IN UINTN   Size2\r
+  );\r
+\r
+BOOLEAN\r
+InternalSafeStringNoStrOverlap (\r
+  IN CHAR16  *Str1,\r
+  IN UINTN   Size1,\r
+  IN CHAR16  *Str2,\r
+  IN UINTN   Size2\r
+  );\r
+\r
+BOOLEAN\r
+IsHexStr (\r
+   CHAR16   *Str\r
+  );\r
+\r
+UINTN\r
+Strtoi (\r
+   CHAR16  *Str\r
+  );\r
+\r
+VOID\r
+Strtoi64 (\r
+    CHAR16  *Str,\r
+   UINT64  *Data\r
+  );\r
+\r
+VOID\r
+StrToAscii (\r
+       CHAR16 *Str,\r
+    CHAR8  **AsciiStr\r
+  );\r
+\r
+CHAR16 *\r
+SplitStr (\r
+    CHAR16 **List,\r
+       CHAR16 Separator\r
+  );\r
+\r
 /*++\r
 \r
 Routine Description:\r
-  Convert FileName to the long file path, which can support larger than 260 length. \r
+  Convert FileName to the long file path, which can support larger than 260 length.\r
 \r
 Arguments:\r
-  FileName         - FileName. \r
+  FileName         - FileName.\r
 \r
 Returns:\r
   LongFilePath      A pointer to the converted long file path.\r
-  \r
+\r
 --*/\r
 \r
 #ifdef __cplusplus\r
 }\r
 #endif\r
 \r
-#define ASSERT(x) assert(x)\r
-\r
 #ifdef __GNUC__\r
 #include <stdio.h>\r
 #include <sys/stat.h>\r