// Modified by Yen-Ju Chen <yjchenx@hotmail.com>
/*
**  Channel.h
**
**  Copyright (c) 2002
**
**  Author: Ludovic Marcotte <ludovic@Sophos.ca>
**
**  This program is free software; you can redistribute it and/or modify
**  it under 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.
**
**  This program 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 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifndef _Toolbox_Ploplet_H_Channel
#define _Toolbox_Ploplet_H_Channel

#include "Element.h"

@class GSXMLNode;
@class Plop;
@class PlopletView;
@class NSData;
@class NSMutableArray;
@class NSString;
@class NSURL;

@interface Channel : Element
{
  NSMutableArray *allElements;
  Plop *plop;
  PlopletView *plopletView;
  int totalBytes;
}

- (id) initWithContentsOfFile: (NSString *) file;
- (id) initWithURL: (NSURL *) url;

// access / mutation methods
- (void) addElement: (Element *) theElement;
- (void) removeElement: (Element *) theElement;
- (void) removeAllElements;
- (int) count;
- (int) itemCount;
- (Element *) elementAtIndex: (int) theIndex;

- (Plop *) plop;
- (void) setPlop: (Plop *) thePlop;

- (PlopletView *) plopletView;
- (void) setPlopletView: (PlopletView *) theView;

- (void) processData: (NSData *) data;

@end

// Private methods
@interface Channel (Private)

- (void) _parseNodeInformationUsingElement: (Element *) theElement
                                      node: (id) theNode;

@end

#endif /* _Toolbox_Ploplet_H_Channel */
