summaryrefslogtreecommitdiff
path: root/example/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'example/main.c')
-rw-r--r--example/main.c77
1 files changed, 66 insertions, 11 deletions
diff --git a/example/main.c b/example/main.c
index bda4c89..08d1894 100644
--- a/example/main.c
+++ b/example/main.c
@@ -3,7 +3,15 @@
#include <stdio.h>
#include <string.h>
-double floats[5] = {0.0, 1.0, 3.14, 2.72, 5.5};
+int nums[2][4] = {
+ {1, 2, 3, 4},
+ {2, 4, 6, 8},
+};
+
+double doubles[5] = {3.14, 2.72, 3.7, 22. / 7., 7.7};
+
+void write_int_array(FILE *fp);
+void write_double_array(FILE *fp);
int main(void) {
FILE *fp = fopen("test.mat", "w");
@@ -14,14 +22,57 @@ int main(void) {
// Write File Header
assert(write_header(fp));
+ write_int_array(fp);
+ write_double_array(fp);
+
+ fclose(fp);
+ return 0;
+}
+
+void write_int_array(FILE *fp) {
+ // Array Flags
+ mArrayFlags_t flags;
+ memset(&flags, 0, sizeof(flags));
+ flags.global = 0;
+ flags.complex = 0;
+ flags.logical = 0;
+ flags.class = mxINT32_CLASS;
+
+ mData_t flags_data;
+ flags_data.tag.type = miUINT32;
+ flags_data.tag.size = 8;
+ flags_data.data = (void *)&flags;
// Setup Array Dimensions
- int32_t dims[2] = {1, 5};
+ int32_t dims[2] = {4, 2};
mData_t dim_data;
dim_data.data = (void *)&dims;
dim_data.tag.type = miINT32;
dim_data.tag.size = 8;
+ // Name
+ mSmallData_t name;
+ name.tag.type = miINT8;
+ name.tag.size = 1;
+ name.data = 'A';
+
+ mData_t data;
+ data.tag.type = miINT32;
+ data.tag.size = sizeof(nums);
+ data.data = (void *)nums;
+
+ mTag_t array;
+ array.type = miMATRIX;
+ array.size = 80;
+
+ 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);
+}
+
+void write_double_array(FILE *fp) {
// Array Flags
mArrayFlags_t flags;
memset(&flags, 0, sizeof(flags));
@@ -35,16 +86,23 @@ int main(void) {
flags_data.tag.size = 8;
flags_data.data = (void *)&flags;
+ // 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;
+
// Name
- mSmallData_t name;
+ mData_t name;
name.tag.type = miINT8;
- name.tag.size = 1;
- name.data = 'A';
+ name.tag.size = 7;
+ name.data = "doubles";
mData_t data;
data.tag.type = miDOUBLE;
- data.tag.size = sizeof(floats);
- data.data = (void *)floats;
+ data.tag.size = sizeof(doubles);
+ data.data = (void *)doubles;
mTag_t array;
array.type = miMATRIX;
@@ -53,9 +111,6 @@ int main(void) {
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, name);
write_data(fp, data);
-
- fclose(fp);
- return 0;
}