internal MDOperand(MDNode owningNode, LLVMMDOperandRef handle) { handle.ValidateNotDefault(nameof(handle)); OperandHandle = handle; OwningNode = owningNode; }
internal MDOperand(MDNode owningNode, LLVMMDOperandRef handle) { if (handle.Pointer == IntPtr.Zero) { throw new ArgumentNullException(nameof(handle)); } OperandHandle = handle; OwningNode = owningNode; }
public IEnumerator <MDOperand> GetEnumerator( ) { for (uint i = 0; i < Count; ++i) { LLVMMDOperandRef handle = NativeMethods.MDNodeGetOperand(OwningNode.MetadataHandle, i); if (handle.Pointer == IntPtr.Zero) { yield break; } yield return(MDOperand.FromHandle(OwningNode, handle)); } }
internal MDOperand GetOperandFor(MDNode owningNode, LLVMMDOperandRef handle) { if (owningNode.Context != this) { throw new ArgumentException("Cannot get operand for a node from a different context", nameof(owningNode)); } if (handle.Pointer == IntPtr.Zero) { throw new ArgumentNullException(nameof(handle)); } if (MDOperandCache.TryGetValue(handle, out MDOperand retVal)) { return(retVal); } retVal = new MDOperand(owningNode, handle); MDOperandCache.Add(handle, retVal); return(retVal); }
internal static MDOperand FromHandle(MDNode owningNode, LLVMMDOperandRef handle) { return(owningNode.Context.GetOperandFor(owningNode, handle)); }