Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

375 lines
8.4 KiB
C++

//===========================================================================//
// File: notation.hpp //
// Title: Declaration of NotationFile classes. //
// Project: Munga //
// Author: Ken Olsen //
// Purpose: Provide general purpose access to data stored in a formatted //
// text file. //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 01/06/95 KEO Converted from Tool Architecture I. //
// 02/07/95 KEO Add AppendEntry methods. //
// 02/17/95 KEO Change page and entry lists to make nomenclature. //
// 03/24/95 KEO Add methods to read and write text in memory. //
// 03/31/95 KEO Add methods for lab only mark. //
// 05/23/95 KEO Add getfilename, setpage and appendpage. //
// 11/11/95 KEO Add operation modes and correct small bugs. //
// 04/01/97 GAH Added "DeleteAllPages" method. //
//---------------------------------------------------------------------------//
// Copyright (c) 1994-1995 Virtual World Entertainment, Inc. //
// Copyright (c) 1996-1997 Fasa Interactive Technologies, Inc. //
// All rights reserved worldwide. //
// This unpublished source code is PROPRIETARY and CONFIDENTIAL. //
//===========================================================================//
#pragma once
#include "Stuff.hpp"
#include "NotationFile.hpp"
namespace Stuff {
//##########################################################################
//############## Page ##############################
//##########################################################################
class Page:
public Plug
{
friend class NotationFile;
friend class Note;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Constructor/Destructors
//
protected:
Page(NotationFile *notation_file);
~Page();
NotationFile
*m_notationFile;
public:
NotationFile*
GetNotationFile()
{Check_Object(this); return m_notationFile;}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Page functions
//
public:
void
SetName(const char *pagename)
{Check_Object(this); m_name = pagename; m_name.ToLower();}
const char*
GetName() const
{ Check_Object(this); return m_name; }
void
WriteNotes(MemoryStream *stream);
protected:
MString
m_name;
void
SetDirty()
{Check_Object(this); Check_Object(m_notationFile); m_notationFile->SetDirty();}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Entry access
//
public:
bool
IsEmpty()
{Check_Object(this); return m_notes.IsEmpty();}
bool
DoesNoteExist(const char *entryname)
{Check_Object(this); return FindNote(entryname) != NULL;}
Note*
FindNote(const char *entryname);
Note*
GetNote(unsigned index);
typedef ChainIteratorOf<Note*> NoteIterator;
NoteIterator*
MakeNoteIterator()
{Check_Object(this); return new NoteIterator(&m_notes);}
ChainOf<Note*>*
MakeNoteChain(const char* prefix);
Note*
AddNote(const char* entryname);
Note*
SetNote(const char* entryname);
void
DeleteNote(const char *entryname);
void
DeleteAllNotes();
protected:
ChainOf<Note*>
m_notes;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// string access
//
public:
bool
GetEntry(
const char *entryname,
const char **contents,
bool required=false
);
void
SetEntry(
const char *entryname,
const char *contents
);
void
AppendEntry(
const char *entryname,
const char *contents
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// int access
//
public:
bool
GetEntry(
const char *entryname,
int *value,
bool required=false
);
void
SetEntry(
const char *entryname,
int value
);
void
AppendEntry(
const char *entryname,
int value
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// scalar access
//
public:
bool
GetEntry(
const char *entryname,
Scalar *value,
bool required=false
);
void
SetEntry(
const char *entryname,
Scalar value
);
void
AppendEntry(
const char *entryname,
Scalar value
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// DWORD access
//
public:
bool
GetEntry(
const char *entryname,
DWORD *value,
bool required=false
);
void
SetEntry(
const char *entryname,
DWORD value
);
void
AppendEntry(
const char *entryname,
DWORD value
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// bool access
//
public:
bool
GetEntry(
const char *entryname,
bool *value,
bool required=false
);
void
SetEntry(
const char *entryname,
bool value
);
void
AppendEntry(
const char *entryname,
bool value
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Vector3D access
//
public:
bool
GetEntry(
const char *entryname,
Vector3D *value,
bool required=false
);
void
SetEntry(
const char *entryname,
const Vector3D &value
);
void
AppendEntry(
const char *entryname,
const Vector3D &value
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// YawPitchRoll access
//
public:
bool
GetEntry(
const char *entryname,
YawPitchRoll *value,
bool required=false
);
void
SetEntry(
const char *entryname,
const YawPitchRoll &value
);
void
AppendEntry(
const char *entryname,
const YawPitchRoll &value
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// UnitQuaternion access
//
public:
bool
GetEntry(
const char *entryname,
UnitQuaternion *value,
bool required=false
);
void
SetEntry(
const char *entryname,
const UnitQuaternion &value
);
void
AppendEntry(
const char *entryname,
const UnitQuaternion &value
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Motion3D access
//
public:
bool
GetEntry(
const char *entryname,
Motion3D *value,
bool required=false
);
void
SetEntry(
const char *entryname,
const Motion3D &value
);
void
AppendEntry(
const char *entryname,
const Motion3D &value
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// RGBColor access
//
public:
bool
GetEntry(
const char *entryname,
RGBColor *value,
bool required=false
);
void
SetEntry(
const char *entryname,
const RGBColor &value
);
void
AppendEntry(
const char *entryname,
const RGBColor &value
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// RGBAColor access
//
public:
bool
GetEntry(
const char *entryname,
RGBAColor *value,
bool required=false
);
void
SetEntry(
const char *entryname,
const RGBAColor &value
);
void
AppendEntry(
const char *entryname,
const RGBAColor &value
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// NotationFile access
//
public:
bool
GetEntry(
const char *entryname,
NotationFile *value,
bool required=false
);
void
SetEntry(
const char *entryname,
NotationFile *value
);
void
AppendEntry(
const char *entryname,
NotationFile *value
);
public:
void
TestInstance() const;
};
}