Пример #1
0
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;
	}
}
Пример #2
0
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);
}