#region Copyright and License // // Fizzler - CSS Selector Engine for Microsoft .NET Framework // Copyright (c) 2009 Atif Aziz, Colin Ramsay. All rights reserved. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License as published by the Free // Software Foundation; either version 3 of the License, or (at your option) // any later version. // // This library is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more // details. // // You should have received a copy of the GNU Lesser General Public License // along with this library; if not, write to the Free Software Foundation, Inc., // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #endregion namespace Fizzler { using System; /// /// An implementation that delegates /// to two other objects, which /// can be useful for doing work in a single pass. /// public sealed class SelectorGeneratorTee : ISelectorGenerator { /// /// Gets the first generator used to initialize this generator. /// public ISelectorGenerator Primary { get; private set; } /// /// Gets the second generator used to initialize this generator. /// public ISelectorGenerator Secondary { get; private set; } /// /// Initializes a new instance of /// with the two other objects /// it delegates to. /// public SelectorGeneratorTee(ISelectorGenerator primary, ISelectorGenerator secondary) { if (primary == null) throw new ArgumentNullException("primary"); if (secondary == null) throw new ArgumentNullException("secondary"); Primary = primary; Secondary = secondary; } /// /// Delegates to then generator. /// public void OnInit() { Primary.OnInit(); Secondary.OnInit(); } /// /// Delegates to then generator. /// public void OnClose() { Primary.OnClose(); Secondary.OnClose(); } /// /// Delegates to then generator. /// public void OnSelector() { Primary.OnSelector(); Secondary.OnSelector(); } /// /// Delegates to then generator. /// public void Type(NamespacePrefix prefix, string type) { Primary.Type(prefix, type); Secondary.Type(prefix, type); } /// /// Delegates to then generator. /// public void Universal(NamespacePrefix prefix) { Primary.Universal(prefix); Secondary.Universal(prefix); } /// /// Delegates to then generator. /// public void Id(string id) { Primary.Id(id); Secondary.Id(id); } /// /// Delegates to then generator. /// public void Class(string clazz) { Primary.Class(clazz); Secondary.Class(clazz); } /// /// Delegates to then generator. /// public void AttributeExists(NamespacePrefix prefix, string name) { Primary.AttributeExists(prefix, name); Secondary.AttributeExists(prefix, name); } /// /// Delegates to then generator. /// public void AttributeExact(NamespacePrefix prefix, string name, string value) { Primary.AttributeExact(prefix, name, value); Secondary.AttributeExact(prefix, name, value); } /// /// Delegates to then generator. /// public void AttributeIncludes(NamespacePrefix prefix, string name, string value) { Primary.AttributeIncludes(prefix, name, value); Secondary.AttributeIncludes(prefix, name, value); } /// /// Delegates to then generator. /// public void AttributeDashMatch(NamespacePrefix prefix, string name, string value) { Primary.AttributeDashMatch(prefix, name, value); Secondary.AttributeDashMatch(prefix, name, value); } /// /// Delegates to then generator. /// public void AttributePrefixMatch(NamespacePrefix prefix, string name, string value) { Primary.AttributePrefixMatch(prefix, name, value); Secondary.AttributePrefixMatch(prefix, name, value); } /// /// Delegates to then generator. /// public void AttributeSuffixMatch(NamespacePrefix prefix, string name, string value) { Primary.AttributeSuffixMatch(prefix, name, value); Secondary.AttributeSuffixMatch(prefix, name, value); } /// /// Delegates to then generator. /// public void AttributeSubstring(NamespacePrefix prefix, string name, string value) { Primary.AttributeSubstring(prefix, name, value); Secondary.AttributeSubstring(prefix, name, value); } /// /// Delegates to then generator. /// public void FirstChild() { Primary.FirstChild(); Secondary.FirstChild(); } /// /// Delegates to then generator. /// public void LastChild() { Primary.LastChild(); Secondary.LastChild(); } /// /// Delegates to then generator. /// public void NthChild(int a, int b) { Primary.NthChild(a, b); Secondary.NthChild(a, b); } /// /// Delegates to then generator. /// public void OnlyChild() { Primary.OnlyChild(); Secondary.OnlyChild(); } /// /// Delegates to then generator. /// public void Empty() { Primary.Empty(); Secondary.Empty(); } /// /// Delegates to then generator. /// public void Child() { Primary.Child(); Secondary.Child(); } /// /// Delegates to then generator. /// public void Descendant() { Primary.Descendant(); Secondary.Descendant(); } /// /// Delegates to then generator. /// public void Adjacent() { Primary.Adjacent(); Secondary.Adjacent(); } /// /// Delegates to then generator. /// public void GeneralSibling() { Primary.GeneralSibling(); Secondary.GeneralSibling(); } /// /// Delegates to then generator. /// public void NthLastChild(int a, int b) { Primary.NthLastChild(a, b); Secondary.NthLastChild(a, b); } } }