~kyrofa/unity-scope-snappy/integration-tests_previews

« back to all changes in this revision

Viewing changes to internal/launchpad.net/go-unityscopes/v2/department.cpp

  • Committer: Alejandro J. Cura
  • Date: 2015-06-03 19:46:54 UTC
  • mfrom: (8.1.3 ci_integration)
  • Revision ID: alecu@canonical.com-20150603194654-h4rnrkmefnmgsj49
MergingĀ lp:~kyrofa/unity-scope-snappy/ci_integration

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <stdexcept>
 
2
#include <cstring>
 
3
 
 
4
#include <unity/scopes/Department.h>
 
5
#include <unity/scopes/CannedQuery.h>
 
6
 
 
7
extern "C" {
 
8
#include "_cgo_export.h"
 
9
}
 
10
#include "helpers.h"
 
11
#include "smartptr_helper.h"
 
12
 
 
13
using namespace unity::scopes;
 
14
using namespace gounityscopes::internal;
 
15
 
 
16
/* Department objects */
 
17
void init_department_ptr(SharedPtrData dest, SharedPtrData src) {
 
18
    std::shared_ptr<Department> dept = get_ptr<Department>(src);
 
19
    init_ptr<Department>(dest, dept);
 
20
}
 
21
 
 
22
void new_department(void *dept_id, _CannedQuery *query, void *label, SharedPtrData dept, char **error) {
 
23
    try {
 
24
        Department::UPtr d;
 
25
        if(dept_id) {
 
26
            d = Department::create(from_gostring(dept_id),
 
27
                                    *reinterpret_cast<CannedQuery*>(query),
 
28
                                    from_gostring(label));
 
29
        } else {
 
30
            d = Department::create(*reinterpret_cast<CannedQuery*>(query),
 
31
                                   from_gostring(label));
 
32
        }
 
33
        init_ptr<Department>(dept, std::move(d));
 
34
    } catch (const std::exception &e) {
 
35
        *error = strdup(e.what());
 
36
    }
 
37
}
 
38
 
 
39
void destroy_department_ptr(SharedPtrData data) {
 
40
    destroy_ptr<Department>(data);
 
41
}
 
42
 
 
43
void department_add_subdepartment(SharedPtrData dept, SharedPtrData child) {
 
44
    get_ptr<Department>(dept)->add_subdepartment(get_ptr<Department>(child));
 
45
}
 
46
 
 
47
void department_set_alternate_label(SharedPtrData dept, void *label) {
 
48
    get_ptr<Department>(dept)->set_alternate_label(from_gostring(label));
 
49
}
 
50
 
 
51
char *department_get_alternate_label(SharedPtrData dept) {
 
52
    return strdup(get_ptr<Department>(dept)->alternate_label().c_str());
 
53
}
 
54
 
 
55
char *department_get_id(SharedPtrData dept) {
 
56
    return strdup(get_ptr<Department>(dept)->id().c_str());
 
57
}
 
58
 
 
59
char *department_get_label(SharedPtrData dept) {
 
60
    return strdup(get_ptr<Department>(dept)->label().c_str());
 
61
}
 
62
 
 
63
void department_set_has_subdepartments(SharedPtrData dept, int subdepartments) {
 
64
    get_ptr<Department>(dept)->set_has_subdepartments(subdepartments);
 
65
}
 
66
 
 
67
int department_has_subdepartments(SharedPtrData dept) {
 
68
    return static_cast<int>(get_ptr<Department>(dept)->has_subdepartments());
 
69
}
 
70
 
 
71
SharedPtrData * department_get_subdepartments(SharedPtrData dept, int *n_subdepts) {
 
72
    auto subdepts = get_ptr<Department>(dept)->subdepartments();
 
73
    *n_subdepts = subdepts.size();
 
74
    SharedPtrData* ret_data =
 
75
    reinterpret_cast<SharedPtrData*>(calloc(*n_subdepts, sizeof(SharedPtrData)));
 
76
    int i = 0;
 
77
    for(auto item: subdepts) {
 
78
        init_ptr<Department const>(ret_data[i++], item);
 
79
    }
 
80
    return ret_data;
 
81
}
 
82
 
 
83
void department_set_subdepartments(SharedPtrData dept, SharedPtrData **subdepartments, int nb_subdepartments) {
 
84
    DepartmentList api_depts;
 
85
    for(auto i = 0; i < nb_subdepartments; i++) {
 
86
        api_depts.push_back(get_ptr<Department>(*subdepartments[i]));
 
87
    }
 
88
    get_ptr<Department>(dept)->set_subdepartments(api_depts);
 
89
}
 
90
 
 
91
_CannedQuery * department_get_query(SharedPtrData dept) {
 
92
    return reinterpret_cast<_CannedQuery*>(new CannedQuery(get_ptr<Department>(dept)->query()));
 
93
}