Skip to content

Commit 2bee4c5

Browse files
committed
added functions to reverse arrays of various types
1 parent 988099e commit 2bee4c5

File tree

1 file changed

+241
-0
lines changed

1 file changed

+241
-0
lines changed

UTILITIES_ARRAY.st

Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,18 @@ INTERFACE
1717
FUNCTION SORT_USINT_ARRAY;
1818

1919
FUNCTION SORT_STRING_ARRAY;
20+
21+
FUNCTION REVERSE_LREAL_ARRAY;
22+
FUNCTION REVERSE_REAL_ARRAY;
23+
24+
FUNCTION REVERSE_DINT_ARRAY;
25+
FUNCTION REVERSE_UDINT_ARRAY;
26+
FUNCTION REVERSE_INT_ARRAY;
27+
FUNCTION REVERSE_UINT_ARRAY;
28+
FUNCTION REVERSE_SINT_ARRAY;
29+
FUNCTION REVERSE_USINT_ARRAY;
30+
31+
FUNCTION REVERSE_STRING_ARRAY;
2032
END_INTERFACE
2133

2234

@@ -73,6 +85,7 @@ IMPLEMENTATION
7385
END_FOR;
7486
END_FUNCTION
7587

88+
7689
FUNCTION SORT_DINT_ARRAY : VOID
7790
VAR_IN_OUT
7891
data : ARRAY[..] OF DINT;
@@ -255,4 +268,232 @@ IMPLEMENTATION
255268
END_FOR;
256269
END_FOR;
257270
END_FUNCTION
271+
272+
273+
FUNCTION REVERSE_LREAL_ARRAY : VOID
274+
VAR_IN_OUT
275+
data : ARRAY[..] OF LREAL;
276+
END_VAR
277+
278+
VAR_TEMP
279+
i, j : DINT;
280+
i_start : DINT;
281+
i_end : DINT;
282+
i_center : DINT;
283+
temp : LREAL;
284+
END_VAR
285+
286+
i_start := _firstIndexOf(data);
287+
i_end := _lastIndexOf(data);
288+
i_center := i_start + (i_end - i_start) / 2;
289+
290+
FOR i := i_start TO i_center DO
291+
j := i_end - (i - i_start);
292+
temp := data[i];
293+
data[i] := data[j];
294+
data[j] := temp;
295+
END_FOR;
296+
END_FUNCTION
297+
298+
FUNCTION REVERSE_REAL_ARRAY : VOID
299+
VAR_IN_OUT
300+
data : ARRAY[..] OF REAL;
301+
END_VAR
302+
303+
VAR_TEMP
304+
i, j : DINT;
305+
i_start : DINT;
306+
i_end : DINT;
307+
i_center : DINT;
308+
temp : REAL;
309+
END_VAR
310+
311+
i_start := _firstIndexOf(data);
312+
i_end := _lastIndexOf(data);
313+
i_center := i_start + (i_end - i_start) / 2;
314+
315+
FOR i := i_start TO i_center DO
316+
j := i_end - (i - i_start);
317+
temp := data[i];
318+
data[i] := data[j];
319+
data[j] := temp;
320+
END_FOR;
321+
END_FUNCTION
322+
323+
324+
FUNCTION REVERSE_DINT_ARRAY : VOID
325+
VAR_IN_OUT
326+
data : ARRAY[..] OF DINT;
327+
END_VAR
328+
329+
VAR_TEMP
330+
i, j : DINT;
331+
i_start : DINT;
332+
i_end : DINT;
333+
i_center : DINT;
334+
temp : DINT;
335+
END_VAR
336+
337+
i_start := _firstIndexOf(data);
338+
i_end := _lastIndexOf(data);
339+
i_center := i_start + (i_end - i_start) / 2;
340+
341+
FOR i := i_start TO i_center DO
342+
j := i_end - (i - i_start);
343+
temp := data[i];
344+
data[i] := data[j];
345+
data[j] := temp;
346+
END_FOR;
347+
END_FUNCTION
348+
349+
FUNCTION REVERSE_UDINT_ARRAY : VOID
350+
VAR_IN_OUT
351+
data : ARRAY[..] OF UDINT;
352+
END_VAR
353+
354+
VAR_TEMP
355+
i, j : DINT;
356+
i_start : DINT;
357+
i_end : DINT;
358+
i_center : DINT;
359+
temp : UDINT;
360+
END_VAR
361+
362+
i_start := _firstIndexOf(data);
363+
i_end := _lastIndexOf(data);
364+
i_center := i_start + (i_end - i_start) / 2;
365+
366+
FOR i := i_start TO i_center DO
367+
j := i_end - (i - i_start);
368+
temp := data[i];
369+
data[i] := data[j];
370+
data[j] := temp;
371+
END_FOR;
372+
END_FUNCTION
373+
374+
FUNCTION REVERSE_INT_ARRAY : VOID
375+
VAR_IN_OUT
376+
data : ARRAY[..] OF INT;
377+
END_VAR
378+
379+
VAR_TEMP
380+
i, j : DINT;
381+
i_start : DINT;
382+
i_end : DINT;
383+
i_center : DINT;
384+
temp : INT;
385+
END_VAR
386+
387+
i_start := _firstIndexOf(data);
388+
i_end := _lastIndexOf(data);
389+
i_center := i_start + (i_end - i_start) / 2;
390+
391+
FOR i := i_start TO i_center DO
392+
j := i_end - (i - i_start);
393+
temp := data[i];
394+
data[i] := data[j];
395+
data[j] := temp;
396+
END_FOR;
397+
END_FUNCTION
398+
399+
FUNCTION REVERSE_UINT_ARRAY : VOID
400+
VAR_IN_OUT
401+
data : ARRAY[..] OF UINT;
402+
END_VAR
403+
404+
VAR_TEMP
405+
i, j : DINT;
406+
i_start : DINT;
407+
i_end : DINT;
408+
i_center : DINT;
409+
temp : UINT;
410+
END_VAR
411+
412+
i_start := _firstIndexOf(data);
413+
i_end := _lastIndexOf(data);
414+
i_center := i_start + (i_end - i_start) / 2;
415+
416+
FOR i := i_start TO i_center DO
417+
j := i_end - (i - i_start);
418+
temp := data[i];
419+
data[i] := data[j];
420+
data[j] := temp;
421+
END_FOR;
422+
END_FUNCTION
423+
424+
FUNCTION REVERSE_SINT_ARRAY : VOID
425+
VAR_IN_OUT
426+
data : ARRAY[..] OF SINT;
427+
END_VAR
428+
429+
VAR_TEMP
430+
i, j : DINT;
431+
i_start : DINT;
432+
i_end : DINT;
433+
i_center : DINT;
434+
temp : SINT;
435+
END_VAR
436+
437+
i_start := _firstIndexOf(data);
438+
i_end := _lastIndexOf(data);
439+
i_center := i_start + (i_end - i_start) / 2;
440+
441+
FOR i := i_start TO i_center DO
442+
j := i_end - (i - i_start);
443+
temp := data[i];
444+
data[i] := data[j];
445+
data[j] := temp;
446+
END_FOR;
447+
END_FUNCTION
448+
449+
FUNCTION REVERSE_USINT_ARRAY : VOID
450+
VAR_IN_OUT
451+
data : ARRAY[..] OF USINT;
452+
END_VAR
453+
454+
VAR_TEMP
455+
i, j : DINT;
456+
i_start : DINT;
457+
i_end : DINT;
458+
i_center : DINT;
459+
temp : USINT;
460+
END_VAR
461+
462+
i_start := _firstIndexOf(data);
463+
i_end := _lastIndexOf(data);
464+
i_center := i_start + (i_end - i_start) / 2;
465+
466+
FOR i := i_start TO i_center DO
467+
j := i_end - (i - i_start);
468+
temp := data[i];
469+
data[i] := data[j];
470+
data[j] := temp;
471+
END_FOR;
472+
END_FUNCTION
473+
474+
475+
FUNCTION REVERSE_STRING_ARRAY : VOID
476+
VAR_IN_OUT
477+
data : ARRAY[..] OF STRING;
478+
END_VAR
479+
480+
VAR_TEMP
481+
i, j : DINT;
482+
i_start : DINT;
483+
i_end : DINT;
484+
i_center : DINT;
485+
temp : STRING;
486+
END_VAR
487+
488+
i_start := _firstIndexOf(data);
489+
i_end := _lastIndexOf(data);
490+
i_center := i_start + (i_end - i_start) / 2;
491+
492+
FOR i := i_start TO i_center DO
493+
j := i_end - (i - i_start);
494+
temp := data[i];
495+
data[i] := data[j];
496+
data[j] := temp;
497+
END_FOR;
498+
END_FUNCTION
258499
END_IMPLEMENTATION

0 commit comments

Comments
 (0)