Explorar o código

Added Values() function to HashMap.

Lasse Öörni %!s(int64=11) %!d(string=hai) anos
pai
achega
e7bbcfe058
Modificáronse 2 ficheiros con 16 adicións e 0 borrados
  1. 10 0
      Source/Engine/Container/HashMap.h
  2. 6 0
      Source/Engine/Script/CoreAPI.cpp

+ 10 - 0
Source/Engine/Container/HashMap.h

@@ -462,6 +462,16 @@ public:
         return result;
         return result;
     }
     }
 
 
+    /// Return all the values.
+    Vector<U> Values() const
+    {
+        Vector<U> result;
+        result.Reserve(Size());
+        for (ConstIterator i = Begin(); i != End(); ++i)
+            result.Push(i->second_);
+        return result;
+    }
+    
     /// Return iterator to the beginning.
     /// Return iterator to the beginning.
     Iterator Begin() { return Iterator(Head()); }
     Iterator Begin() { return Iterator(Head()); }
     /// Return iterator to the beginning.
     /// Return iterator to the beginning.

+ 6 - 0
Source/Engine/Script/CoreAPI.cpp

@@ -353,6 +353,11 @@ static CScriptArray* VariantMapGetKeys(const VariantMap& map)
     return VectorToArray<StringHash>(map.Keys(), "Array<StringHash>");
     return VectorToArray<StringHash>(map.Keys(), "Array<StringHash>");
 }
 }
 
 
+static CScriptArray* VariantMapGetValues(const VariantMap& map)
+{
+    return VectorToArray<Variant>(map.Values(), "Array<Variant>");
+}
+
 static void RegisterVariant(asIScriptEngine* engine)
 static void RegisterVariant(asIScriptEngine* engine)
 {
 {
     engine->RegisterEnum("VariantType");
     engine->RegisterEnum("VariantType");
@@ -520,6 +525,7 @@ static void RegisterVariant(asIScriptEngine* engine)
     engine->RegisterObjectMethod("VariantMap", "void Clear()", asMETHOD(VariantMap, Clear), asCALL_THISCALL);
     engine->RegisterObjectMethod("VariantMap", "void Clear()", asMETHOD(VariantMap, Clear), asCALL_THISCALL);
     engine->RegisterObjectMethod("VariantMap", "uint get_length() const", asMETHOD(VariantMap, Size), asCALL_THISCALL);
     engine->RegisterObjectMethod("VariantMap", "uint get_length() const", asMETHOD(VariantMap, Size), asCALL_THISCALL);
     engine->RegisterObjectMethod("VariantMap", "Array<StringHash>@ get_keys() const", asFUNCTION(VariantMapGetKeys), asCALL_CDECL_OBJLAST);
     engine->RegisterObjectMethod("VariantMap", "Array<StringHash>@ get_keys() const", asFUNCTION(VariantMapGetKeys), asCALL_CDECL_OBJLAST);
+    engine->RegisterObjectMethod("VariantMap", "Array<Variant>@ get_values() const", asFUNCTION(VariantMapGetValues), asCALL_CDECL_OBJLAST);
 }
 }
 
 
 static void ConstructSpline(Spline* ptr)
 static void ConstructSpline(Spline* ptr)