| 
 | 1 | +#include <stdio.h>  | 
 | 2 | +#include <assert.h>  | 
 | 3 | + | 
 | 4 | +#define MTMD_TEST  | 
 | 5 | +#include "mtmd.h"  | 
 | 6 | + | 
 | 7 | +int main(void) {  | 
 | 8 | +    printf("\n\nTesting libmtmd C API...\n");  | 
 | 9 | +    printf("--------\n\n");  | 
 | 10 | + | 
 | 11 | +    struct mtmd_context_params params = mtmd_context_params_default();  | 
 | 12 | +    printf("Default image marker: %s\n", params.image_marker);  | 
 | 13 | + | 
 | 14 | +    mtmd_input_chunks * chunks = mtmd_test_create_input_chunks();  | 
 | 15 | + | 
 | 16 | +    if (!chunks) {  | 
 | 17 | +        fprintf(stderr, "Failed to create input chunks\n");  | 
 | 18 | +        return 1;  | 
 | 19 | +    }  | 
 | 20 | + | 
 | 21 | +    size_t n_chunks = mtmd_input_chunks_size(chunks);  | 
 | 22 | +    printf("Number of chunks: %zu\n", n_chunks);  | 
 | 23 | +    assert(n_chunks > 0);  | 
 | 24 | + | 
 | 25 | +    for (size_t i = 0; i < n_chunks; i++) {  | 
 | 26 | +        mtmd_input_chunk * chunk = mtmd_input_chunks_get(chunks, i);  | 
 | 27 | +        assert(chunk != NULL);  | 
 | 28 | +        enum mtmd_input_chunk_type type = mtmd_input_chunk_get_type(chunk);  | 
 | 29 | +        printf("Chunk %zu type: %d\n", i, type);  | 
 | 30 | + | 
 | 31 | +        if (type == MTMD_INPUT_CHUNK_TYPE_TEXT) {  | 
 | 32 | +            size_t n_tokens;  | 
 | 33 | +            const llama_token * tokens = mtmd_input_chunk_get_tokens_text(chunk, &n_tokens);  | 
 | 34 | +            printf("    Text chunk with %zu tokens\n", n_tokens);  | 
 | 35 | +            assert(tokens != NULL);  | 
 | 36 | +            assert(n_tokens > 0);  | 
 | 37 | +            for (size_t j = 0; j < n_tokens; j++) {  | 
 | 38 | +                assert(tokens[j] >= 0);  | 
 | 39 | +                printf("    > Token %zu: %d\n", j, tokens[j]);  | 
 | 40 | +            }  | 
 | 41 | + | 
 | 42 | +        } else if (type == MTMD_INPUT_CHUNK_TYPE_IMAGE) {  | 
 | 43 | +            const mtmd_image_tokens * image_tokens = mtmd_input_chunk_get_tokens_image(chunk);  | 
 | 44 | +            size_t n_tokens = mtmd_image_tokens_get_n_tokens(image_tokens);  | 
 | 45 | +            size_t nx = mtmd_image_tokens_get_nx(image_tokens);  | 
 | 46 | +            size_t ny = mtmd_image_tokens_get_ny(image_tokens);  | 
 | 47 | +            const char * id = mtmd_image_tokens_get_id(image_tokens);  | 
 | 48 | +            assert(n_tokens > 0);  | 
 | 49 | +            assert(nx > 0);  | 
 | 50 | +            assert(ny > 0);  | 
 | 51 | +            assert(id != NULL);  | 
 | 52 | +            printf("    Image chunk with %zu tokens\n", n_tokens);  | 
 | 53 | +            printf("    Image size: %zu x %zu\n", nx, ny);  | 
 | 54 | +            printf("    Image ID: %s\n", id);  | 
 | 55 | +        }  | 
 | 56 | +    }  | 
 | 57 | + | 
 | 58 | +    printf("\n\nDONE: test libmtmd C API...\n");  | 
 | 59 | + | 
 | 60 | +    return 0;  | 
 | 61 | +}  | 
0 commit comments