Esempio n. 1
0
        public int GetPropertyId(LazyStringValue propName)
        {
            PropertyName prop;

            if (_propertyNameToId.TryGetValue(propName, out prop) == false)
            {
                var propIndex = _docPropNames.Count;
                propName = _context.Intern(propName);
                prop     = new PropertyName
                {
                    Comparer        = propName,
                    GlobalSortOrder = -1,
                    PropertyId      = propIndex
                };

                _docPropNames.Add(prop);
                _propertiesSortOrder.Add(prop);
                _propertyNameToId[propName] = prop;
                _propertiesNeedSorting      = true;
                if (_docPropNames.Count > PropertiesDiscovered + 1)
                {
                    prop = SwapPropertyIds(prop);
                }
                PropertiesDiscovered++;
            }
            else if (prop.PropertyId >= PropertiesDiscovered)
            {
                if (prop.PropertyId != PropertiesDiscovered)
                {
                    prop = SwapPropertyIds(prop);
                }
                PropertiesDiscovered++;
            }
            return(prop.PropertyId);
        }