Class: AtCoderFriends::Generator::CxxBuiltin

Inherits:
Base
  • Object
show all
Includes:
CxxBuiltinConstGen, CxxBuiltinDeclGen, CxxBuiltinInputGen
Defined in:
lib/at_coder_friends/generator/cxx_builtin.rb

Overview

generates C++ source from problem description

Constant Summary collapse

ACF_HOME =
File.realpath(File.join(__dir__, '..', '..', '..'))
TMPL_DIR =
File.join(ACF_HOME, 'templates')
DEFAULT_TMPL =
File.join(TMPL_DIR, 'cxx_builtin.cxx.erb')
ATTRS =
Attributes.new(:cxx, DEFAULT_TMPL)

Constants included from CxxBuiltinInputGen

AtCoderFriends::Generator::CxxBuiltinInputGen::ADDR_FMTS, AtCoderFriends::Generator::CxxBuiltinInputGen::ARRAY_ADDR_FMTS, AtCoderFriends::Generator::CxxBuiltinInputGen::FMT_FMTS, AtCoderFriends::Generator::CxxBuiltinInputGen::MATRIX_ADDR_FMTS, AtCoderFriends::Generator::CxxBuiltinInputGen::SCANF_FMTS, AtCoderFriends::Generator::CxxBuiltinInputGen::SCANF_FMTS_CMB, AtCoderFriends::Generator::CxxBuiltinInputGen::SINGLE_ADDR_FMTS

Constants included from CxxBuiltinDeclGen

AtCoderFriends::Generator::CxxBuiltinDeclGen::TYPE_TBL

Instance Attribute Summary

Attributes inherited from Base

#cfg, #pbm

Instance Method Summary collapse

Methods included from CxxBuiltinInputGen

#gen_cmb_input, #gen_input, #gen_plain_input, #scanf_addr, #scanf_fmt, #scanf_params

Methods included from CxxBuiltinDeclGen

#gen_arr_size, #gen_decl, #gen_harray_decl, #gen_matrix_decl, #gen_single_decl, #gen_varray_decl

Methods included from CxxBuiltinConstGen

#cnv_const_value, #gen_const

Methods inherited from Base

#embed_lines, #generate, #initialize, #process, #select_template

Constructor Details

This class inherits a constructor from AtCoderFriends::Generator::Base

Instance Method Details

#attrsObject



234
235
236
# File 'lib/at_coder_friends/generator/cxx_builtin.rb', line 234

def attrs
  ATTRS
end

#gen_consts(constants = pbm.constants) ⇒ Object



245
246
247
# File 'lib/at_coder_friends/generator/cxx_builtin.rb', line 245

def gen_consts(constants = pbm.constants)
  constants.map { |c| gen_const(c) }
end

#gen_decls(inpdefs = pbm.formats) ⇒ Object



249
250
251
# File 'lib/at_coder_friends/generator/cxx_builtin.rb', line 249

def gen_decls(inpdefs = pbm.formats)
  inpdefs.map { |inpdef| gen_decl(inpdef) }.flatten
end

#gen_inputs(inpdefs = pbm.formats) ⇒ Object



253
254
255
# File 'lib/at_coder_friends/generator/cxx_builtin.rb', line 253

def gen_inputs(inpdefs = pbm.formats)
  inpdefs.map { |inpdef| gen_input(inpdef) }.flatten
end

#render(src) ⇒ Object



238
239
240
241
242
243
# File 'lib/at_coder_friends/generator/cxx_builtin.rb', line 238

def render(src)
  src = embed_lines(src, '/*** CONSTS ***/', gen_consts)
  src = embed_lines(src, '/*** DCLS ***/', gen_decls)
  src = embed_lines(src, '/*** INPUTS ***/', gen_inputs)
  src
end