#ifndef COMMON_H
#define COMMON_H

#define IGNORE(x) (void)x;

#define NON 0
#define INT 1
#define STR 2
#define MEM 3
#define FLT 4

#define SP_DEF 0
#define SP_INF 1
#define SP_SNAN 2
#define SP_QNAN 3
#define SP_DENORMAL 4
#define SP_ZERO 5


enum FloatFormat { BBC40, VFP32, VFP64 , FPA32, FPA64 }; // Used internally, never saved to file so can be enum

// Is size (4), type (2), lengthname (4), lengthdata (4)
#define HEADER_FIXED 14
// Make a block if this much free space is at the end of a block
#define MAKE_FREE_SPACE 24

#define os _kernel_swi
#define oserror _kernel_oserror
#define regs _kernel_swi_regs
#define regint int
#define SCOPESTART {
#define SCOPEEND }

#define TASK 0x4B534154

// includes
#include <swis.h>
//#include <kernel.h>
#include <stdio.h>
#include <string.h>
#include <string>
#include <stdlib.h>
//#include <cstdint>
//#include <cstring>
//#include <assert.h>
//#include <stdint.h>
//#include <stdlib.h>
//#include <cstring>
//#include <iostream>
//#include <regex>

#include "module.h"
#include "error.h"
#include "file.h"
#include "fwrite.h"
#include "datawrite.h"
#include "dataread.h"
#include "floatform.h"

/*
template<typename T>
T* zero()
 {
 void* raw = operator new(sizeof(T));
 std::memset(raw,0,sizeof(T));
 return new(raw) T();
 }
*/

#endif