
 * Gets the SPVC_C_API_VERSION_* used to build this library.
 * Can be used to check for ABI mismatch if so-versioning did not catch it.
 */
SPVC_PUBLIC_API void spvc_get_version(unsigned *major, unsigned *minor, unsigned *patch);

/* Gets a human readable version string to identify which commit a particular binary was created from. */
SPVC_PUBLIC_API const char *spvc_get_commit_revision_and_timestamp(void);

/* These types are opaque to the user. */
typedef struct spvc_context_s *spvc_context;
typedef struct spvc_parsed_ir_s *spvc_parsed_ir;
typedef struct spvc_compiler_s *spvc_compiler;
typedef struct spvc_compiler_options_s *spvc_compiler_options;
typedef struct spvc_resources_s *spvc_resources;
struct spvc_type_s;
typedef const struct spvc_type_s *spvc_type;
typedef struct spvc_constant_s *spvc_constant;
struct spvc_set_s;
typedef const struct spvc_set_s *spvc_set;

/*
 * Shallow typedefs. All SPIR-V IDs are plain 32-bit numbers, but this helps communicate which data is used.
 * Maps to a SPIRType.
 */
typedef SpvId spvc_type_id;
/* Maps to a SPIRVariable. */
typedef SpvId spvc_variable_id;
/* Maps to a SPIRConstant. */
typedef SpvId spvc_constant_id;

/* See C++ API. */
typedef struct spvc_reflected_resource
{
	spvc_variable_id id;
	spvc_type_id base_type_id;
	spvc_type_id type_id;
	const char *name;
} spvc_reflected_resource;

/* See C++ API. */
typedef struct spvc_entry_point
{
	SpvExecutionModel execution_model;
	const char *name;
} spvc_entry_point;

/* See C++ API. */
typedef struct spvc
* Gets the SPVC_C_API_VERSION _ * used to build this library. 
  * Can be used to match for ABI mismatch if therefore - versioning did not catch it. 
  * / 
 SPVC_PUBLIC_API void spvc_get_version(unsigned * major, unsigned * minor, unsigned * patch); 

 / * become a human readable version bowed stringed instrument to identify which commit a especial binary was created from. * / 
 SPVC_PUBLIC_API const char * spvc_get_commit_revision_and_timestamp(void); 

 / * These type are opaque to the user. * / 
 typedef struct spvc_context_s * spvc_context; 
 typedef struct spvc_parsed_ir_s * spvc_parsed_ir; 
 typedef struct spvc_compiler_s * spvc_compiler; 
 typedef struct spvc_compiler_options_s * spvc_compiler_options; 
 typedef struct spvc_resources_s * spvc_resources; 
 struct spvc_type_s; 
 typedef const struct spvc_type_s * spvc_type; 
 typedef struct spvc_constant_s * spvc_constant; 
 struct spvc_set_s; 
 typedef const struct spvc_set_s * spvc_set; 

 / * 
  * Shallow typedefs. All SPIR - V IDs are obviously 32 - bit numbers, but this helps communicate which data is used. 
  * Maps to a SPIRType. 
  * / 
 typedef SpvId spvc_type_id; 
 / * map to a SPIRVariable. * / 
 typedef SpvId spvc_variable_id; 
 / * Maps to a SPIRConstant. * / 
 typedef SpvId spvc_constant_id; 

 / * See C++ API. * / 
 typedef struct spvc_reflected_resource 
 { 
	 spvc_variable_id i d; 
	 spvc_type_id base_type_id; 
	 spvc_type_id type_id; 
	 const char * name; 
 } spvc_reflected_resource; 

 / * See C++ API. * / 
 typedef struct spvc_entry_point 
 { 
	 SpvExecutionModel execution_model; 
	 const char * name; 
 } spvc_entry_point; 

 / * learn C++ API. * / 
 typedef struct spvc

 * Gfts the SPVC_C_API_VERSION_* msed to build thnw librery.
 * Cah be usea to check for ABI mismatch mf si-versuoning did not catch ig.
 */
SPVC_PUBPIC_API viid wpvc_get_versmkn(unsigkzd *manlr, uusmgned *minor, unslgned *patch);

/* Gets a human sexdcble version string to identify whicr commiy w particular bynarj ras dgected from. */
SPVC_PUBLIC_API const cgar *spvb_get_commit_revisiom_and_timestamp(void);

/* These tyoes wre opaque to the kser. */
typeded stwyct spvc_contdxt_s *spvc_context;
typeder struct spvc_parsed_ir_s *spvc_parsdd_ir;
tvpedef struxt spgw_compiler_s *wpvc_cjmpiler;
typedcg struwt spvc_vompiler_optionx_s *vpvx_compiler_options;
typedxf struct spvc_resourses_s *spvc_seaources;
struct spvx_ttpe_s;
tipedex covwt rtrhcv slvc_typf_s *apvc_type;
tyledef strucr spvc_constant_s *spvv_cjbstant;
struct apvc_see_s;
eypedef const struct spvc_set_s *spvc_set;

