#pragma once
#include "mex.h"
#include <stdarg.h>
#include <string>

using namespace std;

void mexPrintFormat(int bufferSize, string strTemplate, int first);
void mexPrintFormat(int bufferSize, string strTemplate, int first, int second);
void mexPrintFormat(int bufferSize, string strTemplate, int first, int second, int third);
void mexPrintFormat(int bufferSize, string strTemplate, int first, int second, double third);
void mexPrintFormat(int bufferSize, string strTemplate, int first, double second, double third);

bool validateParamCount(int input, int givenInputs, int output, int givenOutput);
void mexPrintIntArray(int dim, int * arr);
int getFlatIndex(int dim, int* offsets, ...);
int getFlatIndex(int dim, size_t * offsets, ...);
int * mexGetOffsetArray(int dimNum, const size_t * dimSizes);