diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-02-01 02:28:39 +0100 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2018-02-10 14:38:56 +0100 |
commit | 180af17b522f531eb15b917f4fde9570b6aa95ae (patch) | |
tree | efba443aa3cdad07701fc9e36a5cd39264dc9886 /src/string_decoder-inl.h | |
parent | de848ac1e0483327a2ce8716c3f8567eaeacb660 (diff) | |
download | node-new-180af17b522f531eb15b917f4fde9570b6aa95ae.tar.gz |
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.h | 38 |
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 0000000000..8a04211906 --- /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_ |