[deng] 01/03: import upstream 1.15.7
Michael Gilbert
mgilbert at moszumanska.debian.org
Sun Jan 3 04:15:51 UTC 2016
This is an automated email from the git hooks/post-receive script.
mgilbert pushed a commit to branch master
in repository deng.
commit b6fef3a9dd034c6eec7246172e3ed010ce8b1304
Author: Michael Gilbert <mgilbert at debian.org>
Date: Sun Jan 3 01:26:00 2016 +0000
import upstream 1.15.7
---
doomsday/api/dd_version.h | 4 +-
doomsday/build/scripts/packres.py | 1 +
doomsday/client/net.dengine.client.pack/Info.dei | 2 +-
.../net.dengine.client.pack/defaultstyle.pack/Info | 2 +-
.../net.dengine.client.pack/renderer.pack/Info | 2 +-
.../renderer.pack/lensflares.pack/Info | 2 +-
doomsday/client/src/resource/resourcesystem.cpp | 2 +-
.../client/src/ui/dialogs/vrsettingsdialog.cpp | 6 +-
doomsday/doc/output/doomsday.6 | 2 +-
doomsday/doc/readme/readme.ame | 2 +-
doomsday/doc/server/server.ame | 2 +-
doomsday/doc/shell-text/shell-text.ame | 2 +-
doomsday/libappfw/appfw.doxy | 2 +-
doomsday/libappfw/include/de/vr/oculusrift.h | 12 +-
doomsday/libappfw/src/vr/oculusrift.cpp | 15 +-
doomsday/libcore/include/de/data/reader.h | 4 +-
doomsday/libcore/include/de/libcore.h | 2 +-
doomsday/libcore/include/de/net/packet.h | 6 +-
doomsday/libcore/net.dengine.stdlib.pack/Info | 2 +-
doomsday/libcore/src/core/log.cpp | 2 +-
doomsday/libcore/src/data/archive.cpp | 8 +-
doomsday/libcore/src/data/record.cpp | 4 +-
doomsday/libcore/src/data/value.cpp | 2 +-
doomsday/libcore/src/data/variable.cpp | 2 +-
doomsday/libcore/src/filesys/archivefeed.cpp | 4 +-
doomsday/libcore/src/filesys/directoryfeed.cpp | 4 +-
doomsday/libcore/src/filesys/filesystem.cpp | 2 +-
.../libcore/src/scriptsys/builtinexpression.cpp | 4 +-
.../libcore/src/scriptsys/dictionaryexpression.cpp | 16 +-
doomsday/libcore/src/scriptsys/expression.cpp | 18 +-
.../libcore/src/scriptsys/functionstatement.cpp | 10 +-
doomsday/libcore/src/scriptsys/module.cpp | 6 +-
.../libcore/src/scriptsys/operatorexpression.cpp | 26 +-
doomsday/libcore/src/scriptsys/parser.cpp | 173 +++++++-------
doomsday/libcore/src/scriptsys/process.cpp | 4 +-
doomsday/libcore/src/scriptsys/scriptsystem.cpp | 2 +-
doomsday/libcore/src/scriptsys/statement.cpp | 30 +--
doomsday/libgui/gui.doxy | 2 +-
doomsday/libgui/net.dengine.stdlib.gui.pack/Info | 2 +-
doomsday/libgui/src/graphics/atlas.cpp | 2 +-
doomsday/libshell/src/abstractlink.cpp | 6 +-
doomsday/net.dengine.base.pack/Info | 2 +-
doomsday/plugins/common/include/dmu_archiveindex.h | 4 +-
doomsday/plugins/doom/data/doom2-freedm.mapinfo | 262 +++++++++++++++++++++
doomsday/plugins/doom/defs/doom2-freedm.ded | 28 +++
doomsday/plugins/doom/include/doomdef.h | 6 +-
doomsday/plugins/doom/src/d_api.c | 13 +
doomsday/sdk-qch.doxy | 4 +-
.../shell/shell-gui/src/localserverdialog.cpp | 13 +-
49 files changed, 533 insertions(+), 200 deletions(-)
diff --git a/doomsday/api/dd_version.h b/doomsday/api/dd_version.h
index cba9596..11bf2ee 100644
--- a/doomsday/api/dd_version.h
+++ b/doomsday/api/dd_version.h
@@ -51,8 +51,8 @@ extern "C" {
* Revision number increases with each small (maintenance) release.
*/
-#define DOOMSDAY_VERSION_BASE "1.15.5"
-#define DOOMSDAY_VERSION_NUMBER 1,15,5,0 // For WIN32 version info.
+#define DOOMSDAY_VERSION_BASE "1.15.7"
+#define DOOMSDAY_VERSION_NUMBER 1,15,7,0 // For WIN32 version info.
//#define DOOMSDAY_RELEASE_NAME "Example"
/**
diff --git a/doomsday/build/scripts/packres.py b/doomsday/build/scripts/packres.py
index 2181899..b8ae565 100755
--- a/doomsday/build/scripts/packres.py
+++ b/doomsday/build/scripts/packres.py
@@ -81,6 +81,7 @@ p.add_files(
('plugins/doom/data/doom1.mapinfo', 'data/jdoom/doom1.mapinfo'),
('plugins/doom/data/doom2-plut.mapinfo', 'data/jdoom/doom2-plut.mapinfo'),
('plugins/doom/data/doom2-tnt.mapinfo', 'data/jdoom/doom2-tnt.mapinfo'),
+ ('plugins/doom/data/doom2-freedm.mapinfo', 'data/jdoom/doom2-freedm.mapinfo'),
('plugins/doom/data/doom2.mapinfo', 'data/jdoom/doom2.mapinfo'),
('plugins/doom/data/hacx.mapinfo', 'data/jdoom/hacx.mapinfo'),
('plugins/doom/data/conhelp.txt', 'data/jdoom/conhelp.txt'),
diff --git a/doomsday/client/net.dengine.client.pack/Info.dei b/doomsday/client/net.dengine.client.pack/Info.dei
index a4efda1..823f334 100644
--- a/doomsday/client/net.dengine.client.pack/Info.dei
+++ b/doomsday/client/net.dengine.client.pack/Info.dei
@@ -1,7 +1,7 @@
# Client's primary resources
title: Doomsday Client
-version: 1.15.5
+version: 1.15.7
license: GPL 3+
tags: core client
diff --git a/doomsday/client/net.dengine.client.pack/defaultstyle.pack/Info b/doomsday/client/net.dengine.client.pack/defaultstyle.pack/Info
index d80f38f..3df38f8 100644
--- a/doomsday/client/net.dengine.client.pack/defaultstyle.pack/Info
+++ b/doomsday/client/net.dengine.client.pack/defaultstyle.pack/Info
@@ -1,4 +1,4 @@
title: Doomsday Default UI Style
-version: 1.15.5
+version: 1.15.7
license: GPL 3+
tags: ui style
diff --git a/doomsday/client/net.dengine.client.pack/renderer.pack/Info b/doomsday/client/net.dengine.client.pack/renderer.pack/Info
index 3500c7a..c450fe9 100644
--- a/doomsday/client/net.dengine.client.pack/renderer.pack/Info
+++ b/doomsday/client/net.dengine.client.pack/renderer.pack/Info
@@ -1,6 +1,6 @@
# General resources for the renderer
title: Doomsday Renderer
-version: 1.15.5
+version: 1.15.7
license: GPL 3+
tags: core
diff --git a/doomsday/client/net.dengine.client.pack/renderer.pack/lensflares.pack/Info b/doomsday/client/net.dengine.client.pack/renderer.pack/lensflares.pack/Info
index 431f905..5030710 100644
--- a/doomsday/client/net.dengine.client.pack/renderer.pack/lensflares.pack/Info
+++ b/doomsday/client/net.dengine.client.pack/renderer.pack/lensflares.pack/Info
@@ -1,5 +1,5 @@
title: Doomsday Default Lens Flares
-version: 1.15.5
+version: 1.15.7
license: GPL 3+
tags: core fx
diff --git a/doomsday/client/src/resource/resourcesystem.cpp b/doomsday/client/src/resource/resourcesystem.cpp
index e999fa2..52142c2 100644
--- a/doomsday/client/src/resource/resourcesystem.cpp
+++ b/doomsday/client/src/resource/resourcesystem.cpp
@@ -1697,7 +1697,7 @@ DENG2_PIMPL(ResourceSystem)
if(!numFoundSkins)
{
- LOG_RES_WARNING("Model \"%s\" will be rendered without a skin (none found)")
+ LOG_RES_MSG("No skins found for model \"%s\" (it may use a custom skin specified in a DED)")
<< NativePath(modelFilePath).pretty();
}
diff --git a/doomsday/client/src/ui/dialogs/vrsettingsdialog.cpp b/doomsday/client/src/ui/dialogs/vrsettingsdialog.cpp
index af3263c..37a7a56 100644
--- a/doomsday/client/src/ui/dialogs/vrsettingsdialog.cpp
+++ b/doomsday/client/src/ui/dialogs/vrsettingsdialog.cpp
@@ -63,9 +63,13 @@ DENG_GUI_PIMPL(VRSettingsDialog)
<< new ChoiceItem(tr("Side-by-side"), VRConfig::SideBySide)
<< new ChoiceItem(tr("Parallel"), VRConfig::Parallel)
<< new ChoiceItem(tr("Cross-eye"), VRConfig::CrossEye)
- << new ChoiceItem(tr("Oculus Rift"), VRConfig::OculusRift)
<< new ChoiceItem(tr("Hardware stereo"), VRConfig::QuadBuffered);
+ if(vrCfg().oculusRift().isEnabled())
+ {
+ mode->items() << new ChoiceItem(tr("Oculus Rift"), VRConfig::OculusRift);
+ }
+
area.add(swapEyes = new CVarToggleWidget("rend-vr-swap-eyes", tr("Swap Eyes")));
area.add(dominantEye = new CVarSliderWidget("rend-vr-dominant-eye"));
area.add(humanHeight = new CVarSliderWidget("rend-vr-player-height"));
diff --git a/doomsday/doc/output/doomsday.6 b/doomsday/doc/output/doomsday.6
index e94a751..22b292e 100644
--- a/doomsday/doc/output/doomsday.6
+++ b/doomsday/doc/output/doomsday.6
@@ -1,5 +1,5 @@
.\" manual page generated by Amethyst (mdoc+tbl)
-.Dd November 1, 2015
+.Dd January 1, 2016
.Os
.Dt "DOOMSDAY" 6
.Sh NAME
diff --git a/doomsday/doc/readme/readme.ame b/doomsday/doc/readme/readme.ame
index aefeb6b..dfb96b3 100644
--- a/doomsday/doc/readme/readme.ame
+++ b/doomsday/doc/readme/readme.ame
@@ -5,7 +5,7 @@
@macro{TITLE}{ doomsday }
}
@macro{ONELINER}{ Enhanced source port of Doom, Heretic and Hexen }
- at macro{VERSION}{ Version 1.15.5 }
+ at macro{VERSION}{ Version 1.15.7 }
@macro{AUTHOR}{ Deng Team }
@macro{LINK}{ http://dengine.net/ }
@require{amestd}
diff --git a/doomsday/doc/server/server.ame b/doomsday/doc/server/server.ame
index fdc0a7a..8c8c422 100644
--- a/doomsday/doc/server/server.ame
+++ b/doomsday/doc/server/server.ame
@@ -1,7 +1,7 @@
$ Man page for doomsday-server
@macro{TITLE}{ doomsday-server }
@macro{ONELINER}{ Doomsday Engine multiplayer daemon }
- at macro{VERSION}{ Version 1.15.5 }
+ at macro{VERSION}{ Version 1.15.7 }
@macro{AUTHOR}{ Deng Team }
@macro{LINK}{ http://dengine.net/ }
@require{amestd}
diff --git a/doomsday/doc/shell-text/shell-text.ame b/doomsday/doc/shell-text/shell-text.ame
index d8a9460..a89f962 100644
--- a/doomsday/doc/shell-text/shell-text.ame
+++ b/doomsday/doc/shell-text/shell-text.ame
@@ -1,7 +1,7 @@
$ Man page for doomsday-shell-text
@macro{TITLE}{ doomsday-shell-text }
@macro{ONELINER}{ Utility for controlling and monitoring Doomsday servers }
- at macro{VERSION}{ Version 1.15.5 }
+ at macro{VERSION}{ Version 1.15.7 }
@macro{AUTHOR}{ Deng Team }
@macro{LINK}{ http://dengine.net/ }
@require{amestd}
diff --git a/doomsday/libappfw/appfw.doxy b/doomsday/libappfw/appfw.doxy
index 3b8bbba..762ff48 100644
--- a/doomsday/libappfw/appfw.doxy
+++ b/doomsday/libappfw/appfw.doxy
@@ -2,7 +2,7 @@
@INCLUDE = ../doomsday.doxy
PROJECT_NAME = "libappfw"
-PROJECT_NUMBER = 1.15.5
+PROJECT_NUMBER = 1.15.7
PROJECT_BRIEF = "Application Framework"
OUTPUT_DIRECTORY = ../apidoc/appfw/
diff --git a/doomsday/libappfw/include/de/vr/oculusrift.h b/doomsday/libappfw/include/de/vr/oculusrift.h
index dcc3093..c62a23e 100644
--- a/doomsday/libappfw/include/de/vr/oculusrift.h
+++ b/doomsday/libappfw/include/de/vr/oculusrift.h
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#ifndef LIBAPPFW_OCULUSRIFT_H
@@ -28,6 +28,8 @@ namespace de {
/**
* Oculus Rift configuration and head tracking.
+ *
+ * @ingroup vr
*/
class LIBAPPFW_PUBLIC OculusRift
{
@@ -38,6 +40,12 @@ public:
public:
OculusRift();
+ /**
+ * Checks if the Oculus Rift functionality is available. This returns
+ * @c true if LibOVR is enabled in the build.
+ */
+ bool isEnabled() const;
+
void glPreInit();
/**
@@ -97,7 +105,7 @@ public:
* yaw angles, in radians. If no head tracking is available, the returned values are
* not valid.
*/
- Vector3f headOrientation() const;
+ Vector3f headOrientation() const;
/**
* Returns the current real-world head position.
diff --git a/doomsday/libappfw/src/vr/oculusrift.cpp b/doomsday/libappfw/src/vr/oculusrift.cpp
index 1af06ed..3ca99e7 100644
--- a/doomsday/libappfw/src/vr/oculusrift.cpp
+++ b/doomsday/libappfw/src/vr/oculusrift.cpp
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/OculusRift"
@@ -390,7 +390,7 @@ DENG2_PIMPL(OculusRift)
if(screen == HMDScreen)
{
if(isWindowOnHMD()) return; // Nothing further to do.
-#ifdef WIN32
+#ifdef WIN32
oldGeometry = window->geometry();
window->setGeometry(screenGeometry(HMDScreen));
window->showFullScreen();
@@ -542,6 +542,15 @@ DENG2_PIMPL(OculusRift)
OculusRift::OculusRift() : d(new Instance(this))
{}
+bool OculusRift::isEnabled() const
+{
+#ifdef DENG_HAVE_OCULUS_API
+ return true;
+#else
+ return false;
+#endif
+}
+
void OculusRift::glPreInit()
{
#ifdef DENG_HAVE_OCULUS_API
@@ -574,7 +583,7 @@ void OculusRift::deinit()
void OculusRift::beginFrame()
{
-#ifdef DENG_HAVE_OCULUS_API
+#ifdef DENG_HAVE_OCULUS_API
if(!isReady() || !d->inited || d->frameOngoing) return;
// Begin the frame and acquire timing information.
diff --git a/doomsday/libcore/include/de/data/reader.h b/doomsday/libcore/include/de/data/reader.h
index a710d62..31d5b94 100644
--- a/doomsday/libcore/include/de/data/reader.h
+++ b/doomsday/libcore/include/de/data/reader.h
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#ifndef LIBDENG2_READER_HH
@@ -197,7 +197,7 @@ public:
duint32 count;
*this >> count;
while(count-- > 0) {
- std::auto_ptr<ObjectType> entry(new ObjectType);
+ std::unique_ptr<ObjectType> entry(new ObjectType);
*this >> *entry.get();
list.push_back(entry.release());
}
diff --git a/doomsday/libcore/include/de/libcore.h b/doomsday/libcore/include/de/libcore.h
index b535edb..383a432 100644
--- a/doomsday/libcore/include/de/libcore.h
+++ b/doomsday/libcore/include/de/libcore.h
@@ -340,7 +340,7 @@ struct IPrivate {
};
/**
- * Pointer to the private implementation. Behaves like std::auto_ptr, but with
+ * Pointer to the private implementation. Behaves like std::unique_ptr, but with
* the additional requirement that the pointed/owned instance must be derived
* from de::IPrivate.
*/
diff --git a/doomsday/libcore/include/de/net/packet.h b/doomsday/libcore/include/de/net/packet.h
index 0faf1e9..cfd2754 100644
--- a/doomsday/libcore/include/de/net/packet.h
+++ b/doomsday/libcore/include/de/net/packet.h
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#ifndef LIBDENG2_PACKET_H
@@ -28,7 +28,7 @@
namespace de {
class String;
-
+
/**
* Base class for all network packets in the libcore network communications
* protocol. All packets are based on this class.
@@ -108,7 +108,7 @@ public:
Reader from(block);
if(checkType(from, packetTypeIdentifier))
{
- std::auto_ptr<PacketType> p(new PacketType);
+ std::unique_ptr<PacketType> p(new PacketType);
from >> *static_cast<IReadable *>(p.get());
return p.release();
}
diff --git a/doomsday/libcore/net.dengine.stdlib.pack/Info b/doomsday/libcore/net.dengine.stdlib.pack/Info
index 3e32197..55a4ab2 100644
--- a/doomsday/libcore/net.dengine.stdlib.pack/Info
+++ b/doomsday/libcore/net.dengine.stdlib.pack/Info
@@ -1,5 +1,5 @@
title: Doomsday Script Standard Library
-version: 1.15.5
+version: 1.15.7
license: GPL 3+
tags: core script
diff --git a/doomsday/libcore/src/core/log.cpp b/doomsday/libcore/src/core/log.cpp
index 2b5acab..f1d8619 100644
--- a/doomsday/libcore/src/core/log.cpp
+++ b/doomsday/libcore/src/core/log.cpp
@@ -61,7 +61,7 @@ public:
} // namespace internal
/// The logs table contains the log of each thread that uses logging.
-static std::auto_ptr<internal::Logs> logsPtr;
+static std::unique_ptr<internal::Logs> logsPtr;
/// Unused entry arguments are stored here in the pool.
static FIFO<LogEntry::Arg> argPool;
diff --git a/doomsday/libcore/src/data/archive.cpp b/doomsday/libcore/src/data/archive.cpp
index bfc5a2d..edd3f45 100644
--- a/doomsday/libcore/src/data/archive.cpp
+++ b/doomsday/libcore/src/data/archive.cpp
@@ -13,7 +13,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/Archive"
@@ -168,7 +168,7 @@ Block const &Archive::entryBlock(Path const &path) const
// Got it.
return *entry.data;
}
- std::auto_ptr<Block> cached(new Block);
+ std::unique_ptr<Block> cached(new Block);
d->readEntry(path, *cached.get());
entry.data = cached.release();
return *entry.data;
@@ -188,14 +188,14 @@ Block &Archive::entryBlock(Path const &path)
}
Block const &block = const_cast<Archive const *>(this)->entryBlock(path);
-
+
// Mark for recompression.
Entry &entry = static_cast<Entry &>(d->index->find(path, PathTree::MatchFull | PathTree::NoBranch));
entry.maybeChanged = true;
entry.modifiedAt = Time();
d->modified = true;
-
+
return const_cast<Block &>(block);
}
diff --git a/doomsday/libcore/src/data/record.cpp b/doomsday/libcore/src/data/record.cpp
index cef65da..2f602de 100644
--- a/doomsday/libcore/src/data/record.cpp
+++ b/doomsday/libcore/src/data/record.cpp
@@ -328,7 +328,7 @@ bool Record::hasSubrecord(String const &subrecordName) const
Variable &Record::add(Variable *variable)
{
- std::auto_ptr<Variable> var(variable);
+ std::unique_ptr<Variable> var(variable);
if(variable->name().empty())
{
/// @throw UnnamedError All variables in a record must have a name.
@@ -429,7 +429,7 @@ Variable &Record::addFunction(const String &name, Function *func)
Record &Record::add(String const &name, Record *subrecord)
{
- std::auto_ptr<Record> sub(subrecord);
+ std::unique_ptr<Record> sub(subrecord);
d->parentRecordByPath(name)
.add(new Variable(Instance::memberNameFromPath(name),
new RecordValue(sub.release(), RecordValue::OwnsRecord)));
diff --git a/doomsday/libcore/src/data/value.cpp b/doomsday/libcore/src/data/value.cpp
index 8b25928..fd36562 100644
--- a/doomsday/libcore/src/data/value.cpp
+++ b/doomsday/libcore/src/data/value.cpp
@@ -187,7 +187,7 @@ Value *Value::constructFrom(Reader &reader)
reader >> id;
reader.rewind();
- std::auto_ptr<Value> result;
+ std::unique_ptr<Value> result;
switch(id)
{
case NONE:
diff --git a/doomsday/libcore/src/data/variable.cpp b/doomsday/libcore/src/data/variable.cpp
index a3941e9..eec1004 100644
--- a/doomsday/libcore/src/data/variable.cpp
+++ b/doomsday/libcore/src/data/variable.cpp
@@ -72,7 +72,7 @@ Variable::Variable(String const &name, Value *initial, Flags const &m)
d->name = name;
d->mode = m;
- std::auto_ptr<Value> v(initial);
+ std::unique_ptr<Value> v(initial);
if(!initial)
{
v.reset(new NoneValue);
diff --git a/doomsday/libcore/src/filesys/archivefeed.cpp b/doomsday/libcore/src/filesys/archivefeed.cpp
index f61ec49..5b992ca 100644
--- a/doomsday/libcore/src/filesys/archivefeed.cpp
+++ b/doomsday/libcore/src/filesys/archivefeed.cpp
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/ArchiveFeed"
@@ -168,7 +168,7 @@ DENG2_PIMPL(ArchiveFeed)
String entry = basePath / *i;
- std::auto_ptr<ArchiveEntryFile> archFile(new ArchiveEntryFile(*i, archive(), entry));
+ std::unique_ptr<ArchiveEntryFile> archFile(new ArchiveEntryFile(*i, archive(), entry));
// Write access is inherited from the main source file.
if(allowWrite) archFile->setMode(File::Write);
diff --git a/doomsday/libcore/src/filesys/directoryfeed.cpp b/doomsday/libcore/src/filesys/directoryfeed.cpp
index ebc17b3..1d726b2 100644
--- a/doomsday/libcore/src/filesys/directoryfeed.cpp
+++ b/doomsday/libcore/src/filesys/directoryfeed.cpp
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/DirectoryFeed"
@@ -110,7 +110,7 @@ void DirectoryFeed::populateFile(Folder &folder, String const &entryName)
NativePath entryPath = _nativePath / entryName;
// Open the native file.
- std::auto_ptr<NativeFile> nativeFile(new NativeFile(entryName, entryPath));
+ std::unique_ptr<NativeFile> nativeFile(new NativeFile(entryName, entryPath));
nativeFile->setStatus(fileStatus(entryPath));
if(_mode & AllowWrite)
{
diff --git a/doomsday/libcore/src/filesys/filesystem.cpp b/doomsday/libcore/src/filesys/filesystem.cpp
index 6287432..da25f99 100644
--- a/doomsday/libcore/src/filesys/filesystem.cpp
+++ b/doomsday/libcore/src/filesys/filesystem.cpp
@@ -154,7 +154,7 @@ File *FileSystem::interpret(File *sourceData)
try
{
// It is a ZIP archive: we will represent it as a folder.
- std::auto_ptr<ArchiveFolder> package;
+ std::unique_ptr<ArchiveFolder> package;
if(sourceData->name().fileNameExtension() == ".save")
{
diff --git a/doomsday/libcore/src/scriptsys/builtinexpression.cpp b/doomsday/libcore/src/scriptsys/builtinexpression.cpp
index bb174b1..b5cfe4e 100644
--- a/doomsday/libcore/src/scriptsys/builtinexpression.cpp
+++ b/doomsday/libcore/src/scriptsys/builtinexpression.cpp
@@ -57,7 +57,7 @@ void BuiltInExpression::push(Evaluator &evaluator, Value *scope) const
Value *BuiltInExpression::evaluate(Evaluator &evaluator) const
{
- std::auto_ptr<Value> value(evaluator.popResult());
+ std::unique_ptr<Value> value(evaluator.popResult());
ArrayValue const &args = value.get()->as<ArrayValue>();
switch(_type)
@@ -269,7 +269,7 @@ Value *BuiltInExpression::evaluate(Evaluator &evaluator) const
throw WrongArgumentsError("BuiltInExpression::evaluate",
"Expected exactly one argument for SERIALIZE");
}
- std::auto_ptr<BlockValue> data(new BlockValue);
+ std::unique_ptr<BlockValue> data(new BlockValue);
Writer(*data.get()) << args.at(1);
return data.release();
}
diff --git a/doomsday/libcore/src/scriptsys/dictionaryexpression.cpp b/doomsday/libcore/src/scriptsys/dictionaryexpression.cpp
index f0ca717..9a5e92e 100644
--- a/doomsday/libcore/src/scriptsys/dictionaryexpression.cpp
+++ b/doomsday/libcore/src/scriptsys/dictionaryexpression.cpp
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/DictionaryExpression"
@@ -55,7 +55,7 @@ void DictionaryExpression::add(Expression *key, Expression *value)
void DictionaryExpression::push(Evaluator &evaluator, Value *scope) const
{
Expression::push(evaluator, scope);
-
+
// The arguments in reverse order (so they are evaluated in
// natural order, i.e., the same order they are in the source).
for(Arguments::const_reverse_iterator i = _arguments.rbegin();
@@ -63,15 +63,15 @@ void DictionaryExpression::push(Evaluator &evaluator, Value *scope) const
{
i->second->push(evaluator);
i->first->push(evaluator);
- }
+ }
}
Value *DictionaryExpression::evaluate(Evaluator &evaluator) const
{
- std::auto_ptr<DictionaryValue> dict(new DictionaryValue);
-
+ std::unique_ptr<DictionaryValue> dict(new DictionaryValue);
+
std::list<Value *> keys, values;
-
+
// Collect the right number of results into the array.
for(Arguments::const_reverse_iterator i = _arguments.rbegin();
i != _arguments.rend(); ++i)
@@ -88,7 +88,7 @@ Value *DictionaryExpression::evaluate(Evaluator &evaluator) const
{
dict->add(*key, *value);
}
-
+
return dict.release();
}
@@ -111,7 +111,7 @@ void DictionaryExpression::operator << (Reader &from)
from >> id;
if(id != DICTIONARY)
{
- /// @throw DeserializationError The identifier that species the type of the
+ /// @throw DeserializationError The identifier that species the type of the
/// serialized expression was invalid.
throw DeserializationError("DictionaryExpression::operator <<", "Invalid ID");
}
diff --git a/doomsday/libcore/src/scriptsys/expression.cpp b/doomsday/libcore/src/scriptsys/expression.cpp
index 2be7838..71e3165 100644
--- a/doomsday/libcore/src/scriptsys/expression.cpp
+++ b/doomsday/libcore/src/scriptsys/expression.cpp
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/Expression"
@@ -47,22 +47,22 @@ Expression *Expression::constructFrom(Reader &reader)
reader.mark();
reader >> id;
reader.rewind();
-
- std::auto_ptr<Expression> result;
+
+ std::unique_ptr<Expression> result;
switch(id)
{
case ARRAY:
result.reset(new ArrayExpression());
break;
-
+
case BUILT_IN:
result.reset(new BuiltInExpression());
break;
-
+
case CONSTANT:
result.reset(new ConstantExpression());
break;
-
+
case DICTIONARY:
result.reset(new DictionaryExpression());
break;
@@ -74,16 +74,16 @@ Expression *Expression::constructFrom(Reader &reader)
case OPERATOR:
result.reset(new OperatorExpression());
break;
-
+
default:
- /// @throw DeserializationError The identifier that species the type of the
+ /// @throw DeserializationError The identifier that species the type of the
/// serialized expression was invalid.
throw DeserializationError("Expression::constructFrom", "Invalid expression identifier");
}
// Deserialize it.
reader >> *result.get();
- return result.release();
+ return result.release();
}
Expression::Flags const &Expression::flags () const
diff --git a/doomsday/libcore/src/scriptsys/functionstatement.cpp b/doomsday/libcore/src/scriptsys/functionstatement.cpp
index e08355f..6adc8ed 100644
--- a/doomsday/libcore/src/scriptsys/functionstatement.cpp
+++ b/doomsday/libcore/src/scriptsys/functionstatement.cpp
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/FunctionStatement"
@@ -68,7 +68,7 @@ void FunctionStatement::execute(Context &context) const
// Variable that will store the function.
eval.evaluateTo<RefValue>(_identifier);
- std::auto_ptr<RefValue> ref(eval.popResultAs<RefValue>());
+ std::unique_ptr<RefValue> ref(eval.popResultAs<RefValue>());
// Evaluate the argument default values.
DictionaryValue &dict = eval.evaluateTo<DictionaryValue>(&_defaults);
@@ -76,10 +76,10 @@ void FunctionStatement::execute(Context &context) const
{
_function->defaults()[i->first.value->asText()] = i->second->duplicate();
}
-
+
// The value takes a reference to the function.
ref->assign(new FunctionValue(_function));
-
+
context.proceed();
}
@@ -94,7 +94,7 @@ void FunctionStatement::operator << (Reader &from)
from >> id;
if(id != FUNCTION)
{
- /// @throw DeserializationError The identifier that species the type of the
+ /// @throw DeserializationError The identifier that species the type of the
/// serialized statement was invalid.
throw DeserializationError("FunctionStatement::operator <<", "Invalid ID");
}
diff --git a/doomsday/libcore/src/scriptsys/module.cpp b/doomsday/libcore/src/scriptsys/module.cpp
index b5a9627..9d1834c 100644
--- a/doomsday/libcore/src/scriptsys/module.cpp
+++ b/doomsday/libcore/src/scriptsys/module.cpp
@@ -14,9 +14,9 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
-
+
#include "de/Module"
#include "de/File"
#include "de/Process"
@@ -40,7 +40,7 @@ Module::Module(File const &sourceFile) : _sourcePath(sourceFile.path()), _proces
void Module::initialize(Script const &script)
{
// Execute the script.
- std::auto_ptr<Process> proc(new Process(script));
+ std::unique_ptr<Process> proc(new Process(script));
proc->execute();
_process = proc.release();
}
diff --git a/doomsday/libcore/src/scriptsys/operatorexpression.cpp b/doomsday/libcore/src/scriptsys/operatorexpression.cpp
index 3af323e..90d438c 100644
--- a/doomsday/libcore/src/scriptsys/operatorexpression.cpp
+++ b/doomsday/libcore/src/scriptsys/operatorexpression.cpp
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/OperatorExpression"
@@ -64,11 +64,11 @@ OperatorExpression::~OperatorExpression()
void OperatorExpression::push(Evaluator &evaluator, Value *scope) const
{
Expression::push(evaluator);
-
+
if(_op == MEMBER)
{
// The MEMBER operator works a bit differently. Just push the left side
- // now. We'll push the other side when we've found out what is the
+ // now. We'll push the other side when we've found out what is the
// scope defined by the result of the left side.
_leftOperand->push(evaluator, scope);
}
@@ -132,7 +132,7 @@ Value *OperatorExpression::evaluate(Evaluator &evaluator) const
case PLUS_ASSIGN:
verifyAssignable(leftValue);
leftValue->sum(*rightValue);
- break;
+ break;
case MINUS:
if(leftValue)
@@ -149,7 +149,7 @@ Value *OperatorExpression::evaluate(Evaluator &evaluator) const
case MINUS_ASSIGN:
verifyAssignable(leftValue);
leftValue->subtract(*rightValue);
- break;
+ break;
case DIVIDE:
leftValue->divide(*rightValue);
@@ -158,7 +158,7 @@ Value *OperatorExpression::evaluate(Evaluator &evaluator) const
case DIVIDE_ASSIGN:
verifyAssignable(leftValue);
leftValue->divide(*rightValue);
- break;
+ break;
case MULTIPLY:
leftValue->multiply(*rightValue);
@@ -167,7 +167,7 @@ Value *OperatorExpression::evaluate(Evaluator &evaluator) const
case MULTIPLY_ASSIGN:
verifyAssignable(leftValue);
leftValue->multiply(*rightValue);
- break;
+ break;
case MODULO:
leftValue->modulo(*rightValue);
@@ -246,11 +246,11 @@ Value *OperatorExpression::evaluate(Evaluator &evaluator) const
break;
}
- case SLICE:
+ case SLICE:
result = performSlice(*leftValue, *rightValue);
break;
- case MEMBER:
+ case MEMBER:
{
Record *scope = (leftValue? leftValue->memberScope() : 0);
if(!scope)
@@ -288,7 +288,7 @@ Value *OperatorExpression::evaluate(Evaluator &evaluator) const
// Delete the unnecessary values.
if(result != rightValue) delete rightValue;
if(result != leftValue) delete leftValue;
-
+
return result;
}
@@ -320,7 +320,7 @@ void OperatorExpression::operator << (Reader &from)
from >> id;
if(id != OPERATOR)
{
- /// @throw DeserializationError The identifier that species the type of the
+ /// @throw DeserializationError The identifier that species the type of the
/// serialized expression was invalid.
throw DeserializationError("OperatorExpression::operator <<", "Invalid ID");
}
@@ -335,7 +335,7 @@ void OperatorExpression::operator << (Reader &from)
delete _rightOperand;
_leftOperand = 0;
_rightOperand = 0;
-
+
_rightOperand = Expression::constructFrom(from);
if(header & HAS_LEFT_OPERAND)
{
@@ -385,7 +385,7 @@ Value *OperatorExpression::performSlice(Value &leftValue, Value &rightValue) con
DENG2_ASSERT(args != NULL); // Parser makes sure.
// The resulting slice of leftValue's elements.
- std::auto_ptr<SliceTarget> slice;
+ std::unique_ptr<SliceTarget> slice;
if(dynamic_cast<TextValue *>(&leftValue))
{
slice.reset(new TextSliceTarget);
diff --git a/doomsday/libcore/src/scriptsys/parser.cpp b/doomsday/libcore/src/scriptsys/parser.cpp
index 26dc40b..549547d 100644
--- a/doomsday/libcore/src/scriptsys/parser.cpp
+++ b/doomsday/libcore/src/scriptsys/parser.cpp
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/Parser"
@@ -46,7 +46,6 @@
#include <sstream>
-using std::auto_ptr;
using namespace de;
Parser::Parser()
@@ -59,7 +58,7 @@ void Parser::parse(String const &input, Script &output)
{
// Lexical analyzer for Haw scripts.
_analyzer = ScriptLex(input);
-
+
// Get the tokens of the first statement.
if(nextStatement() > 0)
{
@@ -74,18 +73,18 @@ void Parser::parse(String const &input, Script &output)
duint Parser::nextStatement()
{
duint result = _analyzer.getStatement(_tokens);
-
+
// Begin with the whole thing.
_statementRange = TokenRange(_tokens);
//std::cout << "Next statement: '" << _statementRange.asText() << "'\n";
-
+
return result;
}
void Parser::parseCompound(Compound &compound)
{
- while(_statementRange.size() > 0)
+ while(_statementRange.size() > 0)
{
if(_statementRange.firstToken().equals(ScriptLex::ELSIF) ||
_statementRange.firstToken().equals(ScriptLex::ELSE) ||
@@ -95,7 +94,7 @@ void Parser::parseCompound(Compound &compound)
// End of compound.
break;
}
-
+
// We have a list of tokens, which form a statement.
// Figure out what it is and generate the correct statement(s)
// and expressions.
@@ -106,7 +105,7 @@ void Parser::parseCompound(Compound &compound)
void Parser::parseStatement(Compound &compound)
{
DENG2_ASSERT(!_statementRange.empty());
-
+
Token const &firstToken = _statementRange.firstToken();
// Statements with a compound: if, for, while, def.
@@ -135,7 +134,7 @@ void Parser::parseStatement(Compound &compound)
parseTryCatchSequence(compound);
return;
}
-
+
// Statements without a compound (must advance to next statement manually).
if(firstToken.equals(ScriptLex::IMPORT))
{
@@ -197,7 +196,7 @@ void Parser::parseStatement(Compound &compound)
{
compound.add(parseExpressionStatement());
}
-
+
// We've fully parsed the current set of tokens, get the next statement.
nextStatement();
}
@@ -206,29 +205,29 @@ IfStatement *Parser::parseIfStatement()
{
// The "end" keyword is necessary in the full form.
bool expectEnd = !_statementRange.hasBracketless(Token::COLON);
-
- auto_ptr<IfStatement> statement(new IfStatement());
+
+ std::unique_ptr<IfStatement> statement(new IfStatement());
statement->newBranch();
statement->setBranchCondition(
- parseConditionalCompound(statement->branchCompound(),
+ parseConditionalCompound(statement->branchCompound(),
HasCondition | StayAtClosingStatement));
-
+
while(_statementRange.beginsWith(ScriptLex::ELSIF))
{
expectEnd = !_statementRange.hasBracketless(Token::COLON);
statement->newBranch();
statement->setBranchCondition(
- parseConditionalCompound(statement->branchCompound(),
+ parseConditionalCompound(statement->branchCompound(),
HasCondition | StayAtClosingStatement));
}
-
+
if(_statementRange.beginsWith(ScriptLex::ELSE))
{
expectEnd = !_statementRange.has(Token::COLON);
parseConditionalCompound(statement->elseCompound(), StayAtClosingStatement);
}
-
- if(expectEnd)
+
+ if(expectEnd)
{
if(_statementRange.size() != 1 || !_statementRange.firstToken().equals(ScriptLex::END))
{
@@ -238,15 +237,15 @@ IfStatement *Parser::parseIfStatement()
nextStatement();
}
- return statement.release();
+ return statement.release();
}
WhileStatement *Parser::parseWhileStatement()
{
// "while" expr ":" statement
// "while" expr "\n" compound
-
- auto_ptr<WhileStatement> statement(new WhileStatement());
+
+ std::unique_ptr<WhileStatement> statement(new WhileStatement());
statement->setCondition(parseConditionalCompound(statement->compound(), HasCondition));
return statement.release();
}
@@ -255,7 +254,7 @@ ForStatement *Parser::parseForStatement()
{
// "for" by-ref-expr "in" expr ":" statement
// "for" by-ref-expr "in" expr "\n" compound
-
+
dint colonPos = _statementRange.find(Token::COLON);
dint inPos = _statementRange.find(ScriptLex::IN);
if(inPos < 0 || (colonPos > 0 && inPos > colonPos))
@@ -263,23 +262,23 @@ ForStatement *Parser::parseForStatement()
throw MissingTokenError("Parser::parseForStatement",
"Expected 'in' to follow " + _statementRange.firstToken().asText());
}
-
- auto_ptr<Expression> iter(parseExpression(_statementRange.between(1, inPos),
+
+ std::unique_ptr<Expression> iter(parseExpression(_statementRange.between(1, inPos),
Expression::ByReference | Expression::NewVariable | Expression::LocalOnly));
Expression *iterable = parseExpression(_statementRange.between(inPos + 1, colonPos));
-
- auto_ptr<ForStatement> statement(new ForStatement(iter.release(), iterable));
+
+ std::unique_ptr<ForStatement> statement(new ForStatement(iter.release(), iterable));
// Parse the statements of the method.
parseConditionalCompound(statement->compound(), IgnoreExtraBeforeColon);
-
+
return statement.release();
}
ExpressionStatement *Parser::parseImportStatement()
{
// "import" ["record"] name-expr ["," name-expr]*
-
+
if(_statementRange.size() < 2)
{
throw MissingTokenError("Parser::parseImportStatement",
@@ -322,7 +321,7 @@ Statement *Parser::parseDeclarationStatement()
{
throw MissingTokenError("Parser::parseDeclarationStatement",
"Expected identifier to follow " + _statementRange.firstToken().asText());
- }
+ }
// Is this a class record declaration?
dint pos = _statementRange.find(Token::PARENTHESIS_OPEN);
@@ -348,12 +347,12 @@ Statement *Parser::parseDeclarationStatement()
DeleteStatement *Parser::parseDeleteStatement()
{
// "del" name-expr ["," name-expr]*
-
+
if(_statementRange.size() < 2)
{
throw MissingTokenError("Parser::parseDeleteStatement",
"Expected identifier to follow " + _statementRange.firstToken().asText());
- }
+ }
return new DeleteStatement(parseList(_statementRange.startingFrom(1), Token::COMMA,
Expression::LocalOnly | Expression::ByReference));
}
@@ -370,8 +369,8 @@ FunctionStatement *Parser::parseFunctionStatement()
}
// The function must have a name that is not already in use in the scope.
- auto_ptr<FunctionStatement> statement(new FunctionStatement(
- parseExpression(_statementRange.between(1, pos),
+ std::unique_ptr<FunctionStatement> statement(new FunctionStatement(
+ parseExpression(_statementRange.between(1, pos),
Expression::LocalOnly | Expression::ByReference |
Expression::NewVariable | Expression::NotInScope)));
@@ -388,7 +387,7 @@ FunctionStatement *Parser::parseFunctionStatement()
// Just the name of the argument.
statement->addArgument(delim.firstToken().str());
}
- else if(delim.size() >= 3 &&
+ else if(delim.size() >= 3 &&
delim.token(0).type() == Token::IDENTIFIER &&
delim.token(1).equals(ScriptLex::ASSIGN))
{
@@ -407,7 +406,7 @@ FunctionStatement *Parser::parseFunctionStatement()
// Parse the statements of the function.
parseConditionalCompound(statement->compound(), IgnoreExtraBeforeColon);
-
+
return statement.release();
}
@@ -415,8 +414,8 @@ void Parser::parseTryCatchSequence(Compound &compound)
{
// "try" cond-compound catch-compound [catch-compound]*
// catch-compound: "catch" name-expr ["," ref-name-expr] cond-compound
-
- auto_ptr<TryStatement> tryStat(new TryStatement);
+
+ std::unique_ptr<TryStatement> tryStat(new TryStatement);
parseConditionalCompound(tryStat->compound(), StayAtClosingStatement);
compound.add(tryStat.release());
@@ -434,7 +433,7 @@ void Parser::parseTryCatchSequence(Compound &compound)
expectEnd = (colon < 0);
// Parse the arguments.
- auto_ptr<ArrayExpression> args;
+ std::unique_ptr<ArrayExpression> args;
if(_statementRange.size() > 1)
{
TokenRange argRange;
@@ -450,7 +449,7 @@ void Parser::parseTryCatchSequence(Compound &compound)
Expression::ByReference | Expression::LocalOnly | Expression::NewVariable));
}
- auto_ptr<CatchStatement> catchStat(new CatchStatement(args.release()));
+ std::unique_ptr<CatchStatement> catchStat(new CatchStatement(args.release()));
parseConditionalCompound(catchStat->compound(),
StayAtClosingStatement | IgnoreExtraBeforeColon);
@@ -459,7 +458,7 @@ void Parser::parseTryCatchSequence(Compound &compound)
// Add it to the compound.
compound.add(catchStat.release());
- }
+ }
finalCatch->flags |= CatchStatement::FinalCompound;
if(expectEnd)
{
@@ -473,7 +472,7 @@ void Parser::parseTryCatchSequence(Compound &compound)
}
PrintStatement *Parser::parsePrintStatement()
-{
+{
ArrayExpression *args = 0;
if(_statementRange.size() == 1) // Just the keyword.
{
@@ -484,13 +483,13 @@ PrintStatement *Parser::parsePrintStatement()
// Parse the arguments of the print statement.
args = parseList(_statementRange.startingFrom(1));
}
- return new PrintStatement(args);
+ return new PrintStatement(args);
}
AssignStatement *Parser::parseAssignStatement()
{
Expression::Flags flags = Expression::NewVariable | Expression::ByReference | Expression::LocalOnly;
-
+
/// "export" will export the newly assigned variable.
if(_statementRange.firstToken().equals(ScriptLex::EXPORT))
{
@@ -504,7 +503,7 @@ AssignStatement *Parser::parseAssignStatement()
flags |= Expression::ReadOnly;
_statementRange = _statementRange.startingFrom(1);
}
-
+
dint pos = _statementRange.find(ScriptLex::ASSIGN);
if(pos < 0)
{
@@ -517,7 +516,7 @@ AssignStatement *Parser::parseAssignStatement()
flags |= Expression::ThrowawayIfInScope;
}
}
-
+
// Has indices been specified?
AssignStatement::Indices indices;
dint nameEndPos = pos;
@@ -533,7 +532,7 @@ AssignStatement *Parser::parseAssignStatement()
indices.push_back(indexExpr);
bracketPos = nameEndPos - 1;
}
-
+
if(indices.size() > 0 && (flags & Expression::ThrowawayIfInScope))
{
throw SyntaxError("Parser::parseAssignStatement",
@@ -547,7 +546,7 @@ AssignStatement *Parser::parseAssignStatement()
lValue.take();
rValue.take();
-
+
return st;
}
catch(Error const &)
@@ -570,12 +569,12 @@ Expression *Parser::parseConditionalCompound(Compound &compound, CompoundFlags c
{
// keyword [expr] ":" statement
// keyword [expr] "\n" compound
-
+
TokenRange range = _statementRange;
-
+
// See if there is a colon on this line.
dint colon = range.findBracketless(Token::COLON);
-
+
QScopedPointer<Expression> condition;
if(flags.testFlag(HasCondition))
{
@@ -595,7 +594,7 @@ Expression *Parser::parseConditionalCompound(Compound &compound, CompoundFlags c
throw UnexpectedTokenError("Parser::parseConditionalCompound",
range.token(1).asText() + " was unexpected");
}
-
+
if(colon > 0)
{
if(colon == dint(range.size()) - 1)
@@ -643,13 +642,13 @@ Expression *Parser::parseExpression(TokenRange const &fullRange, Expression::Fla
LOG_AS("parseExpression");
LOGDEV_SCR_XVERBOSE_DEBUGONLY("%s (flags:%x)", range.asText() << flags);
-
+
if(!range.size())
{
// Empty expression yields a None value.
return ConstantExpression::None();
}
-
+
// We can ignore extra parenthesis around the range.
while(range.firstToken().equals(Token::PARENTHESIS_OPEN) && range.closingBracket(0) == range.size() - 1)
{
@@ -673,10 +672,10 @@ Expression *Parser::parseExpression(TokenRange const &fullRange, Expression::Fla
TokenRange leftSide = range.between(0, 0);
TokenRange rightSide = leftSide;
-
+
// Locate the lowest-ranking operator.
Operator op = findLowestOperator(range, leftSide, rightSide);
-
+
if(op == NONE)
{
// This is a constant or a variable reference.
@@ -695,7 +694,7 @@ Expression *Parser::parseExpression(TokenRange const &fullRange, Expression::Fla
return parseCallExpression(leftSide, rightSide);
}
else
- {
+ {
// Left side is empty with unary operators.
// The right side inherits the flags of the expression (e.g., name-by-reference).
return parseOperatorExpression(op, leftSide, rightSide, flags);
@@ -708,9 +707,9 @@ ArrayExpression *Parser::parseArrayExpression(TokenRange const &range)
range.closingBracket(0) != range.size() - 1)
{
throw MissingTokenError("Parser::parseArrayExpression",
- "Expected brackets for the array expression beginning at " +
+ "Expected brackets for the array expression beginning at " +
range.firstToken().asText());
- }
+ }
return parseList(range.shrink(1));
}
@@ -720,12 +719,12 @@ DictionaryExpression *Parser::parseDictionaryExpression(TokenRange const &range)
range.closingBracket(0) != range.size() - 1)
{
throw MissingTokenError("Parser::parseDictionaryExpression",
- "Expected brackets for the dictionary expression beginning at " +
+ "Expected brackets for the dictionary expression beginning at " +
range.firstToken().asText());
}
TokenRange shrunk = range.shrink(1);
-
- auto_ptr<DictionaryExpression> exp(new DictionaryExpression);
+
+ std::unique_ptr<DictionaryExpression> exp(new DictionaryExpression);
if(shrunk.size() > 0)
{
// The arguments are comma-separated.
@@ -739,7 +738,7 @@ DictionaryExpression *Parser::parseDictionaryExpression(TokenRange const &range)
"Colon is missing from '" + delim.asText() + "' at " +
delim.firstToken().asText());
}
-
+
QScopedPointer<Expression> key(parseExpression(delim.endingTo(colonPos)));
Expression *value = parseExpression(delim.startingFrom(colonPos + 1));
exp->add(key.take(), value);
@@ -752,22 +751,22 @@ Expression *Parser::parseCallExpression(TokenRange const &nameRange, TokenRange
{
//std::cerr << "call name: " << nameRange.asText() << "\n";
//std::cerr << "call args: " << argumentRange.asText() << "\n";
-
+
if(!argumentRange.firstToken().equals(Token::PARENTHESIS_OPEN) ||
argumentRange.closingBracket(0) < argumentRange.size() - 1)
{
throw SyntaxError("Parser::parseCallExpression",
- "Call arguments must be enclosed in parenthesis for " +
+ "Call arguments must be enclosed in parenthesis for " +
argumentRange.firstToken().asText());
}
-
+
// Parse the arguments, with possible labels included.
// The named arguments are evaluated by a dictionary which is always
// included as the first expression in the array.
QScopedPointer<ArrayExpression> args(new ArrayExpression);
DictionaryExpression *namedArgs = new DictionaryExpression;
args->add(namedArgs);
-
+
TokenRange argsRange = argumentRange.shrink(1);
if(!argsRange.empty())
{
@@ -778,7 +777,7 @@ Expression *Parser::parseCallExpression(TokenRange const &nameRange, TokenRange
if(delim.has(ScriptLex::ASSIGN))
{
// A label is included.
- if(delim.size() < 3 ||
+ if(delim.size() < 3 ||
delim.firstToken().type() != Token::IDENTIFIER ||
!delim.token(1).equals(ScriptLex::ASSIGN))
{
@@ -796,7 +795,7 @@ Expression *Parser::parseCallExpression(TokenRange const &nameRange, TokenRange
}
}
}
-
+
// Check for some built-in methods, which are usable everywhere.
if(nameRange.size() == 1)
{
@@ -810,11 +809,11 @@ Expression *Parser::parseCallExpression(TokenRange const &nameRange, TokenRange
return new OperatorExpression(CALL, identifier.take(), args.take());
}
-OperatorExpression *Parser::parseOperatorExpression(Operator op, TokenRange const &leftSide,
+OperatorExpression *Parser::parseOperatorExpression(Operator op, TokenRange const &leftSide,
TokenRange const &rightSide, Expression::Flags const &rightFlags)
{
//std::cerr << "left: " << leftSide.asText() << ", right: " << rightSide.asText() << "\n";
-
+
if(leftSide.empty())
{
// Must be unary.
@@ -909,7 +908,7 @@ Expression *Parser::parseTokenExpression(TokenRange const &range, Expression::Fl
}
else
{
- throw UnexpectedTokenError("Parser::parseTokenExpression",
+ throw UnexpectedTokenError("Parser::parseTokenExpression",
"Unexpected token " + range.token(1).asText());
}
@@ -922,7 +921,7 @@ Expression *Parser::parseTokenExpression(TokenRange const &range, Expression::Fl
case Token::LITERAL_NUMBER:
return new ConstantExpression(
new NumberValue(ScriptLex::tokenToNumber(token)));
-
+
default:
throw UnexpectedTokenError("Parser::parseTokenExpression",
"Unexpected " + token.asText() + " which was identified as " +
@@ -955,20 +954,20 @@ Operator Parser::findLowestOperator(TokenRange const &range, TokenRange &leftSid
for(duint i = 0, continueFrom = 0; i < range.size(); i = continueFrom)
{
continueFrom = i + 1;
-
+
int rank = MAX_RANK;
Operator op = NONE;
Direction direction = LEFT_TO_RIGHT;
-
+
Token const &token = range.token(i);
-
+
if(token.equals(Token::PARENTHESIS_OPEN))
{
continueFrom = range.closingBracket(i) + 1;
if((previousOp == NONE || previousOp == INDEX || previousOp == SLICE ||
previousOp == PARENTHESIS || previousOp == CALL) && i > 0)
{
- // The previous token was not an operator, but there
+ // The previous token was not an operator, but there
// was something before this one. It must be a function
// call.
op = CALL;
@@ -1040,8 +1039,8 @@ Operator Parser::findLowestOperator(TokenRange const &range, TokenRange &leftSid
{ "%", MODULO, 10, LEFT_TO_RIGHT },
{ ".", DOT, RANK_DOT, LEFT_TO_RIGHT },
{ 0, NONE, MAX_RANK, LEFT_TO_RIGHT }
- };
-
+ };
+
// Operator precedence:
// .
// function call
@@ -1052,13 +1051,13 @@ Operator Parser::findLowestOperator(TokenRange const &range, TokenRange &leftSid
// + -
// & | ^
// << >>
- // < > <= >=
+ // < > <= >=
// == !=
// in
// not
// and
// or
-
+
// Check the rankings table.
for(int k = 0; rankings[k].token; ++k)
{
@@ -1067,7 +1066,7 @@ Operator Parser::findLowestOperator(TokenRange const &range, TokenRange &leftSid
op = rankings[k].op;
rank = rankings[k].rank;
direction = rankings[k].direction;
-
+
if(op == DOT) // && previousOp == NONE)
{
op = MEMBER;
@@ -1090,8 +1089,8 @@ Operator Parser::findLowestOperator(TokenRange const &range, TokenRange &leftSid
}
}
}
-
- if(op != NONE &&
+
+ if(op != NONE &&
((direction == LEFT_TO_RIGHT && rank <= lowestRank) ||
(direction == RIGHT_TO_LEFT && rank < lowestRank)))
{
@@ -1104,13 +1103,13 @@ Operator Parser::findLowestOperator(TokenRange const &range, TokenRange &leftSid
}
else
{
- rightSide = range.startingFrom(op == CALL || op == ARRAY ||
+ rightSide = range.startingFrom(op == CALL || op == ARRAY ||
op == DICTIONARY? i : i + 1);
}
}
-
- previousOp = op;
+
+ previousOp = op;
}
-
+
return lowestOp;
}
diff --git a/doomsday/libcore/src/scriptsys/process.cpp b/doomsday/libcore/src/scriptsys/process.cpp
index 45ad671..4baa8a8 100644
--- a/doomsday/libcore/src/scriptsys/process.cpp
+++ b/doomsday/libcore/src/scriptsys/process.cpp
@@ -28,8 +28,6 @@
#include <sstream>
-using std::auto_ptr;
-
namespace de {
DENG2_PIMPL(Process)
@@ -327,7 +325,7 @@ void Process::finish(Value *returnValue)
if(depth() > 1)
{
// Finish the topmost context.
- std::auto_ptr<Context> topmost(popContext());
+ std::unique_ptr<Context> topmost(popContext());
if(topmost->type() == Context::FunctionCall)
{
// Return value to the new topmost level.
diff --git a/doomsday/libcore/src/scriptsys/scriptsystem.cpp b/doomsday/libcore/src/scriptsys/scriptsystem.cpp
index 5238104..c850ded 100644
--- a/doomsday/libcore/src/scriptsys/scriptsystem.cpp
+++ b/doomsday/libcore/src/scriptsys/scriptsystem.cpp
@@ -292,7 +292,7 @@ namespace internal {
File const *ScriptSystem::tryFindModuleSource(String const &name, String const &localPath)
{
// Fall back on the default if the config hasn't been imported yet.
- std::auto_ptr<ArrayValue> defaultImportPath(new ArrayValue);
+ std::unique_ptr<ArrayValue> defaultImportPath(new ArrayValue);
defaultImportPath->add("");
defaultImportPath->add("*"); // Newest module with a matching name.
ArrayValue const *importPath = defaultImportPath.get();
diff --git a/doomsday/libcore/src/scriptsys/statement.cpp b/doomsday/libcore/src/scriptsys/statement.cpp
index 4a24407..49c7449 100644
--- a/doomsday/libcore/src/scriptsys/statement.cpp
+++ b/doomsday/libcore/src/scriptsys/statement.cpp
@@ -14,7 +14,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/Statement"
@@ -46,14 +46,14 @@ Statement *Statement::constructFrom(Reader &reader)
reader.mark();
reader >> id;
reader.rewind();
-
- std::auto_ptr<Statement> result;
+
+ std::unique_ptr<Statement> result;
switch(id)
{
case ASSIGN:
result.reset(new AssignStatement);
break;
-
+
case CATCH:
result.reset(new CatchStatement);
break;
@@ -65,31 +65,31 @@ Statement *Statement::constructFrom(Reader &reader)
case EXPRESSION:
result.reset(new ExpressionStatement);
break;
-
+
case FLOW:
result.reset(new FlowStatement);
break;
-
+
case FOR:
result.reset(new ForStatement);
break;
-
+
case FUNCTION:
result.reset(new FunctionStatement);
break;
-
+
case IF:
result.reset(new IfStatement);
break;
-
+
case PRINT:
result.reset(new PrintStatement);
break;
-
+
case TRY:
result.reset(new TryStatement);
- break;
-
+ break;
+
case WHILE:
result.reset(new WhileStatement);
break;
@@ -97,14 +97,14 @@ Statement *Statement::constructFrom(Reader &reader)
case SCOPE:
result.reset(new ScopeStatement);
break;
-
+
default:
- /// @throw DeserializationError The identifier that species the type of the
+ /// @throw DeserializationError The identifier that species the type of the
/// serialized statement was invalid.
throw DeserializationError("Statement::constructFrom", "Invalid statement identifier");
}
// Deserialize it.
reader >> *result.get();
- return result.release();
+ return result.release();
}
diff --git a/doomsday/libgui/gui.doxy b/doomsday/libgui/gui.doxy
index 173ec89..26e58c4 100644
--- a/doomsday/libgui/gui.doxy
+++ b/doomsday/libgui/gui.doxy
@@ -2,7 +2,7 @@
@INCLUDE = ../doomsday.doxy
PROJECT_NAME = "libgui"
-PROJECT_NUMBER = 1.15.5
+PROJECT_NUMBER = 1.15.7
PROJECT_BRIEF = "Graphics, Audio and Input Library"
OUTPUT_DIRECTORY = ../apidoc/gui/
diff --git a/doomsday/libgui/net.dengine.stdlib.gui.pack/Info b/doomsday/libgui/net.dengine.stdlib.gui.pack/Info
index 9b1e3f8..93f79af 100644
--- a/doomsday/libgui/net.dengine.stdlib.gui.pack/Info
+++ b/doomsday/libgui/net.dengine.stdlib.gui.pack/Info
@@ -1,5 +1,5 @@
title: Doomsday Script Standard Library: GUI
-version: 1.15.5
+version: 1.15.7
license: GPL 3+
tags: core script gui
diff --git a/doomsday/libgui/src/graphics/atlas.cpp b/doomsday/libgui/src/graphics/atlas.cpp
index da6d2f7..a548ebc 100644
--- a/doomsday/libgui/src/graphics/atlas.cpp
+++ b/doomsday/libgui/src/graphics/atlas.cpp
@@ -31,7 +31,7 @@ DENG2_PIMPL(Atlas)
Size totalSize;
int margin;
int border;
- std::auto_ptr<IAllocator> allocator;
+ std::unique_ptr<IAllocator> allocator;
Image backing;
bool needCommit;
bool needFullCommit;
diff --git a/doomsday/libshell/src/abstractlink.cpp b/doomsday/libshell/src/abstractlink.cpp
index 1bb987a..3020e62 100644
--- a/doomsday/libshell/src/abstractlink.cpp
+++ b/doomsday/libshell/src/abstractlink.cpp
@@ -13,7 +13,7 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
- * http://www.gnu.org/licenses</small>
+ * http://www.gnu.org/licenses</small>
*/
#include "de/shell/AbstractLink"
@@ -33,7 +33,7 @@ DENG2_PIMPL(AbstractLink)
Time startedTryingAt;
TimeDelta timeout;
Address peerAddress;
- std::auto_ptr<Socket> socket;
+ std::unique_ptr<Socket> socket;
Status status;
Time connectedAt;
@@ -150,7 +150,7 @@ Packet *AbstractLink::nextPacket()
{
if(!d->socket->hasIncoming()) return 0;
- std::auto_ptr<Message> data(d->socket->receive());
+ std::unique_ptr<Message> data(d->socket->receive());
Packet *packet = interpret(*data.get());
if(packet) packet->setFrom(data->address());
return packet;
diff --git a/doomsday/net.dengine.base.pack/Info b/doomsday/net.dengine.base.pack/Info
index a935a78..768d778 100644
--- a/doomsday/net.dengine.base.pack/Info
+++ b/doomsday/net.dengine.base.pack/Info
@@ -1,6 +1,6 @@
# Shared resources for all Doomsday applications
title: Doomsday Base
-version: 1.15.5
+version: 1.15.7
license: GPL 3+
tags: core
diff --git a/doomsday/plugins/common/include/dmu_archiveindex.h b/doomsday/plugins/common/include/dmu_archiveindex.h
index 2dbafd7..06ccfdb 100644
--- a/doomsday/plugins/common/include/dmu_archiveindex.h
+++ b/doomsday/plugins/common/include/dmu_archiveindex.h
@@ -41,7 +41,7 @@ public:
*
* @param elementType DMU element type of the objects to be indexed.
*/
- ArchiveIndex() : _indexBase(-1), _lut(0)
+ ArchiveIndex() : _indexBase(-1)
{}
/**
@@ -152,7 +152,7 @@ private:
typedef std::vector<MapElementPtr> ElementLut;
int _indexBase;
- std::auto_ptr<ElementLut> _lut;
+ std::unique_ptr<ElementLut> _lut;
};
///@{
diff --git a/doomsday/plugins/doom/data/doom2-freedm.mapinfo b/doomsday/plugins/doom/data/doom2-freedm.mapinfo
new file mode 100644
index 0000000..21946a8
--- /dev/null
+++ b/doomsday/plugins/doom/data/doom2-freedm.mapinfo
@@ -0,0 +1,262 @@
+; Episode 1 ------------------------------------------------------------
+
+episode MAP01
+name "Hell On Earth"
+key h
+
+map MAP01 lookup HUSTR_1
+next MAP02
+warptrans 1
+sky1 SKY1 0
+par 30
+music D_RUNNIN
+titlepatch CWILV00
+
+map MAP02 lookup HUSTR_2
+next MAP03
+warptrans 2
+sky1 SKY1 0
+par 90
+music D_STALKS
+titlepatch CWILV01
+
+map MAP03 lookup HUSTR_3
+next MAP04
+warptrans 3
+sky1 SKY1 0
+par 120
+music D_COUNTD
+titlepatch CWILV02
+
+map MAP04 lookup HUSTR_4
+next MAP05
+warptrans 4
+sky1 SKY1 0
+par 120
+music D_BETWEE
+titlepatch CWILV03
+
+map MAP05 lookup HUSTR_5
+next MAP06
+warptrans 5
+sky1 SKY1 0
+par 90
+music D_DOOM
+titlepatch CWILV04
+
+map MAP06 lookup HUSTR_6
+next MAP07
+warptrans 6
+sky1 SKY1 0
+par 150
+music D_THE_DA
+titlepatch CWILV05
+
+map MAP07 lookup HUSTR_7
+next MAP08
+warptrans 7
+sky1 SKY1 0
+par 120
+music D_SHAWN
+titlepatch CWILV06
+
+map MAP08 lookup HUSTR_8
+next MAP09
+warptrans 8
+sky1 SKY1 0
+par 120
+music D_DDTBLU
+titlepatch CWILV07
+
+map MAP09 lookup HUSTR_9
+next MAP10
+warptrans 9
+sky1 SKY1 0
+par 270
+music D_IN_CIT
+titlepatch CWILV08
+
+map MAP10 lookup HUSTR_10
+next MAP11
+warptrans 10
+sky1 SKY1 0
+par 90
+music D_DEAD
+titlepatch CWILV09
+
+map MAP11 lookup HUSTR_11
+next MAP12
+warptrans 11
+sky1 SKY1 0
+par 210
+music D_STLKS2
+titlepatch CWILV10
+
+map MAP12 lookup HUSTR_12
+next MAP13
+warptrans 12
+sky1 SKY2 0
+par 150
+music D_THEDA2
+titlepatch CWILV11
+
+map MAP13 lookup HUSTR_13
+next MAP14
+warptrans 13
+sky1 SKY2 0
+par 150
+music D_DOOM2
+titlepatch CWILV12
+
+map MAP14 lookup HUSTR_14
+next MAP15
+warptrans 14
+sky1 SKY2 0
+par 150
+music D_DDTBL2
+titlepatch CWILV13
+
+map MAP15 lookup HUSTR_15
+next MAP16
+secretnext MAP31
+warptrans 15
+sky1 SKY2 0
+par 210
+music D_RUNNI2
+titlepatch CWILV14
+
+map MAP16 lookup HUSTR_16
+next MAP17
+warptrans 16
+sky1 SKY2 0
+par 150
+music D_DEAD2
+titlepatch CWILV15
+
+map MAP17 lookup HUSTR_17
+next MAP18
+warptrans 17
+sky1 SKY2 0
+par 420
+music D_STLKS3
+titlepatch CWILV16
+
+map MAP18 lookup HUSTR_18
+next MAP19
+warptrans 18
+sky1 SKY2 0
+par 150
+music D_ROMERO
+titlepatch CWILV17
+
+map MAP19 lookup HUSTR_19
+next MAP20
+warptrans 19
+sky1 SKY2 0
+par 210
+music D_SHAWN2
+titlepatch CWILV18
+
+map MAP20 lookup HUSTR_20
+next MAP21
+warptrans 20
+sky1 SKY2 0
+par 150
+music D_MESSAG
+titlepatch CWILV19
+
+map MAP21 lookup HUSTR_21
+next MAP22
+warptrans 21
+sky1 SKY3 0
+par 240
+music D_COUNT2
+titlepatch CWILV20
+
+map MAP22 lookup HUSTR_22
+next MAP23
+warptrans 22
+sky1 SKY3 0
+par 150
+music D_DDTBL3
+titlepatch CWILV21
+
+map MAP23 lookup HUSTR_23
+next MAP24
+warptrans 23
+sky1 SKY3 0
+par 180
+music D_AMPIE
+titlepatch CWILV22
+
+map MAP24 lookup HUSTR_24
+next MAP25
+warptrans 24
+sky1 SKY3 0
+par 150
+music D_THEDA3
+titlepatch CWILV23
+
+map MAP25 lookup HUSTR_25
+next MAP26
+warptrans 25
+sky1 SKY3 0
+par 150
+music D_ADRIAN
+titlepatch CWILV24
+
+map MAP26 lookup HUSTR_26
+next MAP27
+warptrans 26
+sky1 SKY3 0
+par 300
+music D_MESSG2
+titlepatch CWILV25
+
+map MAP27 lookup HUSTR_27
+next MAP28
+warptrans 27
+sky1 SKY3 0
+par 330
+music D_ROMER2
+titlepatch CWILV26
+
+map MAP28 lookup HUSTR_28
+next MAP29
+warptrans 28
+sky1 SKY3 0
+par 420
+music D_TENSE
+titlepatch CWILV27
+
+map MAP29 lookup HUSTR_29
+next MAP30
+warptrans 29
+sky1 SKY3 0
+par 300
+music D_SHAWN3
+titlepatch CWILV28
+
+map MAP30 lookup HUSTR_30
+warptrans 30
+sky1 SKY3 0
+par 180
+music D_OPENIN
+titlepatch CWILV29
+
+map MAP31 lookup HUSTR_31
+next MAP16
+secretnext MAP32
+warptrans 31
+sky1 SKY3 0
+par 120
+music D_EVIL
+titlepatch CWILV30
+
+map MAP32 lookup HUSTR_32
+next MAP16
+warptrans 32
+sky1 SKY3 0
+par 30
+music D_ULTIMA
+titlepatch CWILV31
diff --git a/doomsday/plugins/doom/defs/doom2-freedm.ded b/doomsday/plugins/doom/defs/doom2-freedm.ded
new file mode 100644
index 0000000..6162093
--- /dev/null
+++ b/doomsday/plugins/doom/defs/doom2-freedm.ded
@@ -0,0 +1,28 @@
+#
+# FreeDM - Doomsday Engine definitions
+#
+# For information about DED syntax and semantics, see http://wiki.dengine.net/w/DED
+#
+
+# Common definitions
+Include "jdoom.ded";
+
+# MAPINFO interoperability patches
+Include "doom2/patchmapinfo.ded";
+
+Include "doom1/anim.ded";
+Include "doom2/anim.ded";
+Include "doom2/skies.ded";
+Include "doom2/finales.ded";
+Include "doom1/fonts.ded";
+Include "doom1/materials.ded";
+Include "doom1/materialenvironments.ded";
+Include "doom2/materialenvironments.ded";
+Include "doom1/particles.ded";
+Include "doom2/particles.ded";
+Include "doom1/lights.ded";
+Include "doom2/lights.ded";
+Include "doom2/music.ded";
+Include "doom1/menu.ded";
+Include "doom1/hud.ded";
+Include "doom1/inlude.ded";
diff --git a/doomsday/plugins/doom/include/doomdef.h b/doomsday/plugins/doom/include/doomdef.h
index 62e5d92..8868939 100644
--- a/doomsday/plugins/doom/include/doomdef.h
+++ b/doomsday/plugins/doom/include/doomdef.h
@@ -72,10 +72,11 @@ typedef enum {
doom2_plut,
doom2_tnt,
doom2_hacx,
+ doom2_freedm,
NUM_GAME_MODES
} gamemode_t;
-// Game mode bits for the above.
+// Game mode bits for the above (must match the enum order).
#define GM_DOOM_SHAREWARE 0x1
#define GM_DOOM 0x2
#define GM_DOOM_ULTIMATE 0x4
@@ -84,9 +85,10 @@ typedef enum {
#define GM_DOOM2_PLUT 0x20
#define GM_DOOM2_TNT 0x40
#define GM_DOOM2_HACX 0x80
+#define GM_DOOM2_FREEDM 0x100
#define GM_ANY_DOOM (GM_DOOM|GM_DOOM_SHAREWARE|GM_DOOM_ULTIMATE|GM_DOOM_CHEX)
-#define GM_ANY_DOOM2 (GM_DOOM2|GM_DOOM2_PLUT|GM_DOOM2_TNT|GM_DOOM2_HACX)
+#define GM_ANY_DOOM2 (GM_DOOM2|GM_DOOM2_PLUT|GM_DOOM2_TNT|GM_DOOM2_HACX|GM_DOOM2_FREEDM)
#define GM_ANY (GM_ANY_DOOM|GM_ANY_DOOM2)
#define SCREENWIDTH 320
diff --git a/doomsday/plugins/doom/src/d_api.c b/doomsday/plugins/doom/src/d_api.c
index 8704589..fa089a8 100644
--- a/doomsday/plugins/doom/src/d_api.c
+++ b/doomsday/plugins/doom/src/d_api.c
@@ -99,6 +99,12 @@ int G_RegisterGames(int hookType, int param, void *data)
LEGACYSAVEGAMENAMEEXP, LEGACYSAVEGAMESUBFOLDER,
"$(App.DataPath)/$(GamePlugin.Name)/doom2.mapinfo"
};
+ GameDef const freeDMDef = {
+ "doom2-freedm", "doom",
+ "FreeDM", "Freedoom Project",
+ LEGACYSAVEGAMENAMEEXP, LEGACYSAVEGAMESUBFOLDER,
+ "$(App.DataPath)/$(GamePlugin.Name)/doom2-freedm.mapinfo"
+ };
GameDef const doomUltimateDef = {
"doom1-ultimate", "doom",
"Ultimate DOOM", "id Software",
@@ -144,6 +150,12 @@ int G_RegisterGames(int hookType, int param, void *data)
DD_AddGameResource(GID(doom2_plut), RC_PACKAGE, FF_STARTUP, "plutonia.wad", "_DEUTEX_;MAP01;MAP25;MC5;MC11;MC16;MC20");
DD_AddGameResource(GID(doom2_plut), RC_DEFINITION, 0, "doom2-plut.ded", 0);
+ /* DOOM2 - FreeDM */
+ gameIds[doom2_freedm] = DD_DefineGame(&freeDMDef);
+ DD_AddGameResource(GID(doom2_freedm), RC_PACKAGE, FF_STARTUP, STARTUPPK3, 0);
+ DD_AddGameResource(GID(doom2_freedm), RC_PACKAGE, FF_STARTUP, "freedm.wad", "MAP01");
+ DD_AddGameResource(GID(doom2_freedm), RC_DEFINITION, 0, "doom2-freedm.ded", 0);
+
/* DOOM2 */
gameIds[doom2] = DD_DefineGame(&doom2Def);
DD_AddGameResource(GID(doom2), RC_PACKAGE, FF_STARTUP, STARTUPPK3, 0);
@@ -186,6 +198,7 @@ void DP_Load(void)
gameIds[doom2_tnt] = DD_GameIdForKey("doom2-tnt");
gameIds[doom2_plut] = DD_GameIdForKey("doom2-plut");
gameIds[doom2_hacx] = DD_GameIdForKey("hacx");
+ gameIds[doom2_freedm] = DD_GameIdForKey("doom2-freedm");
Plug_AddHook(HOOK_VIEWPORT_RESHAPE, R_UpdateViewport);
}
diff --git a/doomsday/sdk-qch.doxy b/doomsday/sdk-qch.doxy
index 8c3a9ba..77a42bb 100644
--- a/doomsday/sdk-qch.doxy
+++ b/doomsday/sdk-qch.doxy
@@ -5,8 +5,8 @@ OUTPUT_DIRECTORY = apidoc-qch/
# Also generate help files for Qt Creator
GENERATE_QHP = YES
QCH_FILE = "doomsday.qch"
-QHP_NAMESPACE = "net.dengine.sdk.1155"
-QHP_VIRTUAL_FOLDER = "doomsday-1.15.5"
+QHP_NAMESPACE = "net.dengine.sdk.1157"
+QHP_VIRTUAL_FOLDER = "doomsday-1.15.7"
QHG_LOCATION = "../build/scripts/qhelp.py"
# Dynamic HTML doesn't work inside Qt Creator
diff --git a/doomsday/tools/shell/shell-gui/src/localserverdialog.cpp b/doomsday/tools/shell/shell-gui/src/localserverdialog.cpp
index dca5219..47fc917 100644
--- a/doomsday/tools/shell/shell-gui/src/localserverdialog.cpp
+++ b/doomsday/tools/shell/shell-gui/src/localserverdialog.cpp
@@ -21,6 +21,7 @@
#include "guishellapp.h"
#include <de/libcore.h>
#include <de/Socket>
+#include <de/CommandLine>
#include <de/shell/DoomsdayInfo>
#include <QVBoxLayout>
#include <QDialogButtonBox>
@@ -226,7 +227,15 @@ QStringList LocalServerDialog::additionalOptions() const
QStringList opts;
opts << "-cmd" << QString("server-password \"%1\"").arg(d->password->text());
opts << "-cmd" << QString("server-public %1").arg(d->announce->isChecked()? 1 : 0);
- opts << d->options->toPlainText().split(' ', QString::SkipEmptyParts);
+
+ // Parse the provided options using libcore so quotes and other special
+ // behavior matches Doomsday.
+ CommandLine cmdLine;
+ cmdLine.parse(d->options->toPlainText());
+ for(int i = 0; i < cmdLine.count(); ++i)
+ {
+ opts << cmdLine.at(i);
+ }
return opts;
}
@@ -241,7 +250,7 @@ void LocalServerDialog::portChanged()
}
void LocalServerDialog::configureGameOptions()
-{
+{
}
void LocalServerDialog::saveState()
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/deng.git
More information about the Pkg-games-commits
mailing list