@@ -18297,6 +18297,19 @@ size_t ggml_quantize_chunk(enum ggml_type type, const float * src, void * dst, i
1829718297
1829818298////////////////////////////////////////////////////////////////////////////////
1829918299
18300+ enum gguf_type {
18301+ GGUF_TYPE_UINT8 = 0,
18302+ GGUF_TYPE_INT8 = 1,
18303+ GGUF_TYPE_UINT16 = 2,
18304+ GGUF_TYPE_INT16 = 3,
18305+ GGUF_TYPE_UINT32 = 4,
18306+ GGUF_TYPE_INT32 = 5,
18307+ GGUF_TYPE_FLOAT32 = 6,
18308+ GGUF_TYPE_BOOL = 7,
18309+ GGUF_TYPE_STRING = 8,
18310+ GGUF_TYPE_ARRAY = 9,
18311+ };
18312+
1830018313struct gguf_str {
1830118314 uint32_t n;
1830218315 char * data;
@@ -18670,77 +18683,40 @@ enum gguf_type gguf_get_type(struct gguf_context * ctx, int i) {
1867018683 return ctx->header.kv[i].type;
1867118684}
1867218685
18673- void gguf_get_val(struct gguf_context * ctx, int i, void * val) {
18674- struct gguf_kv * kv = &ctx->header.kv[i];
18675-
18676- switch (kv->type) {
18677- case GGUF_TYPE_UINT8: memcpy(val, &kv->value.uint8, sizeof(uint8_t)); break;
18678- case GGUF_TYPE_INT8: memcpy(val, &kv->value.int8, sizeof(int8_t)); break;
18679- case GGUF_TYPE_UINT16: memcpy(val, &kv->value.uint16, sizeof(uint16_t)); break;
18680- case GGUF_TYPE_INT16: memcpy(val, &kv->value.int16, sizeof(int16_t)); break;
18681- case GGUF_TYPE_UINT32: memcpy(val, &kv->value.uint32, sizeof(uint32_t)); break;
18682- case GGUF_TYPE_INT32: memcpy(val, &kv->value.int32, sizeof(int32_t)); break;
18683- case GGUF_TYPE_FLOAT32: memcpy(val, &kv->value.float32, sizeof(float)); break;
18684- case GGUF_TYPE_BOOL: memcpy(val, &kv->value.bool_, sizeof(bool)); break;
18685- case GGUF_TYPE_STRING: memcpy(val, &kv->value.str.data, sizeof(char *)); break;
18686- default:
18687- GGML_ASSERT("gguf: not implemented");
18688- break;
18689- }
18690- }
18691-
1869218686uint8_t gguf_get_val_u8(struct gguf_context * ctx, int i) {
18693- uint8_t val;
18694- gguf_get_val(ctx, i, &val);
18695- return val;
18687+ return ctx->header.kv[i].value.uint8;
1869618688}
1869718689
1869818690int8_t gguf_get_val_i8(struct gguf_context * ctx, int i) {
18699- int8_t val;
18700- gguf_get_val(ctx, i, &val);
18701- return val;
18691+ return ctx->header.kv[i].value.int8;
1870218692}
1870318693
1870418694uint16_t gguf_get_val_u16(struct gguf_context * ctx, int i) {
18705- uint16_t val;
18706- gguf_get_val(ctx, i, &val);
18707- return val;
18695+ return ctx->header.kv[i].value.uint16;
1870818696}
1870918697
1871018698int16_t gguf_get_val_i16(struct gguf_context * ctx, int i) {
18711- int16_t val;
18712- gguf_get_val(ctx, i, &val);
18713- return val;
18699+ return ctx->header.kv[i].value.int16;
1871418700}
1871518701
1871618702uint32_t gguf_get_val_u32(struct gguf_context * ctx, int i) {
18717- uint32_t val;
18718- gguf_get_val(ctx, i, &val);
18719- return val;
18703+ return ctx->header.kv[i].value.uint32;
1872018704}
1872118705
1872218706int32_t gguf_get_val_i32(struct gguf_context * ctx, int i) {
18723- int32_t val;
18724- gguf_get_val(ctx, i, &val);
18725- return val;
18707+ return ctx->header.kv[i].value.int32;
1872618708}
1872718709
1872818710float gguf_get_val_f32(struct gguf_context * ctx, int i) {
18729- float val;
18730- gguf_get_val(ctx, i, &val);
18731- return val;
18711+ return ctx->header.kv[i].value.float32;
1873218712}
1873318713
1873418714bool gguf_get_val_bool(struct gguf_context * ctx, int i) {
18735- bool val;
18736- gguf_get_val(ctx, i, &val);
18737- return val;
18715+ return ctx->header.kv[i].value.bool_;
1873818716}
1873918717
1874018718const char * gguf_get_val_str (struct gguf_context * ctx, int i) {
18741- char * val;
18742- gguf_get_val(ctx, i, &val);
18743- return val;
18719+ return ctx->header.kv[i].value.str.data;
1874418720}
1874518721
1874618722int gguf_get_n_tensors(struct gguf_context * ctx) {
0 commit comments