The Labs \ Source Viewer \ SSCLI \ Microsoft.JScript \ VsaItem

  1. // ==++==
  2. //
  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. //
  14. // ==--==
  15. namespace Microsoft.JScript
  16. {
  17.    
  18.     using Microsoft.JScript.Vsa;
  19.     using System;
  20.     using System.Collections;
  21.     using System.Globalization;
  22.     using Microsoft.Vsa;
  23.     using System.Security.Permissions;
  24.    
  25.     public abstract class VsaItem : IVsaItem
  26.     {
  27.         protected string name;
  28.         internal string codebase;
  29.         internal VsaEngine engine;
  30.         protected VsaItemType type;
  31.         protected VsaItemFlag flag;
  32.         protected bool isDirty;
  33.        
  34.         internal VsaItem(VsaEngine engine, string itemName, VsaItemType type, VsaItemFlag flag)
  35.         {
  36.             this.engine = engine;
  37.             this.type = type;
  38.             this.name = itemName;
  39.             this.flag = flag;
  40.             this.codebase = null;
  41.             this.isDirty = true;
  42.         }
  43.        
  44.         internal virtual void CheckForErrors()
  45.         {
  46.         }
  47.        
  48.         internal virtual void Close()
  49.         {
  50.             this.engine = null;
  51.         }
  52.        
  53.         internal virtual void Compile()
  54.         {
  55.         }
  56.        
  57.        
  58.         internal virtual Type GetCompiledType()
  59.         {
  60.             // only code items have a compiled type
  61.             return null;
  62.         }
  63.        
  64.         public virtual bool IsDirty {
  65.             [PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
  66.             get {
  67.                 if (this.engine == null)
  68.                     throw new VsaException(VsaError.EngineClosed);
  69.                 return this.isDirty;
  70.             }
  71.             [PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
  72.             set {
  73.                 if (this.engine == null)
  74.                     throw new VsaException(VsaError.EngineClosed);
  75.                 this.isDirty = value;
  76.             }
  77.         }
  78.        
  79.         [PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
  80.         public virtual object GetOption(string name)
  81.         {
  82.             if (this.engine == null)
  83.                 throw new VsaException(VsaError.EngineClosed);
  84.             if (0 == String.Compare(name, "codebase", StringComparison.OrdinalIgnoreCase))
  85.                 return this.codebase;
  86.             throw new VsaException(VsaError.OptionNotSupported);
  87.         }
  88.        
  89.         public virtual string Name {
  90.             [PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
  91.             get {
  92.                 if (this.engine == null)
  93.                     throw new VsaException(VsaError.EngineClosed);
  94.                 return this.name;
  95.             }
  96.             [PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
  97.             set {
  98.                 if (this.engine == null)
  99.                     throw new VsaException(VsaError.EngineClosed);
  100.                 if (this.name == value)
  101.                     return;
  102.                 if (!this.engine.IsValidIdentifier(value))
  103.                     throw new VsaException(VsaError.ItemNameInvalid);
  104.                 foreach (IVsaItem item in this.engine.Items) {
  105.                     if (item.Name.Equals(value))
  106.                         throw new VsaException(VsaError.ItemNameInUse);
  107.                 }
  108.                 this.name = value;
  109.                 this.isDirty = true;
  110.                 this.engine.IsDirty = true;
  111.             }
  112.         }
  113.        
  114.         internal virtual void Remove()
  115.         {
  116.             this.engine = null;
  117.         }
  118.        
  119.         internal virtual void Reset()
  120.         {
  121.         }
  122.        
  123.         internal virtual void Run()
  124.         {
  125.         }
  126.        
  127.         [PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
  128.         public virtual void SetOption(string name, object value)
  129.         {
  130.             if (this.engine == null)
  131.                 throw new VsaException(VsaError.EngineClosed);
  132.             if (0 == String.Compare(name, "codebase", StringComparison.OrdinalIgnoreCase))
  133.                 this.codebase = (string)value;
  134.             else
  135.                 throw new VsaException(VsaError.OptionNotSupported);
  136.             this.isDirty = true;
  137.             this.engine.IsDirty = true;
  138.         }
  139.        
  140.         public VsaItemType ItemType {
  141.             [PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
  142.             get {
  143.                 if (this.engine == null)
  144.                     throw new VsaException(VsaError.EngineClosed);
  145.                 return this.type;
  146.             }
  147.         }
  148.        
  149.     }
  150.    
  151. }

Developer Fusion