mirror of
https://github.com/nasa/trick.git
synced 2025-02-07 11:20:24 +00:00
Clean up io_* code #330
This commit is contained in:
parent
0039b95a73
commit
4f49460a6f
@ -411,7 +411,7 @@ namespace Trick {
|
|||||||
@param attr - pointer to parent attributes structure.
|
@param attr - pointer to parent attributes structure.
|
||||||
@return 0 on success, otherwise failure.
|
@return 0 on success, otherwise failure.
|
||||||
*/
|
*/
|
||||||
int add_attr_info(std::string& type_name , ATTRIBUTES* attr , const char * file_name = "None" , unsigned int line_num = 0 ) ;
|
int add_attr_info(const std::string& type_name , ATTRIBUTES* attr , const char * file_name = "None" , unsigned int line_num = 0 ) ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Adds a template name translation to our map. The base template type is mangled to the io_src name
|
Adds a template name translation to our map. The base template type is mangled to the io_src name
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -2,6 +2,7 @@
|
|||||||
#ifndef PRINTFILECONTENTS10_HH
|
#ifndef PRINTFILECONTENTS10_HH
|
||||||
#define PRINTFILECONTENTS10_HH
|
#define PRINTFILECONTENTS10_HH
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
@ -28,80 +29,80 @@ class PrintFileContents10 : public PrintFileContentsBase {
|
|||||||
PrintFileContents10() ;
|
PrintFileContents10() ;
|
||||||
|
|
||||||
/** Prints the io_src header information */
|
/** Prints the io_src header information */
|
||||||
virtual void printIOHeader(std::ofstream & outfile , std::string header_file_name) ;
|
virtual void printIOHeader(std::ostream & outfile , std::string header_file_name) ;
|
||||||
|
|
||||||
/** Prints all io_src code for incoming class */
|
/** Prints all io_src code for incoming class */
|
||||||
virtual void printClass(std::ofstream & outfile , ClassValues * cv) ;
|
virtual void printClass(std::ostream & outfile , ClassValues * cv) ;
|
||||||
|
|
||||||
/** Prints all io_src code for incoming enum */
|
/** Prints all io_src code for incoming enum */
|
||||||
virtual void printEnum(std::ofstream & outfile , EnumValues * ev) ;
|
virtual void printEnum(std::ostream & outfile , EnumValues * ev) ;
|
||||||
|
|
||||||
/** Prints all classes for global map */
|
/** Prints all classes for global map */
|
||||||
virtual void printClassMapHeader(std::ofstream & out, std::string function_name ) ;
|
virtual void printClassMapHeader(std::ostream & out, std::string function_name ) ;
|
||||||
virtual void printClassMap(std::ofstream & outfile , ClassValues * cv) ;
|
virtual void printClassMap(std::ostream & outfile , ClassValues * cv) ;
|
||||||
virtual void printClassMapFooter(std::ofstream & out) ;
|
virtual void printClassMapFooter(std::ostream & out) ;
|
||||||
|
|
||||||
/** Prints all enums for global map */
|
/** Prints all enums for global map */
|
||||||
virtual void printEnumMapHeader(std::ofstream & out, std::string function_name ) ;
|
virtual void printEnumMapHeader(std::ostream & out, std::string function_name ) ;
|
||||||
virtual void printEnumMap(std::ofstream & out, EnumValues * ev) ;
|
virtual void printEnumMap(std::ostream & out, EnumValues * ev) ;
|
||||||
virtual void printEnumMapFooter(std::ofstream & out) ;
|
virtual void printEnumMapFooter(std::ostream & out) ;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/** Prints enumeration attributes */
|
/** Prints enumeration attributes */
|
||||||
void print_enum_attr(std::ofstream & outfile , EnumValues * in_enum) ;
|
void print_enum_attr(std::ostream & outfile , EnumValues * in_enum) ;
|
||||||
|
|
||||||
/** Prints attributes for a field */
|
/** Prints attributes for a field */
|
||||||
void print_field_attr(std::ofstream & outfile , FieldDescription * fdes ) ;
|
void print_field_attr(std::ostream & outfile , FieldDescription * fdes ) ;
|
||||||
|
|
||||||
/** Prints class attributes */
|
/** Prints class attributes */
|
||||||
void print_class_attr(std::ofstream & outfile , ClassValues * in_class) ;
|
void print_class_attr(std::ostream & outfile , ClassValues * in_class) ;
|
||||||
|
|
||||||
/** Prints init_attr function for each class */
|
/** Prints init_attr function for each class */
|
||||||
void print_field_init_attr_stmts(std::ofstream & outfile , FieldDescription * fdes ,
|
void print_field_init_attr_stmts(std::ostream & outfile , FieldDescription * fdes ,
|
||||||
ClassValues * cv , unsigned int index ) ;
|
ClassValues * cv , unsigned int index ) ;
|
||||||
|
|
||||||
/** Prints add_attr_info statements for each inherited class */
|
/** Prints add_attr_info statements for each inherited class */
|
||||||
void print_inherited_add_attr_info(std::ofstream & outfile , ClassValues * cv ) ;
|
void print_inherited_add_attr_info(std::ostream & outfile , ClassValues * cv ) ;
|
||||||
|
|
||||||
/** Prints init_attr function for each class */
|
/** Prints init_attr function for each class */
|
||||||
void print_init_attr_func(std::ofstream & outfile , ClassValues * c ) ;
|
void print_init_attr_func(std::ostream & outfile , ClassValues * c ) ;
|
||||||
|
|
||||||
/** Prints the io_src_sizeof function for enumerations */
|
/** Prints the io_src_sizeof function for enumerations */
|
||||||
void print_enum_io_src_sizeof(std::ofstream & outfile , EnumValues * ev ) ;
|
void print_enum_io_src_sizeof(std::ostream & outfile , EnumValues * ev ) ;
|
||||||
|
|
||||||
/** Prints the C linkage init_attr function */
|
/** Prints the C linkage init_attr function */
|
||||||
void print_init_attr_c_intf(std::ofstream & outfile , ClassValues * cv ) ;
|
void print_init_attr_c_intf(std::ostream & outfile , ClassValues * cv ) ;
|
||||||
|
|
||||||
/** Prints the io_src_sizeof function */
|
/** Prints the io_src_sizeof function */
|
||||||
void print_io_src_sizeof(std::ofstream & outfile , ClassValues * cv ) ;
|
void print_io_src_sizeof(std::ostream & outfile , ClassValues * cv ) ;
|
||||||
|
|
||||||
/** Prints the io_src_allocate function */
|
/** Prints the io_src_allocate function */
|
||||||
void print_io_src_allocate(std::ofstream & outfile , ClassValues * cv ) ;
|
void print_io_src_allocate(std::ostream & outfile , ClassValues * cv ) ;
|
||||||
|
|
||||||
/** Prints the io_src_destruct function */
|
/** Prints the io_src_destruct function */
|
||||||
void print_io_src_destruct(std::ofstream & outfile , ClassValues * cv ) ;
|
void print_io_src_destruct(std::ostream & outfile , ClassValues * cv ) ;
|
||||||
|
|
||||||
/** Prints the io_src_delete function */
|
/** Prints the io_src_delete function */
|
||||||
void print_io_src_delete(std::ofstream & outfile , ClassValues * cv ) ;
|
void print_io_src_delete(std::ostream & outfile , ClassValues * cv ) ;
|
||||||
|
|
||||||
/** Prints stl helper function prototypes */
|
/** Prints stl helper function prototypes */
|
||||||
void print_stl_helper_proto(std::ofstream & outfile , ClassValues * in_class) ;
|
void print_stl_helper_proto(std::ostream & outfile , ClassValues * in_class) ;
|
||||||
|
|
||||||
/** Prints stl helper function */
|
/** Prints stl helper function */
|
||||||
void print_stl_helper(std::ofstream & outfile , ClassValues * in_class) ;
|
void print_stl_helper(std::ostream & outfile , ClassValues * in_class) ;
|
||||||
|
|
||||||
/** Prints stl checkpoint function */
|
/** Prints stl checkpoint function */
|
||||||
void print_checkpoint_stl(std::ofstream & outfile , FieldDescription * fdes , ClassValues * in_class) ;
|
void print_checkpoint_stl(std::ostream & outfile , FieldDescription * fdes , ClassValues * in_class) ;
|
||||||
|
|
||||||
/** Prints stl post_checkpoint function */
|
/** Prints stl post_checkpoint function */
|
||||||
void print_post_checkpoint_stl(std::ofstream & outfile , FieldDescription * fdes , ClassValues * in_class) ;
|
void print_post_checkpoint_stl(std::ostream & outfile , FieldDescription * fdes , ClassValues * in_class) ;
|
||||||
|
|
||||||
/** Prints stl restart function */
|
/** Prints stl restart function */
|
||||||
void print_restore_stl(std::ofstream & outfile , FieldDescription * fdes , ClassValues * in_class) ;
|
void print_restore_stl(std::ostream & outfile , FieldDescription * fdes , ClassValues * in_class) ;
|
||||||
|
|
||||||
/** Prints stl clear function */
|
/** Prints stl clear function */
|
||||||
void print_clear_stl(std::ofstream & outfile , FieldDescription * fdes , ClassValues * in_class) ;
|
void print_clear_stl(std::ostream & outfile , FieldDescription * fdes , ClassValues * in_class) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
@ -14,11 +12,11 @@ PrintFileContents13::PrintFileContents13() {}
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
void PrintFileContents13::printIOHeader(std::ofstream & outfile , std::string header_file_name) {
|
void PrintFileContents13::printIOHeader(std::ostream & ostream , std::string header_file_name) {
|
||||||
if ( ! header_file_name.compare("S_source.hh") ) {
|
if ( ! header_file_name.compare("S_source.hh") ) {
|
||||||
header_file_name = "../S_source.hh" ;
|
header_file_name = "../S_source.hh" ;
|
||||||
}
|
}
|
||||||
outfile << "\n"
|
ostream << "\n"
|
||||||
"/*\n"
|
"/*\n"
|
||||||
" * This file was automatically generated by the ICG based on the file:\n"
|
" * This file was automatically generated by the ICG based on the file:\n"
|
||||||
" * " << header_file_name << "\n"
|
" * " << header_file_name << "\n"
|
||||||
@ -47,10 +45,10 @@ std::string PrintFileContents13::enumeration_identifier( EnumValues * e ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Prints enumeration attributes */
|
/** Prints enumeration attributes */
|
||||||
void PrintFileContents13::print_enum_attr(std::ofstream & outfile , EnumValues * e ) {
|
void PrintFileContents13::print_enum_attr(std::ostream & ostream , EnumValues * e ) {
|
||||||
EnumValues::NameValueIterator nvit ;
|
EnumValues::NameValueIterator nvit ;
|
||||||
|
|
||||||
outfile << "class type_" << enumeration_identifier(e) << " {\n"
|
ostream << "class type_" << enumeration_identifier(e) << " {\n"
|
||||||
<< "public:\n"
|
<< "public:\n"
|
||||||
<< " type_" << enumeration_identifier(e) << "() {\n"
|
<< " type_" << enumeration_identifier(e) << "() {\n"
|
||||||
<< " TypeDictionary * type_dict = TypeDictionary::getInstance();\n"
|
<< " TypeDictionary * type_dict = TypeDictionary::getInstance();\n"
|
||||||
@ -59,10 +57,10 @@ void PrintFileContents13::print_enum_attr(std::ofstream & outfile , EnumValues *
|
|||||||
;
|
;
|
||||||
|
|
||||||
for ( nvit = e->begin() ; nvit != e->end() ; nvit++ ) {
|
for ( nvit = e->begin() ; nvit != e->end() ; nvit++ ) {
|
||||||
outfile << " dataType->addEnumerator(\"" << (*nvit).first << "\" , " << (*nvit).second << ");\n" ;
|
ostream << " dataType->addEnumerator(\"" << (*nvit).first << "\" , " << (*nvit).second << ");\n" ;
|
||||||
}
|
}
|
||||||
|
|
||||||
outfile << " typeDictionary->addTypeDefinition( \"" << e->getName() << "\", dataType );\n"
|
ostream << " typeDictionary->addTypeDefinition( \"" << e->getName() << "\", dataType );\n"
|
||||||
<< " } catch ( std::logic_error e ) {\n"
|
<< " } catch ( std::logic_error e ) {\n"
|
||||||
<< " std::cerr << e.what();\n"
|
<< " std::cerr << e.what();\n"
|
||||||
<< " }\n"
|
<< " }\n"
|
||||||
@ -102,11 +100,11 @@ std::string PrintFileContents13::bit_field_setter_name(ClassValues * c, FieldDes
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Prints attributes for a field */
|
/** Prints attributes for a field */
|
||||||
void PrintFileContents13::print_field_attr(std::ofstream & outfile , ClassValues * c, FieldDescription * fv ) {
|
void PrintFileContents13::print_field_attr(std::ostream & ostream , ClassValues * c, FieldDescription * fv ) {
|
||||||
|
|
||||||
if (fv->isBitField()) {
|
if (fv->isBitField()) {
|
||||||
outfile << " " ;
|
ostream << " " ;
|
||||||
outfile << "dataType->addBitFieldMember(\"" << fv->getName() << "\", "
|
ostream << "dataType->addBitFieldMember(\"" << fv->getName() << "\", "
|
||||||
<< bit_field_getter_name(c,fv) << ", "
|
<< bit_field_getter_name(c,fv) << ", "
|
||||||
<< bit_field_setter_name(c,fv) << ");\n"
|
<< bit_field_setter_name(c,fv) << ");\n"
|
||||||
;
|
;
|
||||||
@ -115,40 +113,40 @@ void PrintFileContents13::print_field_attr(std::ofstream & outfile , ClassValues
|
|||||||
|
|
||||||
// For arrays and/or pointers, generate a dimension-size array.
|
// For arrays and/or pointers, generate a dimension-size array.
|
||||||
if (ndims) {
|
if (ndims) {
|
||||||
outfile << " " ;
|
ostream << " " ;
|
||||||
outfile << "unsigned int dim_" << fv->getName() << "[] = {";
|
ostream << "unsigned int dim_" << fv->getName() << "[] = {";
|
||||||
for ( unsigned int ii = 0 ; ii < ndims ; ii++ ) {
|
for ( unsigned int ii = 0 ; ii < ndims ; ii++ ) {
|
||||||
if (ii) {
|
if (ii) {
|
||||||
outfile << ",";
|
ostream << ",";
|
||||||
}
|
}
|
||||||
outfile << fv->getArrayDim(ii) ;
|
ostream << fv->getArrayDim(ii) ;
|
||||||
}
|
}
|
||||||
outfile << "};\n";
|
ostream << "};\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
outfile << " " ;
|
ostream << " " ;
|
||||||
if (fv->isStatic()) {
|
if (fv->isStatic()) {
|
||||||
outfile << "dataType->addStaticMember( \"";
|
ostream << "dataType->addStaticMember( \"";
|
||||||
outfile << fv->getName()
|
ostream << fv->getName()
|
||||||
<< "\", &" << c->getName() << "::" << fv->getName() << ", \"" << fv->getTypeName() << "\", ";
|
<< "\", &" << c->getName() << "::" << fv->getName() << ", \"" << fv->getTypeName() << "\", ";
|
||||||
} else {
|
} else {
|
||||||
outfile << "dataType->addRegularMember( \"";
|
ostream << "dataType->addRegularMember( \"";
|
||||||
outfile << fv->getName() << "\", offsetof(" << c->getName() << ", " << fv->getName() << "), \"" << fv->getTypeName() << "\", ";
|
ostream << fv->getName() << "\", offsetof(" << c->getName() << ", " << fv->getName() << "), \"" << fv->getTypeName() << "\", ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (ndims) {
|
if (ndims) {
|
||||||
outfile << ndims << ", " << "dim_" << fv->getName() ;
|
ostream << ndims << ", " << "dim_" << fv->getName() ;
|
||||||
} else {
|
} else {
|
||||||
outfile << "0, NULL" ;
|
ostream << "0, NULL" ;
|
||||||
}
|
}
|
||||||
outfile <<");\n" ;
|
ostream <<");\n" ;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Prints class attributes */
|
/** Prints class attributes */
|
||||||
void PrintFileContents13::print_class_attr(std::ofstream & outfile , ClassValues * c ) {
|
void PrintFileContents13::print_class_attr(std::ostream & ostream , ClassValues * c ) {
|
||||||
|
|
||||||
ClassValues::FieldIterator fit ;
|
ClassValues::FieldIterator fit ;
|
||||||
|
|
||||||
@ -160,20 +158,20 @@ void PrintFileContents13::print_class_attr(std::ofstream & outfile , ClassValues
|
|||||||
if ( f->isBitField()) {
|
if ( f->isBitField()) {
|
||||||
|
|
||||||
// Create bitfield getter.
|
// Create bitfield getter.
|
||||||
outfile << "static " << f->getTypeName() << " " << bit_field_getter_name(c,f) << "()(void* addr) {\n"
|
ostream << "static " << f->getTypeName() << " " << bit_field_getter_name(c,f) << "()(void* addr) {\n"
|
||||||
<< " return ((" << class_identifier(c) << "*)addr)->" << f->getName() << ";\n"
|
<< " return ((" << class_identifier(c) << "*)addr)->" << f->getName() << ";\n"
|
||||||
<< "}\n"
|
<< "}\n"
|
||||||
;
|
;
|
||||||
|
|
||||||
// Create bitfield setter.
|
// Create bitfield setter.
|
||||||
outfile << "static void " << bit_field_setter_name(c,f) << "(void* addr, "<< f->getTypeName() << " v) {\n"
|
ostream << "static void " << bit_field_setter_name(c,f) << "(void* addr, "<< f->getTypeName() << " v) {\n"
|
||||||
<< " ((" << class_identifier(c) << "*)addr)->" << f->getName() << " = v;\n"
|
<< " ((" << class_identifier(c) << "*)addr)->" << f->getName() << " = v;\n"
|
||||||
<< "}\n"
|
<< "}\n"
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
outfile << "class type_" << class_identifier(c) << " {\n"
|
ostream << "class type_" << class_identifier(c) << " {\n"
|
||||||
<< "public:\n"
|
<< "public:\n"
|
||||||
<< " type_" << class_identifier(c) << "() {\n"
|
<< " type_" << class_identifier(c) << "() {\n"
|
||||||
<< " TypeDictionary * type_dict = TypeDictionary::getInstance();\n"
|
<< " TypeDictionary * type_dict = TypeDictionary::getInstance();\n"
|
||||||
@ -184,11 +182,11 @@ void PrintFileContents13::print_class_attr(std::ofstream & outfile , ClassValues
|
|||||||
for ( fit = c->field_begin() ; fit != c->field_end() ; fit++ ) {
|
for ( fit = c->field_begin() ; fit != c->field_end() ; fit++ ) {
|
||||||
FieldDescription * field = *fit;
|
FieldDescription * field = *fit;
|
||||||
if ( determinePrintAttr(c , field) ) {
|
if ( determinePrintAttr(c , field) ) {
|
||||||
print_field_attr( outfile, c, field) ;
|
print_field_attr( ostream, c, field) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
outfile << " typeDictionary->addTypeDefinition( \"" << c->getName() << "\", dataType );\n"
|
ostream << " typeDictionary->addTypeDefinition( \"" << c->getName() << "\", dataType );\n"
|
||||||
<< " } catch ( std::logic_error e ) {\n"
|
<< " } catch ( std::logic_error e ) {\n"
|
||||||
<< " std::cerr << e.what();\n"
|
<< " std::cerr << e.what();\n"
|
||||||
<< " }\n"
|
<< " }\n"
|
||||||
@ -200,12 +198,12 @@ void PrintFileContents13::print_class_attr(std::ofstream & outfile , ClassValues
|
|||||||
|
|
||||||
|
|
||||||
/** Prints io_src for a class */
|
/** Prints io_src for a class */
|
||||||
void PrintFileContents13::printClass( std::ofstream & outfile , ClassValues * cv ) {
|
void PrintFileContents13::printClass( std::ostream & ostream , ClassValues * cv ) {
|
||||||
print_class_attr(outfile, cv) ;
|
print_class_attr(ostream, cv) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Prints io_src for an enum */
|
/** Prints io_src for an enum */
|
||||||
void PrintFileContents13::printEnum( std::ofstream & outfile , EnumValues * ev ) {
|
void PrintFileContents13::printEnum( std::ostream & ostream , EnumValues * ev ) {
|
||||||
print_enum_attr(outfile, ev) ;
|
print_enum_attr(ostream, ev) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#ifndef PRINTFILECONTENTS13_HH
|
#ifndef PRINTFILECONTENTS13_HH
|
||||||
#define PRINTFILECONTENTS13_HH
|
#define PRINTFILECONTENTS13_HH
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
@ -28,11 +29,11 @@ class PrintFileContents13 : public PrintFileContentsBase {
|
|||||||
PrintFileContents13() ;
|
PrintFileContents13() ;
|
||||||
|
|
||||||
/** Prints the io_src header information */
|
/** Prints the io_src header information */
|
||||||
virtual void printIOHeader(std::ofstream & outfile , std::string header_file_name) ;
|
virtual void printIOHeader(std::ostream & ostream , std::string header_file_name) ;
|
||||||
|
|
||||||
std::string enumeration_identifier( EnumValues * e );
|
std::string enumeration_identifier( EnumValues * e );
|
||||||
/** Prints enumeration attributes */
|
/** Prints enumeration attributes */
|
||||||
void print_enum_attr(std::ofstream & outfile , EnumValues * in_enum) ;
|
void print_enum_attr(std::ostream & ostream , EnumValues * in_enum) ;
|
||||||
|
|
||||||
|
|
||||||
std::string bit_field_getter_name(ClassValues * c, FieldDescription * f);
|
std::string bit_field_getter_name(ClassValues * c, FieldDescription * f);
|
||||||
@ -41,16 +42,16 @@ class PrintFileContents13 : public PrintFileContentsBase {
|
|||||||
std::string class_identifier( ClassValues * c ) ;
|
std::string class_identifier( ClassValues * c ) ;
|
||||||
|
|
||||||
/** Prints attributes for a field */
|
/** Prints attributes for a field */
|
||||||
void print_field_attr(std::ofstream & outfile , ClassValues * c, FieldDescription * fv ) ;
|
void print_field_attr(std::ostream & ostream , ClassValues * c, FieldDescription * fv ) ;
|
||||||
|
|
||||||
/** Prints class attributes */
|
/** Prints class attributes */
|
||||||
void print_class_attr(std::ofstream & outfile , ClassValues * in_class) ;
|
void print_class_attr(std::ostream & ostream , ClassValues * in_class) ;
|
||||||
|
|
||||||
/** Prints attributes for a class */
|
/** Prints attributes for a class */
|
||||||
virtual void printClass(std::ofstream & outfile , ClassValues * cv) ;
|
virtual void printClass(std::ostream & ostream , ClassValues * cv) ;
|
||||||
|
|
||||||
/** Prints attributes for an enum */
|
/** Prints attributes for an enum */
|
||||||
virtual void printEnum(std::ofstream & outfile , EnumValues * ev) ;
|
virtual void printEnum(std::ostream & ostream , EnumValues * ev) ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
#include "llvm/Support/CommandLine.h"
|
#include "llvm/Support/CommandLine.h"
|
||||||
|
|
||||||
@ -18,59 +17,59 @@ extern llvm::cl::opt< bool > no_offset_of ;
|
|||||||
PrintFileContentsBase::PrintFileContentsBase() {}
|
PrintFileContentsBase::PrintFileContentsBase() {}
|
||||||
|
|
||||||
// provide empty default implementation of these routines.
|
// provide empty default implementation of these routines.
|
||||||
void PrintFileContentsBase::printClassMapHeader(std::ofstream & out, std::string function_name ) {}
|
void PrintFileContentsBase::printClassMapHeader(std::ostream & ostream, std::string function_name ) {}
|
||||||
void PrintFileContentsBase::printClassMap(std::ofstream & out, ClassValues * cv) {}
|
void PrintFileContentsBase::printClassMap(std::ostream & ostream, ClassValues * cv) {}
|
||||||
void PrintFileContentsBase::printClassMapFooter(std::ofstream & out) {}
|
void PrintFileContentsBase::printClassMapFooter(std::ostream & ostream) {}
|
||||||
|
|
||||||
void PrintFileContentsBase::printEnumMapHeader(std::ofstream & out, std::string function_name ) {}
|
void PrintFileContentsBase::printEnumMapHeader(std::ostream & ostream, std::string function_name ) {}
|
||||||
void PrintFileContentsBase::printEnumMap(std::ofstream & out, EnumValues * ev) {}
|
void PrintFileContentsBase::printEnumMap(std::ostream & ostream, EnumValues * ev) {}
|
||||||
void PrintFileContentsBase::printEnumMapFooter(std::ofstream & out) {}
|
void PrintFileContentsBase::printEnumMapFooter(std::ostream & ostream) {}
|
||||||
|
|
||||||
void PrintFileContentsBase::print_units_map(std::ofstream & outfile, ClassValues * cv ) {
|
void PrintFileContentsBase::print_units_map(std::ostream & ostream, ClassValues * cv ) {
|
||||||
ClassValues::FieldIterator fit ;
|
ClassValues::FieldIterator fit ;
|
||||||
unsigned int ii ;
|
unsigned int ii ;
|
||||||
|
|
||||||
outfile << "struct UnitsMap" ;
|
ostream << "struct UnitsMap" ;
|
||||||
printNamespaces( outfile, cv , "__" ) ;
|
printNamespaces( ostream, cv , "__" ) ;
|
||||||
printContainerClasses( outfile, cv , "__" ) ;
|
printContainerClasses( ostream, cv , "__" ) ;
|
||||||
outfile << cv->getMangledTypeName() ;
|
ostream << cv->getMangledTypeName() ;
|
||||||
outfile << " {\n" ;
|
ostream << " {\n" ;
|
||||||
outfile << " UnitsMap" ;
|
|
||||||
printNamespaces( outfile, cv , "__" ) ;
|
std::ostringstream text;
|
||||||
printContainerClasses( outfile, cv , "__" ) ;
|
|
||||||
outfile << cv->getMangledTypeName() ;
|
|
||||||
outfile << "() {\n" ;
|
|
||||||
|
|
||||||
outfile << " Trick::UnitsMap * units_map_ptr __attribute__((unused)) = Trick::UnitsMap::units_map() ;\n" ;
|
|
||||||
for ( fit = cv->field_begin() ; fit != cv->field_end() ; fit++ ) {
|
for ( fit = cv->field_begin() ; fit != cv->field_end() ; fit++ ) {
|
||||||
if ( determinePrintAttr(cv , *fit) and (*fit)->getUnits().compare("1")) {
|
if ( determinePrintAttr(cv , *fit) and (*fit)->getUnits().compare("1")) {
|
||||||
FieldDescription * fdes = *fit ;
|
FieldDescription * fdes = *fit ;
|
||||||
outfile << " units_map_ptr->add_param(\"" ;
|
text << " units_map_ptr->add_param(\"" ;
|
||||||
printContainerClasses( outfile, cv , "__" ) ;
|
printContainerClasses( text, cv , "__" ) ;
|
||||||
outfile << cv->getName() << "_" << fdes->getName() << "\", \"" << fdes->getUnits() << "\") ;\n" ;
|
text << cv->getName() << "_" << fdes->getName() << "\", \"" << fdes->getUnits() << "\") ;\n" ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
outfile << " }\n" ;
|
|
||||||
outfile << "} ;\n\n" ;
|
|
||||||
|
|
||||||
outfile << "UnitsMap" ;
|
if (text.str().size()) {
|
||||||
printNamespaces( outfile, cv , "__" ) ;
|
ostream << " UnitsMap" ;
|
||||||
printContainerClasses( outfile, cv , "__" ) ;
|
printNamespaces( ostream, cv , "__" ) ;
|
||||||
outfile << cv->getMangledTypeName() ;
|
printContainerClasses( ostream, cv , "__" ) ;
|
||||||
outfile << " um" ;
|
ostream << cv->getMangledTypeName() ;
|
||||||
printNamespaces( outfile, cv , "__" ) ;
|
ostream << "() {\n" ;
|
||||||
printContainerClasses( outfile, cv , "__" ) ;
|
ostream << " Trick::UnitsMap * units_map_ptr = Trick::UnitsMap::units_map() ;\n" ;
|
||||||
outfile << cv->getMangledTypeName() ;
|
ostream << text.str() ;
|
||||||
outfile << " ;\n\n" ;
|
ostream << " }\n" ;
|
||||||
|
}
|
||||||
|
ostream << "} um" ;
|
||||||
|
printNamespaces( ostream, cv , "__" ) ;
|
||||||
|
printContainerClasses( ostream, cv , "__" ) ;
|
||||||
|
ostream << cv->getMangledTypeName() ;
|
||||||
|
ostream << " ;\n" ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Utility routines for printing */
|
/* Utility routines for printing */
|
||||||
void PrintFileContentsBase::print_open_extern_c(std::ofstream & outfile) {
|
void PrintFileContentsBase::print_open_extern_c(std::ostream & ostream) {
|
||||||
outfile << "extern \"C\" {\n\n" ;
|
ostream << "extern \"C\" {\n\n" ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintFileContentsBase::print_close_extern_c(std::ofstream & outfile) {
|
void PrintFileContentsBase::print_close_extern_c(std::ostream & ostream) {
|
||||||
outfile << "\n} //extern \"C\"\n\n" ;
|
ostream << "\n} //extern \"C\"\n\n" ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* internal function determines if a particular field is printable based
|
/* internal function determines if a particular field is printable based
|
||||||
@ -104,34 +103,30 @@ bool PrintFileContentsBase::determinePrintAttr( ClassValues * c , FieldDescripti
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Prints namespace containers of a class delimited by delim */
|
/** Prints namespace containers of a class delimited by delim */
|
||||||
void PrintFileContentsBase::printNamespaces( std::ofstream & outfile , ConstructValues * c , const char * delim ) {
|
void PrintFileContentsBase::printNamespaces( std::ostream & ostream , ConstructValues * c , const char * delim ) {
|
||||||
ClassValues::NamespaceIterator nsi ;
|
for ( ClassValues::NamespaceIterator nsi = c->namespace_begin() ; nsi != c->namespace_end() ; ++nsi ) {
|
||||||
for ( nsi = c->namespace_begin() ; nsi != c->namespace_end() ; nsi++ ) {
|
ostream << *nsi << delim ;
|
||||||
outfile << *nsi << delim ;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Prints namespace open block */
|
/** Prints namespace open block */
|
||||||
void PrintFileContentsBase::printOpenNamespaceBlocks( std::ofstream & outfile , ClassValues * c ) {
|
void PrintFileContentsBase::printOpenNamespaceBlocks( std::ostream & ostream , ClassValues * c ) {
|
||||||
ClassValues::NamespaceIterator nsi ;
|
for ( ClassValues::NamespaceIterator nsi = c->namespace_begin() ; nsi != c->namespace_end() ; ++nsi ) {
|
||||||
for ( nsi = c->namespace_begin() ; nsi != c->namespace_end() ; nsi++ ) {
|
ostream << "namespace " << *nsi << " {\n" ;
|
||||||
outfile << "namespace " << *nsi << " {\n" ;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Prints namespace close block */
|
/** Prints namespace close block */
|
||||||
void PrintFileContentsBase::printCloseNamespaceBlocks( std::ofstream & outfile , ClassValues * c ) {
|
void PrintFileContentsBase::printCloseNamespaceBlocks( std::ostream & ostream , ClassValues * c ) {
|
||||||
ClassValues::NamespaceIterator nsi ;
|
for ( ClassValues::NamespaceIterator nsi = c->namespace_begin() ; nsi != c->namespace_end() ; ++nsi ) {
|
||||||
for ( nsi = c->namespace_begin() ; nsi != c->namespace_end() ; nsi++ ) {
|
ostream << "}\n" ;
|
||||||
outfile << "}\n" ;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Prints class containers of a class delimited by delim */
|
/** Prints class containers of a class delimited by delim */
|
||||||
void PrintFileContentsBase::printContainerClasses( std::ofstream & outfile , ConstructValues * c , const char * delim ) {
|
void PrintFileContentsBase::printContainerClasses( std::ostream & ostream , ConstructValues * c , const char * delim ) {
|
||||||
ClassValues::ContainerClassIterator ci ;
|
for ( ClassValues::ContainerClassIterator ci = c->container_class_begin() ; ci != c->container_class_end() ; ci++ ) {
|
||||||
for ( ci = c->container_class_begin() ; ci != c->container_class_end() ; ci++ ) {
|
ostream << *ci << delim ;
|
||||||
outfile << *ci << delim ;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#ifndef PRINTFILECONTENTSBASE_HH
|
#ifndef PRINTFILECONTENTSBASE_HH
|
||||||
#define PRINTFILECONTENTSBASE_HH
|
#define PRINTFILECONTENTSBASE_HH
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
@ -28,47 +29,47 @@ class PrintFileContentsBase {
|
|||||||
public:
|
public:
|
||||||
PrintFileContentsBase() ;
|
PrintFileContentsBase() ;
|
||||||
|
|
||||||
virtual void printIOHeader(std::ofstream & out, std::string header_file_name) = 0 ;
|
virtual void printIOHeader(std::ostream & ostream, std::string header_file_name) = 0 ;
|
||||||
virtual void printClass(std::ofstream & out, ClassValues * cv) = 0 ;
|
virtual void printClass(std::ostream & ostream, ClassValues * cv) = 0 ;
|
||||||
virtual void printEnum(std::ofstream & out, EnumValues * ev) = 0 ;
|
virtual void printEnum(std::ostream & ostream, EnumValues * ev) = 0 ;
|
||||||
|
|
||||||
// these routines provide default empty implementation
|
// these routines provide default empty implementation
|
||||||
virtual void printClassMapHeader(std::ofstream & out, std::string function_name ) ;
|
virtual void printClassMapHeader(std::ostream & ostream, std::string function_name ) ;
|
||||||
virtual void printClassMap(std::ofstream & out, ClassValues * cv) ;
|
virtual void printClassMap(std::ostream & ostream, ClassValues * cv) ;
|
||||||
virtual void printClassMapFooter(std::ofstream & out) ;
|
virtual void printClassMapFooter(std::ostream & ostream) ;
|
||||||
|
|
||||||
virtual void printEnumMapHeader(std::ofstream & out, std::string function_name ) ;
|
virtual void printEnumMapHeader(std::ostream & ostream, std::string function_name ) ;
|
||||||
virtual void printEnumMap(std::ofstream & out, EnumValues * ev) ;
|
virtual void printEnumMap(std::ostream & ostream, EnumValues * ev) ;
|
||||||
virtual void printEnumMapFooter(std::ofstream & out) ;
|
virtual void printEnumMapFooter(std::ostream & ostream) ;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Prints the io_src_allocate function */
|
/** Prints the io_src_allocate function */
|
||||||
virtual void print_units_map(std::ofstream & out, ClassValues * cv) ;
|
virtual void print_units_map(std::ostream & ostream, ClassValues * cv) ;
|
||||||
|
|
||||||
/** Prints "extern \"C\" {" */
|
/** Prints "extern \"C\" {" */
|
||||||
void print_open_extern_c(std::ofstream & out) ;
|
void print_open_extern_c(std::ostream & ostream) ;
|
||||||
|
|
||||||
/** Prints "} // extern C" */
|
/** Prints "} // extern C" */
|
||||||
void print_close_extern_c(std::ofstream & out) ;
|
void print_close_extern_c(std::ostream & ostream) ;
|
||||||
|
|
||||||
/* internal function determines if a particular field is printable */
|
/* internal function determines if a particular field is printable */
|
||||||
bool determinePrintAttr(ClassValues * c , FieldDescription *fdes) ;
|
bool determinePrintAttr(ClassValues * c , FieldDescription *fdes) ;
|
||||||
|
|
||||||
/** Prints namespace containers of a class delimited by delim */
|
/** Prints namespace containers of a class delimited by delim */
|
||||||
void printNamespaces(std::ofstream & out, ConstructValues * c , const char * delim ) ;
|
void printNamespaces(std::ostream & ostream, ConstructValues * c , const char * delim ) ;
|
||||||
|
|
||||||
/** Prints namespace open block */
|
/** Prints namespace open block */
|
||||||
void printOpenNamespaceBlocks( std::ofstream & out, ClassValues * c ) ;
|
void printOpenNamespaceBlocks( std::ostream & ostream, ClassValues * c ) ;
|
||||||
|
|
||||||
/** Prints namespace close block */
|
/** Prints namespace close block */
|
||||||
void printCloseNamespaceBlocks( std::ofstream & out, ClassValues * c ) ;
|
void printCloseNamespaceBlocks( std::ostream & ostream, ClassValues * c ) ;
|
||||||
|
|
||||||
/* Note: There are no open/close namespace blocks for enums. The
|
/* Note: There are no open/close namespace blocks for enums. The
|
||||||
enum attributes do not have anything that needs to be enclosed in
|
enum attributes do not have anything that needs to be enclosed in
|
||||||
namespaces */
|
namespaces */
|
||||||
|
|
||||||
/** Prints class containers of a class delimited by delim */
|
/** Prints class containers of a class delimited by delim */
|
||||||
void printContainerClasses(std::ofstream & out, ConstructValues * c , const char * delim ) ;
|
void printContainerClasses(std::ostream & ostream, ConstructValues * c , const char * delim ) ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int Trick::MemoryManager::add_attr_info( std::string & user_type_string , ATTRIBUTES * attr , const char * file_name , unsigned int line_num ) {
|
int Trick::MemoryManager::add_attr_info( const std::string & user_type_string , ATTRIBUTES * attr , const char * file_name , unsigned int line_num ) {
|
||||||
|
|
||||||
std::string user_type_name ;
|
std::string user_type_name ;
|
||||||
std::string sub_attr_name ;
|
std::string sub_attr_name ;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user