gnash-commit
[Top][All Lists]
Advanced

[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
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]