@@ -11,73 +11,81 @@ export type AtomicMethod =
1111 | typeof AtomicFunctionNode . ATOMIC_OR
1212 | typeof AtomicFunctionNode . ATOMIC_XOR ;
1313
14- declare class AtomicFunctionNode extends Node {
14+ interface AtomicFunctionNodeInterface {
1515 method : AtomicMethod ;
1616 pointerNode : Node ;
17- valueNode : Node ;
17+ valueNode : Node | null ;
1818 parents : boolean ;
19-
20- constructor ( method : AtomicMethod , pointerNode : Node , valueNode : Node ) ;
21-
22- static ATOMIC_LOAD : "atomicLoad" ;
23- static ATOMIC_STORE : "atomicStore" ;
24- static ATOMIC_ADD : "atomicAdd" ;
25- static ATOMIC_SUB : "atomicSub" ;
26- static ATOMIC_MAX : "atomicMax" ;
27- static ATOMIC_MIN : "atomicMin" ;
28- static ATOMIC_AND : "atomicAnd" ;
29- static ATOMIC_OR : "atomicOr" ;
30- static ATOMIC_XOR : "atomicXor" ;
3119}
3220
21+ declare const AtomicFunctionNode : {
22+ new < TNodeType > (
23+ method : AtomicMethod ,
24+ pointerNode : Node ,
25+ valueNode : Node | null ,
26+ ) : AtomicFunctionNode < TNodeType > ;
27+
28+ ATOMIC_LOAD : "atomicLoad" ;
29+ ATOMIC_STORE : "atomicStore" ;
30+ ATOMIC_ADD : "atomicAdd" ;
31+ ATOMIC_SUB : "atomicSub" ;
32+ ATOMIC_MAX : "atomicMax" ;
33+ ATOMIC_MIN : "atomicMin" ;
34+ ATOMIC_AND : "atomicAnd" ;
35+ ATOMIC_OR : "atomicOr" ;
36+ ATOMIC_XOR : "atomicXor" ;
37+ } ;
38+
39+ export type AtomicFunctionNode < TNodeType > = Node < TNodeType > & AtomicFunctionNodeInterface ;
40+
3341export default AtomicFunctionNode ;
3442
35- export const atomicFunc : (
43+ export const atomicFunc : < TNodeType > (
3644 method : AtomicMethod ,
37- pointerNode : Node ,
38- valueNode : Node ,
39- ) => AtomicFunctionNode ;
45+ pointerNode : Node < TNodeType > ,
46+ valueNode : Node | null ,
47+ ) => AtomicFunctionNode < TNodeType > ;
4048
41- export const atomicLoad : (
42- pointerNode : Node ,
43- ) => AtomicFunctionNode ;
49+ export const atomicLoad : < TNodeType > (
50+ pointerNode : Node < TNodeType > ,
51+ ) => AtomicFunctionNode < TNodeType > ;
4452
45- export const atomicStore : (
46- pointerNode : Node ,
53+ export const atomicStore : < TNodeType > (
54+ pointerNode : Node < TNodeType > ,
4755 valueNode : Node | number ,
48- ) => AtomicFunctionNode ;
56+ ) => AtomicFunctionNode < TNodeType > ;
4957
50- export const atomicAdd : (
51- pointerNode : Node ,
58+ export const atomicAdd : < TNodeType > (
59+ pointerNode : Node < TNodeType > ,
5260 valueNode : Node | number ,
53- ) => AtomicFunctionNode ;
61+ ) => AtomicFunctionNode < TNodeType > ;
5462
55- export const atomicSub : (
56- pointerNode : Node ,
63+ export const atomicSub : < TNodeType > (
64+ pointerNode : Node < TNodeType > ,
5765 valueNode : Node | number ,
58- ) => AtomicFunctionNode ;
66+ ) => AtomicFunctionNode < TNodeType > ;
5967
60- export const atomicMax : (
61- pointerNode : Node ,
68+ export const atomicMax : < TNodeType > (
69+ pointerNode : Node < TNodeType > ,
6270 valueNode : Node ,
63- ) => AtomicFunctionNode ;
71+ ) => AtomicFunctionNode < TNodeType > ;
6472
65- export const atomicMin : (
66- pointerNode : Node ,
73+ export const atomicMin : < TNodeType > (
74+ pointerNode : Node < TNodeType > ,
6775 valueNode : Node ,
68- ) => AtomicFunctionNode ;
76+ ) => AtomicFunctionNode < TNodeType > ;
6977
70- export const atomicAnd : (
71- pointerNode : Node ,
78+ export const atomicAnd : < TNodeType > (
79+ pointerNode : Node < TNodeType > ,
7280 valueNode : Node ,
73- ) => AtomicFunctionNode ;
81+ ) => AtomicFunctionNode < TNodeType > ;
7482
75- export const atomicOr : (
76- pointerNode : Node ,
83+ export const atomicOr : < TNodeType > (
84+ pointerNode : Node < TNodeType > ,
7785 valueNode : Node ,
78- ) => AtomicFunctionNode ;
86+ ) => AtomicFunctionNode < TNodeType > ;
7987
80- export const atomicXor : (
81- pointerNode : Node ,
88+ export const atomicXor : < TNodeType > (
89+ pointerNode : Node < TNodeType > ,
8290 valueNode : Node ,
83- ) => AtomicFunctionNode ;
91+ ) => AtomicFunctionNode < TNodeType > ;
0 commit comments