%PDF- %PDF-
Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/v8/test/common/ |
Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/v8/test/common/streaming-helper.h |
// Copyright 2023 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_COMMON_STREAMING_HELPER_H_ #define V8_COMMON_STREAMING_HELPER_H_ #include "include/v8-script.h" namespace v8 { namespace internal { class TestSourceStream : public v8::ScriptCompiler::ExternalSourceStream { public: explicit TestSourceStream(const char** chunks) : chunks_(chunks), index_(0) {} size_t GetMoreData(const uint8_t** src) override { // Unlike in real use cases, this function will never block. if (chunks_[index_] == nullptr) { return 0; } // Copy the data, since the caller takes ownership of it. size_t len = strlen(chunks_[index_]); // We don't need to zero-terminate since we return the length. uint8_t* copy = new uint8_t[len]; memcpy(copy, chunks_[index_], len); *src = copy; ++index_; return len; } // Helper for constructing a string from chunks (the compilation needs it // too). static char* FullSourceString(const char** chunks) { size_t total_len = 0; for (size_t i = 0; chunks[i] != nullptr; ++i) { total_len += strlen(chunks[i]); } char* full_string = new char[total_len + 1]; size_t offset = 0; for (size_t i = 0; chunks[i] != nullptr; ++i) { size_t len = strlen(chunks[i]); memcpy(full_string + offset, chunks[i], len); offset += len; } full_string[total_len] = 0; return full_string; } private: const char** chunks_; unsigned index_; }; } // namespace internal } // namespace v8 #endif // V8_COMMON_STREAMING_HELPER_H_