#include "variables.h"

#ifndef CELL_1D
#define CELL_1D

typedef struct {
  ConservVars vars;
  double x; // coordinate
  double convergence;
} Cell1D;

// output possibilities
int sprintf_Cell1D (char* str, Cell1D cell);

// Cell1D operator overloading
const ConservVars operator+ (Cell1D c1, Cell1D c2);
const ConservVars operator- (Cell1D c1, Cell1D c2);
const ConservVars operator* (Cell1D c1, Cell1D c2);
const ConservVars operator/ (Cell1D c1, Cell1D c2);

// Cell1D-ConservVars operator overloading
const ConservVars operator+ (Cell1D cell, ConservVars vars);
const ConservVars operator+ (ConservVars vars, Cell1D cell);
const ConservVars operator- (Cell1D cell, ConservVars vars);
const ConservVars operator- (ConservVars vars, Cell1D cell);
const ConservVars operator* (Cell1D cell, ConservVars vars);
const ConservVars operator* (ConservVars vars, Cell1D cell);
const ConservVars operator/ (Cell1D cell, ConservVars vars);
const ConservVars operator/ (ConservVars vars, Cell1D cell);

// Cell1D-double operator overloading
const ConservVars operator+ (Cell1D cell, double num);
const ConservVars operator+ (double num, Cell1D cell);
const ConservVars operator- (Cell1D cell, double num);
const ConservVars operator- (double num, Cell1D cell);
const ConservVars operator* (Cell1D cell, double num);
const ConservVars operator* (double num, Cell1D cell);
const ConservVars operator/ (Cell1D cell, double num);
const ConservVars operator/ (double num, Cell1D cell);
#endif // CELL_1D