33 struct device_context_opaque_t
47 device_context_opaque_t(nullptr_t)
55 device_context_opaque_t() :
56 device_context_opaque_t(
nullptr)
62 device_context_opaque_t(
const device_context_opaque_t& device_context)
65 this->operator = (device_context);
86 && this->m_ulla[1] == 0
87 && this->m_ulla[2] == 0
88 && this->m_ulla[3] == 0;
96 return !this->is_null();
101 bool operator == (
const device_context_opaque_t& device_contextopaque)
const
105 this->m_ulla[0] == device_contextopaque.m_ulla[0]
106 && this->m_ulla[1] == device_contextopaque.m_ulla[1]
107 && this->m_ulla[2] == device_contextopaque.m_ulla[2];
112 device_context_opaque_t& operator = (
const device_context_opaque_t& device_contextopaque)
115 this->m_ulla[0] = device_contextopaque.m_ulla[0];
116 this->m_ulla[1] = device_contextopaque.m_ulla[1];
117 this->m_ulla[2] = device_contextopaque.m_ulla[2];
124 operator ::hash32()
const
126 return ::as_hash32(this->m_ulla[0])
127 + ::as_hash32(this->m_ulla[1])
128 + ::as_hash32(this->m_ulla[2])
129 + ::as_hash32(this->m_ulla[3]);
138 struct a_device_context_t
142 using WINDOW_TYPE = WINDOW_T;
149 WINDOW_T m_device_context;
154 a_device_context_t(nullptr_t) { this->Null(); }
157 a_device_context_t() : a_device_context_t(
nullptr) {}
160 template <
typename WINDOW_OPAQUE_T >
161 requires (!::is_same < WINDOW_T, device_context_opaque_t >
162 && ::is_same < WINDOW_OPAQUE_T, device_context_opaque_t >)
163 a_device_context_t(
const WINDOW_OPAQUE_T& device_contextopaque)
166 this->operator = (device_contextopaque);
171 a_device_context_t(
const WINDOW_T & device_context)
174 this->operator = (device_context);
179 void Null() { this->m_device_context.Null(); }
182 bool operator == (
const a_device_context_t & adevice_contextt)
const
185 return this->m_device_context == adevice_contextt.m_device_context;
190 template <
typename WINDOW_OPAQUE_T >
191 requires (!::is_same < WINDOW_T, device_context_opaque_t >
192 && ::is_same < WINDOW_OPAQUE_T, device_context_opaque_t >)
193 bool operator ==(
const WINDOW_OPAQUE_T & device_contextopaque)
const
196 return this->m_opaque == device_contextopaque;
201 bool operator == (
const WINDOW_TYPE & device_context)
const
204 return this->m_device_context == device_context;
209 a_device_context_t& operator = (
const a_device_context_t & adevice_contextt)
212 this->m_device_context = adevice_contextt.m_device_context;
219 template <
typename WINDOW_OPAQUE_T >
220 requires (!::is_same < WINDOW_T, device_context_opaque_t >
221 && ::is_same < WINDOW_OPAQUE_T, device_context_opaque_t >)
222 a_device_context_t&
operator = (
const WINDOW_OPAQUE_T & device_contextopaque)
225 this->m_opaque = device_contextopaque;
232 a_device_context_t& operator = (
const WINDOW_T & device_context)
235 this->m_device_context = device_context;
245 return m_device_context.is_null();
253 return !this->is_null();
258 operator ::hash32()
const {
return m_opaque; }
272 class a_device_context :
273 public a_device_context_t < WINDOW_T >
276 ::acme::device_contexting::device_context * m_pacmedevice_contextingdevice_context;
280 using BASE_TYPE = a_device_context_t < WINDOW_T >;
283 using WINDOW_TYPE =
typename BASE_TYPE::WINDOW_TYPE;
285 enum_operating_system m_eoperatingsystem;
288 a_device_context(nullptr_t)
297 a_device_context(
nullptr)
303 a_device_context(
const a_device_context & adevice_context) :
304 m_pacmedevice_contextingdevice_context(adevice_context.m_pacmedevice_contextingdevice_context),
305 m_eoperatingsystem(adevice_context.m_eoperatingsystem),
306 BASE_TYPE(adevice_context.m_device_context)
312 template <
typename WINDOW >
313 requires (!::is_same < WINDOW_TYPE, device_context_opaque_t >
314 && ::is_same < WINDOW, device_context >)
315 a_device_context(
const WINDOW & device_context) :
316 m_pacmedevice_contextingdevice_context(device_context._get_acme_device_contexting_device_context()),
317 m_eoperatingsystem(device_context.m_eoperatingsystem),
318 BASE_TYPE(device_context.m_opaque)
324 a_device_context(
const WINDOW_TYPE & device_context, ::acme::device_contexting::device_context * pacmedevice_contextingdevice_context =
nullptr) :
325 m_pacmedevice_contextingdevice_context(pacmedevice_contextingdevice_context),
326 m_eoperatingsystem(t_eoperatingsystem),
327 BASE_TYPE(device_context)
333 template <
typename WINDOW_OPAQUE_T >
334 requires (!::is_same < WINDOW_T, device_context_opaque_t >
335 && ::is_same < WINDOW_OPAQUE_T, device_context_opaque_t >)
336 a_device_context(
const enum_operating_system& eoperatingsystem,
const WINDOW_OPAQUE_T & device_contextopaque, ::acme::device_contexting::device_context* pacmedevice_contextingdevice_context =
nullptr) :
337 m_pacmedevice_contextingdevice_context(pacmedevice_contextingdevice_context),
338 m_eoperatingsystem(eoperatingsystem),
339 BASE_TYPE(device_contextopaque)
346 void _set_acme_device_contexting_device_context(::acme::device_contexting::device_context * pdevice_context)
349 m_pacmedevice_contextingdevice_context = pdevice_context;
354 ::acme::device_contexting::device_context * _get_acme_device_contexting_device_context()
const
357 return m_pacmedevice_contextingdevice_context;
365 this->m_device_context.Null();
366 m_pacmedevice_contextingdevice_context =
nullptr;
367 m_eoperatingsystem = e_operating_system_none;
371 ::operating_system::device_context & as_operating_system_device_context()
374 auto pthis = (::operating_system::device_context*)
this;
381 const ::operating_system::device_context & as_operating_system_device_context()
const
384 auto pthis = (::operating_system::device_context*)
this;
394 return (m_eoperatingsystem == e_operating_system_none
395 || BASE_TYPE::is_null()) && m_pacmedevice_contextingdevice_context ==
nullptr;
403 return !this->is_null();
408 bool operator == (const ::operating_system::device_context& operatingsystemdevice_context)
const
411 if (operatingsystemdevice_context.m_eoperatingsystem != e_operating_system_none)
414 return (this->m_eoperatingsystem == operatingsystemdevice_context.m_eoperatingsystem
415 && BASE_TYPE::operator == (operatingsystemdevice_context.m_device_context));
419 return m_pacmedevice_contextingdevice_context == operatingsystemdevice_context.m_pacmedevice_contextingdevice_context;
425 template <
typename WINDOW >
426 requires (!::is_same < WINDOW_TYPE, device_context_opaque_t >
427 && ::is_same < WINDOW, device_context >)
428 ::operating_system::device_context &
operator = (
const WINDOW & device_context)
431 this->m_pacmedevice_contextingdevice_context = device_context.m_pacmedevice_contextingdevice_context;
432 this->m_eoperatingsystem = device_context.m_eoperatingsystem;
433 BASE_TYPE::operator = (device_context.m_device_context);
440 a_device_context & operator = (
const a_device_context & adevice_context)
443 this->m_pacmedevice_contextingdevice_context = adevice_context.m_pacmedevice_contextingdevice_context;
444 this->m_eoperatingsystem = adevice_context.m_eoperatingsystem;
445 BASE_TYPE::operator = (adevice_context.m_device_context);