ROSE 0.11.145.147
|
Length-prefixed string encoding scheme.
A string encoding where the octets for the characters are prefixed with an encoded length.
#include <Rose/BinaryAnalysis/String.h>
Public Types | |
typedef Sawyer::SharedPointer< LengthEncodedString > | Ptr |
Shared ownership pointer to a LengthEncodedString. | |
Public Types inherited from Rose::BinaryAnalysis::Strings::StringEncodingScheme | |
typedef Sawyer::SharedPointer< StringEncodingScheme > | Ptr |
Shared ownership pointer to a StringEncodingScheme. | |
Public Member Functions | |
virtual StringEncodingScheme::Ptr | clone () const override |
Create a new copy of this encoder. | |
virtual std::string | name () const override |
Name of encoding. | |
virtual Octets | encode (const CodePoints &) override |
Encode a string into a sequence of octets. | |
virtual State | decode (Octet) override |
Decode one octet. | |
virtual void | reset () override |
Reset the state machine to an initial state. | |
Sawyer::Optional< size_t > | declaredLength () const |
Returns the declared length, if any. | |
LengthEncodingScheme::Ptr | lengthEncodingScheme () const |
Property: Lengh encoding scheme. | |
void | lengthEncodingScheme (const LengthEncodingScheme::Ptr &les) |
Property: Lengh encoding scheme. | |
Public Member Functions inherited from Rose::BinaryAnalysis::Strings::StringEncodingScheme | |
State | state () const |
Decoder state. | |
CodePoints | consume () |
Consume pending decoded code points. | |
const CodePoints & | codePoints () const |
Return pending decoded code points without consuming them. | |
size_t | length () const |
Number of code points decoded since reset. | |
CharacterEncodingForm::Ptr | characterEncodingForm () const |
Property: Character encoding format. | |
void | characterEncodingForm (const CharacterEncodingForm::Ptr &cef) |
Property: Character encoding format. | |
CharacterEncodingScheme::Ptr | characterEncodingScheme () const |
Property: Character encoding scheme. | |
void | characterEncodingScheme (const CharacterEncodingScheme::Ptr &ces) |
Property: Character encoding scheme. | |
CodePointPredicate::Ptr | codePointPredicate () const |
Property: Code point predicate. | |
void | codePointPredicate (const CodePointPredicate::Ptr &cpp) |
Property: Code point predicate. | |
Public Member Functions inherited from Sawyer::SharedObject | |
SharedObject () | |
Default constructor. | |
SharedObject (const SharedObject &) | |
Copy constructor. | |
virtual | ~SharedObject () |
Virtual destructor. | |
SharedObject & | operator= (const SharedObject &) |
Assignment. | |
Static Public Member Functions | |
static Ptr | instance (const LengthEncodingScheme::Ptr &les, const CharacterEncodingForm::Ptr &cef, const CharacterEncodingScheme::Ptr &ces, const CodePointPredicate::Ptr &cpp) |
Protected Member Functions | |
LengthEncodedString (const LengthEncodingScheme::Ptr &les, const CharacterEncodingForm::Ptr &cef, const CharacterEncodingScheme::Ptr &ces, const CodePointPredicate::Ptr &cpp) | |
Protected Member Functions inherited from Rose::BinaryAnalysis::Strings::StringEncodingScheme | |
StringEncodingScheme (const CharacterEncodingForm::Ptr &cef, const CharacterEncodingScheme::Ptr &ces, const CodePointPredicate::Ptr &cpp) | |
Additional Inherited Members | |
Protected Attributes inherited from Rose::BinaryAnalysis::Strings::StringEncodingScheme | |
State | state_ = INITIAL_STATE |
CodePoints | codePoints_ |
size_t | nCodePoints_ = 0 |
CharacterEncodingForm::Ptr | cef_ |
CharacterEncodingScheme::Ptr | ces_ |
CodePointPredicate::Ptr | cpp_ |
typedef Sawyer::SharedPointer<LengthEncodedString> Rose::BinaryAnalysis::Strings::LengthEncodedString::Ptr |
Shared ownership pointer to a LengthEncodedString.
See Shared ownership.
|
inlineprotected |
|
inlinestatic |
|
inlineoverridevirtual |
Create a new copy of this encoder.
Implements Rose::BinaryAnalysis::Strings::StringEncodingScheme.
|
overridevirtual |
Name of encoding.
Implements Rose::BinaryAnalysis::Strings::StringEncodingScheme.
|
overridevirtual |
Encode a string into a sequence of octets.
Implements Rose::BinaryAnalysis::Strings::StringEncodingScheme.
Decode one octet.
Processes a single octet and updates the decoder state machine. Returns the new state. See documentation for Strings::State for restrictions on state transitions.
Implements Rose::BinaryAnalysis::Strings::StringEncodingScheme.
|
overridevirtual |
Reset the state machine to an initial state.
Reimplemented from Rose::BinaryAnalysis::Strings::StringEncodingScheme.
|
inline |
Returns the declared length, if any.
The declared length is the value of the decoded length prefix, not necessarily the number of code points that have been decoded. This can be called from any state except it will always return nothing in the INITIAL_STATE. Therefore, this method should be called prior to the consume call.
|
inline |
|
inline |