Skip to content

Commit 1fd73a6

Browse files
authored
Create variantcasts.wx
1 parent 7f1b5f9 commit 1fd73a6

1 file changed

Lines changed: 189 additions & 0 deletions

File tree

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
2+
Namespace std.syntax.variantcasts
3+
4+
' Variant castings
5+
' 2024-01
6+
7+
'iDkP for GaragePixel
8+
' These sugars casts the internal defined types into variant.
9+
10+
'#Import "../../../types/builtin"
11+
12+
Using std.types
13+
14+
Function CastVariant<T>:Variant(v:T)
15+
' Sugar
16+
' Casts a type into type Variant
17+
' Equivalent to Cast<Variant>(v)
18+
Return Cast<Variant>(v)
19+
End
20+
21+
Function CastBool:Bool(v:Variant)
22+
' Sugar
23+
' Casts a variant into type Bool
24+
' Equivalent to Bool(v)
25+
Return Cast<Bool>(v)
26+
End
27+
28+
Function CastBool8:Bool8(v:Variant)
29+
' Sugar
30+
' Casts a variant into type Bool8
31+
' Equivalent to Bool8(v)
32+
Return Cast<Bool8>(v)
33+
End
34+
35+
Function CastInt:Int(v:Variant)
36+
' Sugar
37+
' Casts a variant into type Int
38+
' Equivalent to Int(v)
39+
Return Cast<Int>(v)
40+
End
41+
42+
Function CastUInt:UInt(v:Variant)
43+
' Sugar
44+
' Casts a variant into type Int
45+
' Equivalent to Int(v)
46+
Return Cast<UInt>(v)
47+
End
48+
49+
Function CastFloat:Float(v:Variant)
50+
' Sugar
51+
' Casts a variant into type float
52+
' Equivalent to Float(v)
53+
Return Cast<Float>(v)
54+
End
55+
56+
Function CastDouble:Double(v:Variant)
57+
' Sugar
58+
' Casts a variant into type double
59+
' Equivalent to Double(v)
60+
Return Cast<Double>(v)
61+
End
62+
63+
Function CastShort:Short(v:Variant)
64+
' Sugar
65+
' Casts a variant into type short
66+
' Equivalent to Short(v)
67+
Return Cast<Short>(v)
68+
End
69+
70+
Function CastUShort:UShort(v:Variant)
71+
' Sugar
72+
' Casts a variant into type ushort
73+
' Equivalent to UShort(v)
74+
Return Cast<UShort>(v)
75+
End
76+
77+
Function CastLong:Long(v:Variant)
78+
' Sugar
79+
' Casts a variant into type long
80+
' Equivalent to Long(v)
81+
Return Cast<Long>(v)
82+
End
83+
84+
Function CastULong:ULong(v:Variant)
85+
' Sugar
86+
' Casts a variant into type ulong
87+
' Equivalent to ULong(v)
88+
Return Cast<ULong>(v)
89+
End
90+
91+
Function CastString:String(v:Variant)
92+
' Sugar
93+
' Casts a variant into type String
94+
' Equivalent to String(v)
95+
Return Cast<String>(v)
96+
End
97+
98+
Function CastCString:CString(v:Variant)
99+
' Sugar
100+
' Casts a variant into type CString
101+
' Equivalent to CString(v)
102+
Return Cast<CString>(v)
103+
End
104+
105+
' Cast Variant Array type
106+
107+
Function CastBool:Int(v:Variant Ptr, idx:PInt)
108+
' Sugar
109+
' Casts a variant into type Bool[] and return the value from the index
110+
' Equivalent to Cast<Bool>((Varptr v)[idx])
111+
Return Cast<Bool>(v[idx])
112+
End
113+
114+
Function CastBool8:Int(v:Variant Ptr, idx:PInt)
115+
' Sugar
116+
' Casts a variant into type Bool8[] and return the value from the index
117+
' Equivalent to Cast<Bool8>((Varptr v)[idx])
118+
Return Cast<Bool8>(v[idx])
119+
End
120+
121+
Function CastInt:Int(v:Variant Ptr, idx:PInt)
122+
' Sugar
123+
' Casts a variant into type Int[] and return the value from the index
124+
' Equivalent to Cast<Int>((Varptr v)[idx])
125+
Return Cast<Int>(v[idx])
126+
End
127+
128+
Function CastUInt:UInt(v:Variant Ptr, idx:PInt)
129+
' Sugar
130+
' Casts a variant into type UInt[] and return the value from the index
131+
' Equivalent to Cast<UInt>((Varptr v)[idx])
132+
Return Cast<UInt>(v[idx])
133+
End
134+
135+
Function CastFloat:Float(v:Variant Ptr, idx:PInt)
136+
' Sugar
137+
' Casts a variant into type Float[] and return the value from the index
138+
' Equivalent to Cast<Float>((Varptr v)[idx])
139+
Return Cast<Float>(v[idx])
140+
End
141+
142+
Function CastDouble:Float(v:Variant Ptr, idx:PInt)
143+
' Sugar
144+
' Casts a variant into type Double[] and return the value from the index
145+
' Equivalent to Cast<Double>((Varptr v)[idx])
146+
Return Cast<Double>(v[idx])
147+
End
148+
149+
Function CastShort:Float(v:Variant Ptr, idx:PInt)
150+
' Sugar
151+
' Casts a variant into type Short[] and return the value from the index
152+
' Equivalent to Cast<Short>((Varptr v)[idx])
153+
Return Cast<Short>(v[idx])
154+
End
155+
156+
Function CastUShort:Float(v:Variant Ptr, idx:PInt)
157+
' Sugar
158+
' Casts a variant into type UShort[] and return the value from the index
159+
' Equivalent to Cast<UShort>((Varptr v)[idx])
160+
Return Cast<UShort>(v[idx])
161+
End
162+
163+
Function CastLong:Float(v:Variant Ptr, idx:PInt)
164+
' Sugar
165+
' Casts a variant into type Long[] and return the value from the index
166+
' Equivalent to Cast<Long>((Varptr v)[idx])
167+
Return Cast<Long>(v[idx])
168+
End
169+
170+
Function CastULong:Float(v:Variant Ptr, idx:PInt)
171+
' Sugar
172+
' Casts a variant into type ULong[] and return the value from the index
173+
' Equivalent to Cast<ULong>((Varptr v)[idx])
174+
Return Cast<ULong>(v[idx])
175+
End
176+
177+
Function CastString:String(v:Variant Ptr, idx:PInt)
178+
' Sugar
179+
' Casts a variant into type String[] and return the value from the index
180+
' Equivalent to Cast<String>((Varptr v)[idx])
181+
Return Cast<String>(v[idx])
182+
End
183+
184+
Function CastCString:CString(v:Variant Ptr, idx:PInt)
185+
' Sugar
186+
' Casts a variant into type CString[] and return the value from the index
187+
' Equivalent to Cast<CString>((Varptr v)[idx])
188+
Return Cast<CString>(v[idx])
189+
End

0 commit comments

Comments
 (0)