Skip to content

Commit b7764f1

Browse files
AtomicFunctionNode: Fix return types (#2128)
* AtomicFunctionNode: Return correct typed node * AtomicFunctionNode: Style improvement * AtomicFunctionNode: Formatting * AtomicFunctionNode: Use interface * Cleanup * Cleanup --------- Co-authored-by: Nathan Bierema <nbierema@gmail.com>
1 parent e433993 commit b7764f1

1 file changed

Lines changed: 53 additions & 45 deletions

File tree

types/three/src/nodes/gpgpu/AtomicFunctionNode.d.ts

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
3341
export 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

Comments
 (0)