コード例 #1
0
ファイル: MDOperand.cs プロジェクト: nbsn2/Llvm.NET
        internal MDOperand(MDNode owningNode, LLVMMDOperandRef handle)
        {
            handle.ValidateNotDefault(nameof(handle));

            OperandHandle = handle;
            OwningNode    = owningNode;
        }
コード例 #2
0
ファイル: MDOperand.cs プロジェクト: wyl2008056/Llvm.NET
        internal MDOperand(MDNode owningNode, LLVMMDOperandRef handle)
        {
            if (handle.Pointer == IntPtr.Zero)
            {
                throw new ArgumentNullException(nameof(handle));
            }

            OperandHandle = handle;
            OwningNode    = owningNode;
        }
コード例 #3
0
        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));
            }
        }
コード例 #4
0
ファイル: Context.cs プロジェクト: wyl2008056/Llvm.NET
        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);
        }
コード例 #5
0
ファイル: MDOperand.cs プロジェクト: wyl2008056/Llvm.NET
 internal static MDOperand FromHandle(MDNode owningNode, LLVMMDOperandRef handle)
 {
     return(owningNode.Context.GetOperandFor(owningNode, handle));
 }