19 #ifndef GNASH_ACTION_BUFFER_H
20 #define GNASH_ACTION_BUFFER_H
25 #include <boost/noncopyable.hpp>
26 #include <boost/cstdint.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 reinterpret_cast<const unsigned char*
>(&m_buffer.at(pc));
107 if (pc + 1 >= m_buffer.size()) {
110 boost::int16_t ret = (m_buffer[pc] | (m_buffer[pc + 1] << 8));
118 return static_cast<boost::uint16_t
>(
read_int16(pc));
127 if (pc + 3 >= m_buffer.size()) {
131 boost::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 0;
159 if ( n < pool.size() )
return pool[n];
192 std::vector<boost::uint8_t> m_buffer;
195 typedef std::map<size_t, ConstantPool> PoolsMap;
196 mutable PoolsMap _pools;
210 #endif // GNASH_ACTION_BUFFER_H