1*993b0882SAndroid Build Coastguard Worker /* 2*993b0882SAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project 3*993b0882SAndroid Build Coastguard Worker * 4*993b0882SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*993b0882SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*993b0882SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*993b0882SAndroid Build Coastguard Worker * 8*993b0882SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*993b0882SAndroid Build Coastguard Worker * 10*993b0882SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*993b0882SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*993b0882SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*993b0882SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*993b0882SAndroid Build Coastguard Worker * limitations under the License. 15*993b0882SAndroid Build Coastguard Worker */ 16*993b0882SAndroid Build Coastguard Worker 17*993b0882SAndroid Build Coastguard Worker #ifndef LIBTEXTCLASSIFIER_UTILS_STRINGS_NUMBERS_H_ 18*993b0882SAndroid Build Coastguard Worker #define LIBTEXTCLASSIFIER_UTILS_STRINGS_NUMBERS_H_ 19*993b0882SAndroid Build Coastguard Worker 20*993b0882SAndroid Build Coastguard Worker #include <string> 21*993b0882SAndroid Build Coastguard Worker 22*993b0882SAndroid Build Coastguard Worker #include "utils/base/integral_types.h" 23*993b0882SAndroid Build Coastguard Worker 24*993b0882SAndroid Build Coastguard Worker namespace libtextclassifier3 { 25*993b0882SAndroid Build Coastguard Worker 26*993b0882SAndroid Build Coastguard Worker // Parses an int32 from a C-style string. 27*993b0882SAndroid Build Coastguard Worker // 28*993b0882SAndroid Build Coastguard Worker // c_str should point to a zero-terminated array of chars that contains the 29*993b0882SAndroid Build Coastguard Worker // number representation as (a) "<radix-10-number>" (e.g., "721"), (b) 30*993b0882SAndroid Build Coastguard Worker // "0x<radix-16-number>" (e.g., "0xa1"), or (c) "0<radix-8-number>" (e.g., 31*993b0882SAndroid Build Coastguard Worker // "017201"). 32*993b0882SAndroid Build Coastguard Worker // 33*993b0882SAndroid Build Coastguard Worker // Stores parsed number into *value. Returns true on success, false on error. 34*993b0882SAndroid Build Coastguard Worker // Note: presence of extra characters after the number counts as an error: e.g., 35*993b0882SAndroid Build Coastguard Worker // parsing "123a" will return false due to the extra "a" (which is not a valid 36*993b0882SAndroid Build Coastguard Worker // radix-10 digit). Parsing a string that does not contain any digit (e.g., "") 37*993b0882SAndroid Build Coastguard Worker // is treated as an error: this function returns false. 38*993b0882SAndroid Build Coastguard Worker bool ParseInt32(const char *c_str, int32 *value); 39*993b0882SAndroid Build Coastguard Worker 40*993b0882SAndroid Build Coastguard Worker // Like ParseInt32, but for int64. 41*993b0882SAndroid Build Coastguard Worker bool ParseInt64(const char *c_str, int64 *value); 42*993b0882SAndroid Build Coastguard Worker 43*993b0882SAndroid Build Coastguard Worker // Like ParseInt32, but for double. 44*993b0882SAndroid Build Coastguard Worker bool ParseDouble(const char *c_str, double *value); 45*993b0882SAndroid Build Coastguard Worker 46*993b0882SAndroid Build Coastguard Worker // Converts an integer to string. Accepts (via implicit conversions) all common 47*993b0882SAndroid Build Coastguard Worker // int types. 48*993b0882SAndroid Build Coastguard Worker std::string IntToString(int64 input); 49*993b0882SAndroid Build Coastguard Worker 50*993b0882SAndroid Build Coastguard Worker } // namespace libtextclassifier3 51*993b0882SAndroid Build Coastguard Worker 52*993b0882SAndroid Build Coastguard Worker #endif // LIBTEXTCLASSIFIER_UTILS_STRINGS_NUMBERS_H_ 53