blob: 99e7187de4e5d258e07853215b92bc0f2e8c1e52 [file] [log] [blame]
Jamie Madill8c5aeb62015-05-21 08:17:18 -04001//
2// Copyright 2015 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6// string_utils:
7// String helper functions.
8//
9
10#ifndef LIBANGLE_STRING_UTILS_H_
11#define LIBANGLE_STRING_UTILS_H_
12
13#include <string>
14#include <vector>
15
Jamie Madill8b9b7922016-05-19 13:13:37 -040016#include "common/Optional.h"
17
Jamie Madill8c5aeb62015-05-21 08:17:18 -040018namespace angle
19{
20
Corentin Wallez47ac69c2015-11-24 11:15:57 -050021extern const char kWhitespaceASCII[];
22
23enum WhitespaceHandling
24{
25 KEEP_WHITESPACE,
26 TRIM_WHITESPACE,
27};
28
29enum SplitResult
30{
31 SPLIT_WANT_ALL,
32 SPLIT_WANT_NONEMPTY,
33};
34
35std::vector<std::string> SplitString(const std::string &input,
36 const std::string &delimiters,
37 WhitespaceHandling whitespace,
38 SplitResult resultType);
Jamie Madill8c5aeb62015-05-21 08:17:18 -040039
40void SplitStringAlongWhitespace(const std::string &input,
41 std::vector<std::string> *tokensOut);
42
Corentin Wallez47ac69c2015-11-24 11:15:57 -050043std::string TrimString(const std::string &input, const std::string &trimChars);
44
Jamie Madill8c5aeb62015-05-21 08:17:18 -040045bool HexStringToUInt(const std::string &input, unsigned int *uintOut);
46
47bool ReadFileToString(const std::string &path, std::string *stringOut);
48
Jamie Madill8b9b7922016-05-19 13:13:37 -040049Optional<std::vector<wchar_t>> WidenString(size_t length, const char *cString);
Jamie Madill8c5aeb62015-05-21 08:17:18 -040050}
51
52#endif // LIBANGLE_STRING_UTILS_H_