/*
    Container.m  Class definition.
    Copyright (C) 1995  David Flater.

    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.
*/

#include "cheezmud.h"

@implementation Container

+ new
{
  self = [super new];
  contents = [OrdCltn new];
  capacity = 5;
  return self;
}

- empty: who
{
  char temp[80];
  sprintf (temp, "%s contains nothing.", capitalize ([self def]));
  [who echo: temp];
  return self;
}

- nonempty: who
{
  char temp[80];
  sprintf (temp, "%s contains:", capitalize ([self def]));
  [who echo: temp];
  return self;
}

- free
{
  /*  Any contents not removed are lost. */
  [contents elementsPerform: @selector(logout)];
  /*  1996-04-15  New libobjects demands that I use dealloc instead */
  /*  of free. */
  /* [contents free]; */
  /* NSDeallocateObject (contents); */
  [contents free];
  return [super free];
}

- add: something
{
  [contents add: something];
  return self;
}

- remove: something
{
  [contents remove: something];
  return self;
}

- (int) capacity
{
  return capacity;
}

- listcontents: who
{
  int i,m;
  if ([contents isEmpty])
    [self empty: who];
  else {
    [self nonempty: who];
    for(i=0,m=[contents size];i<m;i++) {
      id whatever = [contents at:i];
      [who echo: capitalize ([whatever indef])];
    }
  }
  return self;
}

- contents
{
  return contents;
}

- find: (char *) what: (int) number
{
  return generic_find (contents, what, number);
}

@end