/** @file
  Module to rewrite stdlib references within Oniguruma
  (C) Copyright 2014-2021 Hewlett Packard Enterprise Development LP
  Copyright (c) 2020, Intel Corporation. All rights reserved.
  Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef ONIGURUMA_UEFI_PORT_H
#define ONIGURUMA_UEFI_PORT_H
#include 
#include 
#include 
#include 
#include 
#define ONIG_NO_STANDARD_C_HEADERS
#define ONIG_NO_PRINT
#define P_(args)  args
#define INT_MAX    0x7FFFFFFF
#define LONG_MAX   0x7FFFFFFF
#define UINT_MAX   0xFFFFFFFF
#define ULONG_MAX  0xFFFFFFFF
#define SIZEOF_LONG       4
#define SIZEOF_LONG_LONG  8
typedef UINTN   size_t;
typedef UINT32  uint32_t;
typedef INTN    intptr_t;
#ifndef offsetof
#define offsetof  OFFSET_OF
#endif
#if defined (MDE_CPU_IA32) || defined (MDE_CPU_ARM) || defined (MDE_CPU_EBC)
#define SIZEOF_VOIDP  4
#else
#define SIZEOF_VOIDP  8
#endif
#define calloc(n, s)                    AllocateZeroPool((n)*(s))
#define xmemmove(Dest, Src, Length)     CopyMem(Dest,Src,Length)
#define xmemcpy(Dest, Src, Length)      CopyMem(Dest,Src,Length)
#define xmemset(Buffer, Value, Length)  SetMem(Buffer,Length,Value)
#define va_init_list(a, b)  VA_START(a,b)
#define va_list  VA_LIST
#define va_arg(a, b)  VA_ARG(a,b)
#define va_end(a)     VA_END(a)
#define va_start  VA_START
#define FILE    VOID
#define stdout  NULL
#define fprintf(...)
#define fputs(a, b)
#define vsnprintf   (int)AsciiVSPrint
#define _vsnprintf  vsnprintf
#define xsnprintf   sprintf_s
#define xvsnprintf  vsnprintf
#define alloca      malloc
#define setlocale(a, b)
#define LC_ALL  0
#define UCHAR_MAX        255
#define MAX_STRING_SIZE  0x1000
#define strlen_s(String, MaxSize)              AsciiStrnLenS (String, MaxSize)
#define xstrncpy(Dest, Src, MaxSize)           strcat_s(Dest,MaxSize,Src)
#define xstrcat(Dest, Src, MaxSize)            strcat(Dest,Src,MaxSize)
#define strcat(Dest, Src, MaxSize)             strcat_s(Dest,MaxSize,Src)
#define strcat_s(Dest, MaxSize, Src)           AsciiStrCatS (Dest, MaxSize, Src)
#define strncpy_s(Dest, MaxSize, Src, Length)  AsciiStrnCpyS (Dest, MaxSize, Src, Length)
#define strcmp  OnigStrCmp
int
OnigStrCmp (
  const char  *Str1,
  const char  *Str2
  );
int EFIAPI
sprintf_s (
  char        *str,
  size_t      sizeOfBuffer,
  char const  *fmt,
  ...
  );
int
strlen (
  const char  *str
  );
void *
malloc (
  size_t  size
  );
void *
realloc (
  void    *ptr,
  size_t  size
  );
#if !defined (MDE_CPU_ARM)
void *
memcpy (
  void          *dest,
  const void    *src,
  unsigned int  count
  );
#endif
void *
memset (
  void          *dest,
  int           ch,
  unsigned int  count
  );
void
free (
  void  *ptr
  );
#define exit(n)  ASSERT(FALSE);
#endif // !ONIGURUMA_UEFI_PORT_H