mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 06:05:49 -06:00
190 lines
3.6 KiB
C++
190 lines
3.6 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// pgAdmin III - PostgreSQL Tools
|
|
//
|
|
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
|
|
// This software is released under the PostgreSQL Licence
|
|
//
|
|
// gqbArrayCollection.cpp - Implementation of Collection Using Arrays
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "pgAdmin3.h"
|
|
|
|
// wxWindows headers
|
|
#include <wx/wx.h>
|
|
|
|
// App headers
|
|
#include "gqb/gqbArrayCollection.h"
|
|
#include "gqb/gqbObject.h"
|
|
|
|
// Destructor
|
|
gqbArrayCollection::~gqbArrayCollection()
|
|
{
|
|
WX_CLEAR_ARRAY(gqbArray);
|
|
}
|
|
|
|
|
|
// Add item to array
|
|
void gqbArrayCollection::addItem(gqbObject *item)
|
|
{
|
|
gqbArray.Add(item);
|
|
}
|
|
|
|
|
|
// Remove item from array but don't delete it.
|
|
void gqbArrayCollection::removeItem(gqbObject *item)
|
|
{
|
|
gqbArray.Remove(item);
|
|
}
|
|
|
|
|
|
// Create an iterator for the objects inside the array
|
|
gqbIteratorBase *gqbArrayCollection::createIterator()
|
|
{
|
|
return (new gqbArrayIterator(&gqbArray));
|
|
}
|
|
|
|
// Create a Down to iterator for the objects inside the array
|
|
gqbIteratorBase *gqbArrayCollection::createDownIterator()
|
|
{
|
|
return (new gqbArrayDownIterator(&gqbArray));
|
|
}
|
|
|
|
// Return the number of elements inside the array
|
|
int gqbArrayCollection::count()
|
|
{
|
|
return gqbArray.Count();
|
|
}
|
|
|
|
|
|
// Return true if an element pointer is found inside array
|
|
bool gqbArrayCollection::existsObject(gqbObject *item)
|
|
{
|
|
gqbObject *found = NULL;
|
|
int size = gqbArray.GetCount();
|
|
for(int i = 0; i < size; i++)
|
|
{
|
|
if (gqbArray.Item(i) == item)
|
|
{
|
|
found = gqbArray.Item(i);
|
|
break;
|
|
}
|
|
}
|
|
if(found)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
|
|
// Delete all elements inside array
|
|
void gqbArrayCollection::deleteAll()
|
|
{
|
|
WX_CLEAR_ARRAY(gqbArray);
|
|
}
|
|
|
|
|
|
// Removes all elements inside array without deleting
|
|
void gqbArrayCollection::removeAll()
|
|
{
|
|
gqbArray.Empty();
|
|
}
|
|
|
|
// Get Item at certain position at Collection
|
|
gqbObject *gqbArrayCollection::getItemAt(int index)
|
|
{
|
|
if(!gqbArray.IsEmpty())
|
|
return gqbArray.Item(index);
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
|
|
int gqbArrayCollection::getIndex(gqbObject *item)
|
|
{
|
|
return gqbArray.Index(item);
|
|
}
|
|
|
|
|
|
// Insert item into the array before the index
|
|
void gqbArrayCollection:: insertAtIndex(gqbObject *item, int index)
|
|
{
|
|
gqbArray.Insert(item, index);
|
|
}
|
|
|
|
|
|
//
|
|
// gqbArrayIterator - Manages iterator for the array collection concrete class, from first to last element
|
|
//
|
|
|
|
// Constructor
|
|
gqbArrayIterator::gqbArrayIterator(gqbObjsArray *gqbPtrsArray)
|
|
{
|
|
position = 0;
|
|
internalArray = gqbPtrsArray;
|
|
}
|
|
|
|
|
|
// Get next item in the array for the iterator
|
|
gqbObject *gqbArrayIterator::Next()
|
|
{
|
|
gqbObject *obj = internalArray->Item(position);
|
|
position++;
|
|
return obj;
|
|
}
|
|
|
|
|
|
// Return true if the array has more elements to return
|
|
bool gqbArrayIterator::HasNext()
|
|
{
|
|
int size = internalArray->GetCount();
|
|
if( (size > 0) && (position <= (size - 1)) )
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
|
|
void gqbArrayIterator::ResetIterator()
|
|
{
|
|
position = 0;
|
|
}
|
|
|
|
|
|
//
|
|
// gqbArrayDownIterator - Manages iterator for the array collection concrete class from last to first element
|
|
//
|
|
|
|
// Constructor
|
|
gqbArrayDownIterator::gqbArrayDownIterator(gqbObjsArray *gqbPtrsArray)
|
|
{
|
|
internalArray = gqbPtrsArray;
|
|
position = internalArray->GetCount() - 1;
|
|
}
|
|
|
|
|
|
// Get next item in the array for the iterator
|
|
gqbObject *gqbArrayDownIterator::Next()
|
|
{
|
|
gqbObject *obj = internalArray->Item(position);
|
|
position--;
|
|
return obj;
|
|
}
|
|
|
|
|
|
// Return true if the array has more elements to return
|
|
bool gqbArrayDownIterator::HasNext()
|
|
{
|
|
int size = internalArray->GetCount();
|
|
if( (size > 0) && (position <= (size - 1) && position >= 0) )
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
|
|
void gqbArrayDownIterator::ResetIterator()
|
|
{
|
|
position = internalArray->GetCount() - 1;
|
|
}
|