File: eca-control-main.cpp

package info (click to toggle)
ecasound 2.9.3-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 6,292 kB
  • sloc: cpp: 39,475; sh: 4,335; lisp: 1,918; ansic: 1,883; makefile: 888; python: 617; ruby: 202
file content (100 lines) | stat: -rw-r--r-- 3,101 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// ------------------------------------------------------------------------
// eca-control-main.h: ECA_CONTROL_MAIN
// Copyright (C) 2009 Kai Vehmanen
//
// Attributes:
//     eca-style-version: 3
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
// ------------------------------------------------------------------------

#include <string>
#include <vector>

#include "kvu_dbc.h"
#include "kvu_numtostr.h"
#include "kvu_utils.h"

#include "eca-control-main.h"
#include "eca-logger.h"

ECA_CONTROL_MAIN::~ECA_CONTROL_MAIN (void)
{
}

std::string ECA_CONTROL_MAIN::return_value_to_string(const struct eci_return_value *retval, int float_precision)
{
  std::string result;

  if (retval->type == eci_return_value::retval_none) {
    ; /* nop */
  }
  else if (retval->type == eci_return_value::retval_error) {
    result = retval->string_val;
  }
  else if (retval->type == eci_return_value::retval_string) {
    result = retval->string_val;
  }
  else if (retval->type == eci_return_value::retval_string_list) {
    result = 
      kvu_vector_to_string(kvu_vector_search_and_replace(retval->string_list_val, ",", "\\,"), ",");
  }
  else if (retval->type == eci_return_value::retval_integer) {
    result = kvu_numtostr(retval->m.int_val);
  }
  else if (retval->type == eci_return_value::retval_long_integer) {
    result = kvu_numtostr(retval->m.long_int_val);
  }
  else if (retval->type == eci_return_value::retval_float) {
    result = kvu_numtostr(retval->m.float_val, float_precision);
  }
  else {
    DBC_NEVER_REACHED();
  }

  return result;
}

const char* ECA_CONTROL_MAIN::return_value_type_to_string(const struct eci_return_value *retval)
{
  if (retval->type == eci_return_value::retval_none)
    return "-";
  else if (retval->type == eci_return_value::retval_error)
    return "e";
  else if (retval->type == eci_return_value::retval_string)
    return "s";
  else if (retval->type == eci_return_value::retval_string_list)
    return "S";
  else if (retval->type == eci_return_value::retval_integer)
    return "i";
  else if (retval->type == eci_return_value::retval_long_integer)
    return "li";
  else if (retval->type == eci_return_value::retval_float)
    return "f";
  else
    DBC_NEVER_REACHED();

  return NULL;
}

void ECA_CONTROL_MAIN::clear_return_value(struct eci_return_value *retval)
{
  if (retval == 0)
    return;

  retval->type = eci_return_value::retval_none;
  retval->string_list_val.resize(0);
  retval->string_val.resize(0);
  retval->m.long_int_val = 0;
}