remove a backup file I hadn't meant to commit
This commit is contained in:
		
							parent
							
								
									180bf761e0
								
							
						
					
					
						commit
						2fc9faaee1
					
				| 
						 | 
				
			
			@ -1,484 +0,0 @@
 | 
			
		|||
///
 | 
			
		||||
// The developer of the original code and/or files is Tripwire, Inc.
 | 
			
		||||
// Portions created by Tripwire, Inc. are copyright (C) 2000-2017 Tripwire,
 | 
			
		||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc.  All rights
 | 
			
		||||
// reserved.
 | 
			
		||||
// 
 | 
			
		||||
// This program is free software.  The contents of this file are subject
 | 
			
		||||
// to the terms of the GNU General Public License as published by the
 | 
			
		||||
// Free Software Foundation; either version 2 of the License, or (at your
 | 
			
		||||
// option) any later version.  You may redistribute it and/or modify it
 | 
			
		||||
// only in compliance with the GNU General Public License.
 | 
			
		||||
// 
 | 
			
		||||
// This program is distributed in the hope that it will be useful.
 | 
			
		||||
// However, this program is distributed AS-IS WITHOUT ANY
 | 
			
		||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
 | 
			
		||||
// FOR A PARTICULAR PURPOSE.  Please see the GNU General Public License
 | 
			
		||||
// for more details.
 | 
			
		||||
// 
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program; if not, write to the Free Software
 | 
			
		||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 | 
			
		||||
// USA.
 | 
			
		||||
// 
 | 
			
		||||
// Nothing in the GNU General Public License or any other license to use
 | 
			
		||||
// the code or files shall permit you to use Tripwire's trademarks,
 | 
			
		||||
// service marks, or other intellectual property without Tripwire's
 | 
			
		||||
// prior written consent.
 | 
			
		||||
// 
 | 
			
		||||
// If you have any questions, please contact Tripwire, Inc. at either
 | 
			
		||||
// info@tripwire.org or www.tripwire.org.
 | 
			
		||||
//
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// fcopropvector.cpp
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include "stdfco.h"
 | 
			
		||||
#include "fcopropvector.h"
 | 
			
		||||
#include "core/serializer.h"
 | 
			
		||||
#include "core/debug.h"
 | 
			
		||||
#include "core/errorutil.h"
 | 
			
		||||
 | 
			
		||||
int cFCOPropVector::msBitlength(sizeof (uint32) * 8);
 | 
			
		||||
    //msBitlength is common to all objects of class.
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Constructor -- Sets mSize.  Default = 32.
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
cFCOPropVector::cFCOPropVector(int size) : iSerializable()
 | 
			
		||||
{
 | 
			
		||||
    mSize = 32;
 | 
			
		||||
    mMask = 0;
 | 
			
		||||
    mpBuf = NULL;
 | 
			
		||||
    SetSize(size);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Destructor -- 
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
cFCOPropVector::~cFCOPropVector()
 | 
			
		||||
{
 | 
			
		||||
    if (mpBuf!=NULL)
 | 
			
		||||
        delete mpBuf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Copy Constructor
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
cFCOPropVector::cFCOPropVector(const cFCOPropVector &rhs) : iSerializable()
 | 
			
		||||
{
 | 
			
		||||
    mSize = rhs.mSize;
 | 
			
		||||
    mMask = rhs.mMask;
 | 
			
		||||
    if (rhs.mpBuf != NULL) {
 | 
			
		||||
        mpBuf = new std::vector<uint32>;
 | 
			
		||||
        *mpBuf = *(rhs.mpBuf);
 | 
			
		||||
    }
 | 
			
		||||
    else mpBuf = NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//  Overloaded Operators: ==, !=, = , &, |, &=, |=
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
bool cFCOPropVector::operator==(const cFCOPropVector& rhs) const
 | 
			
		||||
{
 | 
			
		||||
    if (this != &rhs) {
 | 
			
		||||
        if ((mpBuf == NULL) && (rhs.mpBuf==NULL))
 | 
			
		||||
        {
 | 
			
		||||
            printf("  case 1\n"); 
 | 
			
		||||
            return (mMask == rhs.mMask);
 | 
			
		||||
        }
 | 
			
		||||
        else if((mpBuf == NULL) && (rhs.mpBuf!=NULL))
 | 
			
		||||
        {
 | 
			
		||||
	  if (rhs.isExtended()) {
 | 
			
		||||
                printf("  case 2\n"); 
 | 
			
		||||
                return false;
 | 
			
		||||
          }  else {
 | 
			
		||||
                printf("  case 3\n"); 
 | 
			
		||||
                return (mMask == ((*rhs.mpBuf)[0]));
 | 
			
		||||
	  }
 | 
			
		||||
        }
 | 
			
		||||
        else if ((mpBuf != NULL) && (rhs.mpBuf == NULL))
 | 
			
		||||
        {
 | 
			
		||||
	  if ((*this).isExtended()) {
 | 
			
		||||
                printf("  case 4\n"); 
 | 
			
		||||
                return false;
 | 
			
		||||
	  } else {
 | 
			
		||||
	        printf("  case 5\n"); 
 | 
			
		||||
                return (((*mpBuf)[0])==rhs.mMask);
 | 
			
		||||
	  }
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            printf("  case 6\n"); 
 | 
			
		||||
            return (*mpBuf == *(rhs.mpBuf));
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        printf("  case 7\n"); 
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cFCOPropVector::operator!=(const cFCOPropVector& rhs) const
 | 
			
		||||
{
 | 
			
		||||
    return (! (*this == rhs));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
cFCOPropVector& cFCOPropVector::operator=(const cFCOPropVector& rhs)
 | 
			
		||||
{
 | 
			
		||||
    if (this != &rhs)
 | 
			
		||||
    {
 | 
			
		||||
        if ((rhs.mpBuf!=NULL) && (mpBuf!=NULL))
 | 
			
		||||
            *mpBuf= *(rhs.mpBuf);
 | 
			
		||||
        else if ((rhs.mpBuf!=NULL) && (mpBuf==NULL))
 | 
			
		||||
        {
 | 
			
		||||
            mpBuf = new std::vector<uint32>;
 | 
			
		||||
            *mpBuf = *(rhs.mpBuf);
 | 
			
		||||
        }
 | 
			
		||||
        else if((rhs.mpBuf==NULL) && (mpBuf!=NULL))
 | 
			
		||||
        {
 | 
			
		||||
            delete mpBuf;
 | 
			
		||||
            mpBuf = NULL;
 | 
			
		||||
        }
 | 
			
		||||
        mSize = rhs.mSize;
 | 
			
		||||
        mMask = rhs.mMask;
 | 
			
		||||
    }//end if
 | 
			
		||||
    return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cFCOPropVector cFCOPropVector::operator&(const cFCOPropVector& rhs) const
 | 
			
		||||
{
 | 
			
		||||
    cFCOPropVector temp = *this;
 | 
			
		||||
    temp &= rhs;
 | 
			
		||||
    return temp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cFCOPropVector cFCOPropVector::operator|(const cFCOPropVector& rhs) const
 | 
			
		||||
{
 | 
			
		||||
    cFCOPropVector temp = *this;
 | 
			
		||||
    temp |= rhs;
 | 
			
		||||
    return temp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cFCOPropVector cFCOPropVector::operator^(const cFCOPropVector& rhs) const
 | 
			
		||||
{
 | 
			
		||||
    cFCOPropVector temp = *this;
 | 
			
		||||
    temp ^= rhs;
 | 
			
		||||
    return temp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
cFCOPropVector& cFCOPropVector::operator&=(const cFCOPropVector& rhs)
 | 
			
		||||
{
 | 
			
		||||
    // make sure I am big enough
 | 
			
		||||
    if(GetSize() < rhs.GetSize())
 | 
			
		||||
        SetSize(rhs.GetSize());
 | 
			
		||||
    if(mpBuf == 0)
 | 
			
		||||
    {
 | 
			
		||||
        ASSERT(GetSize() <= 32);
 | 
			
		||||
        mMask &= rhs.mMask;
 | 
			
		||||
    }
 | 
			
		||||
    else if (rhs.mpBuf == 0)
 | 
			
		||||
    {
 | 
			
		||||
        ASSERT(rhs.GetSize() <= 32);
 | 
			
		||||
        (*mpBuf)[0] &= rhs.mMask;
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        for(unsigned int i=0; i < rhs.mpBuf->size(); ++i)
 | 
			
		||||
            (*mpBuf)[i] &= (*rhs.mpBuf)[i];
 | 
			
		||||
    }
 | 
			
		||||
    return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cFCOPropVector& cFCOPropVector::operator|=(const cFCOPropVector& rhs)
 | 
			
		||||
{
 | 
			
		||||
    // make sure I am big enough
 | 
			
		||||
    if(GetSize() < rhs.GetSize())
 | 
			
		||||
        SetSize(rhs.GetSize());
 | 
			
		||||
    if(mpBuf == 0)
 | 
			
		||||
    {
 | 
			
		||||
        ASSERT(GetSize() <= 32);
 | 
			
		||||
        mMask |= rhs.mMask;
 | 
			
		||||
    }
 | 
			
		||||
    else if (rhs.mpBuf == 0)
 | 
			
		||||
    {
 | 
			
		||||
        ASSERT(rhs.GetSize() <= 32);
 | 
			
		||||
        (*mpBuf)[0] |= rhs.mMask;
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        for(unsigned int i=0; i < rhs.mpBuf->size(); ++i)
 | 
			
		||||
            (*mpBuf)[i] |= (*rhs.mpBuf)[i];
 | 
			
		||||
    }
 | 
			
		||||
    return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cFCOPropVector& cFCOPropVector::operator^=(const cFCOPropVector& rhs)
 | 
			
		||||
{
 | 
			
		||||
    // make sure I am big enough
 | 
			
		||||
    if(GetSize() < rhs.GetSize())
 | 
			
		||||
        SetSize(rhs.GetSize());
 | 
			
		||||
    if(mpBuf == 0)
 | 
			
		||||
    {
 | 
			
		||||
        ASSERT(GetSize() <= 32);
 | 
			
		||||
        mMask ^= rhs.mMask;
 | 
			
		||||
    }
 | 
			
		||||
    else if (rhs.mpBuf == 0)
 | 
			
		||||
    {
 | 
			
		||||
        ASSERT(rhs.GetSize() <= 32);
 | 
			
		||||
        (*mpBuf)[0] ^= rhs.mMask;
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        for(unsigned int i=0; i < rhs.mpBuf->size(); ++i)
 | 
			
		||||
            (*mpBuf)[i] ^= (*rhs.mpBuf)[i];
 | 
			
		||||
    }
 | 
			
		||||
    return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//END OPERATORS
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// GetSize -- returns the number of items the vector can hold
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
int cFCOPropVector::GetSize(void) const
 | 
			
		||||
{
 | 
			
		||||
    return mSize;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// SetSize -- Sets the maximum NUMBER of items that can be stored 
 | 
			
		||||
// in vector.  **IMPORTANT** : If max is less than current size of mask+buff,
 | 
			
		||||
// the set is truncated and extra information is lost.
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
int cFCOPropVector::SetSize(int max)
 | 
			
		||||
{
 | 
			
		||||
    if ((max <= msBitlength) && (mpBuf == NULL))
 | 
			
		||||
        return mSize = msBitlength;
 | 
			
		||||
    else if ((max <= msBitlength) && (mpBuf != NULL))
 | 
			
		||||
    {
 | 
			
		||||
        return mSize = (*mpBuf).capacity()*msBitlength;
 | 
			
		||||
            //new operation already performed, stick with mpBuf.
 | 
			
		||||
    }
 | 
			
		||||
    else if ((mpBuf == NULL) && (max > msBitlength))
 | 
			
		||||
    {
 | 
			
		||||
        mpBuf = new std::vector<uint32>;
 | 
			
		||||
        (*mpBuf).resize (((max/msBitlength)+1), 0);
 | 
			
		||||
        (*mpBuf)[0] = mMask;
 | 
			
		||||
        return mSize = ((*mpBuf).capacity() * msBitlength);
 | 
			
		||||
    }
 | 
			
		||||
    else    //mpBuf!=NULL && max>msBitlength
 | 
			
		||||
    {
 | 
			
		||||
        if (mpBuf)
 | 
			
		||||
        {
 | 
			
		||||
            (*mpBuf).resize (((max/msBitlength)+1), 0);
 | 
			
		||||
            mSize = ((*mpBuf).capacity() * msBitlength);
 | 
			
		||||
        }
 | 
			
		||||
        return mSize;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// AddItem -- Adds an item to the bitset by 'anding' it on. Behavior is 
 | 
			
		||||
// undefined if i >= GetSize. Returns true if set contains item after change.
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
bool cFCOPropVector::AddItem(int i)
 | 
			
		||||
{
 | 
			
		||||
    ASSERT(i < GetSize());
 | 
			
		||||
 | 
			
		||||
    if (mpBuf == NULL)
 | 
			
		||||
    {
 | 
			
		||||
        ASSERT(mSize <= 32);
 | 
			
		||||
        mMask |= 1<<(i);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        ((*mpBuf)[(i)/msBitlength]) |= 1<<((i) % msBitlength);
 | 
			
		||||
    }
 | 
			
		||||
    return ContainsItem(i);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// AddItemAndGrow -- Like AddItem except that if i >= GetSize, resizes vector. 
 | 
			
		||||
// Returns true if set contains item after change.
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
bool cFCOPropVector::AddItemAndGrow(int i)
 | 
			
		||||
{
 | 
			
		||||
    if(i >= GetSize())
 | 
			
		||||
        SetSize( i );
 | 
			
		||||
 | 
			
		||||
    return AddItem( i );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// RemoveItem -- Removes an item from the vector.  Vector is unchanged if 
 | 
			
		||||
// i >= GetMaxItem.  Returns true if set does not contain item after change.
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
bool cFCOPropVector::RemoveItem(int i)
 | 
			
		||||
{
 | 
			
		||||
    ASSERT(i < GetSize());
 | 
			
		||||
 | 
			
		||||
    if (!ContainsItem(i))
 | 
			
		||||
        return true;
 | 
			
		||||
    if (mpBuf == NULL)
 | 
			
		||||
        mMask ^= 1<<(i);
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        ((*mpBuf)[(i)/msBitlength]) ^= 1<<((i) % msBitlength);
 | 
			
		||||
    }
 | 
			
		||||
    return !ContainsItem(i);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// ContainsItem -- Returns boolean value if bit value is in the vector.  
 | 
			
		||||
// Fails if mMask+mBuf is < i.
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////// 
 | 
			
		||||
bool cFCOPropVector::ContainsItem(int i) const
 | 
			
		||||
{
 | 
			
		||||
    if (i > mSize-1)
 | 
			
		||||
        return false;
 | 
			
		||||
    else if (mpBuf == NULL)
 | 
			
		||||
    {
 | 
			
		||||
        return ((mMask & (1<<(i))) != 0);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        return ((((*mpBuf)[(i)/msBitlength]) & (1<<((i) % msBitlength))) != 0);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////// 
 | 
			
		||||
// Clear -- removes all items from the vector
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////// 
 | 
			
		||||
void cFCOPropVector::Clear(void)
 | 
			
		||||
{
 | 
			
		||||
    mMask = 0;
 | 
			
		||||
    if(mpBuf)
 | 
			
		||||
    {
 | 
			
		||||
        std::fill(mpBuf->begin(), mpBuf->end(), 0);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// isExtended -- Returns true if Vector is USING mpBuf beyond [0].  It
 | 
			
		||||
// is assumed that {mpBuf [i] |i>0} is being used if i has non-zero value. 
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
bool cFCOPropVector::isExtended(void) const
 | 
			
		||||
{
 | 
			
		||||
  if (mpBuf == NULL) {
 | 
			
		||||
    printf("  isExtended: mpBuf is null\n");
 | 
			
		||||
        return false;
 | 
			
		||||
  }else
 | 
			
		||||
    {
 | 
			
		||||
      if ((*mpBuf).size() <= 1) {
 | 
			
		||||
	printf("  mpBuf size is <= 1 (it's %d)\n", (*mpBuf).size());
 | 
			
		||||
            return false;
 | 
			
		||||
      } else
 | 
			
		||||
        {
 | 
			
		||||
            uint32 sum = 0;
 | 
			
		||||
            for (uint32 i =(*mpBuf).size()-1; i >= 2; i--) 
 | 
			
		||||
	      {
 | 
			
		||||
		printf("   pre: sum = %u, i = %u, mpBuf[i] = %u\n", sum, i, (*mpBuf)[i]);
 | 
			
		||||
                sum += ((*mpBuf)[i]);
 | 
			
		||||
	        printf("   post: sum = %u, i = %u, mpBuf[i] = %u\n", sum, i, (*mpBuf)[i]);
 | 
			
		||||
	      }
 | 
			
		||||
	    printf("  mpBuf size is %u and sum = %u\n", (*mpBuf).size(), sum);
 | 
			
		||||
            return (sum != 0);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// TO DO: temp function, will delete after testing... DA
 | 
			
		||||
void cFCOPropVector::check (cDebug& d) const
 | 
			
		||||
{
 | 
			
		||||
    d.TraceDetail("mSize = %i \n", mSize);
 | 
			
		||||
    d.TraceDetail("msBitlength = %i \n", msBitlength);
 | 
			
		||||
    d.TraceDetail("mMask = %u \n", mMask);
 | 
			
		||||
    if (mpBuf!=NULL) {
 | 
			
		||||
        d.TraceDetail("*mpBuf has size %i \n", (*mpBuf).size() );
 | 
			
		||||
            for (unsigned int i = 0; i<(*mpBuf).size(); ++i)
 | 
			
		||||
            d.TraceDetail("mpBuf element %i = %u \n", i, (*mpBuf)[i] );
 | 
			
		||||
    }
 | 
			
		||||
}//end check
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void cFCOPropVector::Read(iSerializer* pSerializer, int32 version)
 | 
			
		||||
{
 | 
			
		||||
    if (version > 0)
 | 
			
		||||
        ThrowAndAssert(eSerializerVersionMismatch(_T("Property Vector Read")));
 | 
			
		||||
 | 
			
		||||
    int32 newSize;
 | 
			
		||||
    pSerializer->ReadInt32(newSize);
 | 
			
		||||
    ASSERT(newSize > 0);
 | 
			
		||||
 | 
			
		||||
    SetSize(newSize);
 | 
			
		||||
 | 
			
		||||
    if (mpBuf == NULL)
 | 
			
		||||
    {
 | 
			
		||||
        int32 mask;
 | 
			
		||||
        pSerializer->ReadInt32(mask);
 | 
			
		||||
        mMask = mask;
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        for (int i=0; i <= mSize / msBitlength; ++i)
 | 
			
		||||
        {
 | 
			
		||||
            int32 mask;
 | 
			
		||||
            pSerializer->ReadInt32(mask);
 | 
			
		||||
            (*mpBuf)[i] = mask;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void cFCOPropVector::Write(iSerializer* pSerializer) const
 | 
			
		||||
{
 | 
			
		||||
    pSerializer->WriteInt32(mSize);
 | 
			
		||||
 | 
			
		||||
    if (mpBuf == NULL)
 | 
			
		||||
    {
 | 
			
		||||
        pSerializer->WriteInt32(mMask);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        for (int i=0; i <= mSize / msBitlength; ++i)
 | 
			
		||||
            pSerializer->WriteInt32((*mpBuf)[i]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// TraceContents -- prints the contents of the vector to debug out
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
void cFCOPropVector::TraceContents(int dl) const
 | 
			
		||||
{
 | 
			
		||||
    if(dl < 0) 
 | 
			
		||||
        dl = cDebug::D_DEBUG;
 | 
			
		||||
 | 
			
		||||
    cDebug d("cFCOPropVector::TraceContents");
 | 
			
		||||
    TOSTRINGSTREAM ostr;
 | 
			
		||||
    for(int i=0; i<GetSize(); i++)
 | 
			
		||||
    {
 | 
			
		||||
        if(ContainsItem(i))
 | 
			
		||||
            ostr << i << _T(", ");
 | 
			
		||||
    }
 | 
			
		||||
    ostr << std::ends;
 | 
			
		||||
    printf("Size = %d Contents = %s\n", GetSize(), ostr.str().c_str());
 | 
			
		||||
    printf("Bitlength = %d  Mask = %d\n", msBitlength, mMask);
 | 
			
		||||
    if (mpBuf != NULL) {
 | 
			
		||||
        printf("mpBuf size = %d\n", (*mpBuf).size());
 | 
			
		||||
        for( unsigned int i = 0; i < (*mpBuf).size(); i++) {
 | 
			
		||||
            printf("mpBuf element %d = %u\n", i, (*mpBuf)[i]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
  //  d.Trace(dl, _T("Size = %d Contents = %s\n"), GetSize(), ostr.str().c_str());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue