#pragma once
#define EIGEN_USE_THREADS

#include <node.h>
#include <nan.h>

#include "device.h"

#include "unsupported/Eigen/CXX11/Tensor"

using v8::Local;
using v8::Value;
using Nan::FunctionCallbackInfo;
using Nan::Undefined;

static Local<Value> Arg(const FunctionCallbackInfo<Value>& info, int n) {
  if (n < info.Length())
    return info[n];
  return Undefined();
}

#define STRINGIFY(x) #x

#define TOSTRING(x) STRINGIFY(x)

#define EXPORT_SYMBOL(NAME, SYMBOL) \
  exports->Set(New(NAME).ToLocalChecked(), New<FunctionTemplate>(SYMBOL)->GetFunction());
