source: branches/help/WINDOW/aw_scalar.cxx

Last change on this file was 16763, checked in by westram, 7 years ago
File size: 1.9 KB
Line 
1// ============================================================ //
2//                                                              //
3//   File      : aw_scalar.cxx                                  //
4//   Purpose   : Scalar variables (similar to perl scalars)     //
5//                                                              //
6//   Coded by Ralf Westram (coder@reallysoft.de) in June 2011   //
7//   Institute of Microbiology (Technical University Munich)    //
8//   http://www.arb-home.de/                                    //
9//                                                              //
10// ============================================================ //
11
12#include "aw_scalar.hxx"
13#include "aw_awar.hxx"
14#include <arb_msg.h>
15
16const char * const AW_scalar::type_name[SCALAR_TYPES] = { "int", "float", "string", "pointer" };
17const AW_VARIABLE_TYPE AW_scalar::vtype[SCALAR_TYPES] = { AW_INT, AW_FLOAT, AW_STRING, AW_POINTER };
18
19AW_scalar::AW_scalar(AW_awar *awar) {
20    switch (awar->get_type()) {
21        case AW_INT:     type = INT;   value.i = awar->read_int(); break;
22        case AW_FLOAT:   type = FLOAT; value.f = awar->read_float(); break;
23        case AW_STRING:  type = STR;   value.s = awar->read_string(); break;
24        case AW_POINTER: type = PNTR;  value.p = awar->read_pointer(); break;
25        default : GBK_terminatef("AWAR type %i unhandled", awar->get_type()); break;
26    }
27}
28
29GB_ERROR AW_scalar::write_to(class AW_awar *awar) const {
30    GB_ERROR error = NULp;
31    switch (awar->get_type()) {
32        case AW_INT:     error = awar->write_int(get_int()); break;
33        case AW_FLOAT:   error = awar->write_float(get_float()); break;
34        case AW_STRING:  error = awar->write_string(get_string()); break;
35        case AW_POINTER: error = awar->write_pointer(get_pointer()); break;
36        default : GBK_terminatef("AWAR type %i unhandled", awar->get_type()); break;
37    }
38    return error;
39}
40
Note: See TracBrowser for help on using the repository browser.