Main Page   Class Hierarchy   Compound List   Header Files   Compound Members  

ddggroup.h

This is the verbatim text of the ddggroup.h include file.
/*
    Copyright (C) 1997, 1998, 1999, 2000 by Alex Pfaffe
        (Digital Dawn Graphics Inc)
  
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.
  
    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.
  
    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free
    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef _ddgGroup_Class_
#define _ddgGroup_Class_

#include "struct/ddgnode.h"

#define LIST_BLOCK_SIZE 10
#define LIST_NOT_MEMBER -1
class WEXP ddgGroup : public ddgNode
{
    typedef ddgNode super;
private:
    static const unsigned long  _block;
    unsigned long                       _buffer;
    unsigned long                               _size;
    // A list of entities
    ddgNode                           **_nodes;
public:
    ddgGroup( );
    virtual     ~ddgGroup( void );
    ddgNode*     add( ddgNode* n );
    bool         remove( ddgNode* n, bool k = false);
    ddgNode*     index( unsigned long n ) const  { return ( n>=0 && n <_size) ? _nodes[n] : 0; }
    long                 which( ddgNode *n ) const;
    long                 size( void ) const     { return _size; }
    bool init (ddgContext *ctx);
    bool draw( ddgContext *c );
};

class ddgIterator
{
    ddgGroup *  _list;
    long        _index;
public:
        ddgIterator( void )  : _list(0) , _index(0) {}
        ddgIterator( ddgGroup *l )   { _list = l; _index = 0; }
    void         initFirst( ddgGroup * l ) { _list = l; _index = 0; }
    void         initLast ( ddgGroup * l ) { _list = l; _index = _list->size()-1; }
    ddgNode*     operator*( void ) const { return ( _list && (_index < _list->size()))  ? _list->index(_index) : 0; }
    ddgIterator&         operator++( void ); 
    ddgIterator&         operator++( int );  
    ddgIterator&         operator--( void ); 
    ddgIterator&         operator--( int );  
};

#endif

Generated at Sun Sep 17 19:27:54 2000 for Digital Dawn Graphics Toolkit by doxygen 0.49-991205 written by Dimitri van Heesch, © 1997-1999