internal void AddElement(string prefix, string ns, string localName) { var qname = new QNameIndex(); qname.Init(prefix, ns, localName); AddQName(qname, _elementNamesMap); }
internal void AddQName(QNameIndex qnameIndex, QNameArray mapQNames) { int index; if (mapQNames.TryAddQName(qnameIndex, out index)) { // value was added int prefixIndex = 0; int namespaceIndex = 0; int localNameIndex = 0; if (!string.IsNullOrEmpty(qnameIndex.Qname.Prefix)) { if (!FindPrefixNameIndex(qnameIndex.Qname.Prefix, out prefixIndex)) AddPrefixName(qnameIndex.Qname.Prefix); } if (!string.IsNullOrEmpty(qnameIndex.Qname.Ns)) { if (!FindNamespaceNameIndex(qnameIndex.Qname.Ns, out namespaceIndex)) AddNamespaceName(qnameIndex.Qname.Ns); } if (!FindLocalNameIndex(qnameIndex.Qname.LocalName, out localNameIndex)) AddLocalName(qnameIndex.Qname.LocalName); } }
internal void AddAttribute(string prefix, string ns, string localName) { var qname = new QNameIndex(); qname.Init(prefix, ns, localName); AddQName(qname, _attributeNamesMap); }
internal bool TryAddQName(QNameIndex qnameIndex, out int index) { QNameIndexLookup qnameLookup; if (_nameQNameIndexLookupMap.TryGetValue(qnameIndex.Qname.LocalName, out qnameLookup)) { // found QNameIndexLookup for localName, so try match prfix and namespace if (qnameLookup.TryGetIndex(qnameIndex.Qname.Prefix, qnameIndex.Qname.Ns, out index)) { return(false); } // match not found, so add a new entry _lastIndex++; qnameIndex.Index = _lastIndex; qnameLookup.AddQNameIndex(qnameIndex); } else { // match not found, so add a new lookup entry for localName _lastIndex++; qnameIndex.Index = _lastIndex; _nameQNameIndexLookupMap.Add(qnameIndex.Qname.LocalName, new QNameIndexLookup(qnameIndex)); } index = -1; return(true); }
internal void AddQNameIndex(QNameIndex qname) { int len = _qnames.Length; QNameIndex[] buffer = new QNameIndex[len + 1]; Array.Copy(_qnames, buffer, len); _qnames = buffer; _qnames[len] = qname; }
internal bool Contains(QNameIndex qnameIndex) { QNameIndexLookup qnameLookup; if (_nameQNameIndexLookupMap.TryGetValue(qnameIndex.Qname.LocalName, out qnameLookup)) { // found QNameIndexLookup return(qnameLookup.Contains(qnameIndex.Qname.Prefix, qnameIndex.Qname.Ns)); } return(false); }
internal bool Contains(string prefix, string ns) { for (int n = 0; n < _qnames.Length; n++) { QNameIndex qnameIndex = _qnames[n]; if ((qnameIndex.qname.prefix == prefix) && (qnameIndex.qname.ns == ns)) { return(true); } } return(false); }
internal bool TryGetIndex(string prefix, string ns, out int index) { for (int n = 0; n < _qnames.Length; n++) { QNameIndex qnameIndex = _qnames[n]; if ((qnameIndex.Qname.Prefix == prefix) && (qnameIndex.Qname.Ns == ns)) { index = qnameIndex.Index; return(true); } } index = -1; return(false); }
internal QNameIndexLookup(QNameIndex qname) { _qnames = new QNameIndex[1]; _qnames[0] = qname; }