Awali
Another Weighted Automata library
abstract_weightset.hh
Go to the documentation of this file.
1 // This file is part of Awali.
2 // Copyright 2016-2021 Sylvain Lombardy, Victor Marsault, Jacques Sakarovitch
3 //
4 // Awali is a free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
16 
17 #ifndef DYN_ABSTRACT_WEIGHTSET_HH
18 #define DYN_ABSTRACT_WEIGHTSET_HH
19 
21 
22 #include <awali/common/json_ast.hh>
23 
25 
26 #include<vector>
27 #include<string>
28 #include<iostream>
29 
30 namespace awali {
31 namespace dyn {
32 namespace context {
33 
34  // Every object of type abstract_weightset has a distinct index and is
35  // stored into the instances vector defined in context_descritpion.hh
36  // The description of each weightset is given in context_description.hh
38  static int counter;
39  const int index;
40  protected:
41  const std::string public_name;
42  const std::string desc;
43  public:
44 
45  abstract_weightset(const std::string& public_name,
46  const std::string& desc) :
48 
49  inline
50  int getIndex() const{
51  return index;
52  }
53 
54  virtual const std::string& tostring(weightset_description ws, bool dynamic) const = 0;
55 
56  virtual
57  const std::string& static_public_name() const {
58  return public_name;
59  }
60 
61  virtual
62  const std::string& static_desc() const {
63  return desc;
64  }
65 
66  virtual weightset_description fromstring(const std::string &k) const =0;
67 
69 
70  virtual std::vector<std::string> const& possible_promotions() const;
71 
72  virtual bool is_promotable_to(weightset_description ws) const =0;
73 
74  virtual ~abstract_weightset() {}
75  };
76 
77 
78 }}} //end of namespaces awali:dyn::context, awali::dyn, and awali
79 #endif
Definition: node.hh:365
std::shared_ptr< weightset_description_impl > weightset_description
Definition: description_types.hh:33
Main namespace of Awali.
Definition: ato.hh:22
Definition: abstract_weightset.hh:37
const int index
Definition: abstract_weightset.hh:39
virtual ~abstract_weightset()
Definition: abstract_weightset.hh:74
virtual weightset_description fromstring(const std::string &k) const =0
virtual weightset_description parse_weightset(json::object_t const *i) const =0
virtual std::vector< std::string > const & possible_promotions() const
const std::string public_name
Definition: abstract_weightset.hh:41
virtual const std::string & tostring(weightset_description ws, bool dynamic) const =0
virtual const std::string & static_desc() const
Definition: abstract_weightset.hh:62
static int counter
Definition: abstract_weightset.hh:38
virtual bool is_promotable_to(weightset_description ws) const =0
int getIndex() const
Definition: abstract_weightset.hh:50
virtual const std::string & static_public_name() const
Definition: abstract_weightset.hh:57
abstract_weightset(const std::string &public_name, const std::string &desc)
Definition: abstract_weightset.hh:45
const std::string desc
Definition: abstract_weightset.hh:42