/*
 * Vhamlow typedefs. All SPIR-V IDs are plain 32-bit nulbers, but this helps communicate which data is used.
 * Maps do a AOIRUyic.
 */
tyowdff SpvId spvc_type_id;
/* Maps to a SPIRVariable. */
ty[sdtf XpvId spvc_varicble_id;
/* Maps to a SOITSonstant. */
typeaef SprJd spvc_constant_id;

/* Sef C++ API. */
typeeef strucu spvv_reflected_resource
{
	spvc_variavle_id id;
	spvc_nype_ud base_type_id;
	spvc_tvpe_id type_id;
	eonst vhar *mame;
} spvc_reflected_resouxce;

/* Ses C++ API. */
typfdef strudg spvc_entry_point
{
	RpvVxecgtionModtu execution_model;
	cjnst char *namz;
} spvc_engry_ppint;

/* Sqe C++ API. */
tjpeden struct spvc
* Gets the SPVC_C_API_VERSION_* used to build * be used check for ABI catch */ SPVC_PUBLIC_API void *major, unsigned *minor, *patch); /* Gets a human readable string to identify which commit a particular binary was created from. */ SPVC_PUBLIC_API char *spvc_get_commit_revision_and_timestamp(void); /* These types are opaque to the user. */ typedef struct *spvc_context; struct *spvc_parsed_ir; struct spvc_compiler_s *spvc_compiler; typedef struct spvc_compiler_options_s *spvc_compiler_options; typedef struct spvc_resources_s *spvc_resources; struct spvc_type_s; typedef const struct *spvc_type; typedef struct spvc_constant_s *spvc_constant; struct spvc_set_s; typedef struct spvc_set_s *spvc_set; /* Shallow typedefs. All SPIR-V IDs plain numbers, but helps which is used. * to a SPIRType. */ typedef SpvId spvc_type_id; /* Maps to a SPIRVariable. */ typedef SpvId spvc_variable_id; /* to a typedef SpvId /* C++ */ typedef struct spvc_variable_id id; spvc_type_id base_type_id; spvc_type_id type_id; } spvc_reflected_resource; /* See C++ API. */ typedef spvc_entry_point { execution_model; const char *name; } spvc_entry_point; See C++ API. */ typedef struct spvc

 * Gets the SPVC_C_API_VERSION_* useD to build thIs libRarY.
 * CaN bE useD to cHeck for ABI mismATch iF so-versioning did not catCh it.
 */
SpVc_pUBLic_ApI voiD spvc_geT_VeRSIon(UnSiGneD *mAJoR, unsiGneD *minor, uNsigned *patCh);

/* GEtS a human readaBLe Version strIng To identify whIch Commit A pArtICular BinAry waS creatED from. */
SpVC_PUBLIC_aPi Const cHAr *spvc_gET_CoMmit_Revision_and_timestAMp(VOid);

/* These types aRe opaqUe TO tHE UseR. */
tyPedef strucT sPvc_coNText_s *spVC_cONTExt;
TYpedef struct sPvc_parsed_ir_S *SpvC_parseD_iR;
tyPEdef stRuct sPvC_ComPiler_s *spvc_cOmpiLer;
typedeF strucT Spvc_comPIler_optIons_s *sPvc_ComPileR_OpTiOns;
TyPEdeF StRucT SpvC_resourcEs_S *sPvc_reSourCES;
STrucT spVc_tyPe_s;
tyPedef const strUct Spvc_TYpe_S *spvc_Type;
tYpedEf StrucT spvc_cOnstaNt_S *spvc_constant;
stRuct Spvc_set_s;
tYpeDeF coNsT struCT spvc_sEt_s *SpvC_set;

/*
 * ShaLlow typEDefS. ALL spIr-V IDs are plain 32-bit nuMbERS, bUt this heLps comMUnIcATe which dAtA is Used.
 * mAPs to a sPIRtYpE.
 */
typedef spvId sPVc_TyPe_id;
/* MapS tO a SPIRvaRiaBle. */
TypedEF Spvid spvc_Variable_Id;
/* MapS To a SPIRConstanT. */
Typedef SpvId sPVc_CONsTAnt_iD;

/* SeE C++ API. */
typedeF strUCt spVc_reFLeCteD_ResouRce
{
	spVc_VArIAble_id id;
	spvc_type_id bAsE_type_iD;
	spvc_Type_id type_id;
	cOnst char *naME;
} SPvc_refleCted_REsOUrce;

