%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// Bridges V8 Inspector generated code with the std::string used by the Node // Compare to V8 counterpart - deps/v8/src/inspector/string-util.h #ifndef SRC_INSPECTOR_NODE_STRING_H_ #define SRC_INSPECTOR_NODE_STRING_H_ #include "util.h" #include "v8-inspector.h" #include <cstring> #include <sstream> #include <string> namespace node { namespace inspector { namespace protocol { class Value; using String = std::string; using StringBuilder = std::ostringstream; using ProtocolMessage = std::string; namespace StringUtil { // NOLINTNEXTLINE(runtime/references) This is V8 API... inline void builderAppend(StringBuilder& builder, char c) { builder.put(c); } // NOLINTNEXTLINE(runtime/references) inline void builderAppend(StringBuilder& builder, const char* value, size_t length) { builder.write(value, length); } // NOLINTNEXTLINE(runtime/references) inline void builderAppend(StringBuilder& builder, const char* value) { builderAppend(builder, value, std::strlen(value)); } // NOLINTNEXTLINE(runtime/references) inline void builderAppend(StringBuilder& builder, const String& string) { builder << string; } // NOLINTNEXTLINE(runtime/references) inline void builderReserve(StringBuilder& builder, size_t) { // ostringstream does not have a counterpart } inline String substring(const String& string, size_t start, size_t count) { return string.substr(start, count); } inline String fromInteger(int n) { return std::to_string(n); } inline String builderToString(const StringBuilder& builder) { return builder.str(); } inline size_t find(const String& string, const char* substring) { return string.find(substring); } String fromDouble(double d); double toDouble(const char* buffer, size_t length, bool* ok); String StringViewToUtf8(v8_inspector::StringView view); // NOLINTNEXTLINE(runtime/references) void builderAppendQuotedString(StringBuilder& builder, const String&); std::unique_ptr<Value> parseJSON(const String&); std::unique_ptr<Value> parseJSON(v8_inspector::StringView view); std::unique_ptr<Value> parseMessage(const std::string& message, bool binary); ProtocolMessage jsonToMessage(String message); ProtocolMessage binaryToMessage(std::vector<uint8_t> message); String fromUTF8(const uint8_t* data, size_t length); String fromUTF16(const uint16_t* data, size_t length); const uint8_t* CharactersUTF8(const String& s); size_t CharacterCount(const String& s); // Unimplemented. The generated code will fall back to CharactersUTF8(). inline uint8_t* CharactersLatin1(const String& s) { return nullptr; } inline const uint16_t* CharactersUTF16(const String& s) { return nullptr; } extern size_t kNotFound; } // namespace StringUtil // A read-only sequence of uninterpreted bytes with reference-counted storage. // Though the templates for generating the protocol bindings reference // this type, js_protocol.pdl doesn't have a field of type 'binary', so // therefore it's unnecessary to provide an implementation here. class Binary { public: const uint8_t* data() const { UNREACHABLE(); } size_t size() const { UNREACHABLE(); } String toBase64() const { UNREACHABLE(); } static Binary fromBase64(const String& base64, bool* success) { UNREACHABLE(); } static Binary fromSpan(const uint8_t* data, size_t size) { UNREACHABLE(); } }; } // namespace protocol } // namespace inspector } // namespace node #endif // SRC_INSPECTOR_NODE_STRING_H_