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

  1. //------------------------------------------------------------------------------
  2. // <copyright file="QilTernary.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 three 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 QilTernary : QilNode
  28.     {
  29.         private QilNode left, center, right;
  30.        
  31.        
  32.         //-----------------------------------------------
  33.         // Constructor
  34.         //-----------------------------------------------
  35.        
  36.         /// <summary>
  37.         /// Construct a new node
  38.         /// </summary>
  39.         public QilTernary(QilNodeType nodeType, QilNode left, QilNode center, QilNode right) : base(nodeType)
  40.         {
  41.             this.left = left;
  42.             this.center = center;
  43.             this.right = right;
  44.         }
  45.        
  46.        
  47.         //-----------------------------------------------
  48.         // IList<QilNode> methods -- override
  49.         //-----------------------------------------------
  50.        
  51.         public override int Count {
  52.             get { return 3; }
  53.         }
  54.        
  55.         public override QilNode this[int index]
  56.         {
  57.             get {
  58.                 switch (index) {
  59.                     case 0:
  60.                         return this.left;
  61.                     case 1:
  62.                         return this.center;
  63.                     case 2:
  64.                         return this.right;
  65.                     default:
  66.                         throw new IndexOutOfRangeException();
  67.                         break;
  68.                 }
  69.             }
  70.             set {
  71.                 switch (index) {
  72.                     case 0:
  73.                         this.left = value;
  74.                         break;
  75.                     case 1:
  76.                         this.center = value;
  77.                         break;
  78.                     case 2:
  79.                         this.right = value;
  80.                         break;
  81.                     default:
  82.                         throw new IndexOutOfRangeException();
  83.                         break;
  84.                 }
  85.             }
  86.         }
  87.        
  88.        
  89.         //-----------------------------------------------
  90.         // QilTernary methods
  91.         //-----------------------------------------------
  92.        
  93.         public QilNode Left {
  94.             get { return this.left; }
  95.             set { this.left = value; }
  96.         }
  97.        
  98.         public QilNode Center {
  99.             get { return this.center; }
  100.             set { this.center = value; }
  101.         }
  102.        
  103.         public QilNode Right {
  104.             get { return this.right; }
  105.             set { this.right = value; }
  106.         }
  107.     }
  108. }

Developer Fusion