Merged anastas/wip changes r3156:3218 into trunk.
[debian/gnuradio] / gr-trellis / src / lib / fsm.h
1 /* -*- c++ -*- */\r
2 /*\r
3  * Copyright 2002 Free Software Foundation, Inc.\r
4  *\r
5  * This file is part of GNU Radio\r
6  *\r
7  * GNU Radio is free software; you can redistribute it and/or modify\r
8  * it under the terms of the GNU General Public License as published by\r
9  * the Free Software Foundation; either version 2, or (at your option)\r
10  * any later version.\r
11  *\r
12  * GNU Radio is distributed in the hope that it will be useful,\r
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
15  * GNU General Public License for more details.\r
16  *\r
17  * You should have received a copy of the GNU General Public License\r
18  * along with GNU Radio; see the file COPYING.  If not, write to\r
19  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\r
20  * Boston, MA 02111-1307, USA.\r
21  */\r
22 \r
23 #ifndef INCLUDED_TRELLIS_FSM_H\r
24 #define INCLUDED_TRELLIS_FSM_H\r
25 \r
26 #include <vector>\r
27 \r
28 /*!\r
29  * \brief  FSM class\r
30  */\r
31 class fsm {\r
32 private:\r
33   int d_I;\r
34   int d_S;\r
35   int d_O;\r
36   std::vector<int> d_NS;\r
37   std::vector<int> d_OS;\r
38   std::vector<int> d_PS;\r
39   std::vector<int> d_PI;\r
40 public:\r
41   fsm();\r
42   fsm(const fsm &FSM);\r
43   fsm(const int I, const int S, const int O, const std::vector<int> &NS, const std::vector<int> &OS);\r
44   fsm(const char *name);\r
45   fsm(const int mod_size, const int ch_length);\r
46   int I () const { return d_I; }\r
47   int S () const { return d_S; }\r
48   int O () const { return d_O; }\r
49   const std::vector<int> & NS () const { return d_NS; }\r
50   const std::vector<int> & OS () const { return d_OS; }\r
51   const std::vector<int> & PS () const { return d_PS; }\r
52   const std::vector<int> & PI () const { return d_PI; }\r
53 };\r
54 \r
55 #endif\r