#include <stdlib.h>
#include <stdio.h>
void c_writeComplex64(double* ptr, double real, double imag, size_t offset) {
*(double *)((void *)ptr + 16 * offset) = real;
*(double *)((void *)ptr + 16 * offset + 8) = imag;
}
double c_getComplex64Real(double* ptr, size_t offset) {
return *(double *)((void *)ptr + 16 * offset);
}
double c_getComplex64Imag(double* ptr, size_t offset) {
return *(double *)((void *)ptr + 16 * offset + 8);
}
void c_writeComplex32(float* ptr, float real, float imag, size_t offset) {
*(float *)((void *)ptr + 8 * offset) = real;
*(float *)((void *)ptr + 8 * offset + 4) = imag;
}
float c_getComplex32Real(float* ptr, size_t offset) {
return *(float *)((void *)ptr + 8 * offset);
}
float c_getComplex32Imag(float* ptr, size_t offset) {
return *(float *)((void *)ptr + 8 * offset + 4);
}
float c_readFloat32(float* ptr, size_t offset) {
return *(float *)((void *)ptr + 4 * offset);
}
double c_readFloat64(double* ptr, size_t offset) {
return *(double *)((void *)ptr + 8 * offset);
}
unsigned char c_readUInt8(unsigned char* ptr, size_t offset) {
return *(unsigned char *)((void *)ptr + offset);
}
unsigned short c_readUInt16(unsigned short* ptr, size_t offset) {
return *(unsigned short *)((void *)ptr + 2 * offset);
}
unsigned int c_readUInt32(unsigned int* ptr, size_t offset) {
return *(unsigned int *)((void *)ptr + 4 * offset);
}
unsigned long c_readUInt64(unsigned long* ptr, size_t offset) {
return *(unsigned long *)((void *)ptr + 8 * offset);
}
signed char c_readInt8(signed char* ptr, size_t offset) {
return *(signed char *)((void *)ptr + offset);
}
signed short c_readInt16(signed short* ptr, size_t offset) {
return *(signed short *)((void *)ptr + 2 * offset);
}
signed int c_readInt32(signed int* ptr, size_t offset) {
return *(signed int *)((void *)ptr + 4 * offset);
}
signed long c_readInt64(signed long* ptr, size_t offset) {
return *(signed long *)((void *)ptr + 8 * offset);
}
void c_writeFloat32(float* ptr, float val, size_t offset) {
*(float *)((void *)ptr + 4 * offset) = val;
}
void c_writeFloat64(double* ptr, double val, size_t offset) {
*(double *)((void *)ptr + 8 * offset) = val;
}
void c_writeUInt8(unsigned char* ptr, unsigned char val, size_t offset) {
*(unsigned char *)((void *)ptr + offset) = val;
}
void c_writeUInt16(unsigned short* ptr, unsigned short val, size_t offset) {
*(unsigned short *)((void *)ptr + 2 * offset) = val;
}
void c_writeUInt32(unsigned int* ptr, unsigned int val, size_t offset) {
*(unsigned int *)((void *)ptr + 4 * offset) = val;
}
void c_writeUInt64(unsigned long* ptr, unsigned long val, size_t offset) {
*(unsigned long *)((void *)ptr + 8 * offset) = val;
}
void c_writeInt8(signed char* ptr, signed char val, size_t offset) {
*(signed char *)((void *)ptr + offset) = val;
}
void c_writeInt16(signed short* ptr, signed short val, size_t offset) {
*(signed short *)((void *)ptr + 2 * offset) = val;
}
void c_writeInt32(signed int* ptr, signed int val, size_t offset) {
*(signed int *)((void *)ptr + 4 * offset) = val;
}
void c_writeInt64(signed long* ptr, signed long val, size_t offset) {
*(signed long *)((void *)ptr + 8 * offset) = val;
}