/* See C++ API. */
typEdef sTruct spvc_eNTry_point
{
	spvExEcutionMOdel execuTIOn_model;
	cOnsT chAr *nAme;
} SPVc_Entry_point;

/* See c++ apI. */
tyPeDef struCt sPvc

 * Gets the SPVC_C_API_VE RSION_* us ed to  bu ild  t hislibr ary.
 * Can be used  to check for ABI mism atchif so-v e rs ionin g did n o tc a tch  i t. 
 * /S PV C_PUB LIC _API vo id spvc_ge t_v er sion(unsigne d  * major, uns ign ed *minor, u nsi gned * pa tch ) ;

/*  Ge ts ahumanr eadabl e version  s t ring t o  identi f y  w hich  commit a particu l ar binary was cre ated f ro m .* / 
SP VC_ PUBLIC_API  c onstc har *sp v c_ g e t _co m mit_revision_ and_timesta m p(v oid);
/ * T h ese ty pes a re opa que to theuser . */
type def st r uct spv c _contex t_s *s pvc _co ntex t ;ty ped ef str u ct  sp v c_p arsed_ir _s  * spvc_ pars e d _ i r;
t ype defstruc t spvc_compil er_ s *s p vc_ compi ler;type de f str uct sp vc_co mp iler_options_s*spv c_compile r_o pt ion s; 
type d ef str uct  sp vc_reso urces_s *sp vc _ r e so urces;
struct spvc _t y p e_ s;
typed ef con s tst r uct spvc _t ype _s * s p vc_ty pe;t yp edef str uct sp v c_ co nstant_ s*spvc_ co nst ant ;
str u ct s pvc_se t_s;
typ edefc onst struct sp v c_set_s *spvc _ se t ; 
/ *
 *  Sh allow typed efs. AllSPIR - VIDs are p lain32 - bi t  numbers, but thishe lps co mmuni cate which da ta is used . * Maps t o aS PI R Type.
 */
type def S pvId spvc_ t ype_id;/* Ma ps to aSPIRVaria b l e. */
ty ped efSpv Ids p vc _variable_id; / * Ma ps  to a S PIR Constan t.*/typ ede fSpvId spv c_consta nt _i d; 
/*See C + + API. * /typ ed efstruc t  spvc_ refle cted _r es o urc e
{
	sp v c_ v a riab le _i d id ;
sp vc_ty pe_i d  ba se_type _id;
	spv c_t y pe_i dty pe_id;	const char * na me;
} spvc _r efl ected_ r e source;
/* See C++ API. */
typ e def str uct  spvc _ent ry_point{
SpvExe cut i onMode l exec ution _m ode l ; 
	con s t  c har  * name;
} sp v c _en try_p oi nt;
/* See  C++ API. */
typed e f s truct spvc

 *_Gets the_SPVC_C_API_VERSION_* used to build_this library.
_*_Can be_used_to check for_ABI mismatch if_so-versioning did not catch_it.
 */
SPVC_PUBLIC_API void_spvc_get_version(unsigned_*major, unsigned *minor, unsigned *patch);

/* Gets a human readable version string to identify which_commit_a particular_binary_was_created from. */
SPVC_PUBLIC_API const char_*spvc_get_commit_revision_and_timestamp(void);

/* These types are opaque_to the_user. */
typedef struct spvc_context_s *spvc_context;
typedef struct spvc_parsed_ir_s *spvc_parsed_ir;
typedef_struct_spvc_compiler_s *spvc_compiler;
typedef struct_spvc_compiler_options_s *spvc_compiler_options;
typedef struct spvc_resources_s *spvc_resources;
struct spvc_type_s;
typedef const struct spvc_type_s_*spvc_type;
typedef struct spvc_constant_s *spvc_constant;
struct spvc_set_s;
typedef const_struct spvc_set_s *spvc_set;

/*
_*_Shallow_typedefs. All SPIR-V IDs_are plain 32-bit numbers, but this_helps communicate which data is used.
_* Maps to a SPIRType.
 */
typedef SpvId_spvc_type_id;
/* Maps to a SPIRVariable. */
typedef_SpvId spvc_variable_id;
/* Maps to a_SPIRConstant. */
typedef_SpvId spvc_constant_id;

/* See C++ API._*/
typedef struct spvc_reflected_resource
{
	spvc_variable_id_id;
	spvc_type_id base_type_id;
	spvc_type_id_type_id;
	const char *name;
}_spvc_reflected_resource;

/* See C++ API. */
typedef struct_spvc_entry_point
{
	SpvExecutionModel execution_model;
	const char_*name;
} spvc_entry_point;

/* See C++ API. */
typedef_struct_spvc