Gnash  0.8.11dev
AbcBlock.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012
3 // Free Software Foundation, Inc.
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 
19 // The AS3 abc block format reader.
20 //
21 
22 #ifndef GNASH_ABC_BLOCK_H
23 #define GNASH_ABC_BLOCK_H
24 
25 #include "string_table.h"
26 #include "MultiName.h"
27 #include "Namespace.h"
28 #include "as_value.h"
29 
30 #include <vector>
31 #include <string>
32 #include <stdexcept>
33 
34 namespace gnash {
35  namespace abc {
36  class AbcBlock;
37  class Machine;
38  class Class;
39  class Method;
40  }
41  class SWFStream; // for read signature
42  class ClasstHierarchy;
43 }
44 
45 namespace gnash {
46 
48 namespace abc {
49 
51 //
56 //
59 //
68 //
71 class Trait
72 {
73 public:
74 
75  enum Kind
76  {
77  KIND_SLOT = 0,
83  KIND_FUNCTION = 5
84  };
85 
87  :
88  _hasValue(false),
89  _kind(KIND_SLOT),
90  _slotID(0),
91  _typeIndex(0),
92  _classInfoIndex(0),
93  _value(),
94  _name(0),
95  _globalName(),
96  _namespace(0),
97  _method(0),
98  _valueSet(false),
99  _classTarget(0),
100  _methodTarget(0),
101  _static(false)
102  {}
103 
104  bool read(SWFStream* in, AbcBlock *block);
105 
106  bool finalize(AbcBlock* block, abc::Class* cl, bool do_static);
107 
108  bool finalize_mbody(AbcBlock* block, Method* m);
109 
110  void set_target(abc::Class* cl, bool do_static) {
111  _classTarget = cl;
112  _static = do_static;
113  }
114 
115  void set_target(Method *m) {
116  _classTarget = 0;
117  _methodTarget = m;
118  }
119 
120  bool finalize(AbcBlock* block)
121  {
122  if (_classTarget) {
123  return finalize(block, _classTarget, _static);
124  }
125  return finalize_mbody(block, _methodTarget);
126  }
127 
128 private:
129 
130  friend class AbcBlock;
131 
132  bool _hasValue;
133  Kind _kind;
134  std::uint32_t _slotID;
135  std::uint32_t _typeIndex;
136  std::uint32_t _classInfoIndex;
137  as_value _value;
138 
139  URI _name;
140  string_table::key _globalName;
141 
142  Namespace* _namespace;
143  Method* _method;
144  bool _valueSet;
145 
146  abc::Class* _classTarget;
147  Method* _methodTarget;
148  bool _static;
149 
150 };
151 
153 std::ostream& operator<<(std::ostream& o, const Trait::Kind k);
154 
155 namespace {
156 
157 template<typename T>
158 inline void checkBounds(size_t i, const T& container)
159 {
160  if (i >= container.size()) {
161  throw std::range_error("Attempt to access pool out of range");
162  }
163 }
164 
165 }
166 
167 
169 //
173 //
176 //
185 //
187 //
195 //
197 //
202 //
208 class AbcBlock
209 {
210 public:
211 
213  {
214  PRIVATE_NS = 0x05,
215  CONSTANT_NS = 0x08,
216  PACKAGE_NS = 0x16,
218  PROTECTED_NS = 0x18,
219  EXPLICIT_NS = 0x19,
220  STATIC_PROTECTED_NS = 0x1A
221  };
222 
224  {
225  METHOD_ARGS = 0x01,
227  METHOD_MORE = 0x04,
232  METHOD_ARG_NAMES = 0x80
233  };
234 
236  {
241  INSTANCE_PROTECTED_NS = 0x08
242  };
243 
245  {
246  POOL_STRING = 0x01,
247  POOL_INTEGER = 0x03,
249  POOL_DOUBLE = 0x06,
251  POOL_FALSE = 0x0A,
252  POOL_TRUE = 0x0B,
253  POOL_NULL = 0x0C
254  };
255 
256  typedef std::vector<Namespace*> NamespaceSet;
257 
258  AbcBlock();
259 
261 
262  abc::Class* locateClass(const std::string& className);
263 
264  bool read(SWFStream& in);
265 
266  void update_global_name(unsigned int multiname_index);
267 
269  //
271  const std::vector<abc::Class*>& scripts() const {
272  return _scripts;
273  }
274 
275  std::uint32_t uIntegerPoolAt(size_t i) const {
276  checkBounds(i, _uIntegerPool);
277  return _uIntegerPool[i];
278  }
279 
280  const std::string& stringPoolAt(size_t i) const {
281  checkBounds(i, _stringPool);
282  return _stringPool[i];
283  }
284 
285  std::int32_t integerPoolAt(size_t i) const {
286  checkBounds(i, _integerPool);
287  return _integerPool[i];
288  }
289 
290  double doublePoolAt(size_t i) const {
291  checkBounds(i, _doublePool);
292  return _doublePool[i];
293  }
294 
295  Method* methodPoolAt(size_t i) const {
296  checkBounds(i, _methods);
297  return _methods[i];
298  }
299 
300  MultiName multinamePoolAt(size_t i) const {
301  checkBounds(i, _multinamePool);
302  return _multinamePool[i];
303  }
304 
305  abc::Class* classPoolAt(size_t i) const {
306  checkBounds(i, _classes);
307  return _classes[i];
308  }
309 
310  Namespace* namespacePoolAt(size_t i) const {
311  checkBounds(i, _namespacePool);
312  return _namespacePool[i];
313  }
314 
315  void prepare(Machine* mach);
316 
317 private:
318 
319  friend class abc::Trait;
320 
321  bool pool_value(std::uint32_t index, PoolConstant type, as_value &v);
322 
323  bool read_version();
324  bool read_integer_constants();
325  bool read_unsigned_integer_constants();
326  bool read_double_constants();
327  bool read_string_constants();
328  bool read_namespaces();
329  bool read_namespace_sets();
330  bool read_multinames();
331  bool read_method_infos();
332  bool skip_metadata();
333  bool read_instances();
334  bool read_classes();
335  bool read_scripts();
336  bool read_method_bodies();
337 
338  void check_multiname_name(std::uint32_t name);
339 
340  void check_multiname_namespace(std::uint32_t ns);
341 
342  void check_multiname_namespaceset(std::uint32_t nsset);
343 
344  void setMultinameNames(MultiName *n, abc::URI ABCName);
345 
346  void setNamespaceURI(Namespace *ns, abc::URI ABCName);
347 
348  std::vector<std::int32_t> _integerPool;
349  std::vector<std::uint32_t> _uIntegerPool;
350  std::vector<double> _doublePool;
351  std::vector<std::string> _stringPool;
352  std::vector<Namespace*> _namespacePool;
353  std::vector<NamespaceSet> _namespaceSetPool;
354  std::vector<Method*> _methods;
355  std::vector<MultiName> _multinamePool;
356  std::vector<Class*> _classes;
357  std::vector<Class*> _scripts;
358 
359  string_table* _stringTable;
360  SWFStream* _stream; // Not stored beyond one read.
361 
362  abc::Class *mTheObject;
363  ClassHierarchy *mCH;
364 
365  std::uint32_t mVersion;
366 
367 
368 };
369 
370 std::ostream& operator<<(std::ostream& o, AbcBlock::NamespaceConstant c);
371 std::ostream& operator<<(std::ostream& o, AbcBlock::MethodConstant c);
372 std::ostream& operator<<(std::ostream& o, AbcBlock::InstanceConstant c);
373 std::ostream& operator<<(std::ostream& o, AbcBlock::PoolConstant c);
374 
375 } // namespace abc
376 } // namespace gnash
377 
378 
379 #endif
380 
action_buffer.h
gnash::abc::Class::getName
string_table::key getName() const
The global name of the class.
Definition: Class.h:182
gnash::abc::AbcBlock::INSTANCE_INTERFACE
@ INSTANCE_INTERFACE
Definition: AbcBlock.h:239
gnash::abc::Trait::KIND_CLASS
@ KIND_CLASS
Definition: AbcBlock.h:82
gnash::abc::Trait::KIND_FUNCTION
@ KIND_FUNCTION
Definition: AbcBlock.h:83
gnash::abc::Trait::finalize
bool finalize(AbcBlock *block)
Definition: AbcBlock.h:120
gnash::abc::AbcBlock::STATIC_PROTECTED_NS
@ STATIC_PROTECTED_NS
Definition: AbcBlock.h:220
gnash::abc::AbcBlock::PRIVATE_NS
@ PRIVATE_NS
Definition: AbcBlock.h:214
gnash::abc::Trait
Class describing a static property.
Definition: AbcBlock.h:72
gnash::abc::AbcBlock::POOL_NULL
@ POOL_NULL
Definition: AbcBlock.h:253
string_table.h
name
std::string name
Definition: LocalConnection_as.cpp:149
gnash::abc::Class::setPrototype
void setPrototype(as_object *prototype)
Necessary for the current bogus implementation.
Definition: Class.h:248
Class.h
gnash::abc::AbcBlock::INSTANCE_SEALED
@ INSTANCE_SEALED
Definition: AbcBlock.h:237
gnash::as_object
The base class for all ActionScript objects.
Definition: as_object.h:162
gnash::abc::Class::addSlotFunction
bool addSlotFunction(string_table::key name, Namespace *ns, std::uint32_t slotID, Method *method, bool isstatic)
Definition: Class.cpp:97
gnash::abc::Method::addMethod
bool addMethod(string_table::key name, Namespace *ns, Method *method)
Definition: Method.cpp:196
gnash::abc::Method::addValue
bool addValue(string_table::key name, Namespace *ns, std::uint32_t slotID, Class *type, as_value &val, bool isconst)
Definition: Method.cpp:95
gnash::abc::Trait::read
bool read(SWFStream *in, AbcBlock *block)
Read an AS3 'trait'.
Definition: AbcBlock.cpp:183
gnash::abc::AbcBlock::doublePoolAt
double doublePoolAt(size_t i) const
Definition: AbcBlock.h:290
gnash::abc::AbcBlock::stringPoolAt
const std::string & stringPoolAt(size_t i) const
Definition: AbcBlock.h:280
CodeStream.h
gnash::abc::Trait::Trait
Trait()
Definition: AbcBlock.h:86
gnash::key::T
@ T
Definition: GnashKey.h:132
gnash::abc::AbcBlock::PACKAGE_NS
@ PACKAGE_NS
Definition: AbcBlock.h:216
gnash::string_table
A general use string table.
Definition: string_table.h:42
gnash::abc::AbcBlock::classPoolAt
abc::Class * classPoolAt(size_t i) const
Definition: AbcBlock.h:305
gnash::abc::Method
Definition: Method.h:54
gnash::string_table::value
const std::string & value(key to_find) const
Find a string by its key.
Definition: string_table.h:102
Namespace.h
gnash::NSV::CLASS_OBJECT
@ CLASS_OBJECT
Definition: namedStrings.h:233
gnash::log_debug
void log_debug(StringType msg, Args... args)
Definition: log.h:301
gnash::abc::Namespace
Represent an ActionScript Namespace.
Definition: Namespace.h:49
gnash::key::i
@ i
Definition: GnashKey.h:155
gnash::abc::AbcBlock::read
bool read(SWFStream &in)
Definition: AbcBlock.cpp:1294
gnash::abc::MultiName::KIND_Qname
@ KIND_Qname
Definition: MultiName.h:57
gnash::abc::Machine::global
Global_as * global()
Return the Global object for this Machine.
Definition: Machine.cpp:365
gnash::abc::MultiName::KIND_RTQnameLA
@ KIND_RTQnameLA
Definition: MultiName.h:62
_
#define _(String)
Definition: log.h:44
gnash::abc::AbcBlock::POOL_STRING
@ POOL_STRING
Definition: AbcBlock.h:246
gnash::abc::Class::initTraits
void initTraits(AbcBlock &bl)
This initializes all the traits.
Definition: Class.cpp:80
gnash::abc::URI
size_t URI
This type should always be used for the index of AbcBlocks' names.
Definition: MultiName.h:42
gnash::VM
The AVM1 virtual machine.
Definition: VM.h:72
gnash::abc::AbcBlock::POOL_DOUBLE
@ POOL_DOUBLE
Definition: AbcBlock.h:249
gnash
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:41
gnash::abc::Trait::KIND_CONST
@ KIND_CONST
Definition: AbcBlock.h:78
gnash::abc::MultiName
An MultiName represents a single ABC multiname.
Definition: MultiName.h:52
MultiName.h
gnash::abc::Class::addSetter
bool addSetter(string_table::key name, Namespace *ns, Method *method, bool isstatic)
Definition: Class.cpp:154
gnash::key::m
@ m
Definition: GnashKey.h:159
gnash::abc::AbcBlock::methodPoolAt
Method * methodPoolAt(size_t i) const
Definition: AbcBlock.h:295
as_value.h
gnash::SWFStream::read_d64
double read_d64()
Read a 64-bit double value.
Definition: SWFStream.cpp:300
gnash::abc::AbcBlock::INSTANCE_FINAL
@ INSTANCE_FINAL
Definition: AbcBlock.h:238
gnash::key::n
@ n
Definition: GnashKey.h:160
gnash::abc::MultiName::setGlobalName
void setGlobalName(string_table::key n)
Definition: MultiName.h:102
Global_as.h
gnash::abc::AbcBlock
The ActionScript bytecode of a single ABC tag in a SWF.
Definition: AbcBlock.h:209
gnash::abc::AbcBlock::PACKAGE_INTERNAL_NS
@ PACKAGE_INTERNAL_NS
Definition: AbcBlock.h:217
gnash::abc::Class::addGetter
bool addGetter(string_table::key name, Namespace *ns, Method *method, bool isstatic)
Definition: Class.cpp:134
gnash::abc::AbcBlock::METHOD_MORE
@ METHOD_MORE
Definition: AbcBlock.h:227
gnash::abc::AbcBlock::PROTECTED_NS
@ PROTECTED_NS
Definition: AbcBlock.h:218
gnash::abc::AbcBlock::NamespaceSet
std::vector< Namespace * > NamespaceSet
Definition: AbcBlock.h:256
gnash::abc::MultiName::KIND_MultinameA
@ KIND_MultinameA
Definition: MultiName.h:64
gnash::log_error
void log_error(StringType msg, Args... args)
Definition: log.h:283
gnash::abc::AbcBlock::INSTANCE_DYNAMIC
@ INSTANCE_DYNAMIC
Definition: AbcBlock.h:240
gnash::abc::MultiName::getABCName
abc::URI getABCName() const
Definition: MultiName.h:98
gnash::key::k
@ k
Definition: GnashKey.h:157
gnash::abc::AbcBlock::POOL_NAMESPACE
@ POOL_NAMESPACE
Definition: AbcBlock.h:250
gnash::abc::AbcBlock::integerPoolAt
std::int32_t integerPoolAt(size_t i) const
Definition: AbcBlock.h:285
gnash::abc::AbcBlock::METHOD_NATIVE
@ METHOD_NATIVE
Definition: AbcBlock.h:230
gnash::abc::Trait::finalize_mbody
bool finalize_mbody(AbcBlock *block, Method *m)
Definition: AbcBlock.cpp:115
gnash::abc::AbcBlock::NamespaceConstant
NamespaceConstant
Definition: AbcBlock.h:213
gnash::abc::AbcBlock::PoolConstant
PoolConstant
Definition: AbcBlock.h:245
gnash::key::t
@ t
Definition: GnashKey.h:166
gnash::abc::Class::addValue
bool addValue(string_table::key name, Namespace *ns, std::uint32_t slotID, Class *type, as_value &val, bool isconst, bool isstatic)
Definition: Class.cpp:42
gnash::abc::AbcBlock::METHOD_ARGS
@ METHOD_ARGS
Definition: AbcBlock.h:225
gnash::abc::Trait::KIND_GETTER
@ KIND_GETTER
Definition: AbcBlock.h:80
gnash::abc::Class::initPrototype
void initPrototype()
Necessary for the current bogus implementation.
Definition: Class.cpp:72
gnash::abc::Method::addSlotFunction
bool addSlotFunction(string_table::key name, Namespace *ns, std::uint32_t slotID, Method *method)
Definition: Method.cpp:180
gnash::renderer::opengl::for_each
void for_each(C &container, R(T::*pmf)(const A &), const A &arg)
Definition: Renderer_ogl.cpp:690
gnash::abc::MultiName::KIND_Multiname
@ KIND_Multiname
Definition: MultiName.h:63
gnash::abc::Trait::finalize
bool finalize(AbcBlock *block, abc::Class *cl, bool do_static)
Definition: AbcBlock.cpp:42
gnash::key::a
@ a
Definition: GnashKey.h:147
gnash::key::type
type
Definition: GnashKey.h:330
gnash::abc::MultiName::KIND_QnameA
@ KIND_QnameA
Definition: MultiName.h:58
gnash::abc::AbcBlock::prepare
void prepare(Machine *mach)
Definition: AbcBlock.cpp:322
gnash::abc::Trait::Kind
Kind
Definition: AbcBlock.h:76
gnash::abc::Trait::KIND_SETTER
@ KIND_SETTER
Definition: AbcBlock.h:81
gnash::log_abc
void log_abc(StringType msg, Args... args)
Definition: log.h:337
gnash::get
T * get(as_object *o)
Extract the DisplayObject attached to an object.
Definition: as_object.h:842
length
@ length
Definition: klash_part.cpp:329
gnash::abc::Method::initTraits
void initTraits(AbcBlock &bl)
Initialize Traits. This is bogus.
Definition: Method.cpp:82
gnash::abc::Class::addMemberScript
bool addMemberScript(string_table::key name, Namespace *ns, std::uint32_t slotID, Class *type, bool isstatic)
Definition: Class.cpp:90
gnash::abc::AbcBlock::CONSTANT_NS
@ CONSTANT_NS
Definition: AbcBlock.h:215
gnash::abc::AbcBlock::POOL_INTEGER
@ POOL_INTEGER
Definition: AbcBlock.h:247
gnash::abc::Machine
The virtual machine for executing ABC (ActionScript Bytecode).
Definition: Machine.h:74
gnash::abc::Class
A class to represent AS3 Classes.
Definition: Class.h:76
gnash::abc::AbcBlock::scripts
const std::vector< abc::Class * > & scripts() const
Scripts can contain several classes.
Definition: AbcBlock.h:271
gnash::abc::AbcBlock::METHOD_ARG_NAMES
@ METHOD_ARG_NAMES
Definition: AbcBlock.h:232
Machine.h
gnash::key::_1
@ _1
Definition: GnashKey.h:95
gnash::abc::AbcBlock::namespacePoolAt
Namespace * namespacePoolAt(size_t i) const
Definition: AbcBlock.h:310
gnash::abc::MultiName::KIND_MultinameLA
@ KIND_MultinameLA
Definition: MultiName.h:66
gnash::ParserException
An SWF parsing exception.
Definition: GnashException.h:90
gnash::as_value
ActionScript value type.
Definition: as_value.h:95
gnash::abc::MultiName::KIND_RTQnameL
@ KIND_RTQnameL
Definition: MultiName.h:61
VM.h
gnash::abc::Method::addMemberScript
bool addMemberScript(string_table::key name, Namespace *ns, std::uint32_t slotID, Class *type)
Definition: Method.cpp:162
gnash::abc::AbcBlock::AbcBlock
AbcBlock()
Definition: AbcBlock.cpp:311
gnash::key::j
@ j
Definition: GnashKey.h:156
gnash::abc::Trait::KIND_METHOD
@ KIND_METHOD
Definition: AbcBlock.h:79
IF_VERBOSE_PARSE
#define IF_VERBOSE_PARSE(x)
Definition: log.h:378
gnash::string_table::find
key find(const std::string &to_find, bool insert_unfound=true)
Find a key for a string.
Definition: string_table.cpp:40
gnash::abc::AbcBlock::POOL_UINTEGER
@ POOL_UINTEGER
Definition: AbcBlock.h:248
gnash::abc::Method::addGetter
bool addGetter(string_table::key name, Namespace *ns, Method *method)
Definition: Method.cpp:122
log.h
gnash::abc::MultiName::KIND_RTQnameA
@ KIND_RTQnameA
Definition: MultiName.h:60
gnash::abc::Class::addMethod
bool addMethod(string_table::key name, Namespace *ns, Method *method, bool isstatic)
Definition: Class.cpp:123
ClassHierarchy.h
gnash::abc::AbcBlock::POOL_FALSE
@ POOL_FALSE
Definition: AbcBlock.h:251
gnash::abc::MultiName::Kind
Kind
Definition: MultiName.h:56
gnash::abc::AbcBlock::InstanceConstant
InstanceConstant
Definition: AbcBlock.h:236
gnash::abc::MultiName::KIND_MultinameL
@ KIND_MultinameL
Definition: MultiName.h:65
gnashconfig.h
gnash::abc::AbcBlock::locateClass
abc::Class * locateClass(MultiName &m)
Definition: AbcBlock.cpp:437
namedStrings.h
AbcBlock.h
gnash::SWFStream::read_u16
std::uint16_t read_u16()
Read a aligned unsigned 16-bit value from the stream.
Definition: SWFStream.cpp:332
gnash::abc::Trait::set_target
void set_target(Method *m)
Definition: AbcBlock.h:115
gnash::abc::AbcBlock::METHOD_ACTIVATION
@ METHOD_ACTIVATION
Definition: AbcBlock.h:226
gnash::key::c
@ c
Definition: GnashKey.h:149
gnash::getStringTable
string_table & getStringTable(const as_environment &env)
Definition: as_environment.cpp:639
gnash::abc::Method::addSetter
bool addSetter(string_table::key name, Namespace *ns, Method *method)
Definition: Method.cpp:142
gnash::SWFStream::read_u8
std::uint8_t read_u8()
Read a aligned unsigned 8-bit value from the stream.
Definition: SWFStream.cpp:319
gnash::SWFStream::skip_V32
void skip_V32()
Skip a variable length unsigned 32-bit value in the stream. This is faster than doing the bitwise ari...
Definition: SWFStream.h:220
gnash::abc::AbcBlock::update_global_name
void update_global_name(unsigned int multiname_index)
Definition: AbcBlock.cpp:1346
gnash::SWFStream::read_V32
std::uint32_t read_V32()
Read a variable length unsigned 32-bit value from the stream. These values continue until either the ...
Definition: SWFStream.h:191
gnash::SWFStream::read_string_with_length
void read_string_with_length(std::string &to)
Reads a sized string into a provided std::string.
Definition: SWFStream.cpp:411
gnash::string_table::key
std::size_t key
Definition: string_table.h:83
gnash::SWFStream
SWF stream wrapper class.
Definition: SWFStream.h:59
gnash::abc::AbcBlock::METHOD_OPTIONAL_ARGS
@ METHOD_OPTIONAL_ARGS
Definition: AbcBlock.h:228
gnash::ClassHierarchy
Register all of the ActionScript classes, with their dependencies.
Definition: ClassHierarchy.h:41
gnash::abc::AbcBlock::POOL_TRUE
@ POOL_TRUE
Definition: AbcBlock.h:252
gnash::key::o
@ o
Definition: GnashKey.h:161
gnash::abc::Method::initPrototype
void initPrototype(Machine *machine)
Definition: Method.cpp:190
gnash::abc::AbcBlock::METHOD_IGNORE
@ METHOD_IGNORE
Definition: AbcBlock.h:229
gnash::abc::AbcBlock::multinamePoolAt
MultiName multinamePoolAt(size_t i) const
Definition: AbcBlock.h:300
_methods
std::map< NPIdentifier, NPInvokeFunctionPtr > _methods
Definition: gshell.cpp:402
gnash::abc::AbcBlock::MethodConstant
MethodConstant
Definition: AbcBlock.h:224
gnash::abc::AbcBlock::EXPLICIT_NS
@ EXPLICIT_NS
Definition: AbcBlock.h:219
SWFStream.h
gnash::abc::AbcBlock::METHOD_DEFAULT_NS
@ METHOD_DEFAULT_NS
Definition: AbcBlock.h:231
test.v
v
Definition: test.py:11
gnash::abc::AbcBlock::uIntegerPoolAt
std::uint32_t uIntegerPoolAt(size_t i) const
Definition: AbcBlock.h:275
gnash::abc::MultiName::KIND_RTQname
@ KIND_RTQname
Definition: MultiName.h:59
gnash::abc::operator<<
std::ostream & operator<<(std::ostream &o, const Trait::Kind k)
Output stream operator for abc::Trait::Kind.
Definition: AbcBlock.cpp:289
gnash::abc::Trait::KIND_SLOT
@ KIND_SLOT
Definition: AbcBlock.h:77
gnash::abc::Trait::set_target
void set_target(abc::Class *cl, bool do_static)
Definition: AbcBlock.h:110
gnash::abc::AbcBlock::INSTANCE_PROTECTED_NS
@ INSTANCE_PROTECTED_NS
Definition: AbcBlock.h:241