я использую libtidy
и необходимо получить текущее значение строкового параметра (например, TidyOptErrFile
, a.k.a. error-file
).
Даже после прочтения tidy
исходный код, Я не могу понять, какую функцию использовать для читать текущая стоимость такой опции.
TidyOptGetVal()
Функция казалась многообещающей, но что бы я ни делал, она всегда возвращает нулевой указатель. Вот моя минималистская попытка (в C ++, поэтому я могу использовать auto
ключевое слово):
#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;
}
Я нашел причину проблемы, которую я опубликую для дальнейшего использования.
Функция tidyOptParseValue()
принимает в качестве второго аргумента название опции, как указано в API.
Так, например, имя опции в этом случае должно быть error-file
(не имя перечисления, найденного в исходном коде).
Исправленная строка должна быть
tidyOptParseValue(tidyDoc, "error-file", "Foobar");
Используя это исправление, слово Foobar
печатается, как и ожидалось.
Других решений пока нет …