FreeBSD/contrib/gcc/cp/mangle.c
/* Literal subcase of non-terminal <template-arg>.

     "Literal arguments, e.g. "A<42L>", are encoded with their type
     and value. Negative integer values are preceded with "n"; for
     example, "A<-42L>" becomes "1AILln42EE". The bool value false is
     encoded as 0, true as 1."  */
Literal subcase of non-terminal .
Literal subcase of non - terminal .
static void
write_template_arg_literal (const tree value)
{
  write_char ('L');
  write_type (TREE_TYPE (value));
  switch (TREE_CODE (value))
    {
    case CONST_DECL:
      write_integer_cst (DECL_INITIAL (value));
      break;
    case INTEGER_CST:
      gcc_assert (!same_type_p (TREE_TYPE (value), boolean_type_node)
		  || integer_zerop (value) || integer_onep (value));
      write_integer_cst (value);
      break;
    case REAL_CST:
      write_real_cst (value);
      break;
    default:
      gcc_unreachable ();
    }
  write_char ('E');
}
static void write_template_arg_literal ( const tree value ) { write_char ( ' ' ) ; write_type ( TREE_TYPE ( value ) ) ; switch ( TREE_CODE ( value ) ) { case CONST_DECL : write_integer_cst ( DECL_INITIAL ( value ) ) ; break ; case INTEGER_CST : gcc_assert ( ! same_type_p ( TREE_TYPE ( value ) , boolean_type_node ) || integer_zerop ( value ) || integer_onep ( value ) ) ; write_integer_cst ( value ) ; break ; case REAL_CST : write_real_cst ( value ) ; break ; default : gcc_unreachable ( ) ; } write_char ( ' ' ) ; }
Literal subcase of non-terminal <template-arg>.
Literal subcase of non - terminal <template - arg > .