Skip to content
TypeSpecificReader

TypeSpecificReader

TypeSpecificReader

Description

Unified I/O operations container

Usage example (Cross-references)

Usage examples (Cross-references)
                // If raw data reading is specified, use raw readers
                const char        *next       = NULL;
                TypeSpecificReader raw_reader = NULL;
                if (fmt_info.flags & FMT_FLAG_RAW) {
                    switch (fmt_info.width) {
                    switch (fmt_info.width) {
                        case 1 : {
                            raw_reader = (TypeSpecificReader)_read_r8;
                            break;
                        }
                        }
                        case 2 : {
                            raw_reader = (TypeSpecificReader)_read_r16;
                            break;
                        }
                        }
                        case 4 : {
                            raw_reader = (TypeSpecificReader)_read_r32;
                            break;
                        }
                        }
                        case 8 : {
                            raw_reader = (TypeSpecificReader)_read_r64;
                            break;
                        }
    typedef struct TypeSpecificIO {
        TypeSpecificWriter writer;
        TypeSpecificReader reader;
        void              *data;
    } TypeSpecificIO;
    #endif
    
    static inline TypeSpecificIO TO_TYPE_SPECIFIC_IO_IMPL(TypeSpecificWriter w, TypeSpecificReader r, void *d) {
        return (TypeSpecificIO) {.writer = w, .reader = r, .data = d};
    }
    
    #define TO_TYPE_SPECIFIC_IO(T, d)                                                                                      \
        TO_TYPE_SPECIFIC_IO_IMPL((TypeSpecificWriter)_write_##T, (TypeSpecificReader)_read_##T, (d))
    
    #if defined(_MSC_VER) || defined(__MSC_VER)
Last updated on