summaryrefslogtreecommitdiff
path: root/src/main.c
blob: 9b6d69dc3d4dc92377dd6bd92469c26f3f60f018 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <assert.h>
#include <string.h>
#include "matfile.h"

double floats[5] = {0.0, 1.0, 3.14, 2.72, 5.5};

int main(void) {
	FILE *fp = fopen("test.mat", "w");
	if (fp == NULL) {
		perror("fopen");
		return -1;
	}
	
	// Write File Header
	assert(write_header(fp));

	// Setup Array Dimensions
	int32_t dims[2] = {1, 5};
	mData_t dim_data;
	dim_data.data = (void *)&dims;
	dim_data.tag.type = miINT32;
	dim_data.tag.size = 8;

	// Array Flags
	mArrayFlags_t flags;
	memset(&flags, 0, sizeof(flags));
	flags.global = 0;
	flags.complex = 0;
	flags.logical = 0;
	flags.class = mxDOUBLE_CLASS;

	mData_t flags_data;
	flags_data.tag.type = miUINT32;
	flags_data.tag.size = 8;
	flags_data.data = (void *)&flags;

	// Name
	mSmallData_t name;
	name.tag.type = miINT8;
	name.tag.size = 1;
	name.data = 'A';

	mData_t data;
	data.tag.type = miDOUBLE;
	data.tag.size = sizeof(floats);
	data.data = (void *)floats;

	mTag_t array;
	array.type = miMATRIX;
	array.size = 96;

	fwrite((void *)&array, 1, sizeof(array), fp);
	write_data(fp, flags_data);
	write_data(fp, dim_data);
	write_small_data(fp, name);
	write_data(fp, data);

	fclose(fp);
	return 0;
}