mirror of
https://github.com/nasa/trick.git
synced 2024-12-24 23:36:43 +00:00
5065d96a15
* Pre-increment (rather than post-increment) STL iterators in for loops. #1594 * Fix a goof. #1594
69 lines
2.4 KiB
C++
69 lines
2.4 KiB
C++
#include <iostream>
|
|
#include <fstream>
|
|
#include <algorithm>
|
|
#include "trick/EnumAttributesMap.hh"
|
|
#include "trick/attributes.h"
|
|
#include "trick/command_line_protos.h"
|
|
|
|
// Instantiate static variables for template types for ATTRIBUTES * and ENUM_ATTR *
|
|
namespace Trick {
|
|
EnumAttributesMap * EnumAttributesMap::pInstance = NULL ;
|
|
}
|
|
|
|
void Trick::EnumAttributesMap::print_xml(std::ofstream & sie_out ) {
|
|
std::map<std::string, ENUM_ATTR *>::iterator it ;
|
|
ENUM_ATTR * enum_attr ;
|
|
|
|
for ( it = name_to_attr_map.begin() ; it != name_to_attr_map.end() ; ++it ) {
|
|
enum_attr = (*it).second ;
|
|
|
|
if ( enum_attr != NULL ) {
|
|
std::string name = it->first;
|
|
std::replace(name.begin(), name.end(), ':', '_');
|
|
sie_out << " <enumeration name=\"" << name << "\">\n" ;
|
|
while ( enum_attr->label[0] != '\0' ) {
|
|
sie_out << " <pair label=\"" << enum_attr->label << "\"" ;
|
|
sie_out << " value=\"" << enum_attr->value << "\"/>\n" ;
|
|
enum_attr++ ;
|
|
}
|
|
sie_out << " </enumeration>\n\n" ;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Trick::EnumAttributesMap::print_json(std::ofstream & sie_out ) {
|
|
std::map<std::string, ENUM_ATTR *>::iterator it ;
|
|
ENUM_ATTR * enum_attr ;
|
|
sie_out << " \"enumerations\": [\n" ;
|
|
for ( it = name_to_attr_map.begin() ; it != name_to_attr_map.end() ; ++it ) {
|
|
enum_attr = (*it).second ;
|
|
|
|
if ( enum_attr != NULL ) {
|
|
sie_out << " {\n";
|
|
std::string name = it->first;
|
|
std::replace(name.begin(), name.end(), ':', '_');
|
|
sie_out << " \"name\": \"" << name << "\",\n" ;
|
|
sie_out << " \"pairs\": [\n";
|
|
while ( enum_attr->label[0] != '\0' ) {
|
|
sie_out << " {\n" ;
|
|
sie_out << " \"label\": \"" << enum_attr->label << "\",\n" ;
|
|
sie_out << " \"value\": \"" << enum_attr->value << "\"\n" ;
|
|
sie_out << " }" ;
|
|
if((enum_attr + 1)->label[0] != '\0') {
|
|
sie_out << ',';
|
|
}
|
|
sie_out << "\n";
|
|
enum_attr++ ;
|
|
}
|
|
sie_out << " ]\n" ;
|
|
sie_out << " }" ;
|
|
if(std::next(it, 1) != name_to_attr_map.end()) {
|
|
sie_out << ',' ;
|
|
}
|
|
sie_out << '\n';
|
|
}
|
|
}
|
|
sie_out << " ],\n";
|
|
}
|
|
|