void ShaderParam :: set_count(int count) { mCount = (count <= 0) ? 1 : count; // min value is 1 int unit_size = size_for_type(mType); int total_size = unit_size*mCount; switch( data_type_for_type(mType) ) { case FLOAT: { if(mFdataSize < total_size) { delete[] mFdata; mFdata = new float[total_size]; } } break; case INT: { if(mIdataSize < total_size) { delete[] mIdata; mIdata = new int[total_size]; } } break; default: break; } }
void MsgHandler::parse_format_fields() { char *labels = xstrdup(f.labels); char * arg = labels; uint8_t label_offset = 0; char *next_label; uint8_t msg_offset = 3; // 3 bytes for the header while ((next_label = strtok(arg, ",")) != NULL) { if (label_offset > strlen(f.format)) { free(labels); printf("too few field times for labels %s (format=%s) (labels=%s)\n", f.name, f.format, f.labels); exit(1); } uint8_t field_type = f.format[label_offset]; uint8_t length = size_for_type(field_type); add_field(next_label, field_type, msg_offset, length); arg = NULL; msg_offset += length; label_offset++; } if (label_offset != strlen(f.format)) { free(labels); printf("too few labels for format (format=%s) (labels=%s)\n", f.format, f.labels); } free(labels); }