Ejemplo n.º 1
0
        /// <summary>
        /// Gey index names by space prefix
        /// </summary>
        /// <param name="space_name"></param>
        /// <returns></returns>
        private string[] get_indexes_for_space(string space_name)
        {
            List <string> lx = new List <string>();
            string        nm = space_name.Trim().ToLower();

            for (int i = 0; i < index_list.Count; i++)
            {
                string[] parsed_name = new string[2];
                parsed_name[0] = DEFS.ParseIndexSpace(index_list[i].Name);
                parsed_name[1] = DEFS.ParseIndexName(index_list[i].Name);
                if (nm == "")
                {
                    if (parsed_name[0] == "")
                    {
                        lx.Add(parsed_name[1]);
                    }
                }
                else
                {
                    if (VSLib.Compare(nm, parsed_name[0]))
                    {
                        lx.Add(parsed_name[1]);
                    }
                }
            }

            return(lx.ToArray());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Constructor - read index descriptor
        /// </summary>
        /// <param name="s"></param>
        /// <param name="addr"></param>
        internal VSIndex(VSpace space, long addr)
        {
            this.sp = space;

            this.ALLOCATION = sp.GetAllocationByDescriptor(addr);

            string s = ALLOCATION.ReadString(0, 4);

            if (s != DEFS.INDEX_SIGNATURE)
            {
                throw new VSException(DEFS.E0006_INVALID_SIGNATURE_CODE, " (Index Descriptor)");
            }
            this.space_name = DEFS.ParseIndexSpace(this.Name);
            this.index_name = DEFS.ParseIndexName(this.Name);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Constructor - create index descriptor
        /// </summary>
        /// <param name="s"></param>
        /// <param name="name"></param>
        /// <param name="unique"></param>
        internal VSIndex(VSpace space, string name, bool unique)
        {
            this.sp = space;

            this.ALLOCATION = sp.AllocateSpace(VSIndex.INDEX_DESCRIPTOR_LEN, DEFS.POOL_INDEX, true);

            this.ALLOCATION.Write(0, DEFS.INDEX_SIGNATURE);

            this.Name = name.Trim().ToLower();

            this.ROOT = 0;

            this.POOL = 0;

            this.UNIQUE = (short)(unique ? 1 : 0);

            this.space_name = DEFS.ParseIndexSpace(this.Name);
            this.index_name = DEFS.ParseIndexName(this.Name);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Add/Create reference
        /// </summary>
        /// <param name="index"></param>
        private void set_ref_index(VSIndex index)
        {
            string[] parsed_name = new string [2];
            parsed_name[0] = DEFS.ParseIndexSpace(index.Name);
            parsed_name[1] = DEFS.ParseIndexName(index.Name);

            string ref_name = DEFS.PrepareFullIndexName(parsed_name[0], DEFS.INDEX_CROSS_REFERENCES);

            if (this.index_exists(ref_name))
            {
                index.XRefs = this.get_index(ref_name);
            }
            else
            {
                VSIndex ref_index = new VSIndex(this, ref_name, false);
                index.XRefs = ref_index;
                index_list_full.Add(ref_index);
            }
        }