99 lines
2.5 KiB
C++
Executable File
99 lines
2.5 KiB
C++
Executable File
/*
|
|
* Strings.h - string family for MAXScript
|
|
*
|
|
* Copyright © John Wainwright 1996
|
|
*
|
|
*/
|
|
|
|
#ifndef _H_STRING
|
|
#define _H_STRING
|
|
|
|
#include "streams.h"
|
|
|
|
visible_class (String)
|
|
|
|
// Collectable::flags3 - bit 0 set if string is a literal
|
|
class String : public Value
|
|
{
|
|
TCHAR* string;
|
|
|
|
public:
|
|
ScripterExport String(TCHAR *init_string);
|
|
~String();
|
|
|
|
classof_methods (String, Value);
|
|
# define is_string(o) ((o)->tag == class_tag(String))
|
|
void collect() { delete this; }
|
|
ScripterExport void sprin1(CharStream* s);
|
|
|
|
Value* append(TCHAR* str);
|
|
Value* append(Value* str_val) { return append(str_val->to_string()); }
|
|
|
|
#include "defimpfn.h"
|
|
# include "strngpro.h"
|
|
|
|
def_property( count );
|
|
|
|
TCHAR* to_string();
|
|
TSTR to_filename();
|
|
void to_fpvalue(FPValue& v) { v.s = to_string(); v.type = TYPE_STRING; }
|
|
|
|
// scene I/O
|
|
IOResult Save(ISave* isave);
|
|
static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
|
|
|
|
friend class StringStream;
|
|
};
|
|
|
|
applyable_class (StringStream)
|
|
|
|
class StringStream : public CharStream
|
|
{
|
|
public:
|
|
TCHAR* content_string; /* the content string */
|
|
TCHAR* cursor; /* current read/write cursor */
|
|
size_t buf_len; /* allocated buffer length */
|
|
int ungetchar_count;
|
|
Parser* reader;
|
|
|
|
ScripterExport StringStream();
|
|
ScripterExport ~StringStream();
|
|
ScripterExport StringStream(TCHAR* init_string);
|
|
ScripterExport StringStream(int ilen);
|
|
ScripterExport StringStream(Value* init_string_value);
|
|
ScripterExport void init(TCHAR* init_string);
|
|
|
|
classof_methods (StringStream, CharStream);
|
|
void collect() { delete this; }
|
|
ScripterExport void sprin1(CharStream* s);
|
|
|
|
#include "defimpfn.h"
|
|
# include "streampr.h"
|
|
use_generic( coerce, "coerce");
|
|
use_generic( copy, "copy");
|
|
|
|
ScripterExport TCHAR get_char();
|
|
ScripterExport void unget_char(TCHAR c);
|
|
ScripterExport TCHAR peek_char();
|
|
ScripterExport int pos();
|
|
void seek(int pos);
|
|
ScripterExport int at_eos();
|
|
ScripterExport void rewind();
|
|
ScripterExport void set_size(int size);
|
|
ScripterExport void flush_to_eol();
|
|
ScripterExport void flush_to_eobuf();
|
|
ScripterExport void undo_lookahead();
|
|
|
|
ScripterExport TCHAR* puts(TCHAR* str);
|
|
ScripterExport TCHAR putch(TCHAR c);
|
|
ScripterExport int printf(const TCHAR *format, ...);
|
|
|
|
TCHAR* to_string();
|
|
void to_fpvalue(FPValue& v) { v.s = to_string(); v.type = TYPE_STRING; }
|
|
};
|
|
|
|
ScripterExport TSTR expand_file_name(TCHAR* file_name);
|
|
ScripterExport TSTR expand_file_dir(TCHAR* dir);
|
|
|
|
#endif
|