예제 #1
0
        /**
         * @brief Construct a sanitized object[] from a list.
         *        Also save the original list in case we need it later.
         */
        public XMRArrayListKey(LSL_List key)
        {
            original = key;
            object[] given = key.Data;
            int      len   = given.Length;

            length  = len;
            cleaned = new object[len];
            int hc = len;

            for (int i = 0; i < len; i++)
            {
                object v = XMR_Array.FixKey(given[i]);
                hc        += hc + ((hc < 0) ? 1 : 0);
                hc        ^= v.GetHashCode();
                cleaned[i] = v;
            }
            hashCode = hc;
        }
예제 #2
0
 /**
  * Read many matching elements from database.
  *  Input:
  *   keylike = as given to xmrScriptDBWrite()
  *   limit   = maximum number of elements to return
  *   offset  = skip over this many elements
  *  Output:
  *   returns array of key=>val of elements matching keylike
  */
 public override XMR_Array xmrScriptDBReadMany(string keylike, int limit, int offset)
 {
     lock (m_Engine.m_ScriptDBLock) {
         using (MySqlCommand cmd = getCommand()) {
             cmd.CommandText = "SELECT sdb_key,sdb_val FROM ScriptDBs WHERE sdb_key LIKE ?sdbkey ORDER BY sdb_key LIMIT " + limit + " OFFSET " + offset;
             cmd.Parameters.AddWithValue("?sdbkey", getPrefix() + keylike);
             using (IDataReader rdr = cmd.ExecuteReader()) {
                 XMR_Array array = new XMR_Array(this);
                 while (rdr.Read())
                 {
                     string key = rdr["sdb_key"].ToString().Substring(prefix.Length);
                     string val = rdr["sdb_val"].ToString();
                     array.SetByKey(key, val);
                 }
                 return(array);
             }
         }
     }
 }