libmatrix
Macros
matrix.h File Reference

A generic sparse matrix implementation. More...

#include <string.h>
#include "guard.h"
#include "oxidation.h"
#include "utils.h"

Go to the source code of this file.

Macros

#define PRINT(...)
 
#define MATRIX_STRUCT(_name, _data_type, _index_type)
 
#define MATRIX_STRUCT_DECLARE(_name, _data_type, _index_type)
 
#define MATRIX_METHOD(_name, _data_type, _index_type)
 
#define MATRIX_METHOD_DECLARE(_name, _data_type, _index_type)
 
#define MATRIX(_name, _data_type, _index_type)
 You can use this macro to create a matrix type and its methods. More...
 
#define DECLARE_MATRIX(_name, _data_type, _index_type)
 You can use this macro to declare a matrix type and its methods in a header file. More...
 

Detailed Description

A generic sparse matrix implementation.

Author
Jacob Lin (hi@ja.nosp@m.cobl.nosp@m.in.co.nosp@m.ol)
Date
2022-10-08

Macro Definition Documentation

◆ DECLARE_MATRIX

#define DECLARE_MATRIX (   _name,
  _data_type,
  _index_type 
)
Value:
MATRIX_STRUCT(_name, _data_type, _index_type) \
MATRIX_SAFE_GUARD_DECLARE(_name, _data_type, _index_type) \
MATRIX_METHOD_DECLARE(_name, _data_type, _index_type)

You can use this macro to declare a matrix type and its methods in a header file.

◆ MATRIX

#define MATRIX (   _name,
  _data_type,
  _index_type 
)
Value:
MATRIX_SAFE_GUARD(_name, _data_type, _index_type) \
MATRIX_METHOD(_name, _data_type, _index_type)

You can use this macro to create a matrix type and its methods.

◆ MATRIX_STRUCT

#define MATRIX_STRUCT (   _name,
  _data_type,
  _index_type 
)
Value:
typedef struct _name##Element { \
_index_type row; \
_index_type col; \
_data_type val; \
} _name##Element; \
\
typedef struct _name##Found { \
bool exists; \
_index_type index; \
} _name##Found; \
\
typedef struct _name { \
u8 size; \
_name##Element* data; \
char* name; \
} _name;

◆ MATRIX_STRUCT_DECLARE

#define MATRIX_STRUCT_DECLARE (   _name,
  _data_type,
  _index_type 
)
Value:
typedef struct _name##Element _name##Element; \
typedef struct _name##Found _name##Found; \
typedef struct _name _name;