NoWrap questions
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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?
- Lingua principale
- C#
- Stelle
- 142
- Fork
- 16
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di xoofx/CppAst.CodeGen
-
Custom type mappingApertaquestion
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
xoofx/CppAst.CodeGen#35 · 1 commento ·
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
xoofx/CppAst.CodeGen#34 · 1 commento ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
xoofx/CppAst.CodeGen#32 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
xoofx/CppAst.CodeGen#29 ·
Tutte le issue di xoofx/CppAst.CodeGen
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
good first issue help wanted ready-for-human
Difficoltà 2/5 Mezza giornata Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Attention: a throwing permission check on one contributor fails the whole aggregation requestApertaready-for-agent size:S status:todo
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
elsa-workflows/elsa-foundation#2830 ·
I maintainer di solito rispondono entro 1 giorno
-
Review - Maintainer WG-Maintainers-Build
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
PowerShell/PowerShell#28220 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area: docs eco: dotnet good first issue help wanted lane: free-agent roadmap size: XS type: docs
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 72/100
arminazimi/evergreen#377 ·
I maintainer di solito rispondono entro 1 giorno