- /*
- * Copyright 1995, 1996 Perforce Software. All rights reserved.
- */
- /*
- * VarArray.h - manage a list of void *'s
- *
- * Class Defined:
- *
- * VarArray - list of void *'s
- * VVarArray - VarArray with virtual Compare/Destroy functions
- *
- * Public methods:
- *
- * VarArray::Clear() - zero out count for values
- * VarArray::Count() - return count of elements in array
- * VarArray::ElemTab() - return a pointer to the array
- * VarArray::Get(i) - return a pointer to slot i in the array
- * VarArray::Edit(i) - return a editable pointer to slot i in the array
- * VarArray::Move(i,j) - move element i to j
- * VarArray::Remove(i) - remove element i
- * VarArray::Put(v) - set a new slot to v
- * VarArray::WillGrow(i) - returns size of new vararray if it
- * would have to grow in the next i rows.
- *
- * VVarArray::Diff() - subtract/compare/add to VarArrays
- * OpDiff - substract two VarArrays and drop duplicates
- * OpIntersect - compare VarArrays to find matches
- * OpMerge - add two VarArrays, eliminating duplicates
- *
- * VVarArray::Sort() - Qsort of the VarArray in place
- *
- * Private methods:
- *
- * VarArray::New() - return a pointer to a new slot in the array
- */
- class VarArray {
- public:
- VarArray();
- VarArray( int max );
- ~VarArray();
- void Clear() { numElems = 0; }
- int Count() const { return numElems; }
- void ** ElemTab() { return elems; }
- void * Get( int i ) const { return i<numElems ? elems[i]:0; }
- void * Edit( int i ) { return i<numElems ? elems[i]:0; }
- void Move( int i, int j ) { elems[j] = elems[i]; }
- void Remove( int i );
- void * Put( void *v ) { return *New() = v; }
- void SetCount( int i ) { numElems = i; }
- int WillGrow( int interval );
- void Exchange( int i, int j )
- {
- void *t = elems[j];
- elems[j] = elems[i];
- elems[i] = t;
- }
- void Swap( int i, int j )
- { Exchange( i, j ); }
- void Swap( int i, int j, int count )
- { while( count-- > 0 ) Exchange( i++, j++ ); }
- private:
- friend class VVarArray;
- void ** New();
- int maxElems;
- int numElems;
- void **elems;
- } ;
- class VVarArray : public VarArray {
- public:
- enum Op { OpDiff, OpIntersect, OpMerge };
- virtual ~VVarArray() {};
- virtual int Compare( const void *, const void * ) const = 0;
- virtual void Destroy( void * ) const = 0;
- void Diff( Op op, VarArray &that );
- void Sort() { Sort( 0, Count() ); }
- void Uniq();
- private:
- void Sort( int l, int u );
- int Med3( int i, int j, int k ) const;
- int Compare( int i, int j ) const
- { return Compare( Get( i ), Get( j ) ); }
- } ;
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 7893 | Johan Nilsson | OFFLINE CHANGELIST 10 - SUBMITTED ON 2011/03/23 11:18:27 Upgrade project files to VS2010... and switching to msbuild for the entire project. Retargeted everything to .NET4 Client Profile for the time being, due to VS2010 C++ limitations (can't target anything other than 4.0 without complicating the setup too much). Shouldn't be too hard to retarget later if push comes to shove. Added VS2010 P4API stuff directly inside this project also to make things easier to get up and running for the moment. Removed old static P4API libraries. ____________________________________________________________ OFFLINE CHANGELIST 9 - SUBMITTED ON 2011/03/22 07:35:31 Converted to VS2010 « |
14 years ago |