/*
**    Name: data_size.c
**
**    Date: Thu Jan 17 12:02:13 2002
**
*/

#include "ODBC.h"
#include "sqlext.h"
#include "sql.h"

int data_size(int type,int size)
    {
    switch (type)
        {
        case SQL_C_DEFAULT:
        case SQL_C_BINARY:
        case SQL_C_CHAR:
        case SQL_C_DATE:
        case SQL_C_TIME:
        case SQL_C_TIMESTAMP:
        case SQL_C_GUID:
        case SQL_C_INTERVAL_DAY:
        case SQL_C_INTERVAL_DAY_TO_HOUR:
        case SQL_C_INTERVAL_DAY_TO_MINUTE:
        case SQL_C_INTERVAL_DAY_TO_SECOND:
        case SQL_C_INTERVAL_HOUR:
        case SQL_C_INTERVAL_HOUR_TO_MINUTE:
        case SQL_C_INTERVAL_HOUR_TO_SECOND:
        case SQL_C_INTERVAL_MINUTE:
        case SQL_C_INTERVAL_MINUTE_TO_SECOND:
        case SQL_C_INTERVAL_MONTH:
        case SQL_C_INTERVAL_SECOND:
        case SQL_C_INTERVAL_YEAR:
        case SQL_C_INTERVAL_YEAR_TO_MONTH:
        case SQL_C_TYPE_DATE:
        case SQL_C_TYPE_TIME:
        case SQL_C_TYPE_TIMESTAMP:
            return size;
            break;

        case SQL_C_DOUBLE:
        case SQL_C_SBIGINT:
        case SQL_C_UBIGINT:
            return 8;
            break;

        case SQL_C_LONG:
        case SQL_C_SLONG:
        case SQL_C_ULONG:
        case SQL_C_FLOAT:
            return 4;

        case SQL_C_BIT:
        case SQL_C_STINYINT:
        case SQL_C_TINYINT:
        case SQL_C_UTINYINT:
            return 1;
            break;

        case SQL_C_SHORT:
        case SQL_C_SSHORT:
        case SQL_C_USHORT:
            return 2;
            break;

        case SQL_C_NUMERIC:
            return sizeof(SQL_NUMERIC_STRUCT);
            break;
        }
    }
