[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gnash-commit] gnash ChangeLog libbase/string_table.cpp libbas...
From: |
zou lunkai |
Subject: |
Re: [Gnash-commit] gnash ChangeLog libbase/string_table.cpp libbas... |
Date: |
Wed, 30 Jan 2008 09:22:35 +0800 |
> string_table::key
> -string_table::find(const std::string& to_find, bool insert_unfound,
> - bool case_insensitive)
> +string_table::find(const std::string& t_f, bool insert_unfound)
> {
> - std::size_t ckey = 0;
> + std::string t_fcase;
> + const std::string *to_find = NULL;
>
> - // Empty strings all map to 0
> - if (to_find.empty())
> - return 0;
> -
> - if (case_insensitive)
> + if (mCaseInsensitive)
> {
> - std::string caseless = boost::to_lower_copy(to_find);
> - if (caseless != to_find) // Only do this if cased/caseless
> differs.
> - {
> - ckey = find(caseless, insert_unfound, false).caseless;
> - }
> + t_fcase = t_f;
> + boost::to_lower(t_fcase);
> + to_find = &t_fcase;
> }
> + else
> + to_find = &t_f;
Shouldn't a stringCompare() for swf >=7 and a stringNoCaseCompare()
for swf <7 solve the case sensitivity problem? If it works, then we
can (1) avoid the unnecessary to_lower conversion most of the time,
(2)avoid extra string copies for swf < 7.
I just focus on the speed performance, maybe haven't seen the whole picture.
--zou
On Jan 29, 2008 3:13 PM, Chad Musick <address@hidden> wrote:
> CVSROOT: /sources/gnash
> Module name: gnash
> Changes by: Chad Musick <cmusick> 08/01/29 07:13:24
>
> Modified files:
> . : ChangeLog
> libbase : string_table.cpp string_table.h
> server : namedStrings.cpp
> testsuite/server: PropertyListTest.cpp
>
> Log message:
> Case sensitivity.
>
> CVSWeb URLs:
> http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5514&r2=1.5515
> http://cvs.savannah.gnu.org/viewcvs/gnash/libbase/string_table.cpp?cvsroot=gnash&r1=1.5&r2=1.6
> http://cvs.savannah.gnu.org/viewcvs/gnash/libbase/string_table.h?cvsroot=gnash&r1=1.8&r2=1.9
> http://cvs.savannah.gnu.org/viewcvs/gnash/server/namedStrings.cpp?cvsroot=gnash&r1=1.10&r2=1.11
> http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/server/PropertyListTest.cpp?cvsroot=gnash&r1=1.21&r2=1.22
>
> Patches:
> Index: ChangeLog
> ===================================================================
> RCS file: /sources/gnash/gnash/ChangeLog,v
> retrieving revision 1.5514
> retrieving revision 1.5515
> diff -u -b -r1.5514 -r1.5515
> --- ChangeLog 29 Jan 2008 05:18:32 -0000 1.5514
> +++ ChangeLog 29 Jan 2008 07:13:23 -0000 1.5515
> @@ -1,3 +1,10 @@
> +2008-01-29 Chad Musick <address@hidden>
> +
> + * libbase/string_table.h,cpp: Change string_table to be case
> + insensitive for strings in SWF versions less than 7.
> + * testsuite/server/PropertyListTest.cpp: Amend Test to not
> + test case-sensitivity when it shouldn't be case sensitive.
> +
> 2008-01-28 Bastiaan Jacques <address@hidden>
>
> * libmedia/gst/VideoDecoderGst.{cpp,h}: Tell the decoder about the
>
> Index: libbase/string_table.cpp
> ===================================================================
> RCS file: /sources/gnash/gnash/libbase/string_table.cpp,v
> retrieving revision 1.5
> retrieving revision 1.6
> diff -u -b -r1.5 -r1.6
> --- libbase/string_table.cpp 24 Jan 2008 03:41:58 -0000 1.5
> +++ libbase/string_table.cpp 29 Jan 2008 07:13:23 -0000 1.6
> @@ -24,25 +24,26 @@
> std::string string_table::mEmpty = "";
>
> string_table::key
> -string_table::find(const std::string& to_find, bool insert_unfound,
> - bool case_insensitive)
> +string_table::find(const std::string& t_f, bool insert_unfound)
> {
> - std::size_t ckey = 0;
> + std::string t_fcase;
> + const std::string *to_find = NULL;
>
> - // Empty strings all map to 0
> - if (to_find.empty())
> - return 0;
> -
> - if (case_insensitive)
> + if (mCaseInsensitive)
> {
> - std::string caseless = boost::to_lower_copy(to_find);
> - if (caseless != to_find) // Only do this if cased/caseless
> differs.
> - {
> - ckey = find(caseless, insert_unfound, false).caseless;
> - }
> + t_fcase = t_f;
> + boost::to_lower(t_fcase);
> + to_find = &t_fcase;
> }
> + else
> + to_find = &t_f;
> +
> + // Empty strings all map to 0
> + if (to_find->empty())
> + return 0;
>
> - table::nth_index<0>::type::iterator i = mTable.get<0>().find(to_find);
> + table::nth_index<0>::type::iterator i =
> + mTable.get<0>().find(*to_find);
>
> if (i == mTable.end() && insert_unfound)
> {
> @@ -53,21 +54,23 @@
> // First we lock.
> boost::mutex::scoped_lock aLock(mLock);
> // Then we see if someone else managed to sneak past
> us.
> - i = mTable.get<0>().find(to_find);
> + i = mTable.get<0>().find(*to_find);
> // If they did, use that value.
> if (i != mTable.end())
> - return case_key(i->mId, &i->mValue);
> + return i->mId;
> +
> // Otherwise, insert it.
> - theSvt.mValue = to_find;
> + theSvt.mValue = t_f;
> + theSvt.mComp = *to_find;
> theSvt.mId = ++mHighestKey;
> mTable.insert(theSvt);
> - return case_key(ckey ? ckey : theSvt.mId,
> &(theSvt.mValue));
> + return theSvt.mId;
> }
> else
> return 0;
> }
>
> - return case_key(ckey ? ckey : i->mId, &(i->mValue));
> + return i->mId;
> }
>
> string_table::key
> @@ -85,9 +88,7 @@
> string_table::insert(const std::string& to_insert)
> {
> boost::mutex::scoped_lock aLock(mLock);
> - svt theSvt;
> - theSvt.mValue = to_insert;
> - theSvt.mId = ++mHighestKey;
> + svt theSvt(to_insert, ++mHighestKey);
>
> return mTable.insert(theSvt).first->mId;
> }
> @@ -100,7 +101,11 @@
> for (std::size_t i = 0; i < size; ++i)
> {
> if (mSetToLower)
> + {
> boost::to_lower(pList[i].mValue);
> + boost::to_lower(pList[i].mComp);
> + }
> +
> // The keys don't have to be consecutive, so any time we find
> a key
> // that is too big, jump a few keys to avoid rewriting this
> on every item.
> if (pList[i].mId > mHighestKey)
> @@ -113,9 +118,9 @@
> string_table::key
> string_table::already_locked_insert(const std::string& to_insert,
> boost::mutex&)
> {
> - svt theSvt;
> - theSvt.mValue = to_insert;
> - theSvt.mId = ++mHighestKey;
> + svt theSvt (to_insert, ++mHighestKey);
> + if (mCaseInsensitive)
> + boost::to_lower(theSvt.mComp);
> return mTable.insert(theSvt).first->mId;
> }
>
>
> Index: libbase/string_table.h
> ===================================================================
> RCS file: /sources/gnash/gnash/libbase/string_table.h,v
> retrieving revision 1.8
> retrieving revision 1.9
> diff -u -b -r1.8 -r1.9
> --- libbase/string_table.h 24 Jan 2008 03:41:59 -0000 1.8
> +++ libbase/string_table.h 29 Jan 2008 07:13:23 -0000 1.9
> @@ -41,37 +41,30 @@
> /// A general use string table.
> class string_table
> {
> -private:
> - struct case_key
> - {
> - std::size_t caseless;
> - const std::string *cased;
> - case_key() : caseless(0), cased(NULL) {}
> - case_key(std::size_t k) : caseless(k), cased(NULL) {}
> - case_key(std::size_t k, const std::string *c) :
> - caseless(k), cased(c) {}
> - operator std::size_t() const { return caseless; }
> - bool operator<(const case_key &o) { return caseless <
> o.caseless; }
> - };
> -
> public:
> /// A little helper for indexing.
> struct svt
> {
> std::string mValue;
> std::size_t mId;
> + std::string mComp;
> +
> + svt() : mValue(""), mId(0), mComp("") {/**/}
> +
> + svt(const std::string &val, std::size_t id) :
> + mValue(val), mId(id), mComp(val) {/**/}
> };
>
> public:
> typedef boost::multi_index_container<svt,
> boost::multi_index::indexed_by<
> boost::multi_index::hashed_non_unique<
> - boost::multi_index::member<svt, std::string,
> &svt::mValue> >,
> + boost::multi_index::member<svt, std::string,
> &svt::mComp> >,
> boost::multi_index::hashed_non_unique< // caseless
> boost::multi_index::member<svt, std::size_t,
> &svt::mId> >
> > > table;
>
> - typedef case_key key;
> + typedef std::size_t key;
>
> /// \brief
> /// Find a string. If insert_unfound is true, the string will
> @@ -83,16 +76,10 @@
> /// If this is set to false, a search is performed, but no update.
> /// By update, any unfound string is added to the table.
> ///
> - /// @param case_insensitive
> - /// If true, find a case-insensitive match to this.
> - /// N.B.: Will not necessarily match a string which was not inserted
> - /// as case_insensitive.
> - ///
> /// @return
> /// A key which can be used in value or 0 if the string is
> /// not yet in the table and insert_unfound was false.
> - key find(const std::string& to_find, bool insert_unfound = true,
> - bool case_insensitive = false);
> + key find(const std::string& to_find, bool insert_unfound = true);
>
> /// \brief
> /// Find a string which is the concatentation of two known strings
> @@ -100,21 +87,6 @@
> /// Otherwise, just like find.
> key find_dot_pair(key left, key right, bool insert_unfound = true);
>
> - /// Find a string by its key, exactly.
> - ///
> - /// @param to_find
> - /// The string key whose value should be found.
> - ///
> - /// @param (unnamed)
> - /// Used to distinguish from value(key to_find)
> - const std::string& value(key &to_find, bool)
> - {
> - if (to_find.cased != NULL)
> - return *to_find.cased;
> - to_find.cased = &(value(to_find));
> - return *to_find.cased;
> - }
> -
> /// Find a string by its key.
> ///
> /// @return
> @@ -124,7 +96,7 @@
> if (mTable.empty() || !to_find)
> return mEmpty;
> table::nth_index<1>::type::iterator r =
> - mTable.get<1>().find(to_find.caseless);
> + mTable.get<1>().find(to_find);
> return (r == mTable.get<1>().end()) ? mEmpty : r->mValue;
> }
>
> @@ -164,12 +136,16 @@
> /// @return A mutex which can be used to lock the string table to
> inserts.
> boost::mutex& lock_mutex() { return mLock; }
>
> + /// Make the comparisons case-insensitive.
> + void set_insensitive() { mCaseInsensitive = true; }
> +
> /// Construct the empty string_table
> string_table() :
> mTable(),
> mLock(),
> mHighestKey(0),
> - mSetToLower(false)
> + mSetToLower(false),
> + mCaseInsensitive(false)
> {/**/}
>
> private:
> @@ -178,6 +154,7 @@
> boost::mutex mLock;
> std::size_t mHighestKey;
> bool mSetToLower; // If true, affects the next group addition.
> + bool mCaseInsensitive;
> };
>
> } /* namespace gnash */
>
> Index: server/namedStrings.cpp
> ===================================================================
> RCS file: /sources/gnash/gnash/server/namedStrings.cpp,v
> retrieving revision 1.10
> retrieving revision 1.11
> diff -u -b -r1.10 -r1.11
> --- server/namedStrings.cpp 21 Jan 2008 20:55:51 -0000 1.10
> +++ server/namedStrings.cpp 29 Jan 2008 07:13:23 -0000 1.11
> @@ -27,160 +27,163 @@
> // Load up our pre-known names
> static string_table::svt preload_names[] =
> {
> - { "addListener", NSV::PROP_ADD_LISTENER },
> - { "align", NSV::PROP_ALIGN },
> - { "_alpha", NSV::PROP_uALPHA },
> - { "blockIndent", NSV::PROP_BLOCK_INDENT },
> - { "bold", NSV::PROP_BOLD },
> - { "broadcastMessage", NSV::PROP_BROADCAST_MESSAGE },
> - { "bullet", NSV::PROP_BULLET },
> - { "callee", NSV::PROP_CALLEE },
> - { "color", NSV::PROP_COLOR },
> - { "constructor", NSV::PROP_CONSTRUCTOR },
> - { "__constructor__", NSV::PROP_uuCONSTRUCTORuu },
> - { "_currentframe", NSV::PROP_uCURRENTFRAME },
> - { "_droptarget", NSV::PROP_uDROPTARGET },
> - { "enabled", NSV::PROP_ENABLED },
> - { "_focusrect", NSV::PROP_uFOCUSRECT },
> - { "_framesloaded", NSV::PROP_uFRAMESLOADED },
> - { "_height", NSV::PROP_uHEIGHT },
> - { "_highquality", NSV::PROP_uHIGHQUALITY },
> - { "htmlText", NSV::PROP_HTML_TEXT },
> - { "indent", NSV::PROP_INDENT },
> - { "italic", NSV::PROP_ITALIC },
> - { "leading", NSV::PROP_LEADING },
> - { "left_margin", NSV::PROP_LEFT_MARGIN },
> - { "length", NSV::PROP_LENGTH },
> - { "_listeners", NSV::PROP_uLISTENERS },
> - { "loaded", NSV::PROP_LOADED },
> - { "_name", NSV::PROP_uNAME },
> - { "onLoad", NSV::PROP_ON_LOAD },
> - { "onClose", NSV::PROP_ON_CLOSE },
> - { "onLoadStart", NSV::PROP_ON_LOAD_START },
> - { "onLoadError", NSV::PROP_ON_LOAD_ERROR },
> - { "onLoadProgress", NSV::PROP_ON_LOAD_PROGRESS },
> - { "onLoadInit", NSV::PROP_ON_LOAD_INIT },
> - { "onUnload", NSV::PROP_ON_UNLOAD },
> - { "onEnterFrame", NSV::PROP_ON_ENTER_FRAME },
> - { "onConstruct", NSV::PROP_ON_CONSTRUCT },
> - { "onInitialize", NSV::PROP_ON_INITIALIZE },
> - { "onData", NSV::PROP_ON_DATA },
> - { "onResize", NSV::PROP_ON_RESIZE },
> - { "onPress", NSV::PROP_ON_PRESS },
> - { "onRelease", NSV::PROP_ON_RELEASE },
> - { "onReleaseOutside", NSV::PROP_ON_RELEASE_OUTSIDE },
> - { "onRollOut", NSV::PROP_ON_ROLL_OUT },
> - { "onRollOver", NSV::PROP_ON_ROLL_OVER },
> - { "onDragOver", NSV::PROP_ON_DRAG_OVER },
> - { "onDragOut", NSV::PROP_ON_DRAG_OUT },
> - { "onKeyPress", NSV::PROP_ON_KEY_PRESS },
> - { "onKeyDown", NSV::PROP_ON_KEY_DOWN },
> - { "onKeyUp", NSV::PROP_ON_KEY_UP },
> - { "onMouseDown", NSV::PROP_ON_MOUSE_DOWN },
> - { "onMouseUp", NSV::PROP_ON_MOUSE_UP },
> - { "onMouseMove", NSV::PROP_ON_MOUSE_MOVE },
> - { "onSetFocus", NSV::PROP_ON_SET_FOCUS },
> - { "onKillFocus", NSV::PROP_ON_KILL_FOCUS },
> - { "onSelect", NSV::PROP_ON_SELECT },
> - { "onStatus", NSV::PROP_ON_STATUS },
> - { "onMetaData", NSV::PROP_ON_META_DATA },
> - { "onSockClose", NSV::PROP_ON_SOCK_CLOSE },
> - { "onSockConnect", NSV::PROP_ON_SOCK_CONNECT },
> - { "onSockData", NSV::PROP_ON_SOCK_DATA },
> - { "onSockXML", NSV::PROP_ON_SOCK_XML },
> - { "onXMLLoad", NSV::PROP_ON_XML_LOAD },
> - { "onXMLData", NSV::PROP_ON_XML_DATA },
> - { "parseXML", NSV::PROP_PARSE_XML },
> - { "onTimer", NSV::PROP_ON_TIMER },
> - { "_parent", NSV::PROP_uPARENT },
> - { "_root", NSV::PROP_uROOT },
> - { "_global", NSV::PROP_uGLOBAL },
> - { "__proto__", NSV::PROP_uuPROTOuu },
> - { "prototype", NSV::PROP_PROTOTYPE },
> - { "push", NSV::PROP_PUSH },
> - { "removeListener", NSV::PROP_REMOVE_LISTENER },
> - { "rightMargin", NSV::PROP_RIGHT_MARGIN },
> - { "_rotation", NSV::PROP_uROTATION },
> - { "scaleMode", NSV::PROP_SCALE_MODE },
> - { "size", NSV::PROP_SIZE },
> - { "_soundbuftime", NSV::PROP_uSOUNDBUFTIME },
> - { "splice", NSV::PROP_SPLICE },
> - { "Stage", NSV::PROP_iSTAGE },
> - { "status", NSV::PROP_STATUS },
> - { "super", NSV::PROP_SUPER },
> - { "_target", NSV::PROP_uTARGET },
> - { "text", NSV::PROP_TEXT },
> - { "textColor", NSV::PROP_TEXT_COLOR },
> - { "textWidth", NSV::PROP_TEXT_WIDTH },
> - { "toString", NSV::PROP_TO_STRING },
> - { "_totalframes", NSV::PROP_uTOTALFRAMES },
> - { "underline", NSV::PROP_UNDERLINE },
> - { "_url", NSV::PROP_uURL },
> - { "valueOf", NSV::PROP_VALUE_OF },
> - { "_visible", NSV::PROP_uVISIBLE },
> - { "_width", NSV::PROP_uWIDTH },
> - { "x", NSV::PROP_X },
> - { "_x", NSV::PROP_uX },
> - { "_xmouse", NSV::PROP_uXMOUSE },
> - { "_xscale", NSV::PROP_uXSCALE },
> - { "y", NSV::PROP_Y },
> - { "_y", NSV::PROP_uY },
> - { "_ymouse", NSV::PROP_uYMOUSE },
> - { "_yscale", NSV::PROP_uYSCALE },
> - { "System", NSV::CLASS_SYSTEM },
> -// { "Stage", NSV::CLASS_STAGE }, // Identical to PROP_iSTAGE
> - { "MovieClip", NSV::CLASS_MOVIE_CLIP },
> - { "TextField", NSV::CLASS_TEXT_FIELD },
> - { "Math", NSV::CLASS_MATH },
> - { "Boolean", NSV::CLASS_BOOLEAN },
> - { "Color", NSV::CLASS_COLOR },
> - { "Selection", NSV::CLASS_SELECTION },
> - { "Sound", NSV::CLASS_SOUND },
> - { "XMLSocket", NSV::CLASS_X_M_L_SOCKET },
> - { "Date", NSV::CLASS_DATE },
> - { "XML", NSV::CLASS_X_M_L },
> - { "XMLNode", NSV::CLASS_X_M_L_NODE },
> - { "Mouse", NSV::CLASS_MOUSE },
> - { "Object", NSV::CLASS_OBJECT },
> - { "String", NSV::CLASS_STRING },
> - { "Number", NSV::CLASS_NUMBER },
> - { "Array", NSV::CLASS_ARRAY },
> - { "Key", NSV::CLASS_KEY },
> - { "AsBroadcaster", NSV::CLASS_AS_BROADCASTER },
> - { "Function", NSV::CLASS_FUNCTION },
> - { "TextSnapshot", NSV::CLASS_TEXT_SNAPSHOT },
> - { "Video", NSV::CLASS_VIDEO },
> - { "Camera", NSV::CLASS_CAMERA },
> - { "Microphone", NSV::CLASS_MICROPHONE },
> - { "SharedObject", NSV::CLASS_SHARED_OBJECT },
> - { "LoadVars", NSV::CLASS_LOAD_VARS },
> - { "CustomActions", NSV::CLASS_CUSTOM_ACTIONS },
> - { "NetConnection", NSV::CLASS_NET_CONNECTION },
> - { "NetStream", NSV::CLASS_NET_STREAM },
> - { "ContextMenu", NSV::CLASS_CONTEXT_MENU },
> - { "MovieClipLoader", NSV::CLASS_MOVIE_CLIP_LOADER },
> - { "Error", NSV::CLASS_ERROR },
> - { "flash.display", NSV::NS_FLASH_DISPLAY },
> - { "flash.text", NSV::NS_FLASH_TEXT },
> - { "flash.geom", NSV::NS_FLASH_GEOM },
> - { "flash.net", NSV::NS_FLASH_NET },
> - { "flash.system", NSV::NS_FLASH_SYSTEM },
> - { "flash.utils", NSV::NS_FLASH_UTILS },
> - { "flash.events", NSV::NS_FLASH_EVENTS },
> - { "flash.accessibility", NSV::NS_FLASH_ACCESSIBILITY },
> - { "flash.media", NSV::NS_FLASH_MEDIA },
> - { "flash.xml", NSV::NS_FLASH_XML },
> - { "flash.ui", NSV::NS_FLASH_UI },
> - { "adobe.utils", NSV::NS_ADOBE_UTILS },
> - { "", NSV::INTERNAL_TYPE },
> - { "", NSV::INTERNAL_STACK_PARENT },
> - { "", NSV::INTERNAL_INTERFACES }
> + string_table::svt( "addListener", NSV::PROP_ADD_LISTENER ),
> + string_table::svt( "align", NSV::PROP_ALIGN ),
> + string_table::svt( "_alpha", NSV::PROP_uALPHA ),
> + string_table::svt( "blockIndent", NSV::PROP_BLOCK_INDENT ),
> + string_table::svt( "bold", NSV::PROP_BOLD ),
> + string_table::svt( "broadcastMessage", NSV::PROP_BROADCAST_MESSAGE ),
> + string_table::svt( "bullet", NSV::PROP_BULLET ),
> + string_table::svt( "callee", NSV::PROP_CALLEE ),
> + string_table::svt( "color", NSV::PROP_COLOR ),
> + string_table::svt( "constructor", NSV::PROP_CONSTRUCTOR ),
> + string_table::svt( "__constructor__", NSV::PROP_uuCONSTRUCTORuu ),
> + string_table::svt( "_currentframe", NSV::PROP_uCURRENTFRAME ),
> + string_table::svt( "_droptarget", NSV::PROP_uDROPTARGET ),
> + string_table::svt( "enabled", NSV::PROP_ENABLED ),
> + string_table::svt( "_focusrect", NSV::PROP_uFOCUSRECT ),
> + string_table::svt( "_framesloaded", NSV::PROP_uFRAMESLOADED ),
> + string_table::svt( "_height", NSV::PROP_uHEIGHT ),
> + string_table::svt( "_highquality", NSV::PROP_uHIGHQUALITY ),
> + string_table::svt( "htmlText", NSV::PROP_HTML_TEXT ),
> + string_table::svt( "indent", NSV::PROP_INDENT ),
> + string_table::svt( "italic", NSV::PROP_ITALIC ),
> + string_table::svt( "leading", NSV::PROP_LEADING ),
> + string_table::svt( "left_margin", NSV::PROP_LEFT_MARGIN ),
> + string_table::svt( "length", NSV::PROP_LENGTH ),
> + string_table::svt( "_listeners", NSV::PROP_uLISTENERS ),
> + string_table::svt( "loaded", NSV::PROP_LOADED ),
> + string_table::svt( "_name", NSV::PROP_uNAME ),
> + string_table::svt( "onLoad", NSV::PROP_ON_LOAD ),
> + string_table::svt( "onClose", NSV::PROP_ON_CLOSE ),
> + string_table::svt( "onLoadStart", NSV::PROP_ON_LOAD_START ),
> + string_table::svt( "onLoadError", NSV::PROP_ON_LOAD_ERROR ),
> + string_table::svt( "onLoadProgress", NSV::PROP_ON_LOAD_PROGRESS ),
> + string_table::svt( "onLoadInit", NSV::PROP_ON_LOAD_INIT ),
> + string_table::svt( "onUnload", NSV::PROP_ON_UNLOAD ),
> + string_table::svt( "onEnterFrame", NSV::PROP_ON_ENTER_FRAME ),
> + string_table::svt( "onConstruct", NSV::PROP_ON_CONSTRUCT ),
> + string_table::svt( "onInitialize", NSV::PROP_ON_INITIALIZE ),
> + string_table::svt( "onData", NSV::PROP_ON_DATA ),
> + string_table::svt( "onResize", NSV::PROP_ON_RESIZE ),
> + string_table::svt( "onPress", NSV::PROP_ON_PRESS ),
> + string_table::svt( "onRelease", NSV::PROP_ON_RELEASE ),
> + string_table::svt( "onReleaseOutside", NSV::PROP_ON_RELEASE_OUTSIDE ),
> + string_table::svt( "onRollOut", NSV::PROP_ON_ROLL_OUT ),
> + string_table::svt( "onRollOver", NSV::PROP_ON_ROLL_OVER ),
> + string_table::svt( "onDragOver", NSV::PROP_ON_DRAG_OVER ),
> + string_table::svt( "onDragOut", NSV::PROP_ON_DRAG_OUT ),
> + string_table::svt( "onKeyPress", NSV::PROP_ON_KEY_PRESS ),
> + string_table::svt( "onKeyDown", NSV::PROP_ON_KEY_DOWN ),
> + string_table::svt( "onKeyUp", NSV::PROP_ON_KEY_UP ),
> + string_table::svt( "onMouseDown", NSV::PROP_ON_MOUSE_DOWN ),
> + string_table::svt( "onMouseUp", NSV::PROP_ON_MOUSE_UP ),
> + string_table::svt( "onMouseMove", NSV::PROP_ON_MOUSE_MOVE ),
> + string_table::svt( "onSetFocus", NSV::PROP_ON_SET_FOCUS ),
> + string_table::svt( "onKillFocus", NSV::PROP_ON_KILL_FOCUS ),
> + string_table::svt( "onSelect", NSV::PROP_ON_SELECT ),
> + string_table::svt( "onStatus", NSV::PROP_ON_STATUS ),
> + string_table::svt( "onMetaData", NSV::PROP_ON_META_DATA ),
> + string_table::svt( "onSockClose", NSV::PROP_ON_SOCK_CLOSE ),
> + string_table::svt( "onSockConnect", NSV::PROP_ON_SOCK_CONNECT ),
> + string_table::svt( "onSockData", NSV::PROP_ON_SOCK_DATA ),
> + string_table::svt( "onSockXML", NSV::PROP_ON_SOCK_XML ),
> + string_table::svt( "onXMLLoad", NSV::PROP_ON_XML_LOAD ),
> + string_table::svt( "onXMLData", NSV::PROP_ON_XML_DATA ),
> + string_table::svt( "parseXML", NSV::PROP_PARSE_XML ),
> + string_table::svt( "onTimer", NSV::PROP_ON_TIMER ),
> + string_table::svt( "_parent", NSV::PROP_uPARENT ),
> + string_table::svt( "_root", NSV::PROP_uROOT ),
> + string_table::svt( "_global", NSV::PROP_uGLOBAL ),
> + string_table::svt( "__proto__", NSV::PROP_uuPROTOuu ),
> + string_table::svt( "prototype", NSV::PROP_PROTOTYPE ),
> + string_table::svt( "push", NSV::PROP_PUSH ),
> + string_table::svt( "removeListener", NSV::PROP_REMOVE_LISTENER ),
> + string_table::svt( "rightMargin", NSV::PROP_RIGHT_MARGIN ),
> + string_table::svt( "_rotation", NSV::PROP_uROTATION ),
> + string_table::svt( "scaleMode", NSV::PROP_SCALE_MODE ),
> + string_table::svt( "size", NSV::PROP_SIZE ),
> + string_table::svt( "_soundbuftime", NSV::PROP_uSOUNDBUFTIME ),
> + string_table::svt( "splice", NSV::PROP_SPLICE ),
> + string_table::svt( "Stage", NSV::PROP_iSTAGE ),
> + string_table::svt( "status", NSV::PROP_STATUS ),
> + string_table::svt( "super", NSV::PROP_SUPER ),
> + string_table::svt( "_target", NSV::PROP_uTARGET ),
> + string_table::svt( "text", NSV::PROP_TEXT ),
> + string_table::svt( "textColor", NSV::PROP_TEXT_COLOR ),
> + string_table::svt( "textWidth", NSV::PROP_TEXT_WIDTH ),
> + string_table::svt( "toString", NSV::PROP_TO_STRING ),
> + string_table::svt( "_totalframes", NSV::PROP_uTOTALFRAMES ),
> + string_table::svt( "underline", NSV::PROP_UNDERLINE ),
> + string_table::svt( "_url", NSV::PROP_uURL ),
> + string_table::svt( "valueOf", NSV::PROP_VALUE_OF ),
> + string_table::svt( "_visible", NSV::PROP_uVISIBLE ),
> + string_table::svt( "_width", NSV::PROP_uWIDTH ),
> + string_table::svt( "x", NSV::PROP_X ),
> + string_table::svt( "_x", NSV::PROP_uX ),
> + string_table::svt( "_xmouse", NSV::PROP_uXMOUSE ),
> + string_table::svt( "_xscale", NSV::PROP_uXSCALE ),
> + string_table::svt( "y", NSV::PROP_Y ),
> + string_table::svt( "_y", NSV::PROP_uY ),
> + string_table::svt( "_ymouse", NSV::PROP_uYMOUSE ),
> + string_table::svt( "_yscale", NSV::PROP_uYSCALE ),
> + string_table::svt( "System", NSV::CLASS_SYSTEM ),
> +// string_table::svt( "Stage", NSV::CLASS_STAGE ), // Identical to
> PROP_iSTAGE
> + string_table::svt( "MovieClip", NSV::CLASS_MOVIE_CLIP ),
> + string_table::svt( "TextField", NSV::CLASS_TEXT_FIELD ),
> + string_table::svt( "Math", NSV::CLASS_MATH ),
> + string_table::svt( "Boolean", NSV::CLASS_BOOLEAN ),
> + string_table::svt( "Color", NSV::CLASS_COLOR ),
> + string_table::svt( "Selection", NSV::CLASS_SELECTION ),
> + string_table::svt( "Sound", NSV::CLASS_SOUND ),
> + string_table::svt( "XMLSocket", NSV::CLASS_X_M_L_SOCKET ),
> + string_table::svt( "Date", NSV::CLASS_DATE ),
> + string_table::svt( "XML", NSV::CLASS_X_M_L ),
> + string_table::svt( "XMLNode", NSV::CLASS_X_M_L_NODE ),
> + string_table::svt( "Mouse", NSV::CLASS_MOUSE ),
> + string_table::svt( "Object", NSV::CLASS_OBJECT ),
> + string_table::svt( "String", NSV::CLASS_STRING ),
> + string_table::svt( "Number", NSV::CLASS_NUMBER ),
> + string_table::svt( "Array", NSV::CLASS_ARRAY ),
> + string_table::svt( "Key", NSV::CLASS_KEY ),
> + string_table::svt( "AsBroadcaster", NSV::CLASS_AS_BROADCASTER ),
> + string_table::svt( "Function", NSV::CLASS_FUNCTION ),
> + string_table::svt( "TextSnapshot", NSV::CLASS_TEXT_SNAPSHOT ),
> + string_table::svt( "Video", NSV::CLASS_VIDEO ),
> + string_table::svt( "Camera", NSV::CLASS_CAMERA ),
> + string_table::svt( "Microphone", NSV::CLASS_MICROPHONE ),
> + string_table::svt( "SharedObject", NSV::CLASS_SHARED_OBJECT ),
> + string_table::svt( "LoadVars", NSV::CLASS_LOAD_VARS ),
> + string_table::svt( "CustomActions", NSV::CLASS_CUSTOM_ACTIONS ),
> + string_table::svt( "NetConnection", NSV::CLASS_NET_CONNECTION ),
> + string_table::svt( "NetStream", NSV::CLASS_NET_STREAM ),
> + string_table::svt( "ContextMenu", NSV::CLASS_CONTEXT_MENU ),
> + string_table::svt( "MovieClipLoader", NSV::CLASS_MOVIE_CLIP_LOADER ),
> + string_table::svt( "Error", NSV::CLASS_ERROR ),
> + string_table::svt( "flash.display", NSV::NS_FLASH_DISPLAY ),
> + string_table::svt( "flash.text", NSV::NS_FLASH_TEXT ),
> + string_table::svt( "flash.geom", NSV::NS_FLASH_GEOM ),
> + string_table::svt( "flash.net", NSV::NS_FLASH_NET ),
> + string_table::svt( "flash.system", NSV::NS_FLASH_SYSTEM ),
> + string_table::svt( "flash.utils", NSV::NS_FLASH_UTILS ),
> + string_table::svt( "flash.events", NSV::NS_FLASH_EVENTS ),
> + string_table::svt( "flash.accessibility", NSV::NS_FLASH_ACCESSIBILITY
> ),
> + string_table::svt( "flash.media", NSV::NS_FLASH_MEDIA ),
> + string_table::svt( "flash.xml", NSV::NS_FLASH_XML ),
> + string_table::svt( "flash.ui", NSV::NS_FLASH_UI ),
> + string_table::svt( "adobe.utils", NSV::NS_ADOBE_UTILS ),
> + string_table::svt( "", NSV::INTERNAL_TYPE ),
> + string_table::svt( "", NSV::INTERNAL_STACK_PARENT ),
> + string_table::svt( "", NSV::INTERNAL_INTERFACES )
> };
>
> void load_strings(string_table *table, int version)
> {
> if (version < 7)
> + {
> table->lower_next_group();
> + table->set_insensitive();
> + }
>
> table->insert_group(preload_names,
> sizeof (preload_names) / sizeof (string_table::svt));
>
> Index: testsuite/server/PropertyListTest.cpp
> ===================================================================
> RCS file: /sources/gnash/gnash/testsuite/server/PropertyListTest.cpp,v
> retrieving revision 1.21
> retrieving revision 1.22
> diff -u -b -r1.21 -r1.22
> --- testsuite/server/PropertyListTest.cpp 21 Jan 2008 23:26:53 -0000
> 1.21
> +++ testsuite/server/PropertyListTest.cpp 29 Jan 2008 07:13:24 -0000
> 1.22
> @@ -68,6 +68,8 @@
>
> string_table& st = vm.getStringTable();
>
> + if (vm.getSWFVersion() > 6) // Below 7 is not case sensitive.
> + {
> check_equals(props.size(), 0);
> check ( props.setValue(st.find("Var0"), val, obj) );
> check_equals(props.size(), 1);
> @@ -121,6 +123,6 @@
> check_equals( vals["var0"], "value3" );
> check_equals( vals["Var0"], "value2" );
> check_equals( vals["var1"], "value" );
> -
> + } // end version specific
> }
>
>
>
> _______________________________________________
> Gnash-commit mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/gnash-commit
>