Vcsn  2.1
Be Rational
nmin.hh
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vcsn/core/join.hh>
4 #include <vcsn/misc/raise.hh>
5 #include <vcsn/misc/stream.hh> // eat
6 #include <vcsn/weightset/fwd.hh>
9 
10 namespace vcsn
11 {
12  namespace detail
13  {
14  class nmin_impl
15  : public min_plus_impl<unsigned int>
16  {
17  public:
19  using self_t = nmin;
20  using value_t = typename super_t::value_t;
21 
22  static symbol sname()
23  {
24  static symbol res("nmin");
25  return res;
26  }
27 
29  static nmin make(std::istream& is)
30  {
31  eat(is, sname());
32  return {};
33  }
34 
35  using super_t::conv;
36  static value_t
38  {
39  return v;
40  }
41 
42  static value_t
43  conv(std::istream& is, bool = true)
44  {
45  if (is.peek() == '-')
46  fail_reading(is, sname(), ": negative values are invalid");
47  return super_t::conv(is);
48  }
49 
50  std::ostream&
51  print_set(std::ostream& o, format fmt = {}) const
52  {
53  if (fmt == format::latex)
54  o << "\\mathbb{N}_{\\text{min}}";
55  else if (fmt == format::text)
56  o << sname();
57  else
58  raise("invalid format: ", fmt);
59  return o;
60  }
61  };
62 
65  }
66 }
std::istringstream is
The input stream: the specification to translate.
Definition: translate.cc:372
weightset_mixin< detail::b_impl > b
Definition: fwd.hh:48
char eat(std::istream &is, char c)
Check lookahead character and advance.
Definition: stream.cc:37
weightset_mixin< detail::nmin_impl > nmin
Definition: fwd.hh:51
typename super_t::value_t value_t
Definition: nmin.hh:20
std::ostream & print_set(std::ostream &o, format fmt={}) const
Definition: nmin.hh:51
static nmin make(std::istream &is)
Build from the description in is.
Definition: nmin.hh:29
static value_t conv(std::istream &is, bool=true)
Definition: nmin.hh:43
static symbol sname()
Definition: nmin.hh:22
An input/output format.
Definition: format.hh:11
Provide a variadic mul on top of a binary mul(), and one().
Definition: fwd.hh:46
boost::flyweight< std::string, boost::flyweights::no_tracking, boost::flyweights::intermodule_holder > symbol
An internalized string.
Definition: symbol.hh:23
static value_t conv(b, b::value_t v)
Definition: min-plus.hh:122
ATTRIBUTE_NORETURN void fail_reading(std::istream &is, Args &&...args)
Throw an exception after failing to read from is.
Definition: stream.hh:62
VCSN_JOIN_SIMPLE(b, b)
static value_t conv(self_t, value_t v)
Definition: nmin.hh:37