long NativeRecordSize(FieldList list) { long size; /* total array size in bytes */ FieldSpec **fld_order; long i; long fld_size; fld_order = FieldOrder(list); if (fld_order == NULL) return 0; size = 0; for (i = 0 ; fld_order[i] != NULL; i++) { if (fld_order[i]->occurrence == OPTIONAL) { size = -1; break; } fld_size = FieldLength(fld_order[i]) * NativeTypeSize(fld_order[i]->type); if (fld_size < 0) { size = -1; break; } else size += fld_size; } free(fld_order); return size; }
long ExternTypeSize(int type, int arch) { switch (arch) { case EDR1: return EdrTypeSize(type, EDR1); break; case EDR2: return EdrTypeSize(type, EDR2); break; case NATIVE: return NativeTypeSize(type); break; case ASCII: return -1; break; default: return -1; break; } }