// Copyright 2020 The MACE Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef MICRO_BASE_VALUE_TO_STR_H_ #define MICRO_BASE_VALUE_TO_STR_H_ #include namespace micro { namespace base { void ReverseInplace(char *start, char *end); // for uint64_t/uint32_t/uint16_t/uint8_t template char *ToString(T value, char *buffer, char *end) { char *start = buffer; end--; do { *buffer++ = '0' + (value % 10); value /= 10; } while (value > 0 && buffer < end); ReverseInplace(start, buffer); *buffer = '\0'; return buffer; } template<> char *ToString(int64_t value, char *buffer, char *end); template<> char *ToString(int32_t value, char *buffer, char *end); template<> char *ToString(int16_t value, char *buffer, char *end); template<> char *ToString(int8_t value, char *buffer, char *end); template<> char *ToString(const char *str, char *buffer, char *end); template<> char *ToString(float value, char *buffer, char *end); } // namespace base } // namespace micro #endif // MICRO_BASE_VALUE_TO_STR_H_