Beispiel #1
0
        public void Read(BinaryReader nfile)
        {
            int  i, j, k;
            long longrecn = intRecordNumber;

            nfile.BaseStream.Position = (longrecn * 512);
            intKeysInThisNode         = nfile.ReadInt32();
            for (i = 0; i < intGeneralKeysPerNode; i++)
            {
                lower_level[i]       = nfile.ReadInt32();
                key_record_number[i] = nfile.ReadInt32();

                if (objKeyType == dBaseType.N)
                {
                    //Key is a double number
                    key_expression[i] = new NodeKey(Convert.ToDouble(nfile.ReadInt64()));
                }
                else
                {
                    key_buffer = nfile.ReadBytes(intKeyExpressionSize);
                    for (k = 0; k < intKeyExpressionSize && key_buffer[k] != 0; k++)
                    {
                        ;
                    }
                    key_expression[i] = new NodeKey(dBaseConverter.C_ToString(key_buffer));
                }

                j = intKeyExpressionSize % 4;
                if (j > 0)
                {
                    j = 4 - j;
                }
                for (k = 0; k < j; k++)
                {
                    nfile.ReadByte();
                }
            } // for i

            if (lower_level[0] > 0)
            {
                boolBranch = true;
            }
            else
            {
                boolBranch = false;
            }

            lower_level[i] = nfile.ReadInt32();
        }
Beispiel #2
0
        public bool CompareKey(String keyToCompare)
        {
            NodeKey tempKey;

            if (objKeyType == dBaseType.F)
            {
                tempKey = new NodeKey(new NodeFloat(Double.Parse(keyToCompare)));
            }
            else
            {
                if (objKeyType == dBaseType.N)
                {
                    Double d = Double.Parse(keyToCompare);
                    tempKey = new NodeKey(d);
                }
                else
                {
                    tempKey = new NodeKey(keyToCompare);
                }
            }
            return(objActiveKey.CompareKey(tempKey) == 0);
        }
        public int CompareKey(NodeKey keyCompareTo)
        {
            int ret = 0;

            if (this.objType != keyCompareTo.NodeKeyType)
            {
                return(-1); // throw new xBaseJException("Node key types do not match");
            }
            if (this.objType == dBaseType.C)
            {
                String s = (String)this.objKey;
                s = RebuildString(s);
                String t = keyCompareTo.ToString();
                t = RebuildString(t);
                return(s.CompareTo(t));
            }
            if (this.objType == dBaseType.F)
            {
                NodeFloat nf  = (NodeFloat)this.objKey;
                NodeFloat nft = (NodeFloat)keyCompareTo.objKey;
                return(nf.CompareTo(nft));
            }
            Double d = (Double)this.objKey;

            double d2 = d - keyCompareTo.GetDouble;

            if (d2 < 0.0)
            {
                return(-1);
            }
            if (d2 > 0.0)
            {
                return(1);
            }
            return(ret);
        }
Beispiel #4
0
 public void SetKeyValue(double key)
 {
     key_expression[intPosition] = new NodeKey(key);
 }
Beispiel #5
0
 public void SetKeyValue(NodeKey key)
 {
     key_expression[intPosition] = key;
 }
 public KeyList(NodeKey Key, int i)
 {
     this.objKey   = Key;
     this.intWhere = i;
 }
Beispiel #7
0
        public int add_entry(int recno)
        {
            NodeKey newkey = BuildKey();

            return(add_entry(newkey, recno));
        }
Beispiel #8
0
 public abstract int add_entry(NodeKey key, int recno);