Viewing file: string_decoder.h (1.5 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#ifndef SRC_STRING_DECODER_H_ #define SRC_STRING_DECODER_H_
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
#include "node.h"
namespace node {
class StringDecoder { public: StringDecoder() { state_[kEncodingField] = BUFFER; } inline void SetEncoding(enum encoding encoding); inline enum encoding Encoding() const;
inline char* IncompleteCharacterBuffer(); inline unsigned MissingBytes() const; inline unsigned BufferedBytes() const;
// Decode a string from the specified encoding. // The value pointed to by `nread` will be modified to reflect that // less data may have been read because it ended on an incomplete character // and more data may have been read because a previously incomplete character // was finished. v8::MaybeLocal<v8::String> DecodeData(v8::Isolate* isolate, const char* data, size_t* nread); // Flush an incomplete character. For character encodings like UTF8 this // means printing replacement characters, buf for e.g. Base64 the returned // string contains more data. v8::MaybeLocal<v8::String> FlushData(v8::Isolate* isolate);
enum Fields { kIncompleteCharactersStart = 0, kIncompleteCharactersEnd = 4, kMissingBytes = 4, kBufferedBytes = 5, kEncodingField = 6, kNumFields = 7 };
private: uint8_t state_[kNumFields] = {}; };
} // namespace node
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
#endif // SRC_STRING_DECODER_H_
|