Mercurial > projects > mde
changeset 69:ead4afc6d0b8
Merged in tango updates.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Fri, 04 Jul 2008 18:53:28 +0100 |
parents | 3a737e06dc50 (diff) f54ae4fc2b2f (current diff) |
children | 7fc0a8295c83 |
files | |
diffstat | 20 files changed, 111 insertions(+), 183 deletions(-) [+] |
line wrap: on
line diff
--- a/data/conf/input.mtt Wed Jul 02 17:10:07 2008 +0100 +++ b/data/conf/input.mtt Fri Jul 04 18:53:28 2008 +0100 @@ -2,14 +2,3 @@ !<char[][]|Configs=["Default"]> {Default} <uint[][uint]|B=[ 0x8800001B : [[0x1000, 0x0]] ]> -{UnitTest} -<uint[][uint]|B=[ - 0x88000124 : [[0x1000, 0x00F0]], - 0x40000003 : [[0x1000, 0x01F0]], - 0x20002005 : [ [0x1000,0x02F0],[0x1000,0x03F0] ], - 0x110D600C : [[0x1000,0x04F0]], - 0x120D600C : [[0x1000,0x05F0]], - 0x140D600C : [[0x1000,0x06F0]], - 0x180D600C : [[0x1000,0x07F0]] ]> -<uint[][uint]|A=[0x80001008 : [[0x1000,0x20F0]],0x130D600C : [[0x1000,0x21F0]] , 0x1C0D600C : [[0x1000,0x22F0]]]> -<uint[][uint]|M=[ 0x88000000 : [[0x1000, 0x10F0], [0x1000, 0x11F0]], 0x40016064:[[0x1000,0x12F0]]]>
--- a/doc/Building.txt Wed Jul 02 17:10:07 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ ---- Dependencies --- -Compile-time: -tango 0.99.6 -tango.scrapple -derelict (at least revision 300) - -Run-time: -Sdl -FreeType 2.3.5 (2.3.0 might work; older versions probably won't due to the binding not finding some (unneeded) symbols). -OpenGL 1.3 or higher - - ---- Building --- -dsss build -bin/mde or bin\mde (depending on platform) - -See the readme for more information.
--- a/doc/Readme.txt Wed Jul 02 17:10:07 2008 +0100 +++ b/doc/Readme.txt Fri Jul 04 18:53:28 2008 +0100 @@ -1,11 +1,23 @@ Copyright © 2007-2008 Diggory Hardy License: GNU General Public License version 2 or later (see COPYING) -Some brief info: +--- Some brief info --- + +-- Platforms -- +Linux: My development platform. +Windows: Poorly tested; dsss.conf needs some adjusting. -Platforms: -I work on mde using linux and perform most testing on this platform. -I have done a little testing on Windows, but currently it's highly likely there may be problems on this platform. +-- Dependencies -- +Compile-time: +tango (at least r3697) +tango.scrapple (newer than current r58!) +derelict (at least r300) + +Run-time: +Sdl +FreeType 2.3.5 (2.3.0 might work; older versions probably won't due to the binding not finding some (unneeded) symbols). +OpenGL 1.3 or higher + Build instructions: dsss build @@ -14,7 +26,8 @@ Testing: dsss clean (this is important if a previous build exists!) -dsss build bin/mdeTest +dsss build -debug -debug=mdeUnitTest -C-unittest +bin/mde or bin\mde Credits: Me (Diggory Hardy) for just about everything in mde as of now.
--- a/dsss.conf Wed Jul 02 17:10:07 2008 +0100 +++ b/dsss.conf Fri Jul 04 18:53:28 2008 +0100 @@ -16,11 +16,3 @@ [util/mtcp.d] target=bin/mtcp - -[test/mdeTest.d] -buildflags=-debug -debug=mdeUnitTest -unittest -target=bin/mdeTest -noinstall -version (Posix) { - buildflags+=-L-ldl -}
--- a/mde/font/font.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/font/font.d Fri Jul 04 18:53:28 2008 +0100 @@ -67,10 +67,8 @@ // Check version FT_Int maj, min, patch; FT_Library_Version (library, &maj, &min, &patch); - if (maj != 2 || min != 3) { - char[128] tmp; - logger.warn (logger.format (tmp, "Using an untested FreeType version: {}.{}.{}", maj, min, patch)); - } + if (maj != 2 || min != 3) + logger.warn ("Using an untested FreeType version: {}.{}.{}", maj, min, patch); // Set LCD filtering method if LCD rendering is enabled. const RMF = FT_LOAD_TARGET_LCD | FT_LOAD_TARGET_LCD_V;
--- a/mde/gl/draw.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/gl/draw.d Fri Jul 04 18:53:28 2008 +0100 @@ -42,8 +42,7 @@ GLenum err = glGetError(); while (err != GL_NO_ERROR) { - char[128] tmp; - logger.error (logger.format (tmp, "GL error: {}", err)); + logger.error ("GL error: {}", err); err = glGetError(); }
--- a/mde/input/Config.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/input/Config.d Fri Jul 04 18:53:28 2008 +0100 @@ -154,8 +154,9 @@ if (file_configs) file.read(file_configs); // restrict to this set IF a restriction was given else file.read(); // otherwise read all } - catch (MT.MTException) { - logger.fatal ("Unable to load configs from: " ~ filename); + catch (MT.MTException e) { + logger.fatal ("Unable to load configs from: " ~ filename ~ ":"); + logger.fatal (e.msg); throw new ConfigLoadException; } @@ -168,8 +169,7 @@ } debug (MDE_CONFIG_DUMP) { - char tmp[128] = void; - logger.trace (logger.format (tmp, "Loaded {} config sections.", configs.length)); + logger.trace ("Loaded {} config sections.", configs.length); foreach (id, cfg; configs) { logger.trace ("Section " ~ id ~ ":\n\tbutton:\t\t" ~ parseFrom!(uint[][][uint])(cfg.button) ~
--- a/mde/input/Input.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/input/Input.d Fri Jul 04 18:53:28 2008 +0100 @@ -349,8 +349,8 @@ * * Throws: ConfigLoadException if unable to load any configs or the requested config id wasn't * found. */ - void loadConfig (char[] profile = "Default") { - Config.load("input"); // FIXME: filename + void loadConfig (char[] file, char[] profile = "Default") { + Config.load(file); Config* c_p = profile in Config.configs; if (c_p) config = *c_p; else { @@ -545,7 +545,7 @@ /* This unittest covers input.config.Config and input.input.Input for some events of all types. - * It is not bullet-proof, and does not cover the steam-functions other than the direct output + * It is not bullet-proof, and does not cover the stream-functions other than the direct output * ones (largely because these may get added at any time and tested via input tests). * * What it does test: @@ -557,7 +557,7 @@ * currently conf/input.mtt). */ debug (mdeUnitTest) unittest { Input ut = new Input(); - ut.loadConfig ("UnitTest"); + ut.loadConfig ("unittest/InputConfig"); int[6] counters; // counters for callbacks // Should become: [2,2,0,2,1,1]
--- a/mde/input/joystick.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/input/joystick.d Fri Jul 04 18:53:28 2008 +0100 @@ -37,15 +37,14 @@ */ void openJoysticks () { joysticks = new SDL_Joystick*[SDL_NumJoysticks ()]; - char tmp[128] = void; for (int i = 0; i < joysticks.length; ++i) { if ((joysticks[i] = SDL_JoystickOpen (i)) is null) { // null on failure - logger.error (logger.format (tmp, "Unable to open joystick {} via SDL", i)); + logger.error ("Unable to open joystick {} via SDL", i); } } - logger.info (logger.format (tmp, "Opened {} joysticks via SDL, succesfully unless preceding errors say otherwise.", joysticks.length)); + logger.info ("Opened {} joysticks via SDL, succesfully unless preceding errors say otherwise.", joysticks.length); } /// Cleanup fct.
--- a/mde/lookup/Options.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/lookup/Options.d Fri Jul 04 18:53:28 2008 +0100 @@ -135,7 +135,6 @@ * If the file doesn't exist, no reading is attempted (options are left at default values). */ private const fileName = "options"; - private const MT_LOAD_EXC = "Loading options aborted:"; void load () { // Check it exists (if not it should still be created on exit). // Don't bother checking it's not a folder, because it could still be a block or something. @@ -152,7 +151,7 @@ }; reader.read; } catch (MTException e) { - logger.fatal (MT_LOAD_EXC); + logger.fatal ("Loading options aborted:"); logger.fatal (e.msg); throw new optionsLoadException ("Mergetag exception (see above message)"); } @@ -176,7 +175,7 @@ // Presuming the former, this is not a problem. } catch (MTException e) { // Log a message and continue, overwriting the file: - logger.error (MT_LOAD_EXC); + logger.error ("Loading options aborted:"); logger.error (e.msg); }
--- a/mde/mde.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/mde.d Fri Jul 04 18:53:28 2008 +0100 @@ -40,6 +40,10 @@ { //BEGIN Initialisation Logger logger = Log.getLogger ("mde.mde"); + debug (mdeUnitTest) { + logger.info ("Compiled unittests have completed; terminating."); + return 0; + } // Create instances now, so they can be used during init (if necessary) input = new Input();
--- a/mde/mergetag/Reader.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/mergetag/Reader.d Fri Jul 04 18:53:28 2008 +0100 @@ -28,10 +28,11 @@ import tango.core.Exception; // tango imports +import tango.io.FilePath; import tango.io.UnicodeFile; import Util = tango.text.Util; import ConvInt = tango.text.convert.Integer; -import tango.util.collection.model.View : View; +//import tango.util.collection.model.View : View; import tango.util.collection.HashSet : HashSet; import tango.util.log.Log : Log, Logger; @@ -53,7 +54,7 @@ * ) * */ -IReader makeReader (PathView path, DataSet ds = null, bool rdHeader = false) { +IReader makeReader (FilePath path, DataSet ds = null, bool rdHeader = false) { if (path.ext == "mtb") return new MTBReader (path, ds, rdHeader); else if (path.ext == "mtt") return new MTTReader (path, ds, rdHeader); else throw new MTFileIOException ("Invalid mergetag extension"); @@ -63,7 +64,7 @@ * * Tries adding both ".mtt" and ".mtb" extensions, returning whichever exists (the most recently * modified if both exist), or returns null if neither exist. */ -PathView findFile (char[] path) { +FilePath findFile (char[] path) { if (path is null) return null; FilePath tPath = new FilePath (path ~ ".mtt"); @@ -213,7 +214,7 @@ this (new FilePath (path), ds, rdHeader); } /** ditto */ - public this (PathView path, DataSet ds = null, bool rdHeader = false) { + public this (FilePath path, DataSet ds = null, bool rdHeader = false) { // Create a dataset or use an existing one if (ds !is null) _dataset = ds; else _dataset = new DataSet();
--- a/mde/mergetag/Writer.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/mergetag/Writer.d Fri Jul 04 18:53:28 2008 +0100 @@ -90,12 +90,14 @@ * Throws: * MTFileFormatException if unable to determine writing format or use requested format. */ -IWriter makeWriter (char[] path, DataSet dataset = null, WriterMethod method = WriterMethod.FromExtension) { +//FIXME: separate functions for separate functionality, like in Reader? +IWriter makeWriter (char[] path, DataSet dataset = null, + WriterMethod method = WriterMethod.FromExtension) { if (method == WriterMethod.FromExtension) { - PathView fpath = new FilePath (path); - - if (fpath.ext == "mtt") return new MTTWriter (fpath, dataset); - else if (fpath.ext == "mtb") return new MTBWriter (fpath, dataset); + if (path.length > 4 && path[$-4..$] == ".mtt") + return new MTTWriter (path, dataset); + else if (path.length > 4 && path[$-4..$] == ".mtb") + return new MTBWriter (path, dataset); else { logger.error ("Unable to determine writing format: text or binary"); throw new MTFileFormatException; @@ -143,7 +145,7 @@ /* The container where data is written from. */ DataSet _dataset; - PathView _path; + char[] _path; //END DATA //BEGIN CTOR / DTOR @@ -152,16 +154,12 @@ * The call doesn't actually execute any code so cannot fail (unless out of memory). * * Params: - * path = The name or FilePath of the file to open. + * path = The name of the file to open. * Standard extensions are .mtt and .mtb for text and binary files respectively. * dataset_ = If null create a new DataSet, else use existing DataSet *dataset_ and merge read * data into it. */ public this (char[] path, DataSet ds = null) { - this (new FilePath (path), ds); - } - /** ditto */ - public this (PathView path, DataSet ds = null) { _path = path; _dataset = ds; } @@ -235,9 +233,6 @@ */ class MTBWriter : IWriter { public this (char[] path, DataSet ds = null) { - this (new FilePath (path), ds); - } - public this (PathView path, DataSet ds = null) { throw new MTNotImplementedException; /+_path = path;
--- a/mde/setup/Init.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/setup/Init.d Fri Jul 04 18:53:28 2008 +0100 @@ -37,15 +37,9 @@ import tango.io.Console; // for printing command-line usage import TimeStamp = tango.text.convert.TimeStamp, tango.time.WallClock; // output date in log file import tango.util.Arguments; -import tango.util.log.Log : Log, Logger; -import tango.util.log.ConsoleAppender : ConsoleAppender; - -//version = SwitchAppender; -version (SwitchAppender) { // My own variation, currently just a test - import tango.util.log.SwitchingFileAppender : SwitchingFileAppender; -} else { - import tango.util.log.RollingFileAppender : RollingFileAppender; -} +import tango.util.log.Log : Log, Logger, Level; +import tango.util.log.AppendConsole; +import tango.util.log.AppendFiles; // Derelict imports import derelict.opengl.gl; @@ -62,12 +56,12 @@ */ static this() { - Logger root = Log.getRootLogger(); + Logger root = Log.root; // Set the level here, but set it again once options have been loaded: - debug root.setLevel(root.Level.Trace); - else root.setLevel(root.Level.Info); + debug root.level(Logger.Trace); + else root.level(Logger.Info); // Temporarily log to the console (until we've found paths and loaded options): - root.addAppender(new ConsoleAppender); + root.add(new AppendConsole); } static ~this() { @@ -167,35 +161,31 @@ } // Where logging is done to is determined at compile-time, currently just via static ifs. - root = Log.getRootLogger(); - root.clearAppenders; // we may no longer want to log to the console + root = Log.root; + root.clear; // we may no longer want to log to the console // Now re-set the logging level, using the value from the config file: - root.setLevel (cast(Log.Level) (miscOpts.logOptions & LOG.LEVEL), true); + root.level (cast(Level) (miscOpts.logOptions & LOG.LEVEL), true); // Log to a file (first appender so root seperator messages don't show on console): if (miscOpts.logOptions & LOG.ROLLFILE) { - version (SwitchAppender) { - root.addAppender (new SwitchingFileAppender (paths.logDir~"/log-.txt", 5)); - } else { // Use 2 log files with a maximum size of 1 MB: - root.addAppender (new RollingFileAppender (paths.logDir~"/log-.txt", 2, 1024*1024)); - root.info (""); // some kind of separation between runs - root.info (""); - } + root.add (new AppendFiles (paths.logDir~"/log-.txt", 2, 1024*1024)); + root.info (""); // some kind of separation between runs + root.info (""); } else if (!(miscOpts.logOptions & LOG.CONSOLE)) { // make sure at least one logger is enabled miscOpts.set!(int) ("logOptions", miscOpts.logOptions | LOG.CONSOLE); } if (miscOpts.logOptions & LOG.CONSOLE) { // Log to the console - root.addAppender(new ConsoleAppender); + root.add(new AppendConsole); } logger.info ("Starting mde [no version] on " ~ TimeStamp.toString(WallClock.now)); } catch (Exception e) { // Presumably it was only adding a file appender which failed; set up a new console // logger and if that fails let the exception kill the program. - root.clearAppenders; - root.addAppender (new ConsoleAppender); + root.clear; + root.add (new AppendConsole); logger.warn ("Exception while setting up the logger; logging to the console instead."); }
--- a/mde/setup/init2.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/setup/init2.d Fri Jul 04 18:53:28 2008 +0100 @@ -71,7 +71,7 @@ void initInput () { // init func try { - imde.input.loadConfig (); // (may also create instance) + imde.input.loadConfig ("input"); // Quit on escape. NOTE: quit via SDL_QUIT event is handled completely independently! imde.input.addButtonCallback (cast(Input.inputID) 0x0u, delegate void(Input.inputID i, bool b) {
--- a/mde/setup/paths.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/setup/paths.d Fri Jul 04 18:53:28 2008 +0100 @@ -26,7 +26,7 @@ * Currently the paths are found as follows: (see codeDoc/paths.txt) */ /* Implementation note: -* All paths are stored internally as strings, rather than as an instance of FilePath/PathView once +* All paths are stored internally as strings, rather than as an instance of FilePath/FilePath once * the FilePath has served its immediate purpose, since it's more convenient and creating new * FilePaths for adjusted paths should be no slower than mutating existing ones. */ module mde.setup.paths; @@ -71,7 +71,7 @@ */ IReader makeMTReader (char[] file, PRIORITY readOrder, DataSet ds = null, bool rdHeader = false) { - PathView[] files = getFiles (file, readOrder); + FilePath[] files = getFiles (file, readOrder); if (files is null) throw new MTFileIOException ("Unable to find the file: "~file~"[.mtt|mtb]"); @@ -95,7 +95,7 @@ * matches are found), or "no file found". Intended for user output only. */ char[] getFileName (char[] file, PRIORITY readOrder) { - PathView[] files = getFiles (file, readOrder); + FilePath[] files = getFiles (file, readOrder); if (files is null) return "no file found"; @@ -124,22 +124,34 @@ } private: - PathView[] getFiles (char[] filename, PRIORITY readOrder) + FilePath[] getFiles (char[] filename, PRIORITY readOrder) in { assert (readOrder == PRIORITY.LOW_HIGH || readOrder == PRIORITY.HIGH_LOW || readOrder == PRIORITY.HIGH_ONLY ); } body { - PathView[] ret; + FilePath[] ret; + + debug (mdeUnitTest) { + /* Alternate approach - just try from current directory. + * Really just for unittests, but with the if condition it shouldn't break anything else. */ + if (pathsLen == 0) { + FilePath file = findFile (filename); + if (file !is null) + ret ~= file; + return ret; + } + } + if (readOrder == PRIORITY.LOW_HIGH) { for (size_t i = 0; i < pathsLen; ++i) { - PathView file = findFile (paths[i]~filename); + FilePath file = findFile (paths[i]~filename); if (file !is null) ret ~= file; } } else { for (int i = pathsLen - 1; i >= 0; --i) { - PathView file = findFile (paths[i]~filename); + FilePath file = findFile (paths[i]~filename); if (file !is null) { ret ~= file; if (readOrder == PRIORITY.HIGH_ONLY) break; @@ -208,10 +220,10 @@ // Base paths: // Static data (must exist): - PathView staticPath = + FilePath staticPath = findPath (false, "/usr/share/games/mde", "/usr/local/share/games/mde", "data"); // Config (can just use defaults if necessary, so long as we can save afterwards): - PathView userPath = findPath (true, HOME~"/.config/mde", HOME~"/.mde"); + FilePath userPath = findPath (true, HOME~"/.config/mde", HOME~"/.mde"); // Static data paths: dataDir.addPath (staticPath.toString); // we know this is valid anyway @@ -236,9 +248,9 @@ //http://www.dsource.org/projects/tango/forums/topic/187 // Base paths: - PathView installPath = findPath (false, base); - PathView staticPath = findPath (false, installPath.append("data").toString); - PathView userPath = findPath (true, installPath.append("user").toString); // FIXME: see above + FilePath installPath = findPath (false, base); + FilePath staticPath = findPath (false, installPath.append("data").toString); + FilePath userPath = findPath (true, installPath.append("user").toString); // FIXME: see above // Static data paths: dataDir.addPath (staticPath.toString); // we know this is valid anyway @@ -277,7 +289,7 @@ /* Try each path in succession, returning the first to exist and be a folder. * If none are valid and create is true, will try creating each in turn. * If still none are valid, throws. */ - PathView findPath (bool create, char[][] paths ...) { + FilePath findPath (bool create, char[][] paths ...) { FilePath[] fps; fps.length = paths.length; foreach (i,path; paths) { @@ -305,7 +317,7 @@ */ class mdeReader : IReader { - private this (PathView[] files, DataSet ds, bool rdHeader) + private this (FilePath[] files, DataSet ds, bool rdHeader) in { assert (files !is null, "mdeReader.this: files is null"); } body {
--- a/mde/setup/sdl.d Wed Jul 02 17:10:07 2008 +0100 +++ b/mde/setup/sdl.d Fri Jul 04 18:53:28 2008 +0100 @@ -93,13 +93,12 @@ // Print a load of info: logger.info ("Available video modes:"); - char[128] tmp; SDL_Rect** modes = SDL_ListModes (null, SDL_FULLSCREEN); if (modes is null) logger.info ("None!"); else if (modes is cast(SDL_Rect**) -1) logger.info ("All modes are available"); else { for (uint i = 0; modes[i] !is null; ++i) { - logger.info (logger.format (tmp, "\t{}x{}", modes[i].w, modes[i].h)); + logger.info ("\t{}x{}", modes[i].w, modes[i].h); } } @@ -107,11 +106,11 @@ if (vi !is null) { logger.info ("Video info:"); logger.info ("Hardware surface support: "~ (vi.flags & SDL_HWSURFACE ? "yes" : "no")); - logger.info (logger.format (tmp, "Video memory: {}", vi.video_mem)); + logger.info ("Video memory: {}", vi.video_mem); if (vi.vfmt !is null) { logger.info ("Best video mode:"); - logger.info (logger.format (tmp, "Bits per pixel: {}", vi.vfmt.BitsPerPixel)); + logger.info ("Bits per pixel: {}", vi.vfmt.BitsPerPixel); } }
--- a/test/mdeTest.d Wed Jul 02 17:10:07 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* LICENSE BLOCK -Part of mde: a Modular D game-oriented Engine -Copyright © 2007-2008 Diggory Hardy - -This program is free software: you can redistribute it and/or modify it under the terms -of the GNU General Public License as published by the Free Software Foundation, either -version 2 of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; -without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -/** A module to run all mde unittests and potentially to perform other tests. -* -* Purpose: an easy mechanism to perform all tests. -* -* Unittests do NOT require this module to run, however since the full executable may become complex -* and thus not be the ideal tool to perform testing, tests may also be run from here. -*/ -module test.mdeTest; - -// This module should import all mde modules containing unittests: -import mde.input.input; -import mde.mergetag.DataSet; -import mde.mergetag.mtunittest; -import mde.exception; -import mde.scheduler.Init; -import mde.scheduler.Scheduler; -import mde.i18n.I18nTranslation; - -import tango.util.log.Log : Log, Logger; - -private Logger logger; - -static this() -{ - // In case no console-appender is added by Init, add one here (doesn't hurt if it's an extra) - Log.getRootLogger.addAppender(new ConsoleAppender); - - logger = Log.getLogger ("test.mdeTest"); - - logger.info ("Running unittests..."); - logger.info ("Note: you will probably need to clean before building to run all unittests"); - logger.info ("−−−−−−−−"); -} - -void main() { - logger.info ("−−−−−−−−"); - logger.info ("All unittests complete."); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/unittest/InputConfig.mtt Fri Jul 04 18:53:28 2008 +0100 @@ -0,0 +1,13 @@ +{MT01} +!{Config for the input.Input unittest} +{Default} +<uint[][uint]|B=[ + 0x88000124 : [[0x1000, 0x00F0]], + 0x40000003 : [[0x1000, 0x01F0]], + 0x20002005 : [ [0x1000,0x02F0],[0x1000,0x03F0] ], + 0x110D600C : [[0x1000,0x04F0]], + 0x120D600C : [[0x1000,0x05F0]], + 0x140D600C : [[0x1000,0x06F0]], + 0x180D600C : [[0x1000,0x07F0]] ]> +<uint[][uint]|A=[0x80001008 : [[0x1000,0x20F0]],0x130D600C : [[0x1000,0x21F0]] , 0x1C0D600C : [[0x1000,0x22F0]]]> +<uint[][uint]|M=[ 0x88000000 : [[0x1000, 0x10F0], [0x1000, 0x11F0]], 0x40016064:[[0x1000,0x12F0]]]>
--- a/util/mtcp.d Wed Jul 02 17:10:07 2008 +0100 +++ b/util/mtcp.d Fri Jul 04 18:53:28 2008 +0100 @@ -29,12 +29,7 @@ import tango.io.FilePath; // Logger, used by mergetag: -import tango.util.log.Log : Log, Logger; -import tango.util.log.ConsoleAppender : ConsoleAppender; -static this() { - Logger root = Log.getRootLogger(); - root.addAppender(new ConsoleAppender); -} +import tango.util.log.Config; int main (char[][] args) {