Vim Tips Wiki

Convert enum to string table

1,624pages on
this wiki
Add New Page
Talk0 Share
Tip 107 Printable Monobook Previous Next

created September 5, 2001 · complexity basic · author Thomas Ramming · version 5.7

When testing your C/C++ programs, you sometimes wish to have a trace output showing you which enum value is used.

You can do this by creating a string table for that enum type, which contains the enum identifier as a string.

For example:

printf("%s", MyEnumStringTable[MyEnumVal]);

You can create the complete string table by:

  • Marking the lines containing the complete typedef enum.
  • Selecting menu C/C++.transform enum2Stringtab

You can create string table entries by:

  • Marking the lines within the typedef enum
  • Selecting menu C/C++.transform enum2String

This makes it easy to keep the enum (on changes) consistent to the string table.

Add the following lines to your gvimrc file:

31amenu C/C++.transform\ enum2Stringtab :s#[ ]*\\(\\w\\+\\)#/* \\1 */ "\\1"#<CR>o};<Esc>uOstatic const char* const Names[] = {<Esc><CR>:noh<CR>
31vmenu C/C++.transform\ enum2Stringtab :s#[ ]*\\(\\w\\+\\)#/* \\1 */ "\\1"#<CR>o};<Esc>uOstatic const char* const Names[] = {<Esc><CR>:noh<CR>

31amenu C/C++.transform\ enum2String :s#[ ]*\\(\\w\\+\\)#/* \\1 */ "\\1"#<CR>o}<Esc>:noh<CR>
31vmenu C/C++.transform\ enum2String :s#[ ]*\\(\\w\\+\\)#/* \\1 */ "\\1"#<CR>o}<Esc>:noh<CR>


Another similar way of doing this, is to define a function in your .vimrc file

function! Enum2Array()
    exe "normal! :'<,'>g/^\\s*$/d\n"
    exe "normal! :'<,'>s/\\(\\s*\\)\\([[:alnum:]_]*\\).*/\\1[\\2] = \"\\2\",/\n"
    normal `>
    exe "normal a\n};\n"
    normal `<
    exe "normal iconst char *[] =\n{\n"
    exe ":'<,'>normal ==" " try some indentation
    normal `< " set the cursor at the top

and then visual select the enumeration, and call the function.

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random Wiki