19 #ifndef GNASH_ACTION_BUFFER_H 20 #define GNASH_ACTION_BUFFER_H 25 #include <boost/noncopyable.hpp> 35 class movie_definition;
65 size_t size()
const {
return m_buffer.size(); }
69 if (off >= m_buffer.size()) {
77 std::string
disasm(
size_t pc)
const;
85 assert(pc <= m_buffer.size() );
86 if (pc == m_buffer.size())
89 "1 byte remains in the buffer"));
91 return reinterpret_cast<const char*
>(&m_buffer[pc]);
97 assert (pc < m_buffer.size());
98 return &m_buffer.at(pc);
107 if (pc + 1 >= m_buffer.size()) {
110 std::int16_t ret = (m_buffer[pc] | (m_buffer[pc + 1] << 8));
118 return static_cast<std::uint16_t
>(
read_int16(pc));
127 if (pc + 3 >= m_buffer.size()) {
131 std::int32_t val = m_buffer[pc]
132 | (m_buffer[pc + 1] << 8)
133 | (m_buffer[pc + 2] << 16)
134 | (m_buffer[pc + 3] << 24);
154 if ( _pools.empty() )
return nullptr;
159 if ( n < pool.size() )
return pool[n];
192 std::vector<std::uint8_t> m_buffer;
195 typedef std::map<size_t, ConstantPool> PoolsMap;
196 mutable PoolsMap _pools;
210 #endif // GNASH_ACTION_BUFFER_H int getDefinitionVersion() const
Return version of the SWF this action block was found in.
Definition: action_buffer.cpp:479
std::string disasm(size_t pc) const
Disassemble instruction at given offset and return as a string.
Definition: action_buffer.cpp:454
const char * read_string(size_t pc) const
Get a null-terminated string from given offset.
Definition: action_buffer.h:83
Client program's interface to the definition of a movie or sprite.
Definition: movie_definition.h:95
const char * dictionary_get(size_t n) const
Return a value from the constant pool.
Definition: action_buffer.h:152
action_buffer(const movie_definition &md)
Definition: action_buffer.cpp:40
Definition: GnashException.h:181
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
const movie_definition & getMovieDefinition() const
Definition: action_buffer.h:185
std::uint16_t read_uint16(size_t pc) const
read_int16 should check buffer boundaries.
Definition: action_buffer.h:116
Definition: GnashKey.h:160
std::int16_t read_int16(size_t pc) const
Get a signed integer value from given offset.
Definition: action_buffer.h:105
const unsigned char * getFramePointer(size_t pc) const
Get a pointer to the current instruction within the code.
Definition: action_buffer.h:95
#define _(String)
Definition: log.h:44
std::uint8_t operator[](size_t off) const
Definition: action_buffer.h:67
std::int32_t read_int32(size_t pc) const
Read a 32-bit integer starting at given offset.
Definition: action_buffer.h:125
void read(SWFStream &in, unsigned long endPos)
Read action bytes from input stream up to but not including endPos.
Definition: action_buffer.cpp:48
const ConstantPool & readConstantPool(size_t start_pc, size_t stop_pc) const
Read an SWF::ACTION_CONSTANTPOOL opcode and return as a dictionary.
Definition: action_buffer.cpp:101
double read_double_wacky(size_t pc) const
Read a 64-bit double starting at given offset.
Definition: action_buffer.cpp:467
float read_float_little(size_t pc) const
Read a little-endian 32-bit float starting at given offset.
Definition: action_buffer.cpp:461
A code segment.
Definition: action_buffer.h:49
SWF stream wrapper class.
Definition: SWFStream.h:58
size_t size() const
Definition: action_buffer.h:65
std::vector< const char * > ConstantPool
An indexed list of strings (must match the definition in action_buffer.h)
Definition: ConstantPool.h:27
const std::string & getDefinitionURL() const
Return url of the SWF this action block was found in.
Definition: action_buffer.cpp:473