parameters: (self)
return_statement: return c
docstring: Generates a Code object for features.
docstring_summary: Generates a Code object for features.
docstring_tokens: Generates a Code object for features .
function: def Generate(self):
      """Generates a Code object for features.
      """
      c = Code()
      (c.Append(cpp_util.CHROMIUM_LICENSE)
        .Append()
        .Append(cpp_util.GENERATED_FEATURE_MESSAGE % self._source_file)
        .Append()
        .Append('#include <string>')
        .Append()
        .Append('#include "%s.h"' % self._source_file_filename)
        .Append()
        .Append('#include "base/logging.h"')
        .Append()
        .Concat(cpp_util.OpenNamespace(self._namespace))
        .Append()
      )
  
      # Generate the constructor.
      (c.Append('%s::%s() {' % (self._class_name, self._class_name))
        .Sblock()
      )
      for feature in self._feature_defs:
        c.Append('features_["%s"] = %s;'
                         % (feature.name, cpp_util.ConstantName(feature.name)))
      (c.Eblock()
        .Append('}')
        .Append()
      )
  
      # Generate the ToString function.
      (c.Append('const char* %s::ToString('
                    '%s::ID id) const {' % (self._class_name, self._class_name))
        .Sblock()
        .Append('switch (id) {')
        .Sblock()
      )
      for feature in self._feature_defs:
        c.Append('case %s: return "%s";' %
            (cpp_util.ConstantName(feature.name), feature.name))
      (c.Append('case kUnknown: break;')
        .Append('case kEnumBoundary: break;')
        .Eblock()
        .Append('}')
        .Append('NOTREACHED();')
        .Append('return "";')
      )
      (c.Eblock()
        .Append('}')
        .Append()
      )
  
      # Generate the FromString function.
  
      (c.Append('%s::ID %s::FromString('
                    'const std::string& id) const {'
                    % (self._class_name, self._class_name))
        .Sblock()
        .Append('const auto& it = features_.find(id);' % self._class_name)
        .Append('return (it == features_.end()) ? kUnknown : it->second;')
        .Eblock()
        .Append('}')
        .Append()
        .Cblock(cpp_util.CloseNamespace(self._namespace))
      )
  
      return c
function_tokens: def Generate ( self ) : c = Code ( ) ( c . Append ( cpp_util . CHROMIUM_LICENSE ) . Append ( ) . Append ( cpp_util . GENERATED_FEATURE_MESSAGE % self . _source_file ) . Append ( ) . Append ( '#include <string>' ) . Append ( ) . Append ( '#include "%s.h"' % self . _source_file_filename ) . Append ( ) . Append ( '#include "base/logging.h"' ) . Append ( ) . Concat ( cpp_util . OpenNamespace ( self . _namespace ) ) . Append ( ) ) # Generate the constructor. ( c . Append ( '%s::%s() {' % ( self . _class_name , self . _class_name ) ) . Sblock ( ) ) for feature in self . _feature_defs : c . Append ( 'features_["%s"] = %s;' % ( feature . name , cpp_util . ConstantName ( feature . name ) ) ) ( c . Eblock ( ) . Append ( '}' ) . Append ( ) ) # Generate the ToString function. ( c . Append ( 'const char* %s::ToString(' '%s::ID id) const {' % ( self . _class_name , self . _class_name ) ) . Sblock ( ) . Append ( 'switch (id) {' ) . Sblock ( ) ) for feature in self . _feature_defs : c . Append ( 'case %s: return "%s";' % ( cpp_util . ConstantName ( feature . name ) , feature . name ) ) ( c . Append ( 'case kUnknown: break;' ) . Append ( 'case kEnumBoundary: break;' ) . Eblock ( ) . Append ( '}' ) . Append ( 'NOTREACHED();' ) . Append ( 'return "";' ) ) ( c . Eblock ( ) . Append ( '}' ) . Append ( ) ) # Generate the FromString function. ( c . Append ( '%s::ID %s::FromString(' 'const std::string& id) const {' % ( self . _class_name , self . _class_name ) ) . Sblock ( ) . Append ( 'const auto& it = features_.find(id);' % self . _class_name ) . Append ( 'return (it == features_.end()) ? kUnknown : it->second;' ) . Eblock ( ) . Append ( '}' ) . Append ( ) . Cblock ( cpp_util . CloseNamespace ( self . _namespace ) ) ) return c