Skip to content

Commit b12fdd3

Browse files
committed
llvmsharp_MDString_getString
1 parent c41303b commit b12fdd3

3 files changed

Lines changed: 14 additions & 0 deletions

File tree

sources/LLVMSharp.Interop/llvmsharp/llvmsharp.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,10 @@ public static unsafe partial class llvmsharp
184184
[return: NativeTypeName("LLVMMetadataRef")]
185185
public static extern LLVMOpaqueMetadata* MDNode_getOperand([NativeTypeName("LLVMMetadataRef")] LLVMOpaqueMetadata* metadata, [NativeTypeName("uint32_t")] uint index);
186186

187+
[DllImport("libLLVMSharp", CallingConvention = CallingConvention.Cdecl, EntryPoint = "llvmsharp_MDString_getString", ExactSpelling = true)]
188+
[return: NativeTypeName("const char *")]
189+
public static extern sbyte* MDString_getString([NativeTypeName("LLVMMetadataRef")] LLVMOpaqueMetadata* mdstring, [NativeTypeName("int32_t *")] int* out_size);
190+
187191
[DllImport("libLLVMSharp", CallingConvention = CallingConvention.Cdecl, EntryPoint = "llvmsharp_Metadata_IsAMDNode", ExactSpelling = true)]
188192
[return: NativeTypeName("LLVMMetadataRef")]
189193
public static extern LLVMOpaqueMetadata* Metadata_IsAMDNode([NativeTypeName("LLVMMetadataRef")] LLVMOpaqueMetadata* metadata);

sources/libLLVMSharp/LLVMSharp.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,14 @@ LLVMMetadataRef llvmsharp_MDNode_getOperand(LLVMMetadataRef metadata, uint32_t i
400400
return wrap(unwrapped->getOperand(index));
401401
}
402402

403+
const char* llvmsharp_MDString_getString(LLVMMetadataRef mdstring, int32_t* out_size)
404+
{
405+
MDString* unwrapped = unwrap<MDString>(mdstring);
406+
StringRef str = unwrapped->getString();
407+
*out_size = (int32_t)str.size();
408+
return str.data();
409+
}
410+
403411
#define LLVMSHARP_METADATA_ISA(CPP_TYPE) \
404412
LLVMMetadataRef llvmsharp_Metadata_IsA##CPP_TYPE(LLVMMetadataRef metadata) \
405413
{ \

sources/libLLVMSharp/LLVMSharp.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ LLVMSHARP_LINKAGE uint32_t llvmsharp_MDNode_getNumOperands(LLVMMetadataRef metad
167167

168168
LLVMSHARP_LINKAGE LLVMMetadataRef llvmsharp_MDNode_getOperand(LLVMMetadataRef metadata, uint32_t index);
169169

170+
LLVMSHARP_LINKAGE const char* llvmsharp_MDString_getString(LLVMMetadataRef mdstring, int32_t* out_size);
171+
170172
#define LLVMSHARP_METADATA_ISA(CPP_TYPE) LLVMSHARP_LINKAGE LLVMMetadataRef llvmsharp_Metadata_IsA##CPP_TYPE(LLVMMetadataRef metadata);
171173

172174
LLVM_FOR_EACH_METADATA_SUBCLASS(LLVMSHARP_METADATA_ISA)

0 commit comments

Comments
 (0)