aboutsummaryrefslogtreecommitdiffstats
path: root/vespalib/src/vespa/vespalib/objects/visit.cpp
blob: b7286a9817b9f17011b25dc9ebbb9a6d2ff94480 (plain) (blame)
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
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visit.hpp"

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, const vespalib::Identifiable *obj) {
    if (obj != 0) {
        self.openStruct(name, obj->getClass().name());
        obj->visitMembers(self);
        self.closeStruct();
    } else {
        self.visitNull(name);
    }
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, const vespalib::Identifiable &obj) {
    visit(self, name, &obj);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, bool value) {
    self.visitBool(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, char value)
{
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, signed char value)
{
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, unsigned char value)
{
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, short value)
{
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, unsigned short value)
{
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, int value) {
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, unsigned int value) {
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, long value) {
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, unsigned long value) {
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, long long value) {
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, unsigned long long value) {
    self.visitInt(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, float value) {
    self.visitFloat(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, double value) {
    self.visitFloat(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, const vespalib::string &value) {
    self.visitString(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, const std::string &value) {
    self.visitString(name, value);
}

void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, const char *value) {
    if (value != 0) {
        visit(self, name, vespalib::string(value));
    } else {
        self.visitNull(name);
    }
}