va_list und Weitergabe
-
Hallo.
Wonach genau muss ich suchen, wenn ich mehr Informationen über va_list und Konsorten haben möchte? Ich weiß nämlich nicht einmal, wie genau diese "Technik" heißt, um die Parameter aus den...zu extrahieren.Ich möchte nämlich eine Art Wrapper für eine bereits existierende Funktion schreiben die
...annimmt. Ich erweitere eine Anwendung um ein Python Plugin, und Python bietet die FunktionPyArg_ParseTuple(PyObject*, const char *parsestring, ...);. Aufruf (Beispiel):int iArg1; float flArg2; PyArg_ParseTuple(pyArgs, "if", iArg1, flArg2);Vom ganzen her ist das logisch und einfach zu verstehen (für mich). Nun gibt es in meiner Anwendung aber eine ganze Menge mehr Möglichkeiten, Objekte und Typen zu übergeben. Deshalb möchte ich mir einen Wrapper erstellen und muss sozusagen die Übergabe von
...simulieren. Hier mal Pseudocode:void CPython::getArgs(PyObject *pyArgs, int iNeeded, int iOptional, ...) { // Variablen erstellen // Parsestring erstellen // Objekte anpassen // Nun die aufbereiteten Daten an die echte Funktion weitergeben: // Genau hier liegt beim Problem. Wie kriege ich das hin mit den ...? // Ich könnte natürlich für jede mögliche Anzahl von 1 bis 30 Parametern eine // if Abfragen erstellen und dann die passende Anzahl aufrufen // Aber mir geht es mittlerweile auch um's Prinzip PyArg_ParseTuple(pyArgs, parsestring, dynParam1, dynParam2); } // Beispielaufruf int iArg1; float flArg2; pPython->getArgs(pyArgs, 2, 0, PyType_Int, &iArg1, PyType_Float, &flArg2);Das ganze wäre dann halt noch zu ergänzen.
Gruß & Danke!