summaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
Diffstat (limited to 'example')
-rw-r--r--example/Makefile18
-rw-r--r--example/example.matbin0 -> 192 bytes
-rw-r--r--example/libMatfile-test.m4
-rw-r--r--example/main.c61
4 files changed, 83 insertions, 0 deletions
diff --git a/example/Makefile b/example/Makefile
new file mode 100644
index 0000000..6284df3
--- /dev/null
+++ b/example/Makefile
@@ -0,0 +1,18 @@
+#
+# Copyright (c) 2026 Jacob McDonnell
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+PROG = main
+SRCS = main.c
+CFLAGS = -Wall \
+ -Werror \
+ -Wextra \
+ -Wpedantic \
+ -I../include
+ -std=c17
+LDFLAGS = -L../src \
+ -lMatfile
+
+include ../mk/mk/mcd.prog.mk
+
diff --git a/example/example.mat b/example/example.mat
new file mode 100644
index 0000000..28494a0
--- /dev/null
+++ b/example/example.mat
Binary files differ
diff --git a/example/libMatfile-test.m b/example/libMatfile-test.m
new file mode 100644
index 0000000..51870db
--- /dev/null
+++ b/example/libMatfile-test.m
@@ -0,0 +1,4 @@
+load "test.mat"
+disp(A);
+disp(doubles);
+
diff --git a/example/main.c b/example/main.c
new file mode 100644
index 0000000..bda4c89
--- /dev/null
+++ b/example/main.c
@@ -0,0 +1,61 @@
+#include <assert.h>
+#include <matfile.h>
+#include <stdio.h>
+#include <string.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;
+}