/** \file
 *
 *  Contains the DecimationLogWriter class implementation.
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 *
 */

#include "DecimationLogWriter.h"

#include "utils/AuvMath.h"


const char* const DecimationLogWriter::DECIMATION_TYPE_STRS[] =
{
    "none",
    "all",
    "linearApproximation",
    "mostRecent",
};

const size_t DecimationLogWriter::DECIMATION_TYPE_STRLEN[] =
{
    4,
    3,
    19,
    10,
};

DecimationLogWriter::DecimationType DecimationLogWriter::Str2DecimationType( const char* const typeStr, int len )
{
    if( NULL == typeStr )
    {
        return UNDEFINED_DECIMATION;
    }
    if( len < 0 )
    {
        len = strlen( typeStr );
    }
    for( int i = 0; i < DECIMATION_COUNT; ++i )
    {
        size_t minLen = AuvMath::Min( DECIMATION_TYPE_STRLEN[i], ( size_t )len );
        if( strncasecmp( typeStr, DECIMATION_TYPE_STRS[i], minLen ) == 0 )
        {
            return ( DecimationType )i;
        }
    }
    return UNDEFINED_DECIMATION;
}

const char* DecimationLogWriter::DecimationType2Str( DecimationLogWriter::DecimationType decimationType )
{
    if( decimationType >= 0 && decimationType < DECIMATION_COUNT )
    {
        return DECIMATION_TYPE_STRS[ decimationType];
    }
    return NULL;

}


