Files
react-native/ReactCommon/react/renderer/core/RawPropsKey.cpp
T
Andrew Coates 81c895fb3f Fix various C++ warnings (#31002)
Summary:
Fix warnings about implicit type truncation.

## Changelog

[Internal] [Fixed] - Fix various C++ warnings

Pull Request resolved: https://github.com/facebook/react-native/pull/31002

Test Plan:
Almost all the changes here are simply making explicit conversions which are already occurring.  With the exception of a couple of constants being changed from doubles to floats.

With these changes I am able to remove a bunch of warning suppressions in react-native-windows.

Reviewed By: shergin

Differential Revision: D26900502

Pulled By: rozele

fbshipit-source-id: d5e415282815c2212a840a863713287bbf118c10
2021-03-10 12:39:12 -08:00

66 lines
1.7 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "RawPropsKey.h"
#include <cassert>
#include <cstring>
#include <react/debug/react_native_assert.h>
#include <react/renderer/core/RawPropsPrimitives.h>
namespace facebook {
namespace react {
void RawPropsKey::render(char *buffer, RawPropsPropNameLength *length)
const noexcept {
*length = 0;
// Prefix
if (prefix) {
auto prefixLength =
static_cast<RawPropsPropNameLength>(std::strlen(prefix));
std::memcpy(buffer, prefix, prefixLength);
*length = prefixLength;
}
// Name
auto nameLength = static_cast<RawPropsPropNameLength>(std::strlen(name));
std::memcpy(buffer + *length, name, nameLength);
*length += nameLength;
// Suffix
if (suffix) {
auto suffixLength =
static_cast<RawPropsPropNameLength>(std::strlen(suffix));
std::memcpy(buffer + *length, suffix, suffixLength);
*length += suffixLength;
}
react_native_assert(*length < kPropNameLengthHardCap);
}
RawPropsKey::operator std::string() const noexcept {
char buffer[kPropNameLengthHardCap];
RawPropsPropNameLength length = 0;
render(buffer, &length);
react_native_assert(length < kPropNameLengthHardCap);
return std::string{buffer, length};
}
bool operator==(RawPropsKey const &lhs, RawPropsKey const &rhs) noexcept {
// Note: We check the name first.
return lhs.name == rhs.name && lhs.prefix == rhs.prefix &&
lhs.suffix == rhs.suffix;
}
bool operator!=(RawPropsKey const &lhs, RawPropsKey const &rhs) noexcept {
return !(lhs == rhs);
}
} // namespace react
} // namespace facebook