avp/3dc/win95/STRING.HPP
Rebellion Developments 218ca90543 Import Aliens vs Predator - Gold (Build 116)
Source code release, imported from:
https://www.gamefront.com/games/aliens-vs-predator-3/file/avp-gold-complete-source-code

All text files were converted to Unix format.
2019-08-19 05:45:17 +02:00

183 lines
No EOL
4.7 KiB
C++

#ifndef _included_string_hpp_
#define _included_string_hpp_
#ifdef __WATCOMC__
#include <string.hpp>
#else
#ifndef __cplusplus
#error "string.hpp requires C++ compilation"
#endif
#include <stddef.h>
//const size_t NPOS = (size_t) -1;
#define _BIGSIZET ((size_t)-1)
class String
{
public:
String();
String(char const *, size_t = _BIGSIZET);
String(String const &, size_t = 0, size_t = _BIGSIZET);
String(char, size_t = 1);
~String();
inline operator char const * () const;
char const * c_str() const;
//operator char () const;
String & operator = (String const &);
String & operator = (char const *);
String & operator += (String const &);
String & operator += (char const *);
inline String operator () (size_t, size_t) const;
inline char & operator () (size_t);
inline char const & operator () (size_t) const;
inline char & operator [] (size_t);
inline char const & operator [] (size_t) const;
friend int operator == (String const &, String const &);
friend int operator == (String const &, char const *);
friend int operator == (char const *, String const &);
friend int operator == (String const &, char);
friend int operator == (char, String const &);
friend int operator != (String const &, String const &);
friend int operator != (String const &, char const *);
friend int operator != (char const *, String const &);
friend int operator != (String const &, char);
friend int operator != (char, String const &);
friend int operator <= (String const &, String const &);
friend int operator <= (String const &, char const *);
friend int operator <= (char const *, String const &);
friend int operator <= (String const &, char);
friend int operator <= (char, String const &);
friend int operator >= (String const &, String const &);
friend int operator >= (String const &, char const *);
friend int operator >= (char const *, String const &);
friend int operator >= (String const &, char);
friend int operator >= (char, String const &);
friend int operator < (String const &, String const &);
friend int operator < (String const &, char const *);
friend int operator < (char const *, String const &);
friend int operator < (String const &, char);
friend int operator < (char, String const &);
friend int operator > (String const &, String const &);
friend int operator > (String const &, char const *);
friend int operator > (char const *, String const &);
friend int operator > (String const &, char);
friend int operator > (char, String const &);
friend inline String operator + (String const &, String const &);
friend inline String operator + (String const &, char const *);
friend inline String operator + (char const *, String const &);
friend inline String operator + (String const &, char);
friend inline String operator + (char, String const &);
inline size_t length() const;
inline char const & get_at(size_t) const;
void put_at(size_t, char);
int match(String const &) const;
int match(char const *) const;
int index(String const &, size_t = 0) const;
int index(char const *, size_t = 0 ) const;
String upper() const;
String lower() const;
inline int operator ! () const;
inline int valid() const;
friend inline int valid(String const &);
private:
String(String const &, String const &);
String(char const *, String const &);
String(String const &, char const *);
String(char, String const &);
String(String const &, char);
char * rep;
size_t len;
char * cstring;
};
inline String::operator char const * () const
{
return c_str();
}
inline String String::operator () (size_t start, size_t leng) const
{
return String(*this,start,leng);
}
inline char & String::operator () (size_t pos)
{
return operator [] (pos);
}
inline char const & String::operator () (size_t pos) const
{
return operator [] (pos);
}
inline char & String::operator [] (size_t pos)
{
return rep[pos];
}
inline char const & String::operator [] (size_t pos) const
{
return rep[pos];
}
#define STRING_CONSTRCAT(arg1,arg2) \
inline String operator + (arg1 a1,arg2 a2) \
{ \
return String(a1,a2); \
}
STRING_CONSTRCAT(String const &, String const &)
STRING_CONSTRCAT(char const *, String const &)
STRING_CONSTRCAT(String const &, char const *)
STRING_CONSTRCAT(char , String const &)
STRING_CONSTRCAT(String const &, char)
inline size_t String::length() const
{
return len;
}
inline char const & String::get_at(size_t pos) const
{
return operator [] (pos);
}
inline int String::operator ! () const
{
return !valid();
}
inline int String::valid() const
{
return 1;
}
inline int valid(String const & str)
{
return str.valid();
}
#endif
#endif