// slbcci.cpp - Utility functions
//
// (c) Copyright Schlumberger Technology Corp., unpublished work, created
// 1999. This computer program includes Confidential, Proprietary
// Information and is a Trade Secret of Schlumberger Technology Corp. All
// use, disclosure, and/or reproduction is prohibited unless authorized
// in writing.  All Rights Reserved.
////////////////////////////////////////////////////////////////////////////
#include "NoWarning.h"

#include "slbCci.h"


void cci::DateStructToDateArray(Date *dStruct, BYTE *bArray)
{
    bArray[0] = dStruct->dwYear / 64;
    bArray[1] = ((dStruct->dwYear % 64) << 2 ) + dStruct->bMonth / 4;
    bArray[2] = ((dStruct->bMonth % 4) << 6 ) + dStruct->bDay;

}


void cci::DateArrayToDateStruct(BYTE *bArray, Date *dStruct)
{
    dStruct->dwYear = bArray[0] * 64 + (bArray[1] >> 2);
    dStruct->bMonth = (bArray[1] & 0x03) * 4 + (bArray[2] >> 6);
    dStruct->bDay   = (bArray[2] & 0x3F);
}

void cci::SetBit(BYTE *Buf, unsigned int i)
{
    BYTE Mask = 1 << (i % 8);
    Buf[i/8] |= Mask;
    return;
}

void cci::ResetBit(BYTE *Buf, unsigned int i)
{
    BYTE Mask = 1 << (i % 8);
    Buf[i/8] &= ~Mask;
    return;
}

bool cci::BitSet(BYTE *Buf, unsigned int i)
{
    BYTE Mask = 1 << (i % 8);
    return (Buf[i/8] & Mask) ? true : false;
}