//----------------------------------------------------------------------------------------------------------------------
//
//  capCollectionElementArray                                                                    
//
//  This file is part of libpm library                                                           
//
//  Copyright (C) 2010, ..., 2010 Pierre Molinaro.
//
//  e-mail : pierre@pcmolinaro.name
//
//  This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
//  Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option)
//  any later version.
//
//  This program is distributed in the hope it will be useful, but WITHOUT ANY WARRANTY; without even the implied
//  warranty of MERCHANDIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
//  more details.
//
//----------------------------------------------------------------------------------------------------------------------

#pragma once

//----------------------------------------------------------------------------------------------------------------------

#include "utilities/C_SharedObject.h"

//----------------------------------------------------------------------------------------------------------------------

class GALGAS_object ;
class GALGAS_objectlist ;
class C_Compiler ;

//----------------------------------------------------------------------------------------------------------------------

class cObjectArray {
//--- Default constructor
  public: cObjectArray (const GALGAS_objectlist & inObjectList,
                         C_Compiler * inCompiler
                         COMMA_LOCATION_ARGS) ;

//--- Virtual destructor
  public: virtual ~ cObjectArray (void) ;

//--- No copy
  private: cObjectArray (const cObjectArray & inSource) ;
  private: cObjectArray & operator = (const cObjectArray & inSource) ;

//--- Object count
  public: inline uint32_t count (void) const { return mCount ; }

//--- Object at index
  public: GALGAS_object objectAtIndex (const uint32_t inIndex COMMA_LOCATION_ARGS) const ;

//--- Attributes
  private: GALGAS_object * mArray ;
  private: uint32_t mCount ;
} ;

//----------------------------------------------------------------------------------------------------------------------