27void multiplyWithList(
PV_VALUE **PVvalue,
long *PVvalues,
TERM_LIST *List,
long listEntries) {
28 long newPVvalues, i, j, k;
32 *PVvalues = listEntries;
33 *PVvalue =
tmalloc(
sizeof(**PVvalue) * listEntries);
34 for (i = 0; i < listEntries; i++) {
36 if (List[i].flags & VALUE_GIVEN)
39 (*PVvalue)[i].value = 0;
42 newPVvalues = *PVvalues * listEntries;
43 newPVvalue =
tmalloc(
sizeof(*newPVvalue) * (newPVvalues));
44 for (i = k = 0; i < *PVvalues; i++) {
45 for (j = 0; j < listEntries; j++, k++) {
46 newPVvalue[k].name =
tmalloc(
sizeof(*newPVvalue[k].name) *
47 (strlen(List[j].
string) + strlen((*PVvalue)[i].name) + 1));
48 strcpy(newPVvalue[k].name, (*PVvalue)[i].name);
49 strcat(newPVvalue[k].name, List[j].
string);
50 if (List[j].flags & VALUE_GIVEN)
56 for (i = 0; i < *PVvalues; i++) {
57 free((*PVvalue)[i].name);
58 if ((*PVvalue)[i].value)
59 free((*PVvalue)[i].value);
62 *PVvalue = newPVvalue;
63 *PVvalues = newPVvalues;
67void multiplyWithRange(
PV_VALUE **PVvalue,
long *PVvalues,
long begin,
long end,
long interval,
char *format) {
68 long newPVvalues, value, i, j, k;
73 *PVvalue =
tmalloc(
sizeof(**PVvalue) * (end - begin + 1));
74 for (value = begin, j = k = 0; value <= end; value++, j++) {
77 sprintf(buffer, format, value);
79 (*PVvalue)[k].value = 0;
84 newPVvalue =
tmalloc(
sizeof(*newPVvalue) * (*PVvalues * (end - begin + 1)));
86 for (i = k = 0; i < *PVvalues; i++) {
87 for (value = begin, j = 0; value <= end; value++, j++) {
90 sprintf(buffer, format, value);
91 newPVvalue[k].name =
tmalloc(
sizeof(*newPVvalue[k].name) *
92 (strlen(buffer) + strlen((*PVvalue)[i].name) + 1));
93 strcpy(newPVvalue[k].name, (*PVvalue)[i].name);
94 strcat(newPVvalue[k].name, buffer);
95 newPVvalue[k].value = (*PVvalue)[i].value;
100 for (i = 0; i < *PVvalues; i++) {
101 free((*PVvalue)[i].name);
105 *PVvalue = newPVvalue;
106 *PVvalues = newPVvalues;
SDDS (Self Describing Data Set) Data Types Definitions and Function Prototypes.
int32_t SDDS_CopyString(char **target, const char *source)
Copies a source string to a target string with memory allocation.
void * tmalloc(uint64_t size_of_block)
Allocates a memory block of the specified size with zero initialization.
Helper Functions used by cavget and cavput.