va_list args; stringstream code; char* ename; int evalue; code << tname << " = setmetatable({}, {"; code << "__index = {"; // Iterate over the variadic arguments adding the enum values. va_start(args, tname); while(( = va_arg(args, char*)) != 0) { string ename_string = string(ename); evalue = va_arg(args, int); code << ename_string << "=" << evalue << ","; } va_end(args);