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.
977 lines
19 KiB
C++
977 lines
19 KiB
C++
//===========================================================================//
|
|
// File: notation.cpp //
|
|
// Title: Definition 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/07/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/11/95 KEO Remove all instances of strtok from class. //
|
|
// 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 setpage and appendpage and allow setentry(,,null). //
|
|
// 11/11/95 KEO Add operation modes and correct small bugs. //
|
|
// 04/02/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. //
|
|
//===========================================================================//
|
|
|
|
#include "StuffHeaders.hpp"
|
|
|
|
#define MAX_LINE_SIZE 512
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Page::Page(NotationFile *notation_file):
|
|
Plug(DefaultData),
|
|
m_notes(NULL)
|
|
{
|
|
Check_Pointer(this);
|
|
Check_Object(notation_file);
|
|
m_notationFile = notation_file;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Page::~Page()
|
|
{
|
|
Check_Object(this);
|
|
m_notes.DeletePlugs();
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::WriteNotes(MemoryStream *stream)
|
|
{
|
|
Check_Object(this);
|
|
|
|
const char* name = m_name;
|
|
if (name && *name)
|
|
*stream << '[' << name << "]\r\n";
|
|
NoteIterator notes(&m_notes);
|
|
Note *note;
|
|
while ((note = notes.ReadAndNext()) != NULL)
|
|
{
|
|
Check_Object(note);
|
|
note->WriteNotation(stream);
|
|
}
|
|
*stream << "\r\n";
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Note*
|
|
Page::FindNote(const char *entryname)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
NoteIterator notes(&m_notes);
|
|
Note *note;
|
|
while ((note = notes.ReadAndNext()) != NULL)
|
|
{
|
|
Check_Object(note);
|
|
if (!_stricmp(note->m_name, entryname))
|
|
return note;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Note*
|
|
Page::GetNote(unsigned i)
|
|
{
|
|
Check_Object(this);
|
|
|
|
NoteIterator notes(&m_notes);
|
|
return notes.GetNth(i);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
ChainOf<Note*>*
|
|
Page::MakeNoteChain(const char *entryname)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
NoteIterator notes(&m_notes);
|
|
Note *note;
|
|
ChainOf<Note*>* chain = new(g_Heap) ChainOf<Note*>(NULL);
|
|
Check_Object(chain);
|
|
int len = strlen(entryname);
|
|
while ((note = notes.ReadAndNext()) != NULL)
|
|
{
|
|
Check_Object(note);
|
|
if (!_strnicmp(note->GetName(), entryname, len))
|
|
chain->Add(note);
|
|
}
|
|
return chain;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Note*
|
|
Page::AddNote(const char *entryname)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
SetDirty();
|
|
Note *note = new(g_Heap) Note(this);
|
|
Check_Object(note);
|
|
note->SetName(entryname);
|
|
m_notes.Add(note);
|
|
|
|
return note;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Note*
|
|
Page::SetNote(const char *entryname)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
|
|
return note;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::DeleteNote(const char *entryname)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
delete note;
|
|
SetDirty();
|
|
}
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::DeleteAllNotes()
|
|
{
|
|
Check_Object(this);
|
|
|
|
NoteIterator notes(&m_notes);
|
|
Note *note;
|
|
while ((note = notes.ReadAndNext()) != NULL)
|
|
{
|
|
Check_Object(note);
|
|
delete note;
|
|
}
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
const char **contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
(const char*)m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
const char *contents
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(contents);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
const char *contents
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(contents);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
int *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
int contents
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(contents);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
int contents
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(contents);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
Scalar *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
Scalar value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
Scalar value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
DWORD *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
DWORD value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
DWORD value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
bool *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
bool value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
bool value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
Vector3D *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
const Vector3D &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
const Vector3D &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
YawPitchRoll *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
const YawPitchRoll &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
const YawPitchRoll &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
UnitQuaternion *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
const UnitQuaternion &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
const UnitQuaternion &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
Motion3D *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
const Motion3D &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
const Motion3D &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
RGBColor *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
const RGBColor &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
const RGBColor &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
RGBAColor *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
const RGBAColor &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
const RGBAColor &value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
Page::GetEntry(
|
|
const char *entryname,
|
|
NotationFile *contents,
|
|
bool required
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
Check_Pointer(contents);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (note)
|
|
{
|
|
Check_Object(note);
|
|
note->GetEntry(contents);
|
|
return true;
|
|
}
|
|
|
|
if (required)
|
|
STOP((
|
|
"%s: [%s]%s is a required entry!",
|
|
m_notationFile->GetFileName(),
|
|
(char*)m_name,
|
|
entryname
|
|
));
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::SetEntry(
|
|
const char *entryname,
|
|
NotationFile *value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = FindNote(entryname);
|
|
if (!note)
|
|
note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::AppendEntry(
|
|
const char *entryname,
|
|
NotationFile *value
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(entryname);
|
|
|
|
Note *note = AddNote(entryname);
|
|
Check_Object(note);
|
|
note->SetEntry(value);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Page::TestInstance() const
|
|
{
|
|
}
|