ClangSharp
ClangSharp copied to clipboard
Struct with two or more bases will have duplicate member names
ClusApi.h:
#ifdef __cplusplus
typedef struct _CLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT
: public CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME
, public CLUSTER_SHARED_VOLUME_RENAME_INPUT_GUID_NAME {
#else
typedef struct _CLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT {
CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME;
CLUSTER_SHARED_VOLUME_RENAME_INPUT_GUID_NAME;
#endif
} CLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT, *PCLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT;
Scanned output for version 14:
[NativeTypeName("struct _CLUSTER_SHARED_VOLUME_RENAME_INPUT : CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME, CLUSTER_SHARED_VOLUME_RENAME_INPUT_NAME")]
[NativeInheritance("CLUSTER_SHARED_VOLUME_RENAME_INPUT_NAME")]
public partial struct CLUSTER_SHARED_VOLUME_RENAME_INPUT
{
public CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME Base;
public CLUSTER_SHARED_VOLUME_RENAME_INPUT_NAME Base;
}
Version 11 output:
[NativeTypeName("struct _CLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT : CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME, CLUSTER_SHARED_VOLUME_RENAME_INPUT_GUID_NAME")]
[NativeInheritance("CLUSTER_SHARED_VOLUME_RENAME_INPUT_GUID_NAME")]
public partial struct CLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT
{
public CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME __AnonymousBase_clusapi_L5475_C14;
public CLUSTER_SHARED_VOLUME_RENAME_INPUT_GUID_NAME __AnonymousBase_clusapi_L5476_C14;
}
I tried undefing __cplusplus but then the outputted struct was empty.
And by the way, I love the idea of the fields getting stable names! I'm looking forward to that.