338b8dc301
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14574 a95241bf-73f2-0310-859d-f6bbb57e9c96
74 lines
1.9 KiB
C++
74 lines
1.9 KiB
C++
#ifndef ZOIDBERG_STRING_LIST_H
|
|
#define ZOIDBERG_STRING_LIST_H
|
|
/* StringList - a string list implementation
|
|
**
|
|
** Copyright 2001 Dr. Zoidberg Enterprises. All rights reserved.
|
|
*/
|
|
|
|
|
|
#include <Flattenable.h>
|
|
|
|
class BList;
|
|
|
|
class BStringList : public BFlattenable {
|
|
public:
|
|
BStringList();
|
|
BStringList(const BStringList&);
|
|
|
|
~BStringList(void);
|
|
|
|
BStringList &operator=(const BStringList &from);
|
|
|
|
/* Flattenable stuff */
|
|
virtual bool IsFixedSize() const; //--false for obvious reasons
|
|
virtual type_code TypeCode() const;
|
|
virtual ssize_t FlattenedSize() const;
|
|
virtual status_t Flatten(void *buffer, ssize_t size) const;
|
|
virtual bool AllowsTypeCode(type_code code) const;
|
|
virtual status_t Unflatten(type_code c, const void *buf, ssize_t size);
|
|
|
|
/* Adding and removing items. */
|
|
void AddItem(const char *item);
|
|
void AddList(const BStringList *newItems);
|
|
bool RemoveItem(const char *item);
|
|
void MakeEmpty();
|
|
|
|
/* Retrieving items. */
|
|
const char *ItemAt(int32) const;
|
|
int32 IndexOf(const char *) const;
|
|
|
|
/* Querying the list. */
|
|
bool HasItem(const char *item) const;
|
|
int32 CountItems() const;
|
|
bool IsEmpty() const;
|
|
|
|
/* Determining differences between lists */
|
|
void NotHere(BStringList &other_list, BStringList *results);
|
|
void NotThere(BStringList &other_list, BStringList *results);
|
|
|
|
/* Useful list logic operators */
|
|
BStringList &operator += (const char *item);
|
|
BStringList &operator += (BStringList &list);
|
|
|
|
BStringList &operator -= (const char *item);
|
|
BStringList &operator -= (BStringList &list);
|
|
|
|
BStringList operator | (BStringList &list);
|
|
BStringList &operator |= (BStringList &list);
|
|
|
|
BStringList operator ^ (BStringList &list);
|
|
BStringList &operator ^= (BStringList &list);
|
|
|
|
bool operator == (BStringList &list);
|
|
const char *operator [] (int32 index);
|
|
|
|
private:
|
|
void *_buckets[256];
|
|
int32 _items;
|
|
BList *_indexed;
|
|
|
|
uint32 _reserved[5];
|
|
};
|
|
|
|
#endif /* ZOIDBERG_STRING_LIST_H */
|