acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
wparam.h
1// From lparam.h by camilo on 2026-04-18 12:07 <3ThomasBorregaardSørensen!!
2#pragma once
3
4
5#include "acme/prototype/prototype/pointer.h"
6#include "acme/platform/lparam.h"
7
8
9class CLASS_DECL_ACME wparam
10{
11public:
12
13
14 iptr m_wparam;
15
16
17 constexpr wparam(nullptr_t = nullptr) { m_wparam = 0; }
18
19 template < prototype_integral_number INTEGRAL_NUMBER >
20 constexpr wparam(INTEGRAL_NUMBER i) { m_wparam = (iptr)i; }
21 template < prototype_size SIZE >
22 constexpr wparam(const SIZE & size):wparam((::i32)size.cx, (::i32) size.cy) {}
23 template < prototype_point POINT >
24 constexpr wparam(const POINT & point);
25 constexpr wparam(const lparam& lparam) { m_wparam = lparam.m_lparam; }
26 wparam(::i32 x, ::i32 y) { m_wparam = make_u32(x, y); }
27
28
30 inline wparam(void * p) { m_wparam = (iptr)p; }
31
32
34 wparam(const ::subparticle * psubparticle);
35
36#if REFERENCING_DEBUGGING
37
39 wparam(::subparticle * psubparticle, ::reference_referer * preferer);
40
41#endif
42
44 template < typename T >
45 inline wparam(const pointer < T > & p) : wparam((const ::subparticle *) p.m_p) { }
46 //template < typename T >
47 //inline wparam(const ptr < T > & p) : wparam((const ::subparticle *) p.m_p) { }
48
49 template < typename T >
50 inline wparam(pointer < T > && p) : wparam(p.m_p REFDBG(, p.m_preferer)) { p.m_p = nullptr; p.m_psubparticle = nullptr; REFDBG(p.m_preferer = nullptr); }
51 //template < typename T >
52 //inline wparam(ptr < T > && p) : wparam(p.m_p REFDBG(, p.m_preferer)) { p.m_p = nullptr; REFDBG(p.m_preferer = nullptr); }
53
54
55 constexpr wparam(const wparam & wparam)
56 {
57
58 m_wparam = wparam.m_wparam;
59
60 }
61
62
63 operator iptr &()
64 {
65
66 return m_wparam;
67
68 }
69
70 constexpr operator iptr () const
71 {
72
73 return m_wparam;
74
75 }
76
77 operator void * &()
78 {
79
80 return (void * &) m_wparam;
81
82 }
83
84 operator void * () const
85 {
86
87 return (void *) m_wparam;
88
89 }
90
91
92 template < typename T >
93 constexpr T raw_cast() const
94 {
95
96 return (T) m_wparam;
97
98 }
99
100
101 constexpr wparam& operator = (const wparam & wparam)
102 {
103
104 m_wparam = wparam.m_wparam;
105
106 return *this;
107
108 }
109
110
111 constexpr wparam& operator = (iptr wparam)
112 {
113
114 m_wparam = wparam;
115
116 return *this;
117
118 }
119
120
121 constexpr wparam &operator=(const lparam &lparam)
122 {
123
124 m_wparam = lparam.m_lparam;
125
126 return *this;
127
128 }
129
130
131 constexpr ::i16 x() const
132 {
133
134 return ::iptr_int_x(m_wparam);
135
136 }
137
138
139 constexpr ::i16 y() const
140 {
141
142 return ::iptr_int_y(m_wparam);
143
144 }
145
146 constexpr ::i16 hiword() const { return __hiword(m_wparam); }
147 constexpr ::i16 loword() const { return __loword(m_wparam); }
148
149 constexpr ::i32_point point() const;
150
151};
152
153
154//template < class T >
155// inline bool operator ==(wparam l, const pointer < T > & pointer) { return ((::subparticle *) l.m_wparam) == pointer.m_psubparticle; }
156//
157//
158//template < class T >
159// inline bool operator !=(wparam l, const pointer < T > & pointer) { return ((::subparticle *) l.m_wparam) != pointer.m_psubparticle; }
160//
161
162
163constexpr lparam::lparam(const wparam& wparam)
164{
165
166
167 m_lparam = wparam.m_wparam;
168
169}
170
171
172
Definition lparam.h:9
Definition subparticle.h:78
Definition wparam.h:10
wparam(void *p)
catching/receiving subparticle
Definition wparam.h:30
wparam(const pointer< T > &p)
posting/sending subparticle
Definition wparam.h:45