Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-02-01 04:28:39 +0300
committerRuben Bridgewater <ruben@bridgewater.de>2018-02-10 16:38:56 +0300
commit180af17b522f531eb15b917f4fde9570b6aa95ae (patch)
treeefba443aa3cdad07701fc9e36a5cd39264dc9886 /src/string_decoder-inl.h
parentde848ac1e0483327a2ce8716c3f8567eaeacb660 (diff)
string_decoder: reimplement in C++
Implement string decoder in C++. The perks are a decent speed boost (for decoding, whereas creation show some performance degradation), that this can now be used more easily to add native decoding support to C++ streams and (arguably) more readable variable names. PR-URL: https://github.com/nodejs/node/pull/18537 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'src/string_decoder-inl.h')
-rw-r--r--src/string_decoder-inl.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/string_decoder-inl.h b/src/string_decoder-inl.h
new file mode 100644
index 00000000000..8a04211906f
--- /dev/null
+++ b/src/string_decoder-inl.h
@@ -0,0 +1,38 @@
+#ifndef SRC_STRING_DECODER_INL_H_
+#define SRC_STRING_DECODER_INL_H_
+
+#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
+
+#include "string_decoder.h"
+#include "util.h"
+
+namespace node {
+
+void StringDecoder::SetEncoding(enum encoding encoding) {
+ state_[kBufferedBytes] = 0;
+ state_[kMissingBytes] = 0;
+ state_[kEncodingField] = encoding;
+}
+
+enum encoding StringDecoder::Encoding() const {
+ return static_cast<enum encoding>(state_[kEncodingField]);
+}
+
+unsigned StringDecoder::BufferedBytes() const {
+ return state_[kBufferedBytes];
+}
+
+unsigned StringDecoder::MissingBytes() const {
+ return state_[kMissingBytes];
+}
+
+char* StringDecoder::IncompleteCharacterBuffer() {
+ return reinterpret_cast<char*>(state_ + kIncompleteCharactersStart);
+}
+
+
+} // namespace node
+
+#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
+
+#endif // SRC_STRING_DECODER_INL_H_