4
#include <unity/scopes/Department.h>
5
#include <unity/scopes/CannedQuery.h>
8
#include "_cgo_export.h"
11
#include "smartptr_helper.h"
13
using namespace unity::scopes;
14
using namespace gounityscopes::internal;
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);
22
void new_department(void *dept_id, _CannedQuery *query, void *label, SharedPtrData dept, char **error) {
26
d = Department::create(from_gostring(dept_id),
27
*reinterpret_cast<CannedQuery*>(query),
28
from_gostring(label));
30
d = Department::create(*reinterpret_cast<CannedQuery*>(query),
31
from_gostring(label));
33
init_ptr<Department>(dept, std::move(d));
34
} catch (const std::exception &e) {
35
*error = strdup(e.what());
39
void destroy_department_ptr(SharedPtrData data) {
40
destroy_ptr<Department>(data);
43
void department_add_subdepartment(SharedPtrData dept, SharedPtrData child) {
44
get_ptr<Department>(dept)->add_subdepartment(get_ptr<Department>(child));
47
void department_set_alternate_label(SharedPtrData dept, void *label) {
48
get_ptr<Department>(dept)->set_alternate_label(from_gostring(label));
51
char *department_get_alternate_label(SharedPtrData dept) {
52
return strdup(get_ptr<Department>(dept)->alternate_label().c_str());
55
char *department_get_id(SharedPtrData dept) {
56
return strdup(get_ptr<Department>(dept)->id().c_str());
59
char *department_get_label(SharedPtrData dept) {
60
return strdup(get_ptr<Department>(dept)->label().c_str());
63
void department_set_has_subdepartments(SharedPtrData dept, int subdepartments) {
64
get_ptr<Department>(dept)->set_has_subdepartments(subdepartments);
67
int department_has_subdepartments(SharedPtrData dept) {
68
return static_cast<int>(get_ptr<Department>(dept)->has_subdepartments());
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)));
77
for(auto item: subdepts) {
78
init_ptr<Department const>(ret_data[i++], item);
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]));
88
get_ptr<Department>(dept)->set_subdepartments(api_depts);
91
_CannedQuery * department_get_query(SharedPtrData dept) {
92
return reinterpret_cast<_CannedQuery*>(new CannedQuery(get_ptr<Department>(dept)->query()));