Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GNASH_ARRAY_H
00020 #define GNASH_ARRAY_H
00021
00022 #include "as_object.h"
00023
00024
00025 namespace gnash {
00026 class as_value;
00027 }
00028
00029 namespace gnash {
00030
00032
00035
00039 size_t arrayLength(as_object& array);
00040
00042
00045
00048 ObjectURI arrayKey(VM& vm, size_t i);
00049
00051
00054 class IsStrictArray : public PropertyVisitor
00055 {
00056 public:
00057 IsStrictArray(VM& st) : _strict(true), _st(st) {}
00058 virtual bool accept(const ObjectURI& uri, const as_value& val);
00059
00060 bool strict() const {
00061 return _strict;
00062 }
00063 private:
00064 bool _strict;
00065 VM& _st;
00066 };
00067
00068
00070
00074 void checkArrayLength(as_object& array, const ObjectURI& uri,
00075 const as_value& val);
00076
00077 template<typename T>
00078 void foreachArray(as_object& array, T& pred)
00079 {
00080 size_t size = arrayLength(array);
00081 if (!size) return;
00082
00083 VM& vm = getVM(array);
00084
00085 for (size_t i = 0; i < static_cast<size_t>(size); ++i) {
00086 pred(getOwnProperty(array, arrayKey(vm, i)));
00087 }
00088 }
00089
00091 void array_class_init(as_object& global, const ObjectURI& uri);
00092
00093 void registerArrayNative(as_object& global);
00094
00095 }
00096
00097 #endif