#ifndef DBOX_TEXTPROFILE_H

#define DBOX_TEXTPROFILE_H

#include <string>
#include <iostream.h>

#include <libdbox.h>

class textprofilet
 {
 public:
  virtual bool readfile(const char *filename);
  virtual bool writefile(const char *filename);
  virtual bool readline(std::istream &in);
  virtual bool writeline(std::ostream &out);
 
  virtual const char *get(const char *id) const;
  virtual char *get_ptr(const char *id);
  virtual void get(const char *id, char *dest) const;
  virtual void get(const char *id, std::string &dest) const;
  virtual void set(const char *id, const char *text);
  virtual void set(const char *id, const std::string &text);
  virtual void set(const char *id, unsigned long text);
  virtual void set(const char *id, signed long text);
  virtual void set(const char *id, int text);
  virtual void set(const char *id, bool text);
  
  const char *operator|(const char *id) const;
  
  virtual void clear();
  virtual void initialize();
  textprofilet();
  textprofilet(const textprofilet &textprofile); // copy constructor
  virtual ~textprofilet();

  unsigned size() { return data_elements; }
  
  struct datat
   {
    char id[TEXTLEN], data[TEXTLEN];
   } *data;
    
 protected: 
  unsigned data_space, data_elements;

  virtual const char *do_get(const char *id) const;
  virtual char *do_get_ptr(const char *id);
  virtual void do_set(const char *id, const char *text);
 };

#endif


syntax highlighted by Code2HTML, v. 0.9.1