Index: trunk/nv/lua/lua_state.hh
===================================================================
--- trunk/nv/lua/lua_state.hh	(revision 425)
+++ trunk/nv/lua/lua_state.hh	(revision 426)
@@ -294,4 +294,5 @@
 			size_t get_size();
 			bool has_field( string_view element );
+			uint64 get_string_hash_64( string_view element, uint64 defval = 0 );
 			std::string get_std_string( string_view element, string_view defval = string_view() );
 			const_string get_string( string_view element, string_view defval = string_view() );
Index: trunk/src/lua/lua_state.cc
===================================================================
--- trunk/src/lua/lua_state.cc	(revision 425)
+++ trunk/src/lua/lua_state.cc	(revision 426)
@@ -180,4 +180,19 @@
 	lua_getfield( m_state, -1, element.data() );
 	bool result = !( lua_isnil( m_state, -1 ) );
+	lua_pop( m_state, 1 );
+	return result;
+}
+
+uint64 nv::lua::table_guard::get_string_hash_64( string_view element, uint64 defval /*= 0 */ )
+{
+	lua_getfield( m_state, -1, element.data() );
+	size_t l = 0;
+	const char* str = nullptr;
+	uint64 result = defval;
+	if ( lua_type( m_state, -1 ) == LUA_TSTRING )
+	{
+		str = lua_tolstring( m_state, -1, &l );
+		result = hash_string< uint64 >( str, l );
+	}
 	lua_pop( m_state, 1 );
 	return result;
@@ -253,5 +268,4 @@
 	return result;
 }
-
 
 float nv::lua::table_guard::get_float( string_view element, float defval /*= 0.0 */ )
