mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-03 12:21:23 +00:00
Add define/ifdef blocks, alternate sprintf implementation via FLATBUFFERS_PREFER_PRINTF [C++] (#4700)
* Add define/ifdef blocks for FLATBUFFERS_PREFER_PRINTF to avoid using std::*streams for idl_parser * Use string::size() as limit in snprintf * Refactored FLATBUFFERS_PREFER_PRINTF guarded feature into NumToStringImplWrapper around sprintf * Remove '.0' where not needed from IntToDigitCount * Remove leading dot from name in GetFullyQualifiedName when FLATBUFFERS_PREFER_PRINTF is enabled * Return string directly from conversion functions where possible when FLATBUFFERS_PREFER_PRINTF is enabled * Use string instead of stringstream for GetFullyQualifiedName * Revert removing leading dot from GetFullyQualifiedName, it does need to be there for parity with the stringstream implementation * Dot is single char in Namespace::GetFullyQualifiedName * Remove trailing (duplicate) null-byte from NumToStringImplWrapper when using FLATBUFFERS_PREFER_PRINTF. * Update preprocessor indenting (and use clang-format off/on) for FLATBUFFERS_PREFER_PRINTF * Reduce whitespace, unneeded braces in FLATBUFFERS_PREFER_PRINTF string width functions * Remove unneeded use of iostream from idl_parser.cpp, std::string is used instead * Tell snprintf to use the trailing null byte expected at the end of std::string buffer
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
a0a33d94a7
commit
7c1203d44c
@@ -15,8 +15,8 @@
|
||||
*/
|
||||
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <list>
|
||||
#include <string>
|
||||
|
||||
#include <math.h>
|
||||
|
||||
@@ -177,13 +177,16 @@ std::string Namespace::GetFullyQualifiedName(const std::string &name,
|
||||
size_t max_components) const {
|
||||
// Early exit if we don't have a defined namespace.
|
||||
if (components.empty() || !max_components) { return name; }
|
||||
std::stringstream stream;
|
||||
std::string stream_str;
|
||||
for (size_t i = 0; i < std::min(components.size(), max_components); i++) {
|
||||
if (i) { stream << "."; }
|
||||
stream << components[i];
|
||||
if (i) { stream_str += '.'; }
|
||||
stream_str += std::string(components[i]);
|
||||
}
|
||||
if (name.length()) stream << "." << name;
|
||||
return stream.str();
|
||||
if (name.length()) {
|
||||
stream_str += '.';
|
||||
stream_str += name;
|
||||
}
|
||||
return stream_str;
|
||||
}
|
||||
|
||||
// Declare tokens we'll use. Single character tokens are represented by their
|
||||
|
||||
Reference in New Issue
Block a user