blob: e1a69e8906c42b78e723d974ade9a91ab5095102 [file] [log] [blame]
Ben Murdochf3b273f2017-01-17 12:11:28 +00001// Copyright 2016 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_INSPECTOR_STRINGUTIL_H_
6#define V8_INSPECTOR_STRINGUTIL_H_
7
8#include "src/base/macros.h"
9#include "src/inspector/string-16.h"
10
11#include "include/v8-inspector.h"
12
13namespace v8_inspector {
14
15namespace protocol {
16
17class Value;
18
19using String = v8_inspector::String16;
20using StringBuilder = v8_inspector::String16Builder;
21
22class StringUtil {
23 public:
24 static String substring(const String& s, size_t pos, size_t len) {
25 return s.substring(pos, len);
26 }
27 static String fromInteger(int number) { return String::fromInteger(number); }
28 static String fromInteger(size_t number) {
29 return String::fromInteger(number);
30 }
31 static String fromDouble(double number) { return String::fromDouble(number); }
32 static const size_t kNotFound = String::kNotFound;
33 static void builderReserve(StringBuilder& builder, size_t capacity) {
34 builder.reserveCapacity(capacity);
35 }
36};
37
38std::unique_ptr<protocol::Value> parseJSON(const StringView& json);
39std::unique_ptr<protocol::Value> parseJSON(const String16& json);
40
41} // namespace protocol
42
Ben Murdochf3b273f2017-01-17 12:11:28 +000043v8::Local<v8::String> toV8String(v8::Isolate*, const String16&);
44v8::Local<v8::String> toV8StringInternalized(v8::Isolate*, const String16&);
45v8::Local<v8::String> toV8StringInternalized(v8::Isolate*, const char*);
46v8::Local<v8::String> toV8String(v8::Isolate*, const StringView&);
47// TODO(dgozman): rename to toString16.
48String16 toProtocolString(v8::Local<v8::String>);
49String16 toProtocolStringWithTypeCheck(v8::Local<v8::Value>);
50String16 toString16(const StringView&);
51StringView toStringView(const String16&);
52bool stringViewStartsWith(const StringView&, const char*);
53
54class StringBufferImpl : public StringBuffer {
55 public:
56 // Destroys string's content.
57 static std::unique_ptr<StringBufferImpl> adopt(String16&);
58 const StringView& string() override { return m_string; }
59
60 private:
61 explicit StringBufferImpl(String16&);
62 String16 m_owner;
63 StringView m_string;
64
65 DISALLOW_COPY_AND_ASSIGN(StringBufferImpl);
66};
67
68} // namespace v8_inspector
69
70#endif // V8_INSPECTOR_STRINGUTIL_H_