The Wayback Machine - https://web.archive.org/web/20100409073447/http://www.codeguru.com:80/cpp/com-tech/activex/com/article.php/c2669

    Variant Streaming Code

    • 1
    .

    Overview

    This code provides two global functions, WriteVariantToStream and ReadVariantFromStream, that enable you to read and write a variant to a stream. In addition, there are two other global functions, ReadVariantFromBlob and WriteVariantToBlob, for reading and writing a variant to a BLOB.

    Highlights

    Here are some of the main advantages of these functions:
    • Uses any given IStream to stream the Variant into and out of.
    • Data is streamed in efficient binary form.
    • Stream is versioned for backwards compatibility.
    • Supports arbitrary size and arbitrary dimension safe-arrays.
    • Object streaming is supported if the object in variant supports IPersistStream[Init].
    • All code is in one header file (VariantStream.h) and only two routines are exposed: WriteVariantToStream and ReadVariantFromStream.
    • Comes with supporting test code that tests the header file -- in case code is modified
    • Does not use C++ exception handling.  Test project has EH flag turned..
    • Doesn't use the CRT.
    • Does not use any Direct-To-COM (VC++'s comdef.h, such as _variant_t, _bstr_t, _com_ptr, _com_error)
    • Works in both Unicode and ANSI

    Downloads

    Download source - 37 Kb
    • 1

    IT Offers