#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);
}
}
}