static void AddPrefixTableEntry(ref SCHEMA_PREFIX_TABLE t, byte[] s) { PrefixTableEntry[] nt = new PrefixTableEntry[t.PrefixCount + 1]; Array.Copy(t.pPrefixEntry, nt, t.PrefixCount); // Find a prefix index that's not in use. Random rnd = new Random(); uint idx = 0; bool found = false; while (!found) { found = true; idx = (uint)rnd.Next(0, 65535); for (int i = 0; i < t.PrefixCount; ++i) { if (idx == t.pPrefixEntry[i].ndx) { found = false; break; } } } nt[nt.Length + 1] = new PrefixTableEntry(); nt[nt.Length + 1].ndx = idx; nt[nt.Length + 1].prefix.length = (uint)s.Length; nt[nt.Length + 1].prefix.elements = s; t.PrefixCount++; t.pPrefixEntry = nt; }
static PrefixTableEntry MakePrefixTableEntry(string oid, uint index) { PrefixTableEntry entry = new PrefixTableEntry(); entry.ndx = index; byte[] bo = ToBinary(oid); entry.prefix.length = (uint)bo.Length; entry.prefix.elements = bo; return(entry); }