Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Attribute.cc

    r54c9000 r50377a4  
    1515
    1616#include <ostream>           // for operator<<, ostream, basic_ostream, endl
    17 #include <set>
    1817
    1918#include "Attribute.h"
     
    2221
    2322Attribute::Attribute( const Attribute &other ) : name( other.name ) {
    24         cloneAll( other.parameters, parameters );
     23  cloneAll( other.parameters, parameters );
    2524}
    2625
    2726Attribute::~Attribute() {
    28         deleteAll( parameters );
    29 }
    30 
    31 bool Attribute::isValidOnFuncParam() const {
    32         // attributes such as aligned, cleanup, etc. produce GCC errors when they appear
    33         // on function parameters. Maintain here a whitelist of attribute names that are
    34         // allowed to appear on parameters.
    35         static std::set< std::string > valid = {
    36                 "noreturn", "unused"
    37         };
    38         return valid.count( normalizedName() );
    39 }
    40 
    41 std::string Attribute::normalizedName() const {
    42         // trim beginning/ending _, convert to lowercase
    43         auto begin = name.find_first_not_of('_');
    44         auto end = name.find_last_not_of('_');
    45         if (begin == std::string::npos || end == std::string::npos) return "";
    46         std::string ret;
    47         ret.reserve( end-begin+1 );
    48         std::transform( &name[begin], &name[end+1], back_inserter( ret ), tolower );
    49         return ret;
     27  deleteAll( parameters );
    5028}
    5129
    5230void Attribute::print( std::ostream &os, Indenter indent ) const {
    53         using std::endl;
    54         using std::string;
     31  using std::endl;
     32  using std::string;
    5533
    56         if ( ! empty() ) {
    57                 os << "Attribute with name: " << name;
    58                 if ( ! parameters.empty() ) {
    59                         os << " with parameters: " << endl;
    60                         printAll( parameters, os, indent+1 );
    61                 }
    62         }
     34  if ( ! empty() ) {
     35    os << "Attribute with name: " << name;
     36    if ( ! parameters.empty() ) {
     37      os << " with parameters: " << endl;
     38      printAll( parameters, os, indent+1 );
     39    }
     40  }
    6341}
    6442
Note: See TracChangeset for help on using the changeset viewer.