47SDDSParameter::SDDSParameter() {
52 parameterSymbol = NULL;
53 parameterUnits = NULL;
54 parameterDescription = NULL;
55 parameterFormatString = NULL;
56 parameterFixedValue = NULL;
75SDDSParameter::~SDDSParameter() {
77 if (parameterName != NULL)
78 SDDS_free(parameterName);
79 if (parameterSymbol != NULL)
80 SDDS_free(parameterSymbol);
81 if (parameterUnits != NULL)
82 SDDS_free(parameterUnits);
83 if (parameterDescription != NULL)
84 SDDS_free(parameterDescription);
85 if (parameterFormatString != NULL)
86 SDDS_free(parameterFormatString);
87 if (parameterFixedValue != NULL)
88 SDDS_free(parameterFixedValue);
89 if (int16Value != NULL)
90 SDDS_free(int16Value);
91 if (uint16Value != NULL)
92 SDDS_free(uint16Value);
93 if (int32Value != NULL)
94 SDDS_free(int32Value);
95 if (uint32Value != NULL)
96 SDDS_free(uint32Value);
97 if (real32Value != NULL)
98 SDDS_free(real32Value);
99 if (real64Value != NULL)
100 SDDS_free(real64Value);
101 if (stringValue != NULL) {
102 for (i=0; i<pageCount; i++) {
103 if (stringValue[i] != NULL) {
104 SDDS_free(stringValue[i]);
107 SDDS_free(stringValue);
109 if (charValue != NULL)
110 SDDS_free(charValue);
120void SDDSParameter::freePage() {
122 switch (parameterType) {
124 if (int16Value != NULL)
125 SDDS_free(int16Value);
129 if (uint16Value != NULL)
130 SDDS_free(uint16Value);
134 if (int32Value != NULL)
135 SDDS_free(int32Value);
139 if (uint32Value != NULL)
140 SDDS_free(uint32Value);
144 if (real32Value != NULL)
145 SDDS_free(real32Value);
149 if (real64Value != NULL)
150 SDDS_free(real64Value);
154 if (stringValue != NULL) {
155 for (i=0; i<pageCount; i++) {
156 if (stringValue[i] != NULL) {
157 SDDS_free(stringValue[i]);
160 SDDS_free(stringValue);
165 if (charValue != NULL)
166 SDDS_free(charValue);
183void SDDSParameter::setupParameter(
char *name,
char *symbol,
char *units,
char *description,
char *format_string, int32_t type,
char *fixed_value) {
184 if (parameterName != NULL)
185 SDDS_free(parameterName);
186 if (parameterSymbol != NULL)
187 SDDS_free(parameterSymbol);
188 if (parameterUnits != NULL)
189 SDDS_free(parameterUnits);
190 if (parameterDescription != NULL)
191 SDDS_free(parameterDescription);
192 if (parameterFormatString != NULL)
193 SDDS_free(parameterFormatString);
194 if (parameterFixedValue != NULL)
195 SDDS_free(parameterFixedValue);
198 parameterName = NULL;
200 parameterName = (
char*)SDDS_malloc(
sizeof(
char) * strlen(name) + 1);
201 strcpy(parameterName, name);
204 parameterSymbol = NULL;
206 parameterSymbol = (
char*)SDDS_malloc(
sizeof(
char) * strlen(symbol) + 1);
207 strcpy(parameterSymbol, symbol);
210 parameterUnits = NULL;
212 parameterUnits = (
char*)SDDS_malloc(
sizeof(
char) * strlen(units) + 1);
213 strcpy(parameterUnits, units);
215 if (description == NULL)
216 parameterDescription = NULL;
218 parameterDescription = (
char*)SDDS_malloc(
sizeof(
char) * strlen(description) + 1);
219 strcpy(parameterDescription, description);
221 if (format_string == NULL)
222 parameterFormatString = NULL;
224 parameterFormatString = (
char*)SDDS_malloc(
sizeof(
char) * strlen(format_string) + 1);
225 strcpy(parameterFormatString, format_string);
227 if (fixed_value == NULL) {
228 parameterFixedValue = NULL;
231 parameterFixedValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(fixed_value) + 1);
232 strcpy(parameterFixedValue, fixed_value);
235 parameterType = type;
245void SDDSParameter::informAboutParent(
void *parent) {
256char* SDDSParameter::getName() {
257 return(parameterName);
267void SDDSParameter::setName(
char *name) {
268 if (parameterName != NULL)
269 SDDS_free(parameterName);
271 parameterName = NULL;
273 parameterName = (
char*)SDDS_malloc(
sizeof(
char) * strlen(name) + 1);
274 strcpy(parameterName, name);
285char* SDDSParameter::getSymbol() {
286 return(parameterSymbol);
296void SDDSParameter::setSymbol(
char *symbol) {
297 if (parameterSymbol != NULL)
298 SDDS_free(parameterSymbol);
300 parameterSymbol = NULL;
302 parameterSymbol = (
char*)SDDS_malloc(
sizeof(
char) * strlen(symbol) + 1);
303 strcpy(parameterSymbol, symbol);
314char* SDDSParameter::getUnits() {
315 return(parameterUnits);
325void SDDSParameter::setUnits(
char *units) {
326 if (parameterUnits != NULL)
327 SDDS_free(parameterUnits);
329 parameterUnits = NULL;
331 parameterUnits = (
char*)SDDS_malloc(
sizeof(
char) * strlen(units) + 1);
332 strcpy(parameterUnits, units);
343char* SDDSParameter::getDescription() {
344 return(parameterDescription);
354void SDDSParameter::setDescription(
char *description) {
355 if (parameterDescription != NULL)
356 SDDS_free(parameterDescription);
357 if (description == NULL)
358 parameterDescription = NULL;
360 parameterDescription = (
char*)SDDS_malloc(
sizeof(
char) * strlen(description) + 1);
361 strcpy(parameterDescription, description);
372char* SDDSParameter::getFormatString() {
373 return(parameterFormatString);
383void SDDSParameter::setFormatString(
char *format_string) {
384 if (parameterFormatString != NULL)
385 SDDS_free(parameterFormatString);
386 if (format_string == NULL)
387 parameterFormatString = NULL;
389 parameterFormatString = (
char*)SDDS_malloc(
sizeof(
char) * strlen(format_string) + 1);
390 strcpy(parameterFormatString, format_string);
401char* SDDSParameter::getFixedValue() {
402 return(parameterFixedValue);
414void SDDSParameter::setFixedValue(
char *fixed_value) {
415 if (parameterFixedValue != NULL)
416 SDDS_free(parameterFixedValue);
417 if (fixed_value == NULL) {
418 parameterFixedValue = NULL;
421 parameterFixedValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(fixed_value) + 1);
422 strcpy(parameterFixedValue, fixed_value);
434int32_t SDDSParameter::getType() {
435 return(parameterType);
445void SDDSParameter::setType(int32_t type) {
446 parameterType = type;
456uint32_t SDDSParameter::getPageCount() {
473int32_t SDDSParameter::setValue(int32_t value, uint32_t page) {
476 char s[SDDS_MAXLINE];
479 if (page > pageCount) {
481 n = page - pageCount;
486 switch (parameterType) {
489 int16Value = (int16_t*)SDDS_realloc(int16Value,
sizeof(int16_t) * page);
491 int16Value[page - i] = (int16_t)0;
493 int16Value[page-1] = (int16_t)value;
497 uint16Value = (uint16_t*)SDDS_realloc(uint16Value,
sizeof(uint16_t) * page);
499 uint16Value[page - i] = (uint16_t)0;
501 uint16Value[page-1] = (uint16_t)value;
505 int32Value = (int32_t*)SDDS_realloc(int32Value,
sizeof(int32_t) * page);
507 int32Value[page - i] = (int32_t)0;
509 int32Value[page-1] = (int32_t)value;
513 uint32Value = (uint32_t*)SDDS_realloc(uint32Value,
sizeof(uint32_t) * page);
515 uint32Value[page - i] = (uint32_t)0;
517 uint32Value[page-1] = (uint32_t)value;
521 real32Value = (
float*)SDDS_realloc(real32Value,
sizeof(
float) * page);
523 real32Value[page - i] = (
float)0;
525 real32Value[page-1] = (float)value;
529 real64Value = (
double*)SDDS_realloc(real64Value,
sizeof(
double) * page);
531 real64Value[page - i] = (
double)0;
533 real64Value[page-1] = (double)value;
537 stringValue = (
char**)SDDS_realloc(stringValue,
sizeof(
char*) * page);
539 stringValue[page - i] = NULL;
541 sprintf(s,
"%" PRId32, value);
542 stringValue[page-1] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
543 strcpy(stringValue[page-1], s);
547 charValue = (
char*)SDDS_realloc(charValue,
sizeof(
char) * page);
549 charValue[page - i] = 0;
551 charValue[page-1] = (char)value;
561int32_t SDDSParameter::setValue(uint32_t value, uint32_t page) {
564 char s[SDDS_MAXLINE];
567 if (page > pageCount) {
569 n = page - pageCount;
574 switch (parameterType) {
577 int16Value = (int16_t*)SDDS_realloc(int16Value,
sizeof(int16_t) * page);
579 int16Value[page - i] = (int16_t)0;
581 int16Value[page-1] = (int16_t)value;
585 uint16Value = (uint16_t*)SDDS_realloc(uint16Value,
sizeof(uint16_t) * page);
587 uint16Value[page - i] = (uint16_t)0;
589 uint16Value[page-1] = (uint16_t)value;
593 int32Value = (int32_t*)SDDS_realloc(int32Value,
sizeof(int32_t) * page);
595 int32Value[page - i] = (int32_t)0;
597 int32Value[page-1] = (int32_t)value;
601 uint32Value = (uint32_t*)SDDS_realloc(uint32Value,
sizeof(uint32_t) * page);
603 uint32Value[page - i] = (uint32_t)0;
605 uint32Value[page-1] = (uint32_t)value;
609 real32Value = (
float*)SDDS_realloc(real32Value,
sizeof(
float) * page);
611 real32Value[page - i] = (
float)0;
613 real32Value[page-1] = (float)value;
617 real64Value = (
double*)SDDS_realloc(real64Value,
sizeof(
double) * page);
619 real64Value[page - i] = (
double)0;
621 real64Value[page-1] = (double)value;
625 stringValue = (
char**)SDDS_realloc(stringValue,
sizeof(
char*) * page);
627 stringValue[page - i] = NULL;
629 sprintf(s,
"%" PRIu32, value);
630 stringValue[page-1] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
631 strcpy(stringValue[page-1], s);
635 charValue = (
char*)SDDS_realloc(charValue,
sizeof(
char) * page);
637 charValue[page - i] = 0;
639 charValue[page-1] = (char)value;
649int32_t SDDSParameter::setValue(
double value, uint32_t page) {
652 char s[SDDS_MAXLINE];
655 if (page > pageCount) {
657 n = page - pageCount;
662 switch (parameterType) {
665 int16Value = (int16_t*)SDDS_realloc(int16Value,
sizeof(int16_t) * page);
667 int16Value[page - i] = (int16_t)0;
669 int16Value[page-1] = (int16_t)value;
673 uint16Value = (uint16_t*)SDDS_realloc(uint16Value,
sizeof(uint16_t) * page);
675 uint16Value[page - i] = (uint16_t)0;
677 uint16Value[page-1] = (uint16_t)value;
681 int32Value = (int32_t*)SDDS_realloc(int32Value,
sizeof(int32_t) * page);
683 int32Value[page - i] = (int32_t)0;
685 int32Value[page-1] = (int32_t)value;
689 uint32Value = (uint32_t*)SDDS_realloc(uint32Value,
sizeof(uint32_t) * page);
691 uint32Value[page - i] = (uint32_t)0;
693 uint32Value[page-1] = (uint32_t)value;
697 real32Value = (
float*)SDDS_realloc(real32Value,
sizeof(
float) * page);
699 real32Value[page - i] = (
float)0;
701 real32Value[page-1] = (float)value;
705 real64Value = (
double*)SDDS_realloc(real64Value,
sizeof(
double) * page);
707 real64Value[page - i] = (
double)0;
709 real64Value[page-1] = (double)value;
713 stringValue = (
char**)SDDS_realloc(stringValue,
sizeof(
char*) * page);
715 stringValue[page - i] = NULL;
717 sprintf(s,
"%lf", value);
718 stringValue[page-1] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
719 strcpy(stringValue[page-1], s);
723 charValue = (
char*)SDDS_realloc(charValue,
sizeof(
char) * page);
725 charValue[page - i] = 0;
727 charValue[page-1] = (char)value;
737int32_t SDDSParameter::setValue(
char *value, uint32_t page) {
746 if (page > pageCount) {
748 n = page - pageCount;
753 iValue = strtoll(value, (
char**)NULL, 10);
754 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
760 dValue = strtod(value, (
char**)NULL);
761 if ((dValue == HUGE_VAL) || (dValue == -HUGE_VAL)) {
768 switch (parameterType) {
771 int16Value = (int16_t*)SDDS_realloc(int16Value,
sizeof(int16_t) * page);
773 int16Value[page - i] = (int16_t)0;
775 int16Value[page-1] = (int16_t)iValue;
779 uint16Value = (uint16_t*)SDDS_realloc(uint16Value,
sizeof(uint16_t) * page);
781 uint16Value[page - i] = (uint16_t)0;
783 uint16Value[page-1] = (uint16_t)iValue;
787 int32Value = (int32_t*)SDDS_realloc(int32Value,
sizeof(int32_t) * page);
789 int32Value[page - i] = (int32_t)0;
791 int32Value[page-1] = (int32_t)iValue;
795 uint32Value = (uint32_t*)SDDS_realloc(uint32Value,
sizeof(uint32_t) * page);
797 uint32Value[page - i] = (uint32_t)0;
799 uint32Value[page-1] = (uint32_t)iValue;
803 real32Value = (
float*)SDDS_realloc(real32Value,
sizeof(
float) * page);
805 real32Value[page - i] = (
float)0;
807 real32Value[page-1] = (float)dValue;
811 real64Value = (
double*)SDDS_realloc(real64Value,
sizeof(
double) * page);
813 real64Value[page - i] = (
double)0;
815 real64Value[page-1] = (double)dValue;
819 stringValue = (
char**)SDDS_realloc(stringValue,
sizeof(
char*) * page);
821 stringValue[page - i] = NULL;
823 stringValue[page-1] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(value) + 1);
824 strcpy(stringValue[page-1], value);
828 charValue = (
char*)SDDS_realloc(charValue,
sizeof(
char) * page);
830 charValue[page - i] = 0;
832 charValue[page-1] = value[0];
850int32_t SDDSParameter::readAsciiValue(
char **bigBuffer, int32_t *bigBufferSize, uint32_t page) {
851 int32_t returnVal=0, length;
855 static char *buffer=NULL;
856 static int32_t bufferSize=0;
858 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--parameter is fixed (SDDSParameter::readAsciiValue)");
862 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--invalid page number (SDDSParameter::readAsciiValue)");
865 if (page - 1 != pageCount) {
866 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--invalid page number (SDDSParameter::readAsciiValue)");
870 bufferSize=SDDS_MAXLINE;
871 buffer = (
char*)SDDS_malloc(
sizeof(*buffer)*(bufferSize));
873 if (bufferSize <= *bigBufferSize) {
874 bufferSize = 2 * *bigBufferSize;
875 buffer = (
char*)SDDS_realloc(buffer,
sizeof(*buffer)*(bufferSize));
879 if (SDDS_getToken(bigBuffer, bigBufferSize, buffer, bufferSize) < 0) {
880 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter (SDDSParameter::readAsciiValue)");
884 iValue = strtoll(buffer, (
char**)NULL, 10);
885 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
886 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--not a valid integer (SDDSParameter::readAsciiValue)");
892 if (SDDS_getToken(bigBuffer, bigBufferSize, buffer, bufferSize) < 0) {
893 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter (SDDSParameter::readAsciiValue)");
897 dValue = strtod(buffer, (
char**)NULL);
898 if ((dValue == HUGE_VAL) || (dValue == -HUGE_VAL)) {
899 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--not a valid number (SDDSParameter::readAsciiValue)");
906 switch (parameterType) {
908 int16Value = (int16_t*)SDDS_realloc(int16Value,
sizeof(int16_t) * page);
909 int16Value[p] = (int16_t)iValue;
912 uint16Value = (uint16_t*)SDDS_realloc(uint16Value,
sizeof(uint16_t) * page);
913 uint16Value[p] = (uint16_t)iValue;
916 int32Value = (int32_t*)SDDS_realloc(int32Value,
sizeof(int32_t) * page);
917 int32Value[p] = (int32_t)iValue;
920 uint32Value = (uint32_t*)SDDS_realloc(uint32Value,
sizeof(uint32_t) * page);
921 uint32Value[p] = (uint32_t)iValue;
924 real32Value = (
float*)SDDS_realloc(real32Value,
sizeof(
float) * page);
925 real32Value[p] = (float)dValue;
928 real64Value = (
double*)SDDS_realloc(real64Value,
sizeof(
double) * page);
929 real64Value[p] = (double)dValue;
932 stringValue = (
char**)SDDS_realloc(stringValue,
sizeof(
char*) * page);
933 length = strlen(*bigBuffer);
935 if ((*bigBuffer)[length-1] ==
'\r') {
936 (*bigBuffer)[length-1] = 0;
939 if (SDDS_getToken(bigBuffer, bigBufferSize, buffer, bufferSize) < 0) {
940 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter (SDDSParameter::readAsciiValue)");
942 stringValue[p] = (
char*)SDDS_malloc(
sizeof(
char) * 4);
943 strcpy(stringValue[p],
"\"\"");
945 SDDS_interpretEscapes(buffer);
946 stringValue[p] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(buffer) + 1);
947 strcpy(stringValue[p], buffer);
951 charValue = (
char*)SDDS_realloc(charValue,
sizeof(
char) * page);
952 if (SDDS_getToken(bigBuffer, bigBufferSize, buffer, bufferSize) < 0) {
953 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter (SDDSParameter::readAsciiValue)");
957 charValue[p] = buffer[0];
961 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--invalid parameter type (SDDSParameter::readAsciiValue)");
979int32_t SDDSParameter::getValueInInt32(uint32_t page, int32_t *errorcode) {
982 if ((page == 0) || (page > pageCount)) {
986 return((int32_t)LONG_MAX);
994 iValue = strtoll(parameterFixedValue, (
char**)NULL, 10);
995 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
998 return((int32_t)LONG_MAX);
1000 return((int32_t)iValue);
1002 dValue = strtod(parameterFixedValue, (
char**)NULL);
1003 if ((dValue == HUGE_VAL) || (dValue == -HUGE_VAL)) {
1006 return((int32_t)LONG_MAX);
1008 return((int32_t)dValue);
1012 switch (parameterType) {
1014 return((int32_t)int16Value[page]);
1016 return((int32_t)uint16Value[page]);
1018 return((int32_t)int32Value[page]);
1020 return((int32_t)uint32Value[page]);
1022 return((int32_t)real32Value[page]);
1024 return((int32_t)real64Value[page]);
1026 iValue = strtoll(stringValue[page], (
char**)NULL, 10);
1027 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
1030 return((int32_t)LONG_MAX);
1032 return((int32_t)iValue);
1034 return((int32_t)charValue[page]);
1037 return((int32_t)LONG_MAX);
1052int32_t* SDDSParameter::getValuesInInt32(int32_t *errorcode) {
1057 if (pageCount == 0) {
1061 return((int32_t*)NULL);
1065 rValues = (int32_t*)SDDS_malloc(
sizeof(int32_t) * pageCount);
1070 iValue = strtoll(parameterFixedValue, (
char**)NULL, 10);
1071 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
1075 return((int32_t*)NULL);
1077 for (i=0; i<pageCount; i++)
1078 rValues[i] = (int32_t)iValue;
1079 return((int32_t*)rValues);
1081 dValue = strtod(parameterFixedValue, (
char**)NULL);
1082 if ((dValue == HUGE_VAL) || (dValue == -HUGE_VAL)) {
1086 return((int32_t*)NULL);
1088 for (i=0; i<pageCount; i++)
1089 rValues[i] = (int32_t)dValue;
1090 return((int32_t*)rValues);
1093 switch (parameterType) {
1095 for (i=0; i<pageCount; i++)
1096 rValues[i] = (int32_t)int16Value[i];
1097 return((int32_t*)rValues);
1099 for (i=0; i<pageCount; i++)
1100 rValues[i] = (int32_t)uint16Value[i];
1101 return((int32_t*)rValues);
1103 for (i=0; i<pageCount; i++)
1104 rValues[i] = (int32_t)int32Value[i];
1105 return((int32_t*)rValues);
1107 for (i=0; i<pageCount; i++)
1108 rValues[i] = (int32_t)uint32Value[i];
1109 return((int32_t*)rValues);
1111 for (i=0; i<pageCount; i++)
1112 rValues[i] = (int32_t)real32Value[i];
1113 return((int32_t*)rValues);
1115 for (i=0; i<pageCount; i++)
1116 rValues[i] = (int32_t)real64Value[i];
1117 return((int32_t*)rValues);
1119 for (i=0; i<pageCount; i++) {
1120 iValue = strtoll(stringValue[i], (
char**)NULL, 10);
1121 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
1125 return((int32_t*)NULL);
1127 rValues[i] = (int32_t)iValue;
1129 return((int32_t*)rValues);
1131 for (i=0; i<pageCount; i++)
1132 rValues[i] = (int32_t)charValue[i];
1133 return((int32_t*)rValues);
1136 return((int32_t*)NULL);
1151uint32_t SDDSParameter::getValueInUInt32(uint32_t page, int32_t *errorcode) {
1154 if ((page == 0) || (page > pageCount)) {
1158 return((uint32_t)ULONG_MAX);
1166 iValue = strtoll(parameterFixedValue, (
char**)NULL, 10);
1167 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
1170 return((uint32_t)ULONG_MAX);
1172 return((uint32_t)iValue);
1174 dValue = strtod(parameterFixedValue, (
char**)NULL);
1175 if ((dValue == HUGE_VAL) || (dValue == -HUGE_VAL)) {
1178 return((uint32_t)ULONG_MAX);
1180 return((uint32_t)dValue);
1184 switch (parameterType) {
1186 return((uint32_t)int16Value[page]);
1188 return((uint32_t)uint16Value[page]);
1190 return((uint32_t)int32Value[page]);
1192 return((uint32_t)uint32Value[page]);
1194 return((uint32_t)real32Value[page]);
1196 return((uint32_t)real64Value[page]);
1198 iValue = strtoll(stringValue[page], (
char**)NULL, 10);
1199 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
1202 return((uint32_t)ULONG_MAX);
1204 return((uint32_t)iValue);
1206 return((uint32_t)charValue[page]);
1209 return((uint32_t)ULONG_MAX);
1224uint32_t* SDDSParameter::getValuesInUInt32(int32_t *errorcode) {
1229 if (pageCount == 0) {
1233 return((uint32_t*)NULL);
1237 rValues = (uint32_t*)SDDS_malloc(
sizeof(uint32_t) * pageCount);
1242 iValue = strtoll(parameterFixedValue, (
char**)NULL, 10);
1243 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
1247 return((uint32_t*)NULL);
1249 for (i=0; i<pageCount; i++)
1250 rValues[i] = (uint32_t)iValue;
1251 return((uint32_t*)rValues);
1253 dValue = strtod(parameterFixedValue, (
char**)NULL);
1254 if ((dValue == HUGE_VAL) || (dValue == -HUGE_VAL)) {
1258 return((uint32_t*)NULL);
1260 for (i=0; i<pageCount; i++)
1261 rValues[i] = (uint32_t)dValue;
1262 return((uint32_t*)rValues);
1265 switch (parameterType) {
1267 for (i=0; i<pageCount; i++)
1268 rValues[i] = (uint32_t)int16Value[i];
1269 return((uint32_t*)rValues);
1271 for (i=0; i<pageCount; i++)
1272 rValues[i] = (uint32_t)uint16Value[i];
1273 return((uint32_t*)rValues);
1275 for (i=0; i<pageCount; i++)
1276 rValues[i] = (uint32_t)int32Value[i];
1277 return((uint32_t*)rValues);
1279 for (i=0; i<pageCount; i++)
1280 rValues[i] = (uint32_t)uint32Value[i];
1281 return((uint32_t*)rValues);
1283 for (i=0; i<pageCount; i++)
1284 rValues[i] = (uint32_t)real32Value[i];
1285 return((uint32_t*)rValues);
1287 for (i=0; i<pageCount; i++)
1288 rValues[i] = (uint32_t)real64Value[i];
1289 return((uint32_t*)rValues);
1291 for (i=0; i<pageCount; i++) {
1292 iValue = strtoll(stringValue[i], (
char**)NULL, 10);
1293 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
1297 return((uint32_t*)NULL);
1299 rValues[i] = (uint32_t)iValue;
1301 return((uint32_t*)rValues);
1303 for (i=0; i<pageCount; i++)
1304 rValues[i] = (uint32_t)charValue[i];
1305 return((uint32_t*)rValues);
1308 return((uint32_t*)NULL);
1323double SDDSParameter::getValueInDouble(uint32_t page, int32_t *errorcode) {
1326 if ((page == 0) || (page > pageCount)) {
1330 return((
double)HUGE_VAL);
1337 iValue = strtoll(parameterFixedValue, (
char**)NULL, 10);
1338 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
1341 return((
double)HUGE_VAL);
1343 return((
double)iValue);
1346 dValue = strtod(parameterFixedValue, (
char**)NULL);
1347 if ((dValue == HUGE_VAL) || (dValue == -HUGE_VAL)) {
1350 return((
double)HUGE_VAL);
1352 return((
double)dValue);
1356 switch (parameterType) {
1358 return((
double)int16Value[page]);
1360 return((
double)uint16Value[page]);
1362 return((
double)int32Value[page]);
1364 return((
double)uint32Value[page]);
1366 return((
double)real32Value[page]);
1368 return((
double)real64Value[page]);
1370 dValue = strtod(stringValue[page], (
char**)NULL);
1371 if ((dValue == HUGE_VAL) || (dValue == -HUGE_VAL)) {
1374 return((
double)HUGE_VAL);
1376 return((
double)dValue);
1378 return((
double)charValue[page]);
1381 return((
double)HUGE_VAL);
1396double* SDDSParameter::getValuesInDouble(int32_t *errorcode) {
1401 if (pageCount == 0) {
1405 return((
double*)NULL);
1409 rValues = (
double*)SDDS_malloc(
sizeof(
double) * pageCount);
1413 iValue = strtoll(parameterFixedValue, (
char**)NULL, 10);
1414 if ((iValue == LLONG_MIN) || (iValue == LLONG_MAX)) {
1418 return((
double*)NULL);
1420 for (i=0; i<pageCount; i++)
1421 rValues[i] = (
double)iValue;
1422 return((
double*)rValues);
1425 dValue = strtod(parameterFixedValue, (
char**)NULL);
1426 if ((dValue == HUGE_VAL) || (dValue == -HUGE_VAL)) {
1430 return((
double*)NULL);
1432 for (i=0; i<pageCount; i++)
1433 rValues[i] = (
double)dValue;
1434 return((
double*)rValues);
1437 switch (parameterType) {
1439 for (i=0; i<pageCount; i++)
1440 rValues[i] = (
double)int16Value[i];
1441 return((
double*)rValues);
1443 for (i=0; i<pageCount; i++)
1444 rValues[i] = (
double)uint16Value[i];
1445 return((
double*)rValues);
1447 for (i=0; i<pageCount; i++)
1448 rValues[i] = (
double)int32Value[i];
1449 return((
double*)rValues);
1451 for (i=0; i<pageCount; i++)
1452 rValues[i] = (
double)uint32Value[i];
1453 return((
double*)rValues);
1455 for (i=0; i<pageCount; i++)
1456 rValues[i] = (
double)real32Value[i];
1457 return((
double*)rValues);
1459 for (i=0; i<pageCount; i++)
1460 rValues[i] = (
double)real64Value[i];
1461 return((
double*)rValues);
1463 for (i=0; i<pageCount; i++) {
1464 dValue = strtod(stringValue[i], (
char**)NULL);
1465 if ((dValue == HUGE_VAL) || (dValue == -HUGE_VAL)) {
1469 return((
double*)NULL);
1471 rValues[i] = (double)dValue;
1473 return((
double*)rValues);
1475 for (i=0; i<pageCount; i++)
1476 rValues[i] = (
double)charValue[i];
1477 return((
double*)rValues);
1480 return((
double*)NULL);
1495char* SDDSParameter::getValueInString(uint32_t page, int32_t *errorcode) {
1497 char s[SDDS_MAXLINE];
1498 if ((page == 0) || (page > pageCount)) {
1502 return((
char*)NULL);
1507 sValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(parameterFixedValue) + 1);
1508 strcpy(sValue, parameterFixedValue);
1509 return((
char*)sValue);
1512 switch (parameterType) {
1514 sprintf(s,
"%" PRId16, int16Value[page]);
1515 sValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1517 return((
char*)sValue);
1519 sprintf(s,
"%" PRIu16, uint16Value[page]);
1520 sValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1522 return((
char*)sValue);
1524 sprintf(s,
"%" PRId32, int32Value[page]);
1525 sValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1527 return((
char*)sValue);
1529 sprintf(s,
"%" PRIu32, uint32Value[page]);
1530 sValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1532 return((
char*)sValue);
1534 sprintf(s,
"%f", real32Value[page]);
1535 sValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1537 return((
char*)sValue);
1539 sprintf(s,
"%lf", real64Value[page]);
1540 sValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1542 return((
char*)sValue);
1544 sValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(stringValue[page]) + 1);
1545 strcpy(sValue, stringValue[page]);
1546 return((
char*)sValue);
1548 sprintf(s,
"%c", charValue[page]);
1549 sValue = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1551 return((
char*)sValue);
1554 return((
char*)NULL);
1569char** SDDSParameter::getValuesInString(int32_t *errorcode) {
1572 char s[SDDS_MAXLINE];
1573 if (pageCount == 0) {
1577 return((
char**)NULL);
1581 rValues = (
char**)SDDS_malloc(
sizeof(
char*) * pageCount);
1583 for (i=0; i<pageCount; i++) {
1584 rValues[i] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(parameterFixedValue) + 1);
1585 strcpy(rValues[i], parameterFixedValue);
1587 return((
char**)rValues);
1589 switch (parameterType) {
1591 for (i=0; i<pageCount; i++) {
1592 sprintf(s,
"%" PRId16, int16Value[i]);
1593 rValues[i] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1594 strcpy(rValues[i], s);
1596 return((
char**)rValues);
1598 for (i=0; i<pageCount; i++) {
1599 sprintf(s,
"%" PRIu16, uint16Value[i]);
1600 rValues[i] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1601 strcpy(rValues[i], s);
1603 return((
char**)rValues);
1605 for (i=0; i<pageCount; i++) {
1606 sprintf(s,
"%" PRId32, int32Value[i]);
1607 rValues[i] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1608 strcpy(rValues[i], s);
1610 return((
char**)rValues);
1612 for (i=0; i<pageCount; i++) {
1613 sprintf(s,
"%" PRIu32, uint32Value[i]);
1614 rValues[i] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1615 strcpy(rValues[i], s);
1617 return((
char**)rValues);
1619 for (i=0; i<pageCount; i++) {
1620 sprintf(s,
"%f", real32Value[i]);
1621 rValues[i] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1622 strcpy(rValues[i], s);
1624 return((
char**)rValues);
1626 for (i=0; i<pageCount; i++) {
1627 sprintf(s,
"%lf", real64Value[i]);
1628 rValues[i] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1629 strcpy(rValues[i], s);
1631 return((
char**)rValues);
1633 for (i=0; i<pageCount; i++) {
1634 rValues[i] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(stringValue[i]) + 1);
1635 strcpy(rValues[i], stringValue[i]);
1637 return((
char**)rValues);
1639 for (i=0; i<pageCount; i++) {
1640 sprintf(s,
"%c", charValue[i]);
1641 rValues[i] = (
char*)SDDS_malloc(
sizeof(
char) * strlen(s) + 1);
1642 strcpy(rValues[i], s);
1644 return((
char**)rValues);
1647 return((
char**)NULL);
1660int32_t SDDSParameter::writeDefinition(FILE *fp) {
1667 fputs(
"¶meter ", fp);
1668 if (SDDS_printNamelistField(fp, (
char*)
"name", parameterName)) {
1671 if (SDDS_printNamelistField(fp, (
char*)
"symbol", SDDS_blankToNull(parameterSymbol))) {
1674 if (SDDS_printNamelistField(fp, (
char*)
"units", SDDS_blankToNull(parameterUnits))) {
1677 if (SDDS_printNamelistField(fp, (
char*)
"description", SDDS_blankToNull(parameterDescription))) {
1680 if (SDDS_printNamelistField(fp, (
char*)
"format_string", SDDS_blankToNull(parameterFormatString))) {
1683 if (((SDDSFile*)sddsfile)->layoutVersion == 1) {
1684 if (SDDS_printNamelistField(fp, (
char*)
"type", SDDS_getVer1TypeName(parameterType))) {
1687 }
else if (((SDDSFile*)sddsfile)->layoutVersion == 2) {
1688 if (SDDS_printNamelistField(fp, (
char*)
"type", SDDS_getVer2TypeName(parameterType))) {
1692 if (SDDS_printNamelistField(fp, (
char*)
"type", SDDS_getTypeName(parameterType))) {
1696 if (SDDS_printNamelistField(fp, (
char*)
"fixed_value", parameterFixedValue)) {
1699 fputs(
"&end\n", fp);
1703int32_t SDDSParameter::writeDefinition(voidp *gzfp) {
1710 gzputs(gzfp,
"¶meter ");
1711 if (SDDS_printNamelistField(gzfp, (
char*)
"name", parameterName)) {
1714 if (SDDS_printNamelistField(gzfp, (
char*)
"symbol", SDDS_blankToNull(parameterSymbol))) {
1717 if (SDDS_printNamelistField(gzfp, (
char*)
"units", SDDS_blankToNull(parameterUnits))) {
1720 if (SDDS_printNamelistField(gzfp, (
char*)
"description", SDDS_blankToNull(parameterDescription))) {
1723 if (SDDS_printNamelistField(gzfp, (
char*)
"format_string", SDDS_blankToNull(parameterFormatString))) {
1726 if (((SDDSFile*)sddsfile)->layoutVersion == 1) {
1727 if (SDDS_printNamelistField(gzfp, (
char*)
"type", SDDS_getVer1TypeName(parameterType))) {
1730 }
else if (((SDDSFile*)sddsfile)->layoutVersion == 2) {
1731 if (SDDS_printNamelistField(gzfp, (
char*)
"type", SDDS_getVer2TypeName(parameterType))) {
1735 if (SDDS_printNamelistField(gzfp, (
char*)
"type", SDDS_getTypeName(parameterType))) {
1739 if (SDDS_printNamelistField(gzfp, (
char*)
"fixed_value", parameterFixedValue)) {
1742 gzputs(gzfp,
"&end\n");
1755int32_t SDDSParameter::writeAsciiValue(FILE *fp, uint32_t page) {
1758 int32_t hasWhitespace;
1763 if ((page == 0) || (page > pageCount)) {
1767 switch (parameterType) {
1769 fprintf(fp,
"%" PRId16
"\n", int16Value[page]);
1772 fprintf(fp,
"%" PRIu16
"\n", uint16Value[page]);
1775 fprintf(fp,
"%" PRId32
"\n", int32Value[page]);
1778 fprintf(fp,
"%" PRIu32
"\n", uint32Value[page]);
1781 fprintf(fp,
"%.*g\n", FLT_DIG, real32Value[page]);
1784 fprintf(fp,
"%.*g\n", DBL_DIG, real64Value[page]);
1787 s = stringValue[page];
1789 if (SDDS_hasWhitespace(s) || SDDS_stringIsBlank(s)) {
1797 }
else if (c==
'\\') {
1799 }
else if (c==
'"') {
1801 }
else if (c==
' ') {
1803 }
else if (isspace(c) || !isprint(c)) {
1804 fprintf(fp,
"\\%03o", c);
1809 if (hasWhitespace) {
1815 c = charValue[page];
1822 else if (!c || isspace(c) || !isprint(c))
1823 fprintf(fp,
"\\%03o", c);
1834int32_t SDDSParameter::writeAsciiValue(voidp *gzfp, uint32_t page) {
1837 int32_t hasWhitespace;
1842 if ((page == 0) || (page > pageCount)) {
1846 switch (parameterType) {
1848 gzprintf(gzfp,
"%" PRId16
"\n", int16Value[page]);
1851 gzprintf(gzfp,
"%" PRIu16
"\n", uint16Value[page]);
1854 gzprintf(gzfp,
"%" PRId32
"\n", int32Value[page]);
1857 gzprintf(gzfp,
"%" PRIu32
"\n", uint32Value[page]);
1860 gzprintf(gzfp,
"%.*g\n", FLT_DIG, real32Value[page]);
1863 gzprintf(gzfp,
"%.*g\n", DBL_DIG, real64Value[page]);
1866 s = stringValue[page];
1868 if (SDDS_hasWhitespace(s) || SDDS_stringIsBlank(s)) {
1875 gzputs(gzfp,
"\\!");
1876 }
else if (c==
'\\') {
1877 gzputs(gzfp,
"\\\\");
1878 }
else if (c==
'"') {
1879 gzputs(gzfp,
"\\\"");
1880 }
else if (c==
' ') {
1882 }
else if (isspace(c) || !isprint(c)) {
1883 gzprintf(gzfp,
"\\%03o", c);
1888 if (hasWhitespace) {
1894 c = charValue[page];
1896 gzputs(gzfp,
"\\!");
1898 gzputs(gzfp,
"\\\\");
1900 gzputs(gzfp,
"\\\"");
1901 else if (!c || isspace(c) || !isprint(c))
1902 gzprintf(gzfp,
"\\%03o", c);
1922int32_t SDDSParameter::writeBinaryValue(FILE *fp,
SDDS_FILEBUFFER *fBuffer, uint32_t page,
bool nonNativeEndian) {
1926 if ((page == 0) || (page > pageCount)) {
1930 switch (parameterType) {
1932 if (SDDS_bufferedWrite(&(int16Value[page]), 2, fp, fBuffer, sddsfile)) {
1933 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
1938 if (SDDS_bufferedWrite(&(uint16Value[page]), 2, fp, fBuffer, sddsfile)) {
1939 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
1944 if (SDDS_bufferedWrite(&(int32Value[page]), 4, fp, fBuffer, sddsfile)) {
1945 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
1950 if (SDDS_bufferedWrite(&(uint32Value[page]), 4, fp, fBuffer, sddsfile)) {
1951 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
1956 if (SDDS_bufferedWrite(&(real32Value[page]), 4, fp, fBuffer, sddsfile)) {
1957 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
1962 if (SDDS_bufferedWrite(&(real64Value[page]), 8, fp, fBuffer, sddsfile)) {
1963 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
1968 if (SDDS_writeBinaryString(stringValue[page], fp, fBuffer, sddsfile)) {
1969 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing string (SDDSParameter::writeBinaryValue)");
1974 if (SDDS_bufferedWrite(&(charValue[page]), 1, fp, fBuffer, sddsfile)) {
1975 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
1980 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--unknown type (SDDSParameter::writeBinaryValue)");
1986int32_t SDDSParameter::writeBinaryValue(voidp *gzfp,
SDDS_FILEBUFFER *fBuffer, uint32_t page,
bool nonNativeEndian) {
1990 if ((page == 0) || (page > pageCount)) {
1994 switch (parameterType) {
1996 if (SDDS_bufferedWrite(&(int16Value[page]), 2, gzfp, fBuffer, sddsfile)) {
1997 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
2002 if (SDDS_bufferedWrite(&(uint16Value[page]), 2, gzfp, fBuffer, sddsfile)) {
2003 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
2008 if (SDDS_bufferedWrite(&(int32Value[page]), 4, gzfp, fBuffer, sddsfile)) {
2009 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
2014 if (SDDS_bufferedWrite(&(uint32Value[page]), 4, gzfp, fBuffer, sddsfile)) {
2015 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
2020 if (SDDS_bufferedWrite(&(real32Value[page]), 4, gzfp, fBuffer, sddsfile)) {
2021 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
2026 if (SDDS_bufferedWrite(&(real64Value[page]), 8, gzfp, fBuffer, sddsfile)) {
2027 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
2032 if (SDDS_writeBinaryString(stringValue[page], gzfp, fBuffer, sddsfile)) {
2033 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing string (SDDSParameter::writeBinaryValue)");
2038 if (SDDS_bufferedWrite(&(charValue[page]), 1, gzfp, fBuffer, sddsfile)) {
2039 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--failure writing value (SDDSParameter::writeBinaryValue)");
2044 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to write parameter--unknown type (SDDSParameter::writeBinaryValue)");
2059int32_t SDDSParameter::readBinaryValue(FILE *fp,
SDDS_FILEBUFFER *fBuffer, uint32_t page,
bool nonNativeEndian) {
2063 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--parameter is fixed (SDDSParameter::readBinaryValue)");
2066 if ((page == 0) || (page - 1 != pageCount)) {
2067 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--invalid page number (SDDSParameter::readBinaryValue)");
2071 switch (parameterType) {
2073 int16Value = (int16_t*)SDDS_realloc(int16Value,
sizeof(int16_t) * page);
2074 if (SDDS_bufferedRead(&(int16Value[p]), 2, fp, fBuffer, sddsfile)) {
2075 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2080 uint16Value = (uint16_t*)SDDS_realloc(uint16Value,
sizeof(uint16_t) * page);
2081 if (SDDS_bufferedRead(&(uint16Value[p]), 2, fp, fBuffer, sddsfile)) {
2082 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2087 int32Value = (int32_t*)SDDS_realloc(int32Value,
sizeof(int32_t) * page);
2088 if (SDDS_bufferedRead(&(int32Value[p]), 4, fp, fBuffer, sddsfile)) {
2089 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2094 uint32Value = (uint32_t*)SDDS_realloc(uint32Value,
sizeof(uint32_t) * page);
2095 if (SDDS_bufferedRead(&(uint32Value[p]), 4, fp, fBuffer, sddsfile)) {
2096 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2101 real32Value = (
float*)SDDS_realloc(real32Value,
sizeof(
float) * page);
2102 if (SDDS_bufferedRead(&(real32Value[p]), 4, fp, fBuffer, sddsfile)) {
2103 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2108 real64Value = (
double*)SDDS_realloc(real64Value,
sizeof(
double) * page);
2109 if (SDDS_bufferedRead(&(real64Value[p]), 8, fp, fBuffer, sddsfile)) {
2110 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2115 stringValue = (
char**)SDDS_realloc(stringValue,
sizeof(
char*) * page);
2116 stringValue[p] = NULL;
2117 if (SDDS_readBinaryString(&(stringValue[p]), fp, fBuffer, sddsfile)) {
2118 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading string (SDDSParameter::readBinaryValue)");
2123 charValue = (
char*)SDDS_realloc(charValue,
sizeof(
char) * page);
2124 if (SDDS_bufferedRead(&(charValue[p]), 1, fp, fBuffer, sddsfile)) {
2125 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2130 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--unknown type (SDDSParameter::readBinaryValue)");
2137int32_t SDDSParameter::readBinaryValue(voidp *gzfp,
SDDS_FILEBUFFER *fBuffer, uint32_t page,
bool nonNativeEndian) {
2141 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--parameter is fixed (SDDSParameter::readBinaryValue)");
2144 if ((page == 0) || (page - 1 != pageCount)) {
2145 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--invalid page number (SDDSParameter::readBinaryValue)");
2149 switch (parameterType) {
2151 int16Value = (int16_t*)SDDS_realloc(int16Value,
sizeof(int16_t) * page);
2152 if (SDDS_bufferedRead(&(int16Value[p]), 2, gzfp, fBuffer, sddsfile)) {
2153 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2158 uint16Value = (uint16_t*)SDDS_realloc(uint16Value,
sizeof(uint16_t) * page);
2159 if (SDDS_bufferedRead(&(uint16Value[p]), 2, gzfp, fBuffer, sddsfile)) {
2160 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2165 int32Value = (int32_t*)SDDS_realloc(int32Value,
sizeof(int32_t) * page);
2166 if (SDDS_bufferedRead(&(int32Value[p]), 4, gzfp, fBuffer, sddsfile)) {
2167 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2172 uint32Value = (uint32_t*)SDDS_realloc(uint32Value,
sizeof(uint32_t) * page);
2173 if (SDDS_bufferedRead(&(uint32Value[p]), 4, gzfp, fBuffer, sddsfile)) {
2174 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2179 real32Value = (
float*)SDDS_realloc(real32Value,
sizeof(
float) * page);
2180 if (SDDS_bufferedRead(&(real32Value[p]), 4, gzfp, fBuffer, sddsfile)) {
2181 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2186 real64Value = (
double*)SDDS_realloc(real64Value,
sizeof(
double) * page);
2187 if (SDDS_bufferedRead(&(real64Value[p]), 8, gzfp, fBuffer, sddsfile)) {
2188 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2193 stringValue = (
char**)SDDS_realloc(stringValue,
sizeof(
char*) * page);
2194 stringValue[p] = NULL;
2195 if (SDDS_readBinaryString(&(stringValue[p]), gzfp, fBuffer, sddsfile)) {
2196 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading string (SDDSParameter::readBinaryValue)");
2201 charValue = (
char*)SDDS_realloc(charValue,
sizeof(
char) * page);
2202 if (SDDS_bufferedRead(&(charValue[p]), 1, gzfp, fBuffer, sddsfile)) {
2203 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--failure reading value (SDDSParameter::readBinaryValue)");
2208 ((SDDSFile*)sddsfile)->setError((
char*)
"Unable to read parameter--unknown type (SDDSParameter::readBinaryValue)");
#define SDDS_NUM_TYPES
Total number of defined SDDS data types.
#define SDDS_INTEGER_TYPE(type)
Checks if the given type identifier corresponds to an integer type.
#define SDDS_STRING
Identifier for the string data type.
#define SDDS_FLOATING_TYPE(type)
Checks if the given type identifier corresponds to a floating-point type.
#define SDDS_CHARACTER
Identifier for the character data type.