I am trying to make a Data formatter plugin for one of our data types. It is a string class that we use, similar to a C++ string.
The plugin is being called, but is apparently not working correctly.
As an example I am also trying to do it using a C++ string. I KNOW THAT I CAN SIMPLY TYPE {$VAR.c_str()}:s IN THE SUMMARY FIELD FOR A C++ STRING!!! Please don't tell me to try this.
Our string type also has a c_str() method, but is returning unicode and can't be displayed properly this way.
So, after all that, here is what I am trying to do, assuming I am using a C++ string
//==========PLIST SNIPPET==========
<key>string</key>
<dict>
<key>SummaryString</key>
<string>{(char *)string_summary($VAR, $ID)}:s</string>
</dict>
//==========PLIST SNIPPET==========
//==========CODE SNIPPET==========
char* string_summary(const string &str, int identifier)
{
char *result = NULL;
if ( NULL != _pbxgdb_plugin_functions )
{
// if I replace str in the formatter with s1, this string IS displayed
std::string s1 = "This is a c++ string";
result = _pbxgdb_plugin_functions->message(identifier, "<%s>", str.c_str());
}
return result;
}
//==========CODE SNIPPET==========
I had to change the function declaration to compile with gcc 4.0 and ensure gdb loaded the symbols for the data formatter. (I would give data formatter functions more unique names to avoid collisions.) I ended up with: