2016-09-03 2 views
1

Ich verwende libtidy und müssen den aktuellen Wert einer string-basierten Option abrufen (z. B. TidyOptErrFile, a.k.a. error-file).In Libtidy, wie Zeichenfolge-Wert-Optionen lesen

Auch nach dem Durchlesen der tidy source code kann ich nicht herausfinden, welche Funktion zu den aktuellen Wert einer solchen Option zu verwenden.

Die TidyOptGetVal() Funktion schien vielversprechend, aber egal was ich tue, es gibt immer einen Nullzeiger zurück. Hier ist mein minimalistischer Versuch (in C++, so kann ich das auto Stichwort):

#include <iostream> 
#include <tidy.h> 
#include <tidybuffio.h> 
#include <tidyenum.h> 

using namespace std; 

int main(int argc, const char * argv[]) { 

    auto tidyDoc = tidyCreate(); 


    // The following should set the `error-file` property to `Foobar` 
    tidyOptParseValue(tidyDoc, "TidyErrFile", "Foobar"); 

    // The type is `ctmbstr` which is just an alias for `const char*` 
    auto errorFile = tidyOptGetValue(tidyDoc, TidyErrFile); 

    if (errorFile==nullptr) { 

     cout << "Null pointer" << endl; 

    } else { 

     cout << errorFile << endl; 

    } 

    tidyRelease(tidyDoc); 

    return 0; 

} 

Antwort

1

Ich fand den Grund für das Problem, das ich für die Zukunft schreiben werde.

Die Funktion tidyOptParseValue() übernimmt als zweites Argument den Namen der Option, wie in der API angegeben.

So sollte zum Beispiel der Optionsname in diesem Fall error-file sein (nicht der Name der Enumeration im Quellcode).

Die korrigierte Zeile

tidyOptParseValue(tidyDoc, "error-file", "Foobar"); 

Unter Verwendung dieser fix sein sollte, wird das Wort Foobar gedruckt, wie erwartet.