1 |
/* -*- c++ -*- |
/* -*- c++ -*- |
2 |
* Copyright (C) 2006-2017 Andreas Persson |
* Copyright (C) 2006-2019 Andreas Persson |
3 |
* |
* |
4 |
* This program is free software; you can redistribute it and/or |
* This program is free software; you can redistribute it and/or |
5 |
* modify it under the terms of the GNU General Public License as |
* modify it under the terms of the GNU General Public License as |
292 |
|
|
293 |
int update_model; |
int update_model; |
294 |
|
|
|
/** |
|
|
* Workaround for the circumstance that C++ does not allow to cast to |
|
|
* member pointers. |
|
|
*/ |
|
|
template<typename classT, typename memberT> |
|
|
union ClassMemberPtr { |
|
|
memberT classT::*pmember; |
|
|
void* pvoid; |
|
|
|
|
|
ClassMemberPtr(size_t s) : pvoid((void*)s) {} |
|
|
ClassMemberPtr(void* p) : pvoid(p) {} |
|
|
}; |
|
|
|
|
295 |
// connect a widget to a setter function in DimRegionEdit |
// connect a widget to a setter function in DimRegionEdit |
296 |
template<typename C, typename T> |
template<typename C, typename T> |
297 |
void connect(C& widget, |
void connect(C& widget, |
307 |
sigc::bind(sigc::mem_fun(&DimRegionEdit::set_member<T>), member)); |
sigc::bind(sigc::mem_fun(&DimRegionEdit::set_member<T>), member)); |
308 |
} |
} |
309 |
|
|
310 |
|
// connect a widget to a member of a struct member in gig::DimensionRegion |
311 |
|
template<typename C, typename T, typename S> |
312 |
|
void connect(C& widget, S gig::DimensionRegion::* member, T S::* member2) { |
313 |
|
connect<C, T>(widget, |
314 |
|
sigc::bind(sigc::mem_fun(&DimRegionEdit::set_member<T, S>), member, member2)); |
315 |
|
} |
316 |
|
|
317 |
// connect a widget to a setter function in gig::DimensionRegion |
// connect a widget to a setter function in gig::DimensionRegion |
318 |
template<typename C, typename T> |
template<typename C, typename T> |
319 |
void connect(C& widget, |
void connect(C& widget, |
353 |
d->*member = value; |
d->*member = value; |
354 |
} |
} |
355 |
|
|
356 |
|
// set a value of a member of a struct member variable in the given dimregion |
357 |
|
template<typename T, typename S> |
358 |
|
void set_member(gig::DimensionRegion* d, T value, |
359 |
|
S gig::DimensionRegion::* member, T S::* member2) { |
360 |
|
d->*member.*member2 = value; |
361 |
|
} |
362 |
|
|
363 |
// setters for specific dimregion parameters |
// setters for specific dimregion parameters |
364 |
|
|
365 |
void set_UnityNote(gig::DimensionRegion* d, uint8_t value); |
void set_UnityNote(gig::DimensionRegion* d, uint8_t value); |