@@ -66,17 +66,18 @@ extern "C" {
6666 typedef int32_t llama_token;
6767 typedef int32_t llama_seq_id;
6868
69- enum GGML_PACKED llama_vocab_type {
69+ GGML_PACKED_ENUM llama_vocab_type {
7070 LLAMA_VOCAB_TYPE_NONE = 0 , // For models without vocab
7171 LLAMA_VOCAB_TYPE_SPM = 1 , // LLaMA tokenizer based on byte-level BPE with byte fallback
7272 LLAMA_VOCAB_TYPE_BPE = 2 , // GPT-2 tokenizer based on byte-level BPE
7373 LLAMA_VOCAB_TYPE_WPM = 3 , // BERT tokenizer based on WordPiece
7474 LLAMA_VOCAB_TYPE_UGM = 4 , // T5 tokenizer based on Unigram
7575 LLAMA_VOCAB_TYPE_RWKV = 5 , // RWKV tokenizer based on greedy tokenization
7676 };
77+ GGML_PACKED_ENUM_END
7778
7879 // pre-tokenization types
79- enum GGML_PACKED llama_vocab_pre_type {
80+ GGML_PACKED_ENUM llama_vocab_pre_type {
8081 LLAMA_VOCAB_PRE_TYPE_DEFAULT = 0 ,
8182 LLAMA_VOCAB_PRE_TYPE_LLAMA3 = 1 ,
8283 LLAMA_VOCAB_PRE_TYPE_DEEPSEEK_LLM = 2 ,
@@ -112,16 +113,18 @@ extern "C" {
112113 LLAMA_VOCAB_PRE_TYPE_BAILINGMOE = 32 ,
113114 LLAMA_VOCAB_PRE_TYPE_LLAMA4 = 33 ,
114115 };
116+ GGML_PACKED_ENUM_END
115117
116- enum GGML_PACKED llama_rope_type {
118+ GGML_PACKED_ENUM llama_rope_type {
117119 LLAMA_ROPE_TYPE_NONE = -1 ,
118120 LLAMA_ROPE_TYPE_NORM = 0 ,
119121 LLAMA_ROPE_TYPE_NEOX = GGML_ROPE_TYPE_NEOX,
120122 LLAMA_ROPE_TYPE_MROPE = GGML_ROPE_TYPE_MROPE,
121123 LLAMA_ROPE_TYPE_VISION = GGML_ROPE_TYPE_VISION,
122124 };
125+ GGML_PACKED_ENUM_END
123126
124- enum GGML_PACKED llama_token_type { // TODO: remove, required until per token attributes are available from GGUF file
127+ GGML_PACKED_ENUM llama_token_type { // TODO: remove, required until per token attributes are available from GGUF file
125128 LLAMA_TOKEN_TYPE_UNDEFINED = 0 ,
126129 LLAMA_TOKEN_TYPE_NORMAL = 1 ,
127130 LLAMA_TOKEN_TYPE_UNKNOWN = 2 ,
@@ -130,8 +133,9 @@ extern "C" {
130133 LLAMA_TOKEN_TYPE_UNUSED = 5 ,
131134 LLAMA_TOKEN_TYPE_BYTE = 6 ,
132135 };
136+ GGML_PACKED_ENUM_END
133137
134- enum GGML_PACKED llama_token_attr {
138+ GGML_PACKED_ENUM llama_token_attr {
135139 LLAMA_TOKEN_ATTR_UNDEFINED = 0 ,
136140 LLAMA_TOKEN_ATTR_UNKNOWN = 1 << 0 ,
137141 LLAMA_TOKEN_ATTR_UNUSED = 1 << 1 ,
@@ -144,9 +148,10 @@ extern "C" {
144148 LLAMA_TOKEN_ATTR_RSTRIP = 1 << 8 ,
145149 LLAMA_TOKEN_ATTR_SINGLE_WORD = 1 << 9 ,
146150 };
151+ GGML_PACKED_ENUM_END
147152
148153 // model file types
149- enum GGML_PACKED llama_ftype {
154+ GGML_PACKED_ENUM llama_ftype {
150155 LLAMA_FTYPE_ALL_F32 = 0 ,
151156 LLAMA_FTYPE_MOSTLY_F16 = 1 , // except 1d tensors
152157 LLAMA_FTYPE_MOSTLY_Q4_0 = 2 , // except 1d tensors
@@ -188,36 +193,41 @@ extern "C" {
188193
189194 LLAMA_FTYPE_GUESSED = 1024 , // not specified in the model file
190195 };
196+ GGML_PACKED_ENUM_END
191197
192- enum GGML_PACKED llama_rope_scaling_type {
198+ GGML_PACKED_ENUM llama_rope_scaling_type {
193199 LLAMA_ROPE_SCALING_TYPE_UNSPECIFIED = -1 ,
194200 LLAMA_ROPE_SCALING_TYPE_NONE = 0 ,
195201 LLAMA_ROPE_SCALING_TYPE_LINEAR = 1 ,
196202 LLAMA_ROPE_SCALING_TYPE_YARN = 2 ,
197203 LLAMA_ROPE_SCALING_TYPE_LONGROPE = 3 ,
198204 LLAMA_ROPE_SCALING_TYPE_MAX_VALUE = LLAMA_ROPE_SCALING_TYPE_LONGROPE,
199205 };
206+ GGML_PACKED_ENUM_END
200207
201- enum GGML_PACKED llama_pooling_type {
208+ GGML_PACKED_ENUM llama_pooling_type {
202209 LLAMA_POOLING_TYPE_UNSPECIFIED = -1 ,
203210 LLAMA_POOLING_TYPE_NONE = 0 ,
204211 LLAMA_POOLING_TYPE_MEAN = 1 ,
205212 LLAMA_POOLING_TYPE_CLS = 2 ,
206213 LLAMA_POOLING_TYPE_LAST = 3 ,
207214 LLAMA_POOLING_TYPE_RANK = 4 , // used by reranking models to attach the classification head to the graph
208215 };
216+ GGML_PACKED_ENUM_END
209217
210- enum GGML_PACKED llama_attention_type {
218+ GGML_PACKED_ENUM llama_attention_type {
211219 LLAMA_ATTENTION_TYPE_UNSPECIFIED = -1 ,
212220 LLAMA_ATTENTION_TYPE_CAUSAL = 0 ,
213221 LLAMA_ATTENTION_TYPE_NON_CAUSAL = 1 ,
214222 };
223+ GGML_PACKED_ENUM_END
215224
216- enum GGML_PACKED llama_split_mode {
225+ GGML_PACKED_ENUM llama_split_mode {
217226 LLAMA_SPLIT_MODE_NONE = 0 , // single GPU
218227 LLAMA_SPLIT_MODE_LAYER = 1 , // split layers and KV across GPUs
219228 LLAMA_SPLIT_MODE_ROW = 2 , // split layers and KV across GPUs, use tensor parallelism if supported
220229 };
230+ GGML_PACKED_ENUM_END
221231
222232 // TODO: simplify (https://github.com/ggml-org/llama.cpp/pull/9294#pullrequestreview-2286561979)
223233 typedef struct llama_token_data {
@@ -261,15 +271,16 @@ extern "C" {
261271 int8_t * logits; // TODO: rename this to "output"
262272 } llama_batch;
263273
264- enum GGML_PACKED llama_model_kv_override_type {
274+ GGML_PACKED_ENUM llama_model_kv_override_type {
265275 LLAMA_KV_OVERRIDE_TYPE_INT,
266276 LLAMA_KV_OVERRIDE_TYPE_FLOAT,
267277 LLAMA_KV_OVERRIDE_TYPE_BOOL,
268278 LLAMA_KV_OVERRIDE_TYPE_STR,
269279 };
280+ GGML_PACKED_ENUM_END
270281
271282 struct llama_model_kv_override {
272- enum llama_model_kv_override_type tag;
283+ GGML_PACKED_ENUM llama_model_kv_override_type tag;
273284
274285 char key[128 ];
275286
0 commit comments