SOL9 2.0 Class: COMTypeConverter

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * COMTypeConverter.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9
// 2009/05/10

#pragma once

#include <sol/Object.h>


namespace SOL 
{

class COMTypeConverter :public Object {

public:
    /**
     * Constructor
     */
    COMTypeConverter()
    {
    }

public:
    /**
     * Convery a variant(_variant_t) to a string(_bstr_t)
     * by using ChangeType(VT_BSTR) method of _variant_t
     */

    bool toString(__in _variant_t& variant,
                __out _bstr_t& string,
                __in_opt const _bstr_t& NULLExpr="")
    {
        bool rc = false;

        string = "";

        if (variant.vt == VT_NULL) {
                string = NULLExpr;
        } else {
            try {
                variant.ChangeType(VT_BSTR);
                string = (_bstr_t)variant;
                rc = true;
            } catch (...) {
                //printf("Maybe converion failed\n"); Ignore this exception
            }
        }
        return rc;
    }

public:
    /**
     * Convery a string(_bstr_t) to a _variant_t datetime
     * by using ChangeType(VT_DATE) method of _variant_t
     */

    bool toDateTime(__in _bstr_t& string,
                __out _variant_t& datetime)
    {
        bool rc = false;
        _variant_t variant = string; //VT_BSTR

        try {
            variant.ChangeType(VT_DATE);
            datetime = variant;
            rc = true;
        } catch (...) {
            //printf("Maybe converion failed\n"); Ignore this exception
        }
        return rc;
    }

public:
    /**
     * Convery a st(SYSTEMTIME) to a _variant_t datetime
     * by using Win32 API SystemTimeToVariantTime().
     */

    bool toDateTime(__in SYSTEMTIME& st, 
        __out _variant_t& datetime)
    {
        bool rc = false;
        VARIANT var;
        VariantInit(&var);
        var.vt = VT_DATE;
        if (SystemTimeToVariantTime(&st, &var.date)) {
            datetime = var;
            rc = true;    
        }
        return rc;
    }    
};


}

Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.