在libtidy中,如何阅读字符串值选项

时间:2016-09-03 16:41:36

标签: c++ tidy

我正在使用libtidy并需要检索基于字符串的选项的当前值(例如,TidyOptErrFile, a.k.a. error-file)。

即使在阅读tidy source code之后,我也无法弄清楚用哪个函数读取这样一个选项的当前值。

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;

}

1 个答案:

答案 0 :(得分:1)

我找到了问题的原因,我将发布以供将来参考。

函数tidyOptParseValue()将API中给出的选项的名称作为其第二个参数。

因此,例如,在这种情况下,选项名称应为error-file(不是源代码中的枚举名称)。

更正后的行应为

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

使用该修复程序,按预期打印单词Foobar