Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
fx_memcpy_wrappers.h
Go to the documentation of this file.
1// Copyright 2023 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#ifndef CORE_FXCRT_FX_MEMCPY_WRAPPERS_H_
8#define CORE_FXCRT_FX_MEMCPY_WRAPPERS_H_
9
10#include <stddef.h>
11#include <stdint.h>
12#include <string.h>
13#include <wchar.h>
14
15#include "core/fxcrt/compiler_specific.h"
16
17// Wrappers to avoid the zero-length w/NULL arg gotchas in C spec. Use these
18// if there is a possibility of a NULL arg (or a bad arg) that is to be ignored
19// when the length is zero, otherwise just call the C Run Time Library function
20// itself.
21UNSAFE_BUFFER_USAGE inline int FXSYS_memcmp(const void* ptr1,
22 const void* ptr2,
23 size_t len) {
24 return len ? memcmp(ptr1, ptr2, len) : 0;
25}
26
27UNSAFE_BUFFER_USAGE inline int FXSYS_wmemcmp(const wchar_t* ptr1,
28 const wchar_t* ptr2,
29 size_t len) {
30 return len ? wmemcmp(ptr1, ptr2, len) : 0;
31}
32
33UNSAFE_BUFFER_USAGE inline void* FXSYS_memcpy(void* ptr1,
34 const void* ptr2,
35 size_t len) {
36 return len ? memcpy(ptr1, ptr2, len) : ptr1;
37}
38
39UNSAFE_BUFFER_USAGE inline wchar_t* FXSYS_wmemcpy(wchar_t* ptr1,
40 const wchar_t* ptr2,
41 size_t len) {
42 return len ? wmemcpy(ptr1, ptr2, len) : ptr1;
43}
44
45UNSAFE_BUFFER_USAGE inline void* FXSYS_memmove(void* ptr1,
46 const void* ptr2,
47 size_t len) {
48 return len ? memmove(ptr1, ptr2, len) : ptr1;
49}
50
51UNSAFE_BUFFER_USAGE inline wchar_t* FXSYS_wmemmove(wchar_t* ptr1,
52 const wchar_t* ptr2,
53 size_t len) {
54 return len ? wmemmove(ptr1, ptr2, len) : ptr1;
55}
56
57UNSAFE_BUFFER_USAGE inline void* FXSYS_memset(void* ptr1, int val, size_t len) {
58 return len ? memset(ptr1, val, len) : ptr1;
59}
60
61UNSAFE_BUFFER_USAGE inline wchar_t* FXSYS_wmemset(wchar_t* ptr1,
62 int val,
63 size_t len) {
64 return len ? wmemset(ptr1, val, len) : ptr1;
65}
66
67UNSAFE_BUFFER_USAGE inline const void* FXSYS_memchr(const void* ptr1,
68 int val,
69 size_t len) {
70 return len ? memchr(ptr1, val, len) : nullptr;
71}
72
73UNSAFE_BUFFER_USAGE inline const wchar_t* FXSYS_wmemchr(const wchar_t* ptr1,
74 wchar_t val,
75 size_t len) {
76 return len ? wmemchr(ptr1, val, len) : nullptr;
77}
78
79#endif // CORE_FXCRT_FX_MEMCPY_WRAPPERS_H_
#define DCHECK
Definition check.h:33
#define CHECK_EQ(x, y)
Definition check_op.h:10
#define UNSAFE_BUFFER_USAGE
#define UNSAFE_TODO(...)
void CRYPT_AESEncrypt(CRYPT_aes_context *ctx, pdfium::span< uint8_t > dest, pdfium::span< const uint8_t > src)
#define MOVEWORD(i)
#define LASTWORD(i)
#define FMAKEWORD(i)
void CRYPT_AESSetIV(CRYPT_aes_context *ctx, const uint8_t *iv)
#define ADD_ROUND_KEY_4()
void CRYPT_AESDecrypt(CRYPT_aes_context *ctx, uint8_t *dest, const uint8_t *src, uint32_t size)
#define mulby2(x)
void CRYPT_AESSetKey(CRYPT_aes_context *ctx, const uint8_t *key, uint32_t keylen)
UNSAFE_BUFFER_USAGE wchar_t * FXSYS_wmemcpy(wchar_t *ptr1, const wchar_t *ptr2, size_t len)
UNSAFE_BUFFER_USAGE const wchar_t * FXSYS_wmemchr(const wchar_t *ptr1, wchar_t val, size_t len)
UNSAFE_BUFFER_USAGE void * FXSYS_memset(void *ptr1, int val, size_t len)
UNSAFE_BUFFER_USAGE int FXSYS_memcmp(const void *ptr1, const void *ptr2, size_t len)
UNSAFE_BUFFER_USAGE int FXSYS_wmemcmp(const wchar_t *ptr1, const wchar_t *ptr2, size_t len)
UNSAFE_BUFFER_USAGE void * FXSYS_memmove(void *ptr1, const void *ptr2, size_t len)
UNSAFE_BUFFER_USAGE wchar_t * FXSYS_wmemset(wchar_t *ptr1, int val, size_t len)
UNSAFE_BUFFER_USAGE void * FXSYS_memcpy(void *ptr1, const void *ptr2, size_t len)
UNSAFE_BUFFER_USAGE wchar_t * FXSYS_wmemmove(wchar_t *ptr1, const wchar_t *ptr2, size_t len)
UNSAFE_BUFFER_USAGE const void * FXSYS_memchr(const void *ptr1, int val, size_t len)
void PutUInt32MSBFirst(uint32_t value, pdfium::span< uint8_t, 4 > span)
Definition byteorder.h:116