Skip to content

Commit be0afb8

Browse files
authored
Merge pull request #38 from dotnetprojects/copilot/update-functions-to-use-parameter-objects
refactor: use parameter objects for all Function constructors
2 parents b5fc163 + 0f79a4e commit be0afb8

27 files changed

Lines changed: 371 additions & 374 deletions

TiaCodegen-ts/src/Commands/Comparisons/InRangeCall.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export class InRangeCall extends SystemFunctionCall {
1111
out: IOperationOrSignal,
1212
eno: IOperationOrSignal | null = null,
1313
) {
14-
super('InRange', eno);
14+
super({ functionName: 'InRange', eno });
1515
this.disableEno = false;
1616
this.iface['min'] = new IOperationOrSignalDirectionWrapper(min, Direction.Input);
1717
this.iface['in'] = new IOperationOrSignalDirectionWrapper(inParam, Direction.Input);

TiaCodegen-ts/src/Commands/Comparisons/OutRangeCall.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export class OutRangeCall extends SystemFunctionCall {
1111
out: IOperationOrSignal,
1212
eno: IOperationOrSignal | null = null,
1313
) {
14-
super('OutRange', eno);
14+
super({ functionName: 'OutRange', eno });
1515
this.disableEno = false;
1616
this.iface['min'] = new IOperationOrSignalDirectionWrapper(min, Direction.Input);
1717
this.iface['in'] = new IOperationOrSignalDirectionWrapper(inParam, Direction.Input);

TiaCodegen-ts/src/Commands/Functions/AckGlCall.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@ import { IOperationOrSignalDirectionWrapper } from '../../Interfaces/IOperationO
33
import { Direction } from '../../Enums/Direction.js';
44
import { SystemFunctionBlockCall } from './Base/SystemFunctionBlockCall.js';
55

6+
export interface AckGlCallOptions {
7+
instanceName: string;
8+
ackGlob?: IOperationOrSignal | null;
9+
eno?: IOperationOrSignal | null;
10+
}
11+
612
export class AckGlCall extends SystemFunctionBlockCall {
7-
constructor(
8-
instanceName: string,
9-
ackGlob: IOperationOrSignal | null = null,
10-
eno: IOperationOrSignal | null = null,
11-
) {
12-
super('ACK_GL', instanceName, eno);
13+
constructor(options: AckGlCallOptions) {
14+
const { instanceName, ackGlob = null, eno = null } = options;
15+
super({ functionName: 'ACK_GL', instanceName, eno });
1316
this.iface['ACK_GLOB'] = new IOperationOrSignalDirectionWrapper(ackGlob, Direction.Input);
1417

1518
this.additionalSafetyTemplateValues = `

TiaCodegen-ts/src/Commands/Functions/Arithmetic/AddCall.ts

Lines changed: 60 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -3,115 +3,71 @@ import { IOperationOrSignalDirectionWrapper } from '../../../Interfaces/IOperati
33
import { Direction } from '../../../Enums/Direction.js';
44
import { VariableArithmeticCall } from './VariableArithmeticCall.js';
55

6+
export interface AddCallOptions {
7+
type: string;
8+
in1: IOperationOrSignal;
9+
in2: IOperationOrSignal;
10+
in3?: IOperationOrSignal | null;
11+
in4?: IOperationOrSignal | null;
12+
in5?: IOperationOrSignal | null;
13+
in6?: IOperationOrSignal | null;
14+
in7?: IOperationOrSignal | null;
15+
in8?: IOperationOrSignal | null;
16+
in9?: IOperationOrSignal | null;
17+
in10?: IOperationOrSignal | null;
18+
in11?: IOperationOrSignal | null;
19+
in12?: IOperationOrSignal | null;
20+
in13?: IOperationOrSignal | null;
21+
in14?: IOperationOrSignal | null;
22+
in15?: IOperationOrSignal | null;
23+
in16?: IOperationOrSignal | null;
24+
in17?: IOperationOrSignal | null;
25+
in18?: IOperationOrSignal | null;
26+
in19?: IOperationOrSignal | null;
27+
in20?: IOperationOrSignal | null;
28+
in21?: IOperationOrSignal | null;
29+
in22?: IOperationOrSignal | null;
30+
in23?: IOperationOrSignal | null;
31+
in24?: IOperationOrSignal | null;
32+
in25?: IOperationOrSignal | null;
33+
in26?: IOperationOrSignal | null;
34+
in27?: IOperationOrSignal | null;
35+
in28?: IOperationOrSignal | null;
36+
in29?: IOperationOrSignal | null;
37+
in30?: IOperationOrSignal | null;
38+
in31?: IOperationOrSignal | null;
39+
in32?: IOperationOrSignal | null;
40+
in33?: IOperationOrSignal | null;
41+
in34?: IOperationOrSignal | null;
42+
in35?: IOperationOrSignal | null;
43+
in36?: IOperationOrSignal | null;
44+
in37?: IOperationOrSignal | null;
45+
in38?: IOperationOrSignal | null;
46+
in39?: IOperationOrSignal | null;
47+
in40?: IOperationOrSignal | null;
48+
in41?: IOperationOrSignal | null;
49+
in42?: IOperationOrSignal | null;
50+
in43?: IOperationOrSignal | null;
51+
in44?: IOperationOrSignal | null;
52+
in45?: IOperationOrSignal | null;
53+
in46?: IOperationOrSignal | null;
54+
in47?: IOperationOrSignal | null;
55+
in48?: IOperationOrSignal | null;
56+
in49?: IOperationOrSignal | null;
57+
in50?: IOperationOrSignal | null;
58+
out1?: IOperationOrSignal | null;
59+
eno?: IOperationOrSignal | null;
60+
}
61+
662
export class AddCall extends VariableArithmeticCall {
7-
constructor(
8-
type: string,
9-
in1: IOperationOrSignal,
10-
in2: IOperationOrSignal,
11-
in3: IOperationOrSignal | null = null,
12-
in4: IOperationOrSignal | null = null,
13-
in5: IOperationOrSignal | null = null,
14-
in6: IOperationOrSignal | null = null,
15-
in7: IOperationOrSignal | null = null,
16-
in8: IOperationOrSignal | null = null,
17-
in9: IOperationOrSignal | null = null,
18-
in10: IOperationOrSignal | null = null,
19-
in11: IOperationOrSignal | null = null,
20-
in12: IOperationOrSignal | null = null,
21-
in13: IOperationOrSignal | null = null,
22-
in14: IOperationOrSignal | null = null,
23-
in15: IOperationOrSignal | null = null,
24-
in16: IOperationOrSignal | null = null,
25-
in17: IOperationOrSignal | null = null,
26-
in18: IOperationOrSignal | null = null,
27-
in19: IOperationOrSignal | null = null,
28-
in20: IOperationOrSignal | null = null,
29-
in21: IOperationOrSignal | null = null,
30-
in22: IOperationOrSignal | null = null,
31-
in23: IOperationOrSignal | null = null,
32-
in24: IOperationOrSignal | null = null,
33-
in25: IOperationOrSignal | null = null,
34-
in26: IOperationOrSignal | null = null,
35-
in27: IOperationOrSignal | null = null,
36-
in28: IOperationOrSignal | null = null,
37-
in29: IOperationOrSignal | null = null,
38-
in30: IOperationOrSignal | null = null,
39-
in31: IOperationOrSignal | null = null,
40-
in32: IOperationOrSignal | null = null,
41-
in33: IOperationOrSignal | null = null,
42-
in34: IOperationOrSignal | null = null,
43-
in35: IOperationOrSignal | null = null,
44-
in36: IOperationOrSignal | null = null,
45-
in37: IOperationOrSignal | null = null,
46-
in38: IOperationOrSignal | null = null,
47-
in39: IOperationOrSignal | null = null,
48-
in40: IOperationOrSignal | null = null,
49-
in41: IOperationOrSignal | null = null,
50-
in42: IOperationOrSignal | null = null,
51-
in43: IOperationOrSignal | null = null,
52-
in44: IOperationOrSignal | null = null,
53-
in45: IOperationOrSignal | null = null,
54-
in46: IOperationOrSignal | null = null,
55-
in47: IOperationOrSignal | null = null,
56-
in48: IOperationOrSignal | null = null,
57-
in49: IOperationOrSignal | null = null,
58-
in50: IOperationOrSignal | null = null,
59-
out1: IOperationOrSignal | null = null,
60-
eno: IOperationOrSignal | null = null,
61-
) {
62-
super('Add', eno);
63+
constructor(options: AddCallOptions) {
64+
const { type, in1, in2, out1 = null, eno = null } = options;
65+
super({ functionName: 'Add', eno });
6366
this.disableEno = true;
6467
this.type = type;
6568
this.iface['IN1'] = new IOperationOrSignalDirectionWrapper(in1, Direction.Input);
6669
this.iface['IN2'] = new IOperationOrSignalDirectionWrapper(in2, Direction.Input);
67-
this.iface['IN3'] = new IOperationOrSignalDirectionWrapper(in3, Direction.Input);
68-
this.iface['IN4'] = new IOperationOrSignalDirectionWrapper(in4, Direction.Input);
69-
this.iface['IN5'] = new IOperationOrSignalDirectionWrapper(in5, Direction.Input);
70-
this.iface['IN6'] = new IOperationOrSignalDirectionWrapper(in6, Direction.Input);
71-
this.iface['IN7'] = new IOperationOrSignalDirectionWrapper(in7, Direction.Input);
72-
this.iface['IN8'] = new IOperationOrSignalDirectionWrapper(in8, Direction.Input);
73-
this.iface['IN9'] = new IOperationOrSignalDirectionWrapper(in9, Direction.Input);
74-
this.iface['IN10'] = new IOperationOrSignalDirectionWrapper(in10, Direction.Input);
75-
this.iface['IN11'] = new IOperationOrSignalDirectionWrapper(in11, Direction.Input);
76-
this.iface['IN12'] = new IOperationOrSignalDirectionWrapper(in12, Direction.Input);
77-
this.iface['IN13'] = new IOperationOrSignalDirectionWrapper(in13, Direction.Input);
78-
this.iface['IN14'] = new IOperationOrSignalDirectionWrapper(in14, Direction.Input);
79-
this.iface['IN15'] = new IOperationOrSignalDirectionWrapper(in15, Direction.Input);
80-
this.iface['IN16'] = new IOperationOrSignalDirectionWrapper(in16, Direction.Input);
81-
this.iface['IN17'] = new IOperationOrSignalDirectionWrapper(in17, Direction.Input);
82-
this.iface['IN18'] = new IOperationOrSignalDirectionWrapper(in18, Direction.Input);
83-
this.iface['IN19'] = new IOperationOrSignalDirectionWrapper(in19, Direction.Input);
84-
this.iface['IN20'] = new IOperationOrSignalDirectionWrapper(in20, Direction.Input);
85-
this.iface['IN21'] = new IOperationOrSignalDirectionWrapper(in21, Direction.Input);
86-
this.iface['IN22'] = new IOperationOrSignalDirectionWrapper(in22, Direction.Input);
87-
this.iface['IN23'] = new IOperationOrSignalDirectionWrapper(in23, Direction.Input);
88-
this.iface['IN24'] = new IOperationOrSignalDirectionWrapper(in24, Direction.Input);
89-
this.iface['IN25'] = new IOperationOrSignalDirectionWrapper(in25, Direction.Input);
90-
this.iface['IN26'] = new IOperationOrSignalDirectionWrapper(in26, Direction.Input);
91-
this.iface['IN27'] = new IOperationOrSignalDirectionWrapper(in27, Direction.Input);
92-
this.iface['IN28'] = new IOperationOrSignalDirectionWrapper(in28, Direction.Input);
93-
this.iface['IN29'] = new IOperationOrSignalDirectionWrapper(in29, Direction.Input);
94-
this.iface['IN30'] = new IOperationOrSignalDirectionWrapper(in30, Direction.Input);
95-
this.iface['IN31'] = new IOperationOrSignalDirectionWrapper(in31, Direction.Input);
96-
this.iface['IN32'] = new IOperationOrSignalDirectionWrapper(in32, Direction.Input);
97-
this.iface['IN33'] = new IOperationOrSignalDirectionWrapper(in33, Direction.Input);
98-
this.iface['IN34'] = new IOperationOrSignalDirectionWrapper(in34, Direction.Input);
99-
this.iface['IN35'] = new IOperationOrSignalDirectionWrapper(in35, Direction.Input);
100-
this.iface['IN36'] = new IOperationOrSignalDirectionWrapper(in36, Direction.Input);
101-
this.iface['IN37'] = new IOperationOrSignalDirectionWrapper(in37, Direction.Input);
102-
this.iface['IN38'] = new IOperationOrSignalDirectionWrapper(in38, Direction.Input);
103-
this.iface['IN39'] = new IOperationOrSignalDirectionWrapper(in39, Direction.Input);
104-
this.iface['IN40'] = new IOperationOrSignalDirectionWrapper(in40, Direction.Input);
105-
this.iface['IN41'] = new IOperationOrSignalDirectionWrapper(in41, Direction.Input);
106-
this.iface['IN42'] = new IOperationOrSignalDirectionWrapper(in42, Direction.Input);
107-
this.iface['IN43'] = new IOperationOrSignalDirectionWrapper(in43, Direction.Input);
108-
this.iface['IN44'] = new IOperationOrSignalDirectionWrapper(in44, Direction.Input);
109-
this.iface['IN45'] = new IOperationOrSignalDirectionWrapper(in45, Direction.Input);
110-
this.iface['IN46'] = new IOperationOrSignalDirectionWrapper(in46, Direction.Input);
111-
this.iface['IN47'] = new IOperationOrSignalDirectionWrapper(in47, Direction.Input);
112-
this.iface['IN48'] = new IOperationOrSignalDirectionWrapper(in48, Direction.Input);
113-
this.iface['IN49'] = new IOperationOrSignalDirectionWrapper(in49, Direction.Input);
114-
this.iface['IN50'] = new IOperationOrSignalDirectionWrapper(in50, Direction.Input);
70+
this.addVariableInputs(options, 3, 50);
11571
this.iface['OUT'] = new IOperationOrSignalDirectionWrapper(out1, Direction.Output);
11672

11773
for (const w of Object.values(this.iface)) {
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import { IOperationOrSignal } from '../../../Interfaces/IOperationOrSignal.js';
2-
import { SystemFunctionCall } from '../Base/SystemFunctionCall.js';
1+
import { SystemFunctionCall, SystemFunctionCallOptions } from '../Base/SystemFunctionCall.js';
2+
3+
export interface ArithmeticCallOptions extends SystemFunctionCallOptions {}
34

45
export abstract class ArithmeticCall extends SystemFunctionCall {
56
type: string = '';
67

7-
constructor(functionName: string, eno: IOperationOrSignal | null = null) {
8-
super(functionName, eno);
8+
constructor(options: ArithmeticCallOptions) {
9+
super(options);
910
}
1011
}

TiaCodegen-ts/src/Commands/Functions/Arithmetic/DivCall.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@ import { IOperationOrSignalDirectionWrapper } from '../../../Interfaces/IOperati
33
import { Direction } from '../../../Enums/Direction.js';
44
import { ArithmeticCall } from './ArithmeticCall.js';
55

6+
export interface DivCallOptions {
7+
type: string;
8+
in1: IOperationOrSignal;
9+
in2: IOperationOrSignal;
10+
out1?: IOperationOrSignal | null;
11+
eno?: IOperationOrSignal | null;
12+
}
13+
614
export class DivCall extends ArithmeticCall {
7-
constructor(
8-
type: string,
9-
in1: IOperationOrSignal,
10-
in2: IOperationOrSignal,
11-
out1: IOperationOrSignal | null = null,
12-
eno: IOperationOrSignal | null = null,
13-
) {
14-
super('Div', eno);
15+
constructor(options: DivCallOptions) {
16+
const { type, in1, in2, out1 = null, eno = null } = options;
17+
super({ functionName: 'Div', eno });
1518
this.disableEno = true;
1619
this.type = type;
1720
this.iface['IN1'] = new IOperationOrSignalDirectionWrapper(in1, Direction.Input);

TiaCodegen-ts/src/Commands/Functions/Arithmetic/ModCall.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@ import { IOperationOrSignalDirectionWrapper } from '../../../Interfaces/IOperati
33
import { Direction } from '../../../Enums/Direction.js';
44
import { ArithmeticCall } from './ArithmeticCall.js';
55

6+
export interface ModCallOptions {
7+
type: string;
8+
in1: IOperationOrSignal;
9+
in2: IOperationOrSignal;
10+
out1?: IOperationOrSignal | null;
11+
eno?: IOperationOrSignal | null;
12+
}
13+
614
export class ModCall extends ArithmeticCall {
7-
constructor(
8-
type: string,
9-
in1: IOperationOrSignal,
10-
in2: IOperationOrSignal,
11-
out1: IOperationOrSignal | null = null,
12-
eno: IOperationOrSignal | null = null,
13-
) {
14-
super('Mod', eno);
15+
constructor(options: ModCallOptions) {
16+
const { type, in1, in2, out1 = null, eno = null } = options;
17+
super({ functionName: 'Mod', eno });
1518
this.disableEno = true;
1619
this.type = type;
1720
this.iface['IN1'] = new IOperationOrSignalDirectionWrapper(in1, Direction.Input);

0 commit comments

Comments
 (0)