The Labs \ Source Viewer \ SSCLI \ System.Xml.Xsl.Qil \ QilBinary

  1. //------------------------------------------------------------------------------
  2. // <copyright file="QilBinary.cs" company="Microsoft">
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. // </copyright>
  14. //------------------------------------------------------------------------------
  15. using System;
  16. using System.Collections.Generic;
  17. using System.Diagnostics;
  18. namespace System.Xml.Xsl.Qil
  19. {
  20.    
  21.     /// <summary>
  22.     /// View over a Qil operator having two children.
  23.     /// </summary>
  24.     /// <remarks>
  25.     /// Don't construct QIL nodes directly; instead, use the <see cref="QilFactory">QilFactory</see>.
  26.     /// </remarks>
  27.     internal class QilBinary : QilNode
  28.     {
  29.         private QilNode left, right;
  30.        
  31.        
  32.         //-----------------------------------------------
  33.         // Constructor
  34.         //-----------------------------------------------
  35.        
  36.         /// <summary>
  37.         /// Construct a new node
  38.         /// </summary>
  39.         public QilBinary(QilNodeType nodeType, QilNode left, QilNode right) : base(nodeType)
  40.         {
  41.             this.left = left;
  42.             this.right = right;
  43.         }
  44.        
  45.        
  46.         //-----------------------------------------------
  47.         // IList<QilNode> methods -- override
  48.         //-----------------------------------------------
  49.        
  50.         public override int Count {
  51.             get { return 2; }
  52.         }
  53.        
  54.         public override QilNode this[int index]
  55.         {
  56.             get {
  57.                 switch (index) {
  58.                     case 0:
  59.                         return this.left;
  60.                     case 1:
  61.                         return this.right;
  62.                     default:
  63.                         throw new IndexOutOfRangeException();
  64.                         break;
  65.                 }
  66.             }
  67.             set {
  68.                 switch (index) {
  69.                     case 0:
  70.                         this.left = value;
  71.                         break;
  72.                     case 1:
  73.                         this.right = value;
  74.                         break;
  75.                     default:
  76.                         throw new IndexOutOfRangeException();
  77.                         break;
  78.                 }
  79.             }
  80.         }
  81.        
  82.        
  83.         //-----------------------------------------------
  84.         // QilBinary methods
  85.         //-----------------------------------------------
  86.        
  87.         public QilNode Left {
  88.             get { return this.left; }
  89.             set { this.left = value; }
  90.         }
  91.        
  92.         public QilNode Right {
  93.             get { return this.right; }
  94.             set { this.right = value; }
  95.         }
  96.     }
  97. }

Developer Fusion