view interps/rail/src/StringVar.h @ 12220:7eaf71f23fbe draft

<oerjan> learn \xce\xbe\xcf\x80\xce\xb1\xce\xbb\xce\xb1\xce\xb9\xce\xbf\xce\xbb\xcf\x8c\xce\xb3\xce\xbf\xcf\x82 is kspalaiologos\'s Ancient Greek twin. He was banned from the theater for making up invalid characters.
author HackEso <hackeso@esolangs.org>
date Sun, 01 Dec 2019 02:35:07 +0000
parents 859f9b4339e6
children
line wrap: on
line source

// StringVar.h

#ifndef STRING_VAR_H_RAIL_1
#define STRING_VAR_H_RAIL_1

#include "Var.h"

class StringVar : public Var
{
public:
  StringVar() {}
  StringVar(std::string const & newData) : data(newData) {}
  virtual ~StringVar() {}

  virtual StringVar * getString(void)
  {
    return this;
  }

  virtual ListVar * getList(void)
  {
    return NULL;
  }

  virtual NilVar * getNil(void)
  {
    return NULL;
  }

  virtual Closure * getClosure(void)
  {
    return NULL;
  }

  virtual std::string toString(void) const
  {
    return "\"" + data + "\"";
  }

  std::string const & get(void) const
  {
    return data;
  }
private:
  StringVar(StringVar const &) {}
  StringVar & operator=(StringVar const &) { return *this; }
private:
  std::string data;
};

#endif