NoWrap questions
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Start by reproducing the two NoWrap examples in the issue: the opaque-pointer typedef and the function-pointer typedef, then inspect the corresponding code-generation path. Separately trace how generated function, type, and constant names are chosen. Done means the intended NoWrap behavior and prefix-removal options are agreed and covered by focused generation tests.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
First off thanks for this incredible library it's mostly easy to use and works well. I do have some questions though regarding the NoWrap option.
- When using nowrap for an opaque ptr typedef it still wraps for example:
typedef struct Test Test;
Will result in
[global::System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public readonly partial struct Test : IEquatable<native.Test >
{
public Test(nint handle) => Handle = handle;
public nint Handle { get; }
public bool Equals(Test other) => Handle.Equals(other.Handle);
public override bool Equals(object obj) => obj is Test other && Equals(other);
public override int GetHashCode() => Handle.GetHashCode();
public override string ToString() => "0x" + (nint.Size == 8 ? Handle.ToString("X16") : Handle.ToString("X8"));
public static bool operator ==(Test left, Test right) => left.Equals(right);
public static bool operator !=(Testleft, Testright) => !left.Equals(right);
}
Is it possible to just ignore the typedef if it is an opaque ptr and just use nint whenever it is used as a parameter or member?
- When using nowrap for an function pointer typedef. it does not generate a type at all, for example:
typedef void (*Testfun)(int arg1, const char* arg2);
gets ignored and functions using it as param get the following signature
public static partial delegate*unmanaged[Cdecl]<int, byte*, void> setTestCallback(delegate*unmanaged[Cdecl]<int, byte*, void> callback);
Would it be possible to just not wrap it and add the delegate to the main class directly like so:
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void Testfun(int arg1, const char* arg2);
And lastly maybe a bit unrelated question but what would be the easiest way to change the names of functions, types and constants?Within a c library they often prefix a library name as a sort of namespace, In c# this would be unnecessary as you already have both the namespace and the class. Is there a built-in way to remove such a suffix? for example testInit() to just Init() where test is the prefix?
- Lenguaje dominante
- C#
- Estrellas
- 142
- Forks
- 16
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de xoofx/CppAst.CodeGen
-
Custom type mappingAbiertoquestion
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
xoofx/CppAst.CodeGen#35 · 1 comentario ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
xoofx/CppAst.CodeGen#34 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
xoofx/CppAst.CodeGen#32 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
xoofx/CppAst.CodeGen#29 ·
Todos los issues de xoofx/CppAst.CodeGen
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
Attention: a throwing permission check on one contributor fails the whole aggregation requestAbiertoready-for-agent size:S status:todo
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
elsa-workflows/elsa-foundation#2830 ·
Los mantenedores suelen responder en 1 día
-
Review - Maintainer WG-Maintainers-Build
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
PowerShell/PowerShell#28220 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area: docs eco: dotnet good first issue help wanted lane: free-agent roadmap size: XS type: docs
Dificultad 2/5 Menos de una hora Aptitud para principiantes 72/100
arminazimi/evergreen#377 ·
Los mantenedores suelen responder en 1 día
-
documentation good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día