/// <summary> /// Initializes a new instance of the <see cref="ObjectIdentifierValue"/> class. /// </summary> /// <param name="location">The declaration file location</param> /// <param name="parent">The component parent</param> /// <param name="name">The component name</param> /// <param name="value">The component value</param> public ObjectIdentifierValue( FileLocation location, ValueReference parent, string name, int value) : base("OBJECT IDENTIFIER") { this.location = location; this.parent = parent; this.name = name; this.value = value; }
/// <summary> /// Initializes a the MIB value from a value reference. This will /// resolve the reference, and set the bit corresponding to the /// value. /// </summary> /// <param name="log">The MIB loader log</param> /// <param name="type">The value type</param> /// <param name="vref">The value reference to resolve</param> /// <exception cref="MibException"> /// If an error occurred during initialization /// </exception> private void Initialize(MibLoaderLog log, MibType type, ValueReference vref) { MibValue val = vref.Initialize(log, type); if (val is NumberValue nv) { this.value.Set((int)nv.Value, true); } else { throw new MibException( vref.Location, "referenced value is not a number"); } }
/// <summary> /// Initializes the MIB value. This will remove all levels of /// indirection present, such as references to other values. No /// value information is lost by this operation. This method may /// modify this object as a side-effect, and will return the basic /// value. /// </summary> /// <remarks> /// This is an internal method that should /// only be called by the MIB loader. /// </remarks> /// <param name="log">The MIB Loader log</param> /// <param name="type">The value type</param> /// <returns>The basic MIB value</returns> public override MibValue Initialize(MibLoaderLog log, MibType type) { ValueReference vref = null; ObjectIdentifierValue oid; if (this.parent == null) { return(this); } else if (this.parent is ValueReference) { vref = (ValueReference)this.parent; } this.parent = this.parent.Initialize(log, type); if (vref != null) { if (this.parent is ObjectIdentifierValue) { oid = (ObjectIdentifierValue)this.parent; oid.AddChild(log, this.location, this); } else { throw new MibException( vref.Location, "referenced value is not an object identifier"); } } this.location = null; if (this.parent is ObjectIdentifierValue) { return(((ObjectIdentifierValue)this.parent).GetChildByValue(this.value)); } else { return(this); } }