#ifndef SPVM_DESCRIPTOR_H
#define SPVM_DESCRIPTOR_H

#include "spvm_typedecl.h"

enum {
  SPVM_DESCRIPTOR_C_ID_CALLBACK_T,
  SPVM_DESCRIPTOR_C_ID_MULNUM_T,
  SPVM_DESCRIPTOR_C_ID_POINTER_T,
  SPVM_DESCRIPTOR_C_ID_NATIVE,
  SPVM_DESCRIPTOR_C_ID_PRECOMPILE,
  SPVM_DESCRIPTOR_C_ID_PUBLIC,
  SPVM_DESCRIPTOR_C_ID_PRIVATE,
  SPVM_DESCRIPTOR_C_ID_RW,
  SPVM_DESCRIPTOR_C_ID_RO,
  SPVM_DESCRIPTOR_C_ID_WO,
  SPVM_DESCRIPTOR_C_ID_STATIC,
};

// Field information
struct spvm_descriptor {
  int32_t id;
};

SPVM_DESCRIPTOR* SPVM_DESCRIPTOR_new(SPVM_COMPILER* compiler);
const char* const* SPVM_DESCRIPTOR_C_ID_NAMES(void);

#endif
