http://www.teaser.fr/~amajorel/yadex/yadex-1.6.0.diff.gz
WHAT IS THIS
This is a patch to turn Yadex 1.5.2 into Yadex 1.6.0. To
apply, cd into the directory where the Yadex 1.5.2 source is
and type
gzip -d 3) zoom factor, sometimes the
+ sector actually appeared on the window, even though it was supposed
+ to be a few thousand pixels off-screen. I don't know if the
+ "oddity" is in Xlib, in the X server or in my video card but,
+ interestingly, the symptoms show up only when drawing horizontal or
+ vertical lines on the window, not when drawing oblique lines or on
+ the pixmap.
+
+ Since it only occurs at high zoom factors, it must be some sort of
+ overflow error though it doesn't look like a 32-bit value being
+ truncated to 16 bits because the values are too small. Strange. I
+ dumbly worked around it by skipping off-screen objects.
+
+ * Editing: A linedef, thing or vertex is highlighted if the pointer
+ is within 15 pixels of it. Previously, the threshold was 20 map
+ units which was too narrow at low zoom factors and too broad at
+ high zoom factors. This change makes drawing selection boxes in
+ crowded areas much easier than before.
+
+ * Editing: Configuration variables thing_fudge and vertex_fudge are
+ gone, since they've been made irrelevant by changes in the
+ highlighting code.
+
+ * Editing: If the pointer is within highlighting distance of more
+ than one thing, the one that is highlighted is the one in which the
+ pointer is, or the one that has the smallest radius, or the one
+ whose centre is nearest. Previously, the lowest-numbered one was
+ highlighted, making it impossible to select, say, a high numbered
+ baron standing in the same spot as an arachnotron.
+
+ * Editing: Restored [Shift][Ins] that was inadvertently disabled
+ during the port to X. Thanks to Ingo van Lil for reporting this
+ bug.
+
+ * Editing: If a linedef has a negative tag, tagged sectors are now
+ shown.
+
+ * Editing: As per Ingo van Lil's suggestion, if a linedef is tagged
+ to more than one sector, a "+" is appended to the sector number in
+ the object info window. Similarly, if a sector is tagged to more
+ than one linedef, a "+" is appended to the linedef number in the
+ object info window.
+
+ * Editing: In the object info window, tag 667 is now marked as
+ special. Yadex catches up with that newfangled Doom II thing.
+
+ * Editing: The static text in the object info boxes is now a bit
+ dimmer to make the important information stand out.
+
+ * Editing: Started working on a global mode, where you can work with
+ all types of objects at once, vertices, linedefs, sectors and
+ things. It's toggled by pressing [Ctrl][g] in the editing window.
+ Since it's an experimental feature, it comes with a big fat
+ warning, that you should take seriously. One known bug is that
+ selection is broken is this mode. Overhauled GetCurObject() to make
+ it able to cope with global mode.
+
+ * Editing: [1] through [9] and [0] are now configurable through the
+ new variables "digit_zoom_base" and "digit_zoom_step". The default
+ values are set to roughly emulate the old behaviour but it's now
+ possible to have the zoom factor increase across the keyboard, for
+ instance. Patch by AJA.
+
+ * Editing: New variable "blindly_swap_sidedefs" to prevent Yadex from
+ asking for confirmation when swapping sidedefs. Patch by AJA.
+
+ * Editing: Placeat AJA, it's now possible to toggle the object info
+ boxes with [i]. Toggling the info bar is now bound to [Alt][i].
+
+ * Editing: The "Info bar" item has been moved from the "Help" menu to
+ the "View" menu. Fixed misplaced underscore in linedef "Misc" menu.
+ Fixed misplaced tick marks (thanks to Ingo van Lil) and added
+ separations in the "View" menu. Added missing ellipses here and
+ there.
+
+ * Editing: Removed the sudden jump (down) in the size of the vertices
+ when zooming in.
+
+ * Editing: Sectors are now shown in one of three colours : green for
+ sectors that have a tag, blue for sectors that have a type and cyan
+ for sectors that have both. Previously, all tagged sectors looked
+ the same, whether they had a type or not.
+
+ * Editing: Integer entry: you can now enter hexadecimal or octal
+ numbers by prefixing them with "0x" or "0", as in C. This should
+ make it easier to enter Boom generalized types. You are now allowed
+ to start the number with an explicit plus sign ("+"). The lower
+ limit has been pushed from -32,749 to -32,768. The upper limit has
+ been pushed from +32,749 to +32,767. For consistency with the rest
+ of the interface, if the current entry is invalid, it is shown in
+ red instead of dim grey. You are allowed to type more characters,
+ even if the current entry is invalid ([Return] is still disabled,
+ however). The message in InputIntegerValue() has been changed from
+ "Enter a decimal number" to "Enter a number".
+
+ * Editing: Fixed segfault on "Save as..." on a new level (i.e. opened
+ with the "create" command). This bug was there ever since 1.1.
+
+ * Editing: On a new level (opened with the "create" command), the
+ level name and file name are now remembered so you don't have to
+ enter them again every time you save.
+
+ * Editing: New function "cut a slice out of a sector" to easily split
+ doughnut-shaped sectors. Shortcut is [Ctrl][k]. See
+ users_guide.html for details. Thanks to Jim Flynn for writing a
+ similar function in DETH, which I used as a reference.
+
+ * Editing: Setting things flags by value now allows any value between
+ 0 and 65,535 (instead of 1 through 31). The word "decimal" has been
+ removed from the menu item since you can now enter hexadecimal as
+ well.
+
+ * Editing: [n], [p], [<] and [>] work properly even if no object was
+ highlighted.
+
+ * Editing: In linedef mode, linedefs that have no first sidedef, or a
+ bad sidedef number are drawn in red.
+
+ * Game/wad: MBF: changed the radius of the dog from 16 to 12. Thanks
+ to AJA for pointing it out.
+
+ * Game/wad: Boom: added all of Boom's 130 non-generalized linedef
+ types to doom.ygd and doom2.ygd. New "elevator" linedef type group.
+ Many thanks to AJA for typing in the ygd data.
+
+ * Game/wad: Linedef types 33 and 34 were incorrectly labelled "yel"
+ and "red" instead of the other way around. Thanks to Ingo van Lil
+ for pointing this out.
+
+ * Game/wad: Linedef type 96 was incorrectly marked "W1" instead of
+ "WR". Spotted by IvL.
+
+ * Game/wad: Hexen: added to hexen.ygd a couple of things types and
+ most sector and linedef types. Linedefs now have their tag set to
+ arg1. It used to be left uninitialized, which is why so many
+ linedefs were shown in red on the map.
+
+ * Game/wad: Linedef types 105 and 111 had their descriptions
+ reversed. Don't blindly trust the UDS. Spotted by AJA.
+
+ * Game/wad: Gave a sprite to Doom thing type 23 (dead lost soul),
+ SKULK.
+
+ * Game/wad: Strife: definitions for thing types 10, 27, 46, 50, 81,
+ 137, 138, 2018, 2019 and 2026.
+
+ * Game/wad: Hexen: definitions for things 122, 124 and 8004.
+
+ * Misc: Flat/patch/sprite/texture viewer: restored ability to save to
+ file by pressing [Shift][F1].
+
+ * Misc: Flat/patch/sprite/texture viewer: not unnecessarily
+ refreshing the whole image window anymore when browsing patches or
+ sprites.
+
+ * Misc: Texture viewer: new bindings [Ctrl][a] [Ctrl][x] to change
+ the number of patches shown.
+
+ * Misc: Most I/O errors occurring while reading wads are now handled
+ gracefully (fewer gratuitous calls to fatal_error()).
+
+ * Misc: The menu code (menu.cc and oldmenus.cc) has been partly
+ rewritten. Made the automatic shortcuts case-sensitive to allow up
+ to 61 entries instead of just 35. Option numbers shortcuts are
+ framed with dimmer square brackets, instead of parentheses.
+ Implemented separations. Two extra pixels of space between lines.
+ Tick marks now look like tick marks, not asterisks. Unticked
+ entries now have a dash in front of them.
+
+ * Misc: The search paths for game definition files and configuration
+ files have changed in several ways.
+
+ Some config file search directories have changed for conformance to
+ the FHS. If the prefix is "/usr/local", the path is now "/etc/
+ yadex" instead of "/usr/local/etc/yadex". If the prefix is "/opt/
+ something", the path is now "/etc/opt/something" instead of "/opt/
+ something/etc/yadex". The practical consequence for the 90% of you
+ who install in /usr/local is that the system-wide config file has
+ moved from /usr/local/etc to /etc.
+
+ Overriding the prefix now actually works for other prefixes than /
+ usr and /usr/local. The problem was that, even though the makefile
+ installed the files in the proper directories, the yadex binary
+ looked for them in /etc, /usr and /usr/local, regardless of the
+ prefix. Thanks to Oliver Kraus and Udo Munk for clueing me in.
+
+ Yadex used to look for files in places where it shouldn't have. For
+ example, it looked for game definition files in /usr even if
+ compiled for /usr/local and vice-versa. Yadex now looks for files
+ only in the places corresponding to the prefix it was compiled for.
+ This makes it possible to have several builds of the same version
+ of Yadex on the same machine without unwanted interactions, as long
+ as they're compiled for different prefixes. Note, however, that /
+ etc/yadex is used by both /usr and /usr/local but that is mandated
+ by the FHS and there's nothing I can do.
+
+ The search directories relative to $YADEX_DIR have been removed
+ from the Unix version (they were intended for DOS).
+
+ See users_guide.html for the exact contents of the new search
+ paths.
+
+ * Misc: Config file: bumped the config file version# from 3 to 4.
+
+ * Misc: Fixed strange reactions to percent character ("%") in the
+ file name entry box.
+
+ * Misc: Slightly less chaotic output in verbose mode.
+
+ * Misc: Fixed a memory leak that occurred when repeatedly reloading a
+ wad. This log entry is particularly delightful because that leak
+ was introduced by me in version 1.5.0 while trying to fix a bug in
+ the same code that was, guess what, an fd leak. For the
+ historically minded, that fd leak goes back to at least DEU 5.21.
+ Try it. It's easily exercised by loading the same wad over and
+ over. After about 20 iterations, you are rewarded with "patch wad
+ file xxx doesn't exist. Ignored.".
+
+ * Misc: Removed from the makefile unflattering comments on bzip2's
+ celerity that came from using an old version.
+
+ * Misc: Decapitalised object type names (GetObjectTypeName()).
+
+ * Misc: Fixed display bug in sector# and sidedef# entry box
+ (InputObjectXref()).
+
+ * Misc: The config file search algorithm has been modified to support
+ multiple config files. The old algorithm was to walk the search
+ path front to back and stop at the first match. The new algorithm
+ is to walk the path back to front and use all the matches. Thus
+ local files inherit parameter settings from global files and still
+ have the possibility to selectively override them (i.e. you can
+ override some parameters and inherit the others).
+
+ For example, assuming /etc/yadex/1.6.0/yadex.cfg contains :
+
+ a = old
+ b = old
+
+ and ./yadex.cfg contains :
+
+ a = new
+ c = new
+
+ the net effect is :
+
+ a = new
+ b = old
+ c = new
+
+ The motivation for the change was to allow users to put most of
+ their settings in global config files, either system wide or
+ per-user. When local files exist, they should contain only the
+ minimum, i.e. just those settings you want to override. This way of
+ doing has several advantages over the previous all-or-nothing
+ system. Obviously, you can now change a setting globally by editing
+ just one file, even if you have many local config files. Upgrades
+ are also smoother because any new variable definitions appearing in
+ global config files propagate even if local config files exist.
+ Finally, it's much easier to figure what local files are meant to
+ do because everything they contain is meaningful.
+
+ * Misc: Removed the start-up message stating that "this program is
+ derived from DEU 5.21 by Raphal Quinet and Brendon Wyber" (for
+ clarity, not because I'm in denial).
+
+ * Platform: On DOS, the PPM files created by "make_palette_ppm" and
+ "mp2" now have correct CRLF line terminators instead of LFCR.
+
+ * Platform: Wart in gfx.cc to cope with QNX where DisplayWidth() and
+ DisplayHeight() return silly values.
+
+ * Platform: Added support for 16-colour displays. Tested with the
+ XFree86 VGA16 server which, when running in 640x480x16 (VGA mode
+ 12h), provides a PseudoColor or StaticColor visual with an 8 bits
+ per pixel pixmap format. If there are any servers that expect a
+ pixmap format with a number of bits per pixel that is not a
+ multiple of 8, they're still unsupported.
+
+ * Platform: Reworked the pixmap format selection code. Should not
+ change anything for most people.
+
+ * Platform: Compiles and runs on HP-UX 10.0 (with GCC 3.0.1).
+
+ * Platform: Compiles on Linux PPC (with GCC 3.1). Thanks to Mark
+ Brown for the patch.
- Changes
-
Yadex 1.5.2 (2001-06-30)
- * Platform: Compiles with GCC 3.0 (added std:: qualifiers where they
- were missing and removed #ifdef inside printf()).
-
+ * Platform: Compiles with GCC 3.0 (added std:: qualifiers where they
+ were missing and removed #ifdef inside printf()).
+
Yadex 1.5.1 (2000-12-12)
- * Platform: One-line fix in menu.cc to please GCC 2.96 (of Red Hat 7
- fame). Thanks to Zebediah C. McClure for reporting the problem.
-
+ * Platform: One-line fix in menu.cc to please GCC 2.96 (of Red Hat 7
+ fame). Thanks to Zebediah C. McClure for reporting the problem.
+
Yadex 1.5.0 (2000-08-27)
- * Build: Changed the way the diffs are generated after reading more
- carefully the patch(1) man page and learning the hard way that
- it's a very bad idea to put absolute paths in patches.
- * Build: Made it easier to add or remove individual options in
- CFLAGS and friends.
- * Command-line: New option -b to benchmark parts of Yadex. For
- hackers only.
- * Command-line: Removed option -e in prevision of reuse for another
- function.
- * Doc: Completed ygd.html.
- * Doc: Documented the usage of the LINES and YADEX_DIR environment
- variables.
- * Editing: Things that have an illegal angle are now shown with the
- angle Doom would see, instead of just a dot in the middle. The
- emulation is believed to be accurate for angles comprised between
- 0 and 359. Values outside that range have not been tested.
- * Editing: Things flags and linedefs flags now grouped by 4 for
- readability. For linedefs, the decimal value of the flags field is
- not shown anymore.
- * Editing: In the object info box, the type and description of the
- current thing are now display in red if the type is invalid (i.e.
- not defined in the .ygd).
- * Editing: The things and linedefs flags operations ([a], [b], [c])
- now set MadeChanges as they should have from the start.
- * Editing: The View menu now contains entries for "Show object
- numbers" [&] and "Show grid" [h].
- * Editing: The Edit menu now contains entries for "Snap to grid" [y]
- and "Loc grid step" [z].
- * Editing: Rearranged the sidedef object info windows so that the
- textures are listed in a more intuitive order (upper, middle,
- lower instead of middle, upper, lower). Made labels shorter in
- preparation of the hypothetical inclusion of texture swatches in
- the future.
- * Editing: Fixed long-standing buglet with the sidedef info saying
- there are missing upper/lower textures even though both sectors
- have a "sky" ceiling/floor.
- * Editing: Implemented showing object numbers for linedefs and
- sectors. The placement of sector numbers is naive and inadequate
- for sectors that don't have a simple convex shape, but it's still
- better than nothing. Picked a somewhat brighter colour for object
- numbers.
- * Editing: Linedef object info box: if the first sidedef is missing,
- the message "(no first sidedef)" is printed in red instead of dim
- gray. Same thing for the second sidedef if the "2" flag is set.
- * Editing: Removed careless dereferencing of SideDefs[] for bad
- sidedef numbers in the sector selection code. I don't think this
- is what caused the mysterious unreproducible segfault James
- Caldwell reported, though. Made the object deletion function
- paranoid (checks that the objects to delete actually exist).
- * Editing: When found superimposed linedefs after merging vertices,
- the dialog box that asks whether they should be merged now
- mentions the numbers of the first two superimposed linedefs found
- instead of a laconic "Some linedefs are superimposed".
- * Editing: Zooming: the zoom factor is now displayed in percent,
- 100% being 1/1.
- * Editing: Zooming: the zoom factors are now regularly spaced, with
- a ratio of 1.414 between them. This removes the annoying "jump"
- between the zoom factors greater than 1/2. It also fixes the
- oddities that happened when zooming in after [`]. The ratio
- between zoom factors can be controlled through the new parameter
- "zoom_step".
- * Editing: Zooming: the "zoom" parameter has been replaced by the
- new parameter "zoom_default". The latter is expressed in percent,
- not in 1/n units. It's now possible to specify an initial zoom
- factor of more than 1/1. When opening a new window, Yadex now
- adjusts the zoom factor so that the level fills the window. Should
- you want to revert to the old behaviour, you can do it by setting
- zoom_default to 12.
- * Editing: ['] and [`] now go to the current centre of the level
- (they used to go to where the centre was when the level was opened
- or created).
- * Editing: [`] now has a menu item (View -> Whole level).
- * Editing: The grid has changed. There are now dots every step map
- units, dim lines every 4step units, normal lines every 16step
- units and bold lines every 64step units. The new grid is supposed
- to be less obtrusive visually, faster to display and more distinct
- when scrolling.
- * Editing: New function to swap floor and ceiling flats of selected
- sectors (Misc. operations -> Swap flats).
- * Editing: When not in things mode, things are drawn in a dimmer
- shade of gray and do not hide the linedefs anymore.
- * Game/wad: Removed the "-g wolf" bit. [For those who still haven't
- got it : the support for Wolfenstein 3D announced in the CHANGES
- for version 1.4.0 was of course a hoax, 1.4.0 having been released
- on April 1st.] Hope you've been having as much fun as I have. :-)
- * Game/wad: Heretic: made the golem leader ghost, undead warrior
- ghost and golem ghost look a little more ghostly. Made the
- gargoyle leader, golem leader and golem leader ghost look
- different from their vanilla counterparts by using sprites IMPXD
- and MUMMY. Assigned a sprite to things 31 and 32 (enchanted
- shield, SHD2 and mystic urn, SPHL).
- * Game/wad: Heretic: corrected things radii in heretic.ygd, using
- [1]info2ygd and the Heretic source as a reference. Almost all
- radii were wrong, a few grossly so (maulotaur, ironlich and
- gargoyle).
- * Game/wad: Strife: many new things and linedef types thanks to
- [2]Matt Miller.
- * Game/wad: Doom alpha 0.4: definitions for thing types 2020, 2036,
- 2038 and 2046.
- * Game/wad: Updated format comments in *.ygd.
- * Game/wad: Sprites in pwads now supported (between S_START/S_END or
- SS_START/SS_END or SS_START/S_END). This fixes Yadex's failure to
- show redefined sprites in [3]alitcsf.wad, [4]basilica.wad and
- [5]strifed1.wad. A few Aliens TC sprites don't work yet but it's
- for a different reason (DEH).
- * Game/wad: Sprites now shown on the map when in things mode. You
- can switch between sprites and squares with View -> Show sprites
- [%]. New config file parameter "sprite_scale" to adjust the scale
- at which sprites are displayed (default 100%).
- * Game/wad: The right sprite is shown, even if the sprites are not
- in alphabetical order in the wad (cf BARWA0 in Strife).
- * Game/wad: The function to add pwads (be it from the command line
- or with the "r" command) has been heavily reworked. It's more
- robust and handles errors better. It does not leak file handles
- anymore when you add the same pwad more than once. It also accepts
- to add iwads, modulo a warning (though you should expect problems
- later if you do that). The merging of the pwad directory into the
- master directory is still lousy.
- * Game/wad: Fixed duplicate entries in the flat selector. This bug
- was found by "Ras2". It happened whenever you added the same flat
- thrice or more.
- * Game/wad: EDGE: added definitions for EDGE linedef types and
- things types to doom.ygd and doom2.ygd. Thanks to [6]Andrew Apted
- for providing the ygd data.
- * Game/wad: EDGE: in sector mode, show information for EDGE
- extrafloors if there are any.
- * Misc: A couple of calls to fatal_error() were turned into calls to
- report_error() (don't abort).
- * Misc: New game definition file directive "sky_flat" to specify the
- name of the "sky" flat. Replaced all occurrences of F_SKY1 by
- references to this parameter. Fixes Check -> Check for missing
- textures for Hexen and Strife. Bumped game definition file
- version# to 4.
- * Misc: Because it seems to disturb people (and for the pleasure of
- proving Matt wrong), I've made the texture selector clip textures
- to size. Since there's no scrolling/zooming system yet, I also
- enlarged the viewing area from 256128 to 512256 to alleviate the
- lossage on large textures.
- * Misc: Removed the "Press Shift-F1 to save image to file" text in
- the selector. It's been a no-op ever since 1.0, anyway.
- * Misc: In the selectors, pressing [F1] prints the location of the
- current item to stdout (file name and offset). Works with flats,
- patches and sprites but not textures. It's there to help trace
- Ras' bug.
- * Misc: Made LoadPicture() nicer and safer. It gracefully bails out
- if there are more than 20 errors on a single picture. It does not
- make Yadex abort anymore on read errors in the header or column
- offset table. I've done this by modifying wad_read_i16() and
- wad_read_i32() so other functions might have been impacted.
- * Misc: Config file: commented out most settings (this has no
- visible effect since those settings were just reiterations of the
- default values built into the executable). Also changed the
- initialization code so that Yadex can run without a config file.
- * Misc: Config file: unknown variables are ignored with a warning
- instead of triggering a fatal error. The intent is to facilitate
- sharing config files between versions.
- * Misc: Config file: bumped version# to 3.
- * Misc: Made Yadex use YADEX_GAME as documented and not Y_GAME.
- Oops !
- * Misc: New feature in the flat/picture/sprite selector to show
- where the current image comes from (file name and file offset).
- For debugging.
- * Misc: The window size (width/height and -w/-h) can now be
- expressed in percent of the screen size, by appending a "%" to the
- value. The default size, instead of being 640480 in the
- executable and 900600 in the config file is now 90%90%. It's
- still possible to give absolute width and heights, of course.
- * Misc: No tantrum thrown if the game definition file contains no
- thing directive.
- * Misc: Removed the check for sector headroom being < 1024 in Checks
- -> Check for missing textures. It was sometimes annoying and
- inaccurate anyway.
- * Platform: Images display correctly on packed 24-bit X servers
- (i.e. bits_per_pixel actually is 24 and not 32). The scanline_pad
- member of the ScreenFormat structure is now honoured (not that
- XFree86 seemed to mind much when it wasn't).
- * Platform: Began to clean the code up to make porting less
- difficult.
- * Platform: Added patch to get Yadex to compile with GCC 2.7
- (patch/gcc-2.7.diff). GCC 2.7 is officially considered
- unsupported, though. You're on your own.
-
+ * Build: Changed the way the diffs are generated after reading more
+ carefully the patch(1) man page and learning the hard way that it's
+ a very bad idea to put absolute paths in patches.
+
+ * Build: Made it easier to add or remove individual options in CFLAGS
+ and friends.
+
+ * Command-line: New option -b to benchmark parts of Yadex. For
+ hackers only.
+
+ * Command-line: Removed option -e in prevision of reuse for another
+ function.
+
+ * Doc: Completed ygd.html.
+
+ * Doc: Documented the usage of the LINES and YADEX_DIR environment
+ variables.
+
+ * Editing: Things that have an illegal angle are now shown with the
+ angle Doom would see, instead of just a dot in the middle. The
+ emulation is believed to be accurate for angles comprised between 0
+ and 359. Values outside that range have not been tested.
+
+ * Editing: Things flags and linedefs flags now grouped by 4 for
+ readability. For linedefs, the decimal value of the flags field is
+ not shown anymore.
+
+ * Editing: In the object info box, the type and description of the
+ current thing are now display in red if the type is invalid (i.e.
+ not defined in the .ygd).
+
+ * Editing: The things and linedefs flags operations ([a], [b], [c])
+ now set MadeChanges as they should have from the start.
+
+ * Editing: The View menu now contains entries for "Show object
+ numbers" [&] and "Show grid" [h].
+
+ * Editing: The Edit menu now contains entries for "Snap to grid" [y]
+ and "Loc grid step" [z].
+
+ * Editing: Rearranged the sidedef object info windows so that the
+ textures are listed in a more intuitive order (upper, middle, lower
+ instead of middle, upper, lower). Made labels shorter in
+ preparation of the hypothetical inclusion of texture swatches in
+ the future.
+
+ * Editing: Fixed long-standing buglet with the sidedef info saying
+ there are missing upper/lower textures even though both sectors
+ have a "sky" ceiling/floor.
+
+ * Editing: Implemented showing object numbers for linedefs and
+ sectors. The placement of sector numbers is naive and inadequate
+ for sectors that don't have a simple convex shape, but it's still
+ better than nothing. Picked a somewhat brighter colour for object
+ numbers.
+
+ * Editing: Linedef object info box: if the first sidedef is missing,
+ the message "(no first sidedef)" is printed in red instead of dim
+ gray. Same thing for the second sidedef if the "2" flag is set.
+
+ * Editing: Removed careless dereferencing of SideDefs[] for bad
+ sidedef numbers in the sector selection code. I don't think this is
+ what caused the mysterious unreproducible segfault James Caldwell
+ reported, though. Made the object deletion function paranoid
+ (checks that the objects to delete actually exist).
+
+ * Editing: When found superimposed linedefs after merging vertices,
+ the dialog box that asks whether they should be merged now mentions
+ the numbers of the first two superimposed linedefs found instead of
+ a laconic "Some linedefs are superimposed".
+
+ * Editing: Zooming: the zoom factor is now displayed in percent, 100%
+ being 1/1.
+
+ * Editing: Zooming: the zoom factors are now regularly spaced, with a
+ ratio of 1.414 between them. This removes the annoying "jump"
+ between the zoom factors greater than 1/2. It also fixes the
+ oddities that happened when zooming in after [`]. The ratio between
+ zoom factors can be controlled through the new parameter
+ "zoom_step".
+
+ * Editing: Zooming: the "zoom" parameter has been replaced by the new
+ parameter "zoom_default". The latter is expressed in percent, not
+ in 1/n units. It's now possible to specify an initial zoom factor
+ of more than 1/1. When opening a new window, Yadex now adjusts the
+ zoom factor so that the level fills the window. Should you want to
+ revert to the old behaviour, you can do it by setting zoom_default
+ to 12.
+
+ * Editing: ['] and [`] now go to the current centre of the level
+ (they used to go to where the centre was when the level was opened
+ or created).
+
+ * Editing: [`] now has a menu item (View -> Whole level).
+
+ * Editing: The grid has changed. There are now dots every step map
+ units, dim lines every 4step units, normal lines every 16step
+ units and bold lines every 64step units. The new grid is supposed
+ to be less obtrusive visually, faster to display and more distinct
+ when scrolling.
+
+ * Editing: New function to swap floor and ceiling flats of selected
+ sectors (Misc. operations -> Swap flats).
+
+ * Editing: When not in things mode, things are drawn in a dimmer
+ shade of gray and do not hide the linedefs anymore.
+
+ * Game/wad: Removed the "-g wolf" bit. [For those who still haven't
+ got it : the support for Wolfenstein 3D announced in the CHANGES
+ for version 1.4.0 was of course a hoax, 1.4.0 having been released
+ on April 1st.] Hope you've been having as much fun as I have. :-)
+
+ * Game/wad: Heretic: made the golem leader ghost, undead warrior
+ ghost and golem ghost look a little more ghostly. Made the gargoyle
+ leader, golem leader and golem leader ghost look different from
+ their vanilla counterparts by using sprites IMPXD and MUMMY.
+ Assigned a sprite to things 31 and 32 (enchanted shield, SHD2 and
+ mystic urn, SPHL).
+
+ * Game/wad: Heretic: corrected things radii in heretic.ygd, using
+ info2ygd and the Heretic source as a reference. Almost all radii
+ were wrong, a few grossly so (maulotaur, ironlich and gargoyle).
+
+ * Game/wad: Strife: many new things and linedef types thanks to Matt
+ Miller.
+
+ * Game/wad: Doom alpha 0.4: definitions for thing types 2020, 2036,
+ 2038 and 2046.
+
+ * Game/wad: Updated format comments in *.ygd.
+
+ * Game/wad: Sprites in pwads now supported (between S_START/S_END or
+ SS_START/SS_END or SS_START/S_END). This fixes Yadex's failure to
+ show redefined sprites in alitcsf.wad, basilica.wad and
+ strifed1.wad. A few Aliens TC sprites don't work yet but it's for a
+ different reason (DEH).
+
+ * Game/wad: Sprites now shown on the map when in things mode. You can
+ switch between sprites and squares with View -> Show sprites [%].
+ New config file parameter "sprite_scale" to adjust the scale at
+ which sprites are displayed (default 100%).
+
+ * Game/wad: The right sprite is shown, even if the sprites are not in
+ alphabetical order in the wad (cf BARWA0 in Strife).
+
+ * Game/wad: The function to add pwads (be it from the command line or
+ with the "r" command) has been heavily reworked. It's more robust
+ and handles errors better. It does not leak file handles anymore
+ when you add the same pwad more than once. It also accepts to add
+ iwads, modulo a warning (though you should expect problems later if
+ you do that). The merging of the pwad directory into the master
+ directory is still lousy.
+
+ * Game/wad: Fixed duplicate entries in the flat selector. This bug
+ was found by "Ras2". It happened whenever you added the same flat
+ thrice or more.
+
+ * Game/wad: EDGE: added definitions for EDGE linedef types and things
+ types to doom.ygd and doom2.ygd. Thanks to Andrew Apted for
+ providing the ygd data.
+
+ * Game/wad: EDGE: in sector mode, show information for EDGE
+ extrafloors if there are any.
+
+ * Misc: A couple of calls to fatal_error() were turned into calls to
+ report_error() (don't abort).
+
+ * Misc: New game definition file directive "sky_flat" to specify the
+ name of the "sky" flat. Replaced all occurrences of F_SKY1 by
+ references to this parameter. Fixes Check -> Check for missing
+ textures for Hexen and Strife. Bumped game definition file version#
+ to 4.
+
+ * Misc: Because it seems to disturb people (and for the pleasure of
+ proving Matt wrong), I've made the texture selector clip textures
+ to size. Since there's no scrolling/zooming system yet, I also
+ enlarged the viewing area from 256128 to 512256 to alleviate the
+ lossage on large textures.
+
+ * Misc: Removed the "Press Shift-F1 to save image to file" text in
+ the selector. It's been a no-op ever since 1.0, anyway.
+
+ * Misc: In the selectors, pressing [F1] prints the location of the
+ current item to stdout (file name and offset). Works with flats,
+ patches and sprites but not textures. It's there to help trace Ras'
+ bug.
+
+ * Misc: Made LoadPicture() nicer and safer. It gracefully bails out
+ if there are more than 20 errors on a single picture. It does not
+ make Yadex abort anymore on read errors in the header or column
+ offset table. I've done this by modifying wad_read_i16() and
+ wad_read_i32() so other functions might have been impacted.
+
+ * Misc: Config file: commented out most settings (this has no visible
+ effect since those settings were just reiterations of the default
+ values built into the executable). Also changed the initialization
+ code so that Yadex can run without a config file.
+
+ * Misc: Config file: unknown variables are ignored with a warning
+ instead of triggering a fatal error. The intent is to facilitate
+ sharing config files between versions.
+
+ * Misc: Config file: bumped version# to 3.
+
+ * Misc: Made Yadex use YADEX_GAME as documented and not Y_GAME.
+ Oops !
+
+ * Misc: New feature in the flat/picture/sprite selector to show where
+ the current image comes from (file name and file offset). For
+ debugging.
+
+ * Misc: The window size (width/height and -w/-h) can now be expressed
+ in percent of the screen size, by appending a "%" to the value. The
+ default size, instead of being 640480 in the executable and 900
+ 600 in the config file is now 90%90%. It's still possible to give
+ absolute width and heights, of course.
+
+ * Misc: No tantrum thrown if the game definition file contains no
+ thing directive.
+
+ * Misc: Removed the check for sector headroom being < 1024 in Checks
+ -> Check for missing textures. It was sometimes annoying and
+ inaccurate anyway.
+
+ * Platform: Images display correctly on packed 24-bit X servers (i.e.
+ bits_per_pixel actually is 24 and not 32). The scanline_pad member
+ of the ScreenFormat structure is now honoured (not that XFree86
+ seemed to mind much when it wasn't).
+
+ * Platform: Began to clean the code up to make porting less
+ difficult.
+
+ * Platform: Added patch to get Yadex to compile with GCC 2.7 (patch/
+ gcc-2.7.diff). GCC 2.7 is officially considered unsupported,
+ though. You're on your own.
+
Yadex 1.4.0 (2000-04-01)
- * Command-line: The parsing of the command line arguments is now
- case-sensitive. Yes, that's right, it used to be case-insensitive.
- I never knew. I just realized it by accident. DOS is not dead.
- * Doc: The man page now has an "OPTIONS" section.
- * Doc: Three new makefile targets, man, dvi and ps, for people who
- hack the doc.
- * Editing: Made object numbers slightly more legible in crowded
- areas.
- * Game/wad: Added support for Wolfenstein 3D (-g wolf).
- * Misc: The code that parses the configuration file is smarter and
- its error messages are more informative. Doesn't choke anymore on
- a line containing just spaces or on comments not starting on
- column 1. Thanks to "Ras2" for reporting the bug.
- * Misc: New commands "viewtex" and "viewflat" so that you can browse
- textures and flats without having to open a level. This is
- primarily useful to me, for testing purposes.
- * Misc: More sanitization : the parsing of the configuration file is
- now case-sensitive when matching option names and values
- ("yes"/"no", "true"/"false", "on"/"off").
- * Misc: The flat/patch/sprite/texture viewer does not flicker
- anymore, and is somewhat faster when viewing textures. The list of
- names in the flat viewer has grown from 3 to 5 lines.
- * Misc: The diffs are now in unified format (supposedly just as good
- and IMHO clearer).
-
+ * Command-line: The parsing of the command line arguments is now
+ case-sensitive. Yes, that's right, it used to be case-insensitive.
+ I never knew. I just realized it by accident. DOS is not dead.
+
+ * Doc: The man page now has an "OPTIONS" section.
+
+ * Doc: Three new makefile targets, man, dvi and ps, for people who
+ hack the doc.
+
+ * Editing: Made object numbers slightly more legible in crowded
+ areas.
+
+ * Game/wad: Added support for Wolfenstein 3D (-g wolf).
+
+ * Misc: The code that parses the configuration file is smarter and
+ its error messages are more informative. Doesn't choke anymore on a
+ line containing just spaces or on comments not starting on
+ column 1. Thanks to "Ras2" for reporting the bug.
+
+ * Misc: New commands "viewtex" and "viewflat" so that you can browse
+ textures and flats without having to open a level. This is
+ primarily useful to me, for testing purposes.
+
+ * Misc: More sanitization : the parsing of the configuration file is
+ now case-sensitive when matching option names and values ("yes"/
+ "no", "true"/"false", "on"/"off").
+
+ * Misc: The flat/patch/sprite/texture viewer does not flicker
+ anymore, and is somewhat faster when viewing textures. The list of
+ names in the flat viewer has grown from 3 to 5 lines.
+
+ * Misc: The diffs are now in unified format (supposedly just as good
+ and IMHO clearer).
+
Yadex 1.3.2 (2000-01-14)
- * Build: Oops ! I had forgotten to set CC and CXX back to their
- "sane" values before cutting the 1.3.1 tarball.
- * Code: "make dist" now also generates a diff.
-
+ * Build: Oops ! I had forgotten to set CC and CXX back to their
+ "sane" values before cutting the 1.3.1 tarball.
+
+ * Code: "make dist" now also generates a diff.
+
Yadex 1.3.1 (2000-01-12)
- * Build: Fix for "Ras2"'s compile error with g++ 2.7.2.3 :
- c++ src/disppic.cc
- In file included from /usr/include/g++-2.7/defalloc.h:24,
- from /usr/include/g++-2.7/map.h:21,
- from /usr/include/g++-2.7/map:6,
- from src/patchdir.h:35,
- from src/disppic.cc:33:
- /usr/include/g++-2.7/algobase.h:47: macro `min' used with too many (3) args
- /usr/include/g++-2.7/algobase.h:57: macro `max' used with too many (3) args
- make: *** [obj/0/disppic.o] Error 1
- * Build: Fix for HAVE_NANOSLEEP being always false. Thanks to "Ras2"
- for pointing it out.
-
+ * Build: Fix for "Ras2"'s compile error with g++ 2.7.2.3 :
+ c++ src/disppic.cc
+ In file included from /usr/include/g++-2.7/defalloc.h:24,
+ from /usr/include/g++-2.7/map.h:21,
+ from /usr/include/g++-2.7/map:6,
+ from src/patchdir.h:35,
+ from src/disppic.cc:33:
+ /usr/include/g++-2.7/algobase.h:47: macro `min' used with too many (3) args
+ /usr/include/g++-2.7/algobase.h:57: macro `max' used with too many (3) args
+ make: *** [obj/0/disppic.o] Error 1
+
+ * Build: Fix for HAVE_NANOSLEEP being always false. Thanks to "Ras2"
+ for pointing it out.
+
Yadex 1.3.0 (2000-01-11)
- * Build: The makefile now honours the dependencies in yadex.dep.
- * Build: Support for FHS-compliant systems: "make install" now
- copies the man pages into /usr/local/share/man/man6/ if
- /usr/local/share/man/ exists. If not, it still uses
- /usr/local/man/man6/ (requested by Joseph Carter).
- * Build: Added "#include " to fix compilation error on
- wads.cc under Solaris.
- * Build: Downgraded the makefile and scripts to use the old
- backquote syntax for command substitution, because Oliver Kraus'
- reports suggest that the Solaris sh does not understand the "$()"
- syntax. Barfulation !
- * Build: New makefile target showconf that shows the value of all
- the important macros as well as the output of certain commands. If
- you have trouble compiling Yadex, mail me the output of "make
- showconf".
- * Build: A bunch of little changes in the makefile to try to make
- build problems on Solaris go away.
- * Doc: Fixed several discrepancies in README.
- * Game/wad: Support for the german edition of Doom II (as the iwad
- has no MAP31 and MAP32, Yadex 1.1.0 and 1.2.0 used to say "this is
- the shareware version of the game").
- * Game/wad: Replacement patches in pwads are now supported, even if
- between PP_START and PP_END. Fixes failure to see redefined
- textures with mbfedit!.wad, alitcwad.wad and certainly many
- others. Replacement patches in pwads not between P_START/P_END or
- PP_START/PP_END are not recognized anymore. Many PNAMES errors
- that would have made previous versions of Yadex abort now just
- make it print warnings.
- * Misc: Cleaned up the web page source and makefile. Added
- documentation, should someone else take over maintainership. No
- harm in dreaming.
- * Misc: New command viewpat to browse through the patches.
- * Misc: It's now possible to have several different versions of
- Yadex installed simultaneously. Some paths have changed :
- + $(PREFIX)/share/games/ is now
- $(PREFIX)/share/games/yadex/$(VERSION)/
- + $(PREFIX)/etc/yadex.cfg is now
- $(PREFIX)/etc/yadex/$(VERSION)/yadex.cfg
- + ~/yadex.cfg is now ~/.yadex/$(VERSION)/yadex.cfg
- + $(PREFIX)/bin/yadex changed to $(PREFIX)/bin/yadex-$(VERSION)
- + $(PREFIX)/bin/ybsp changed to $(PREFIX)/bin/ybsp-$(VERSION)
- + $(PREFIX)/bin/yadex is now a symlink pointing to
- yadex-$(VERSION)
- + $(PREFIX)/bin/ybsp is now a symlink pointing to
- ybsp-$(VERSION)
- The insertion of a yadex/ component in the paths was done for two
- reasons. In the first place, it was requested by Joseph Carter for
- game definition files, to reduce clutter in
- $(PREFIX)/share/games/. I extended it to configuration files
- because it I thought it was a nice way not to clutter
- $(PREFIX)/etc/. On the other hand, it was not done for man pages
- and executables because it would have interfered.
- * Misc: Fixed bug where if you typed "yadex: c level", then created
- or edited a level and then closed the editing window, you got a
- dozen of messages like this one : "Warning: error freeing colour
- 00005820h (BadAccess (attempt to access private resource
- denied))". I hope this fixes the related item in TODO.
-
+ * Build: The makefile now honours the dependencies in yadex.dep.
+
+ * Build: Support for FHS-compliant systems: "make install" now copies
+ the man pages into /usr/local/share/man/man6/ if /usr/local/share/
+ man/ exists. If not, it still uses /usr/local/man/man6/ (requested
+ by Joseph Carter).
+
+ * Build: Added "#include " to fix compilation error on
+ wads.cc under Solaris.
+
+ * Build: Downgraded the makefile and scripts to use the old backquote
+ syntax for command substitution, because Oliver Kraus' reports
+ suggest that the Solaris sh does not understand the "$()" syntax.
+ Barfulation !
+
+ * Build: New makefile target showconf that shows the value of all the
+ important macros as well as the output of certain commands. If you
+ have trouble compiling Yadex, mail me the output of "make
+ showconf".
+
+ * Build: A bunch of little changes in the makefile to try to make
+ build problems on Solaris go away.
+
+ * Doc: Fixed several discrepancies in README.
+
+ * Game/wad: Support for the german edition of Doom II (as the iwad
+ has no MAP31 and MAP32, Yadex 1.1.0 and 1.2.0 used to say "this is
+ the shareware version of the game").
+
+ * Game/wad: Replacement patches in pwads are now supported, even if
+ between PP_START and PP_END. Fixes failure to see redefined
+ textures with mbfedit!.wad, alitcwad.wad and certainly many others.
+ Replacement patches in pwads not between P_START/P_END or PP_START/
+ PP_END are not recognized anymore. Many PNAMES errors that would
+ have made previous versions of Yadex abort now just make it print
+ warnings.
+
+ * Misc: Cleaned up the web page source and makefile. Added
+ documentation, should someone else take over maintainership. No
+ harm in dreaming.
+
+ * Misc: New command viewpat to browse through the patches.
+
+ * Misc: It's now possible to have several different versions of Yadex
+ installed simultaneously. Some paths have changed :
+ + $(PREFIX)/share/games/ is now $(PREFIX)/share/games/yadex/$
+ (VERSION)/
+ + $(PREFIX)/etc/yadex.cfg is now $(PREFIX)/etc/yadex/$(VERSION)/
+ yadex.cfg
+ + ~/yadex.cfg is now ~/.yadex/$(VERSION)/yadex.cfg
+ + $(PREFIX)/bin/yadex changed to $(PREFIX)/bin/yadex-$(VERSION)
+ + $(PREFIX)/bin/ybsp changed to $(PREFIX)/bin/ybsp-$(VERSION)
+ + $(PREFIX)/bin/yadex is now a symlink pointing to yadex-$
+ (VERSION)
+ + $(PREFIX)/bin/ybsp is now a symlink pointing to ybsp-$(VERSION)
+
+ The insertion of a yadex/ component in the paths was done for two
+ reasons. In the first place, it was requested by Joseph Carter for
+ game definition files, to reduce clutter in $(PREFIX)/share/games/.
+ I extended it to configuration files because it I thought it was a
+ nice way not to clutter $(PREFIX)/etc/. On the other hand, it was
+ not done for man pages and executables because it would have
+ interfered.
+
+ * Misc: Fixed bug where if you typed "yadex: c level", then created
+ or edited a level and then closed the editing window, you got a
+ dozen of messages like this one : "Warning: error freeing colour
+ 00005820h (BadAccess (attempt to access private resource denied))".
+ I hope this fixes the related item in TODO.
+
Yadex 1.2.0 (1999-11-23)
- * BSP: Added missing newline in banner.
- * BSP: Silenced GCC 2.95.2 warnings about implicit braces.
- * Build: The makefile doesn't rebuild doc/ every time a source file
- is changed anymore.
- * Build: Can now be built on machines where Perl is not installed.
- * Build: The doc can now be built on machines with a non-GNU find.
- * Build: Fixed compilation errors with GCC 2.95.2 in src/infobar.cc.
- * Build: Silenced most GCC warnings.
- * Code: Fixed a typo in the legal notices at the beginning of the
- source files.
- * Doc: HISTORY renamed as CHANGES, since that seems to be a more
- widespread convention.
- * Editing: The checks don't beep for every error anymore, just the
- first one.
- * Editing: Object info window: the sprite and flats graphics don't
- flicker anymore when the pointer moves from one object to another.
- Besides, if the sprite is not found, displays the message
- "sprite_name not found" instead of just a blank area.
- * Game/wad: Doom alpha & press release versions: it's now possible
- to save levels. Note: they're saved to regular Doom format, not
- Doom alpha format.
- * Game/wad: Doom II: The boss shooter thing now has a sprite
- (BOSFB0).
- * Game/wad: Hacx and Aliens TC: fixed a bug that made Yadex segfault
- when trying to edit a Hacx level (or alitcsf.wad from
- alntc19{a,b}.zip).
- * Game/wad: For homogeneity with DeuTex, less confusion and to
- reduce the risk of conflicts with other applications, the game
- names for Doom alpha 0.2, Doom alpha 0.4, and Doom alpha 0.5 are
- now "doom02", "doom04" and "doom05" respectively instead of
- "alpha02", "alpha04" and "alpha05". It follows that some
- command-line options have changed :
- + "-g alpha02" is now "-g doom02",
- + "-g alpha04" is now "-g doom04",
- + "-g alpha05" is now "-g doom05".
- Configuration file directives :
- + "game = alpha02" is now "game = doom02",
- + "game = alpha04" is now "game = doom04",
- + "game = alpha05" is now "game = doom05".
- Paths :
- + /usr/local/share/games/alpha02/ is now
- /usr/local/share/games/doom02/,
- + /usr/local/share/games/alpha04/ is now
- /usr/local/share/games/doom04/,
- + /usr/local/share/games/alpha05/ is now
- /usr/local/share/games/doom05/,
- + /usr/local/share/games/alpha02.ygd is now
- /usr/local/share/games/doom02.ygd,
- + /usr/local/share/games/alpha04.ygd is now
- /usr/local/share/games/doom04.ygd,
- + /usr/local/share/games/alpha05.ygd is now
- /usr/local/share/games/doom05.ygd.
- * Game/wad: Fixed Yadex aborting when trying to view textures for
- versions of Strife >= 1.1. The problem was that Strife 1.1 and
- above use a different format for the TEXTURE1 and TEXTURE2 lumps
- (Strife 1.0 uses the same format as Doom). New game definition
- file directive "texture_format strife11" to support that format.
- strife.ygd now contains "texture_format strife11". Added
- strife10.ygd that is identical to strife.ygd except that it
- contains "texture_format normal". Summary :
- + if you have the Strife 1.0 iwad, use "-g strife10" or "game =
- strife10",
- + if you have Strife 1.1 or above, use "-g strife" or "game =
- strife".
- Thanks to Kim Parrott for reporting the bug and Len Pitre for
- pointing me in the right direction.
- * Misc: The "dump" command now prints correctly the last line even
- if the length of the lump is not a multiple of 16.
- * Misc: For homogeneity with DeuTex, the following game definition
- file directives have changed :
- + "texture_format alpha04" is now "texture_format nameless",
- + "texture_lump texture1" is now "texture_lump normal",
- + new choice "texture_lump none".
- * Misc: For homogeneity with DeuTex, automatic texture names for
- Doom alpha 0.4 are now "TEXnnnn" where nnnn is zero-based.
- * Misc: Bumped game definition file version# to 3.
- * Misc: When trying to use a pwad as iwad, emit a warning instead of
- seeing this as a fatal error.
- * Misc: Added a palette viewer (PLAYPAL and COLORMAP). Can be run
- from the prompt with the viewpal command or from the level editing
- window with [Ctrl][P].
- * Misc: The sometimes tedious pwad loading messages are not
- displayed anymore, unless in verbose mode. By default, Yadex now
- just prints which levels the pwad contains.
-
+ * BSP: Added missing newline in banner.
+
+ * BSP: Silenced GCC 2.95.2 warnings about implicit braces.
+
+ * Build: The makefile doesn't rebuild doc/ every time a source file
+ is changed anymore.
+
+ * Build: Can now be built on machines where Perl is not installed.
+
+ * Build: The doc can now be built on machines with a non-GNU find.
+
+ * Build: Fixed compilation errors with GCC 2.95.2 in src/infobar.cc.
+
+ * Build: Silenced most GCC warnings.
+
+ * Code: Fixed a typo in the legal notices at the beginning of the
+ source files.
+
+ * Doc: HISTORY renamed as CHANGES, since that seems to be a more
+ widespread convention.
+
+ * Editing: The checks don't beep for every error anymore, just the
+ first one.
+
+ * Editing: Object info window: the sprite and flats graphics don't
+ flicker anymore when the pointer moves from one object to another.
+ Besides, if the sprite is not found, displays the message
+ "sprite_name not found" instead of just a blank area.
+
+ * Game/wad: Doom alpha & press release versions: it's now possible to
+ save levels. Note: they're saved to regular Doom format, not Doom
+ alpha format.
+
+ * Game/wad: Doom II: The boss shooter thing now has a sprite
+ (BOSFB0).
+
+ * Game/wad: Hacx and Aliens TC: fixed a bug that made Yadex segfault
+ when trying to edit a Hacx level (or alitcsf.wad from alntc19
+ {a,b}.zip).
+
+ * Game/wad: For homogeneity with DeuTex, less confusion and to reduce
+ the risk of conflicts with other applications, the game names for
+ Doom alpha 0.2, Doom alpha 0.4, and Doom alpha 0.5 are now
+ "doom02", "doom04" and "doom05" respectively instead of "alpha02",
+ "alpha04" and "alpha05". It follows that some command-line options
+ have changed :
+ + "-g alpha02" is now "-g doom02",
+ + "-g alpha04" is now "-g doom04",
+ + "-g alpha05" is now "-g doom05".
+
+ Configuration file directives :
+ + "game = alpha02" is now "game = doom02",
+ + "game = alpha04" is now "game = doom04",
+ + "game = alpha05" is now "game = doom05".
+
+ Paths :
+ + /usr/local/share/games/alpha02/ is now /usr/local/share/games/
+ doom02/,
+ + /usr/local/share/games/alpha04/ is now /usr/local/share/games/
+ doom04/,
+ + /usr/local/share/games/alpha05/ is now /usr/local/share/games/
+ doom05/,
+ + /usr/local/share/games/alpha02.ygd is now /usr/local/share/
+ games/doom02.ygd,
+ + /usr/local/share/games/alpha04.ygd is now /usr/local/share/
+ games/doom04.ygd,
+ + /usr/local/share/games/alpha05.ygd is now /usr/local/share/
+ games/doom05.ygd.
+
+ * Game/wad: Fixed Yadex aborting when trying to view textures for
+ versions of Strife >= 1.1. The problem was that Strife 1.1 and
+ above use a different format for the TEXTURE1 and TEXTURE2 lumps
+ (Strife 1.0 uses the same format as Doom). New game definition file
+ directive "texture_format strife11" to support that format.
+ strife.ygd now contains "texture_format strife11". Added
+ strife10.ygd that is identical to strife.ygd except that it
+ contains "texture_format normal". Summary :
+
+ + if you have the Strife 1.0 iwad, use "-g strife10" or "game =
+ strife10",
+ + if you have Strife 1.1 or above, use "-g strife" or "game =
+ strife".
+
+ Thanks to Kim Parrott for reporting the bug and Len Pitre for
+ pointing me in the right direction.
+
+ * Misc: The "dump" command now prints correctly the last line even if
+ the length of the lump is not a multiple of 16.
+
+ * Misc: For homogeneity with DeuTex, the following game definition
+ file directives have changed :
+ + "texture_format alpha04" is now "texture_format nameless",
+ + "texture_lump texture1" is now "texture_lump normal",
+ + new choice "texture_lump none".
+
+ * Misc: For homogeneity with DeuTex, automatic texture names for Doom
+ alpha 0.4 are now "TEXnnnn" where nnnn is zero-based.
+
+ * Misc: Bumped game definition file version# to 3.
+
+ * Misc: When trying to use a pwad as iwad, emit a warning instead of
+ seeing this as a fatal error.
+
+ * Misc: Added a palette viewer (PLAYPAL and COLORMAP). Can be run
+ from the prompt with the viewpal command or from the level editing
+ window with [Ctrl][P].
+
+ * Misc: The sometimes tedious pwad loading messages are not displayed
+ anymore, unless in verbose mode. By default, Yadex now just prints
+ which levels the pwad contains.
+
Yadex 1.1.0 (1999-08-22)
- * BSP: Included Colin Phipps' [7]fix for the bugs in
- [8]bsp23bug.zip.
- * BSP: Renamed the executable and the man page as ybsp, to avoid
- having Yadex and Xwadtools overwrite each other's BSP.
- * BSP: The whirling baton is now disabled if stderr is not a TTY.
- This is the same thing Udo Munk did for [9]Xwadtools' BSP with the
- -noprog option except that here it's automatic.
- * BSP: Made the man page spell out exactly which version of BSP this
- is.
- * BSP: Inserted notice in the banner that this is the version that
- comes with Yadex. In the online help, replaced "TMP.WAD" by the
- correct "tmp.wad".
- * Building: Fixed compilation error on line 44 of bitvec.h.
- * Code: Removed CR characters that remained in some of the source
- files.
- * Code: New function DrawScreenString(). Began to use it instead of
- DrawScreenText(). This should squash some latent bugs, for example
- regarding flat and texture names containing percent signs (%).
- * Code: Fixed constness warnings in cfgfile.cc.
- * Code: Replaced most occurrences of hard-coded 8 by one of
- WAD_NAME, WAD_FLAT_NAME, WAD_PIC_NAME and WAD_TEX_NAME.
- * Code: New directives level_format and level_name in the YGD files.
- As a result, been able to remove most tests on specific values of
- the game parameter.
- * Doc: Too many changes and additions to list. Since the last
- release, the HTML doc has doubled in size (from 80 kB to 160 kB).
- Added a dozen of screenshots.
- * Doc: In an attempt to make it easier to find what you're looking
- for, I've split the doc in a larger number of files, referred to
- by a top level index.html.
- * Doc: Moved the HTML doc and the man pages to the doc/ directory,
- so as not to clutter the base directory too much.
- * Doc: Man pages: the first argument of the .TH macro (the name) is
- now all caps since that's what (almost) everybody else does.
- * Editing: Autoscroll is now off by default -- use "autoscroll =
- true" in yadex.cfg if you want it back.
- * Editing: New bindings [e] and [Ctrl][e] to select all linedefs
- that belong to the same non-forked path.
- * Editing: New bindings [E] and [Ctrl][Shift][e] to select all
- single-sided linedefs that belong to the same non-forked path.
- * Editing: New functions to flip and mirror linedefs, sectors,
- things and vertices.
- * Editing: Fixed the "string art" bug. That was a subtle bug that
- happened only as a result of a rare chain of events. The recipe to
- it is to render a vertex unused (for example by deleting all the
- linedefs that use it), save the level, make a change that does not
- call for a rebuilding of the nodes (for example, moving a thing or
- changing an attribute of a sector), save the level, quit and load
- again. At that point, a nice surprise awaits you: the linedefs are
- all entangled (hence the name). Spectacular, and even beautiful,
- but also very annoying if you don't have a backup copy of your
- level.
- This is the same bug I thought I had fixed in Yadex 1.0.0_alpha3.
- In fact, I had cut one of the paths that led to it but the bug
- itself was still there. It reappeared in february 1999.
- * Editing: Fixed an old DEU bug where you sometimes couldn't select
- a newly created sector to the west of the level until you saved.
- * Editing: It's now possible to toggle linedef flags 8-15 and to
- specify linedef flags field values greater than 511.
- * Editing: It's now possible to set/clear/toggle things flags 7-15.
- * Editing: Made the Not-enough-player-starts and
- Not-enough-deathmatch-start dialogs on saving more intuitive (it
- was about time).
- * Editing: New function "Exchange objects numbers".
- * Editing: Things types are now displayed in decimal, not in
- hexadecimal. Other minor cosmetic changes.
- * Editing: The focus-on-object function now works much better. It
- does not land off-target or zoom in excessively anymore.
- Superimposed things and sectors containing other sectors or not
- containing their own centre don't confuse it anymore. It's still
- fooled by unclosed sectors, though.
- * Editing: Changed the meaning of [q]. It used to save and quit. Now
- it just quits (same thing as [Esc]).
- * Editing: The edit command can now edit levels of any name. If you
- had a wad with a level named "FOO" in it, you could edit that
- level by typing "edit foo". In case you're wondering, no there's
- no practical application to this (beyond experimenting).
- * Editing: Reminder to build nodes: the message is now more
- specific.
- * Editing: Command mode: typing ^D at the prompt now works.
- * Editing: Insert linedef and split sector: the new linedef now goes
- from the first selected vertex to the second and not the other way
- around.
- * Editing: Insert linedef and split sector: does not loop forever
- anymore if there are forks in the edge of the sector (for example
- like when trying to split between vertices 283 and 278 of MAP01 of
- Doom II).
- * Editing: [n], [p], [>] and [<] now move the view so that the
- object to highlight is under the pointer.
- * Editing: The messages displayed when loading pwads are more
- compact (several lumps are printed on the same line and groups of
- sprites are collapsed). The end marker for groups of flats,
- patches and sprites is now printed.
- * Editing: Flat/sprite/texture viewer : added bindings [Ctrl][u] and
- [Ctrl][w] to erase to start of line, [Ctrl][f] and [Ctrl][v] to
- page down and [Ctrl][b] to page up.
- * Editing: Flat/sprite/texture viewer : added bindings [Ctrl][PgUp]
- and [Ctrl][PgDn] to move to top and bottom of list, because [Home]
- and [End] will eventually cease to be available for that (they
- will be bound to SOL and EOL).
- * Editing: Flat/sprite/texture viewer : made [Up] and [Down] work
- even when there are duplicate names.
- * Editing: Flat/sprite/texture viewer : InputNameFromListWithFunc()
- is now genuinely case insensitive. The positioning in the list of
- names is now correct, even if the name given is lower-case.
- * Editing: Flat/sprite/texture viewer : reduced flickering (still
- room for improvement, though).
- * Editing: Flat/sprite/texture viewer : the current name was way too
- dim if not in the list. Fixed.
- * Editing: Flat/sprite/texture viewer : made image window 320x200
- instead of 256x128.
- * Editing: Sprite viewer : new bindings [Ctrl][n] and [Ctrl][p] to
- go to start of next/previous group of sprites.
- * Editing: Sprite viewer : fixed display bug.
- * Editing: Spectres now look more like spectres.
- * Editing: Confirm-or-cancel dialogs: more intuitive. You can now
- confirm with [y] or [Return] and cancel with [n] or [Esc]. All
- other keys are ignored (previously, [y] confirmed and all other
- keys cancelled). Expose events are now handled (previously they
- were ignored).
- * Editing: Some abnormal conditions that used to trigger fatal
- errors now just cause a message error to be printed. The current
- operation is aborted but not the whole program anymore.
- * Game/wad: Fixed segfault on levels containing a thing of type 0
- (like Eternal MAP25 and some Final Doom maps).
- * Game/wad: When reading a level from a wad, now verifies that the
- SECTORS, THINGS, VERTEXES, LINEDEFS and SIDEDEFS lumps have
- correct sizes and that sidedefs, sectors and vertices references
- are correct.
- * Game/wad: Final Doom : should be supported now. Yadex does not
- assume anymore that F1_START is always present, which caused it to
- segfault on either or both Final Doom iwads.
- * Game/wad: Heretic : added sprite names for 58 thing types.
- * Game/wad: Hexen : added very partial support (-g hexen). You can
- edit levels but not save them. Hexen-specific linedef and things
- fields are ignored, and so is the BEHAVIOR lump. Most definitions
- are missing.
- * Game/wad: Strife : added partial support (-g strife). Yadex now
- knows about the translucent linedef flag and the new sector types.
- Thanks to Len Pitre for the help. Still missing : the new things
- flags, most things types and linedefs types. Anybody wants to work
- on strife.ygd ?
- * Game/wad: MBF : supported. Yadex now knows about the friendly
- thing flag, thing type 888 (Dog) and linedef types 271 and 272
- (transfer sky texture).
- * Game/wad: Doom press release pre-beta : supported (-g doompr).
- Added support for the PR picture format and the definitions for
- things 2016 (evil sceptre) and 2017 (unholy bible).
- * Game/wad: Doom alpha : read-only support (-g
- alpha02|alpha04|alpha05). Added support for the alpha picture
- format, the TEXTURES lump, the different level format and the
- incompatible level names (E1M10 through E1M13).
- * Game/wad: Added support for FF_START/FF_END in addition of
- FF_START/F_END. As a result, Yadex does not barf anymore on
- basilica.wad (but issue a warning). F?_START is not supported
- anymore ; it has to be FF_START.
- * Game/wad: Made "Post too long. Wad file might be corrupt" a
- warning, not a fatal error anymore.
- * Game/wad: New directives picture_format, texture_format and
- texture_lump in the YGD files, to support Doom alpha and Doom PR.
- * Misc: New command make_palette_ppm to generate a raw PPM file
- containing all the colours of the palette.
- * Misc: Cosmetic changes in the prompt and character mode interface.
- * Misc: make_gimp_palette : the generated palette files now include
- RGB values in the comments.
- * Misc: Removed from the menus the functions that were not
- implemented (File->Print, Edit->Find, View->3D preview).
- * Misc: Failure to load the specified X font is not a fatal error
- anymore.
- * Misc: New command line options --help and --version.
- * Misc: Bumped game definition file version# to 2.
- * Platform: Removed dependency on nanosleep(), strcasecmp() and
- strncasecmp(). Thanks to Udo Munk for pointing out that
- nanosleep() is not always available.
- * Platform: Now compiles with other compilers than GCC/EGCS without
- modifying the makefile.
- * Platform: New parameter idle_sleep_ms to set the time in ms
- between polls of the X server when the input queue is empty.
- * Platform: Previously, if the CPU and the X server had different
- endiannesses and the screen depth was more than 8 bits, sprites,
- flats and textures were displayed with wrong colours. This is now
- fixed.
- * Platform: The build, group, insert and save commands should now
- work correctly on big-endian machines.
- * Platform: The bell has been resurrected on X.
- * Platform: Should now compile on X11R5 systems (to be verified).
- Thanks to Udo Munk for the fix.
-
+ * BSP: Included Colin Phipps' fix for the bugs in bsp23bug.zip.
+
+ * BSP: Renamed the executable and the man page as ybsp, to avoid
+ having Yadex and Xwadtools overwrite each other's BSP.
+
+ * BSP: The whirling baton is now disabled if stderr is not a TTY.
+ This is the same thing Udo Munk did for Xwadtools' BSP with the
+ -noprog option except that here it's automatic.
+
+ * BSP: Made the man page spell out exactly which version of BSP this
+ is.
+
+ * BSP: Inserted notice in the banner that this is the version that
+ comes with Yadex. In the online help, replaced "TMP.WAD" by the
+ correct "tmp.wad".
+
+ * Building: Fixed compilation error on line 44 of bitvec.h.
+
+ * Code: Removed CR characters that remained in some of the source
+ files.
+
+ * Code: New function DrawScreenString(). Began to use it instead of
+ DrawScreenText(). This should squash some latent bugs, for example
+ regarding flat and texture names containing percent signs (%).
+
+ * Code: Fixed constness warnings in cfgfile.cc.
+
+ * Code: Replaced most occurrences of hard-coded 8 by one of WAD_NAME,
+ WAD_FLAT_NAME, WAD_PIC_NAME and WAD_TEX_NAME.
+
+ * Code: New directives level_format and level_name in the YGD files.
+ As a result, been able to remove most tests on specific values of
+ the game parameter.
+
+ * Doc: Too many changes and additions to list. Since the last
+ release, the HTML doc has doubled in size (from 80 kB to 160 kB).
+ Added a dozen of screenshots.
+
+ * Doc: In an attempt to make it easier to find what you're looking
+ for, I've split the doc in a larger number of files, referred to by
+ a top level index.html.
+
+ * Doc: Moved the HTML doc and the man pages to the doc/ directory, so
+ as not to clutter the base directory too much.
+
+ * Doc: Man pages: the first argument of the .TH macro (the name) is
+ now all caps since that's what (almost) everybody else does.
+
+ * Editing: Autoscroll is now off by default -- use "autoscroll =
+ true" in yadex.cfg if you want it back.
+
+ * Editing: New bindings [e] and [Ctrl][e] to select all linedefs that
+ belong to the same non-forked path.
+
+ * Editing: New bindings [E] and [Ctrl][Shift][e] to select all
+ single-sided linedefs that belong to the same non-forked path.
+
+ * Editing: New functions to flip and mirror linedefs, sectors, things
+ and vertices.
+
+ * Editing: Fixed the "string art" bug. That was a subtle bug that
+ happened only as a result of a rare chain of events. The recipe to
+ it is to render a vertex unused (for example by deleting all the
+ linedefs that use it), save the level, make a change that does not
+ call for a rebuilding of the nodes (for example, moving a thing or
+ changing an attribute of a sector), save the level, quit and load
+ again. At that point, a nice surprise awaits you: the linedefs are
+ all entangled (hence the name). Spectacular, and even beautiful,
+ but also very annoying if you don't have a backup copy of your
+ level.
+
+ This is the same bug I thought I had fixed in Yadex 1.0.0_alpha3.
+ In fact, I had cut one of the paths that led to it but the bug
+ itself was still there. It reappeared in february 1999.
+
+ * Editing: Fixed an old DEU bug where you sometimes couldn't select a
+ newly created sector to the west of the level until you saved.
+
+ * Editing: It's now possible to toggle linedef flags 8-15 and to
+ specify linedef flags field values greater than 511.
+
+ * Editing: It's now possible to set/clear/toggle things flags 7-15.
+
+ * Editing: Made the Not-enough-player-starts and
+ Not-enough-deathmatch-start dialogs on saving more intuitive (it
+ was about time).
+
+ * Editing: New function "Exchange objects numbers".
+
+ * Editing: Things types are now displayed in decimal, not in
+ hexadecimal. Other minor cosmetic changes.
+
+ * Editing: The focus-on-object function now works much better. It
+ does not land off-target or zoom in excessively anymore.
+ Superimposed things and sectors containing other sectors or not
+ containing their own centre don't confuse it anymore. It's still
+ fooled by unclosed sectors, though.
+
+ * Editing: Changed the meaning of [q]. It used to save and quit. Now
+ it just quits (same thing as [Esc]).
+
+ * Editing: The edit command can now edit levels of any name. If you
+ had a wad with a level named "FOO" in it, you could edit that level
+ by typing "edit foo". In case you're wondering, no there's no
+ practical application to this (beyond experimenting).
+
+ * Editing: Reminder to build nodes: the message is now more specific.
+
+ * Editing: Command mode: typing ^D at the prompt now works.
+
+ * Editing: Insert linedef and split sector: the new linedef now goes
+ from the first selected vertex to the second and not the other way
+ around.
+
+ * Editing: Insert linedef and split sector: does not loop forever
+ anymore if there are forks in the edge of the sector (for example
+ like when trying to split between vertices 283 and 278 of MAP01 of
+ Doom II).
+
+ * Editing: [n], [p], [>] and [<] now move the view so that the object
+ to highlight is under the pointer.
+
+ * Editing: The messages displayed when loading pwads are more compact
+ (several lumps are printed on the same line and groups of sprites
+ are collapsed). The end marker for groups of flats, patches and
+ sprites is now printed.
+
+ * Editing: Flat/sprite/texture viewer : added bindings [Ctrl][u] and
+ [Ctrl][w] to erase to start of line, [Ctrl][f] and [Ctrl][v] to
+ page down and [Ctrl][b] to page up.
+
+ * Editing: Flat/sprite/texture viewer : added bindings [Ctrl][PgUp]
+ and [Ctrl][PgDn] to move to top and bottom of list, because [Home]
+ and [End] will eventually cease to be available for that (they will
+ be bound to SOL and EOL).
+
+ * Editing: Flat/sprite/texture viewer : made [Up] and [Down] work
+ even when there are duplicate names.
+
+ * Editing: Flat/sprite/texture viewer : InputNameFromListWithFunc()
+ is now genuinely case insensitive. The positioning in the list of
+ names is now correct, even if the name given is lower-case.
+
+ * Editing: Flat/sprite/texture viewer : reduced flickering (still
+ room for improvement, though).
+
+ * Editing: Flat/sprite/texture viewer : the current name was way too
+ dim if not in the list. Fixed.
+
+ * Editing: Flat/sprite/texture viewer : made image window 320x200
+ instead of 256x128.
+
+ * Editing: Sprite viewer : new bindings [Ctrl][n] and [Ctrl][p] to go
+ to start of next/previous group of sprites.
+
+ * Editing: Sprite viewer : fixed display bug.
+
+ * Editing: Spectres now look more like spectres.
+
+ * Editing: Confirm-or-cancel dialogs: more intuitive. You can now
+ confirm with [y] or [Return] and cancel with [n] or [Esc]. All
+ other keys are ignored (previously, [y] confirmed and all other
+ keys cancelled). Expose events are now handled (previously they
+ were ignored).
+
+ * Editing: Some abnormal conditions that used to trigger fatal errors
+ now just cause a message error to be printed. The current operation
+ is aborted but not the whole program anymore.
+
+ * Game/wad: Fixed segfault on levels containing a thing of type 0
+ (like Eternal MAP25 and some Final Doom maps).
+
+ * Game/wad: When reading a level from a wad, now verifies that the
+ SECTORS, THINGS, VERTEXES, LINEDEFS and SIDEDEFS lumps have correct
+ sizes and that sidedefs, sectors and vertices references are
+ correct.
+
+ * Game/wad: Final Doom : should be supported now. Yadex does not
+ assume anymore that F1_START is always present, which caused it to
+ segfault on either or both Final Doom iwads.
+
+ * Game/wad: Heretic : added sprite names for 58 thing types.
+
+ * Game/wad: Hexen : added very partial support (-g hexen). You can
+ edit levels but not save them. Hexen-specific linedef and things
+ fields are ignored, and so is the BEHAVIOR lump. Most definitions
+ are missing.
+
+ * Game/wad: Strife : added partial support (-g strife). Yadex now
+ knows about the translucent linedef flag and the new sector types.
+ Thanks to Len Pitre for the help. Still missing : the new things
+ flags, most things types and linedefs types. Anybody wants to work
+ on strife.ygd ?
+
+ * Game/wad: MBF : supported. Yadex now knows about the friendly thing
+ flag, thing type 888 (Dog) and linedef types 271 and 272 (transfer
+ sky texture).
+
+ * Game/wad: Doom press release pre-beta : supported (-g doompr).
+ Added support for the PR picture format and the definitions for
+ things 2016 (evil sceptre) and 2017 (unholy bible).
+
+ * Game/wad: Doom alpha : read-only support (-g alpha02|alpha04|
+ alpha05). Added support for the alpha picture format, the TEXTURES
+ lump, the different level format and the incompatible level names
+ (E1M10 through E1M13).
+
+ * Game/wad: Added support for FF_START/FF_END in addition of FF_START
+ /F_END. As a result, Yadex does not barf anymore on basilica.wad
+ (but issue a warning). F?_START is not supported anymore ; it has
+ to be FF_START.
+
+ * Game/wad: Made "Post too long. Wad file might be corrupt" a
+ warning, not a fatal error anymore.
+
+ * Game/wad: New directives picture_format, texture_format and
+ texture_lump in the YGD files, to support Doom alpha and Doom PR.
+
+ * Misc: New command make_palette_ppm to generate a raw PPM file
+ containing all the colours of the palette.
+
+ * Misc: Cosmetic changes in the prompt and character mode interface.
+
+ * Misc: make_gimp_palette : the generated palette files now include
+ RGB values in the comments.
+
+ * Misc: Removed from the menus the functions that were not
+ implemented (File->Print, Edit->Find, View->3D preview).
+
+ * Misc: Failure to load the specified X font is not a fatal error
+ anymore.
+
+ * Misc: New command line options --help and --version.
+
+ * Misc: Bumped game definition file version# to 2.
+
+ * Platform: Removed dependency on nanosleep(), strcasecmp() and
+ strncasecmp(). Thanks to Udo Munk for pointing out that nanosleep()
+ is not always available.
+
+ * Platform: Now compiles with other compilers than GCC/EGCS without
+ modifying the makefile.
+
+ * Platform: New parameter idle_sleep_ms to set the time in ms between
+ polls of the X server when the input queue is empty.
+
+ * Platform: Previously, if the CPU and the X server had different
+ endiannesses and the screen depth was more than 8 bits, sprites,
+ flats and textures were displayed with wrong colours. This is now
+ fixed.
+
+ * Platform: The build, group, insert and save commands should now
+ work correctly on big-endian machines.
+
+ * Platform: The bell has been resurrected on X.
+
+ * Platform: Should now compile on X11R5 systems (to be verified).
+ Thanks to Udo Munk for the fix.
+
Yadex 1.0.1 (1999-01-02)
- * Doc: New sections "Moving around" and "Other credits" in the
- user's guide.
- * Editing: Split linedefs and sector: new linedef now goes from 1 to
- 2 and not the other way around.
- * Editing: Added scrolling with the arrow keys.
- * Editing: [Pgup], [Pgdn], [Home] and [End] now scroll one page at a
- time.
- * Editing: New variable autoscroll to disable autoscrolling.
- * Editing: New variables autoscroll_amp and autoscroll_edge to tweak
- autoscrolling.
- * Editing: New shortcut [x] to "Split linedef (insert new vertex)".
- * Editing: New shortcut [w] to "Split linedefs and sector".
- * Misc: Fixed segfault on trying to edit MAPnm in Doom/Heretic mode
- or EnMm in Doom II mode.
- * Misc: New prompt command make_gimp_palette to generate a gimp
- palette file from PLAYPAL.
- * Misc: Bumped configuration file version# to 2.
-
+ * Doc: New sections "Moving around" and "Other credits" in the user's
+ guide.
+
+ * Editing: Split linedefs and sector: new linedef now goes from 1 to
+ 2 and not the other way around.
+
+ * Editing: Added scrolling with the arrow keys.
+
+ * Editing: [Pgup], [Pgdn], [Home] and [End] now scroll one page at a
+ time.
+
+ * Editing: New variable autoscroll to disable autoscrolling.
+
+ * Editing: New variables autoscroll_amp and autoscroll_edge to tweak
+ autoscrolling.
+
+ * Editing: New shortcut [x] to "Split linedef (insert new vertex)".
+
+ * Editing: New shortcut [w] to "Split linedefs and sector".
+
+ * Misc: Fixed segfault on trying to edit MAPnm in Doom/Heretic mode
+ or EnMm in Doom II mode.
+
+ * Misc: New prompt command make_gimp_palette to generate a gimp
+ palette file from PLAYPAL.
+
+ * Misc: Bumped configuration file version# to 2.
+
Yadex 1.0.0 (1998-12-26)
- * Code: Moved the source files to a subdirectory.
- * Doc: A few additions in the user's guide
- * Editing: Fixed buglet in positioning of newly copied objects.
- * Game/wad: Game support: added definitions for Boom's things 5001
- and 5002 (point pusher and puller).
- * Misc: Added reminder to build nodes after making changes.
- * Misc: Added magic string to configuration file.
- * Misc: Added magic string to game definition file.
-
+ * Code: Moved the source files to a subdirectory.
+
+ * Doc: A few additions in the user's guide
+
+ * Editing: Fixed buglet in positioning of newly copied objects.
+
+ * Game/wad: Game support: added definitions for Boom's things 5001
+ and 5002 (point pusher and puller).
+
+ * Misc: Added reminder to build nodes after making changes.
+
+ * Misc: Added magic string to configuration file.
+
+ * Misc: Added magic string to game definition file.
+
Yadex 1.0.0_alpha3 (1998-12-23)
- * Doc: A few additions/corrections in the hacker's guide.
- * Editing: Fixed spectacular corruption of linedefs (string art bug)
- that occurred if all you did during a given session was deleting
- vertices.
-
+ * Doc: A few additions/corrections in the hacker's guide.
+
+ * Editing: Fixed spectacular corruption of linedefs (string art bug)
+ that occurred if all you did during a given session was deleting
+ vertices.
+
Yadex 1.0.0_alpha2 (1998-12-22)
- * BSP: Included BSP 2.3 (thanks to Lee Killough).
- * Doc: Improved user's guide.
- * Editing: Added new commands [a], [b] and [c] to set, toggle and
- clear things and linedefs flags.
-
+ * BSP: Included BSP 2.3 (thanks to Lee Killough).
+
+ * Doc: Improved user's guide.
+
+ * Editing: Added new commands [a], [b] and [c] to set, toggle and
+ clear things and linedefs flags.
+
Yadex 1.0.0_alpha1 (1998-12-17)
- * Code: Removed dereferencing of NULL pointer in
- ParseCommandLineOptions() (DEU).
- * Code: Replaced occurrences of "x==TRUE" and "x==FALSE" by "x" and
- "!x".
- * Code: Replaced occurrences of "x=TRUE" and "x=FALSE" by "x=1" and
- "x=0".
- * Command-line: You don't have anymore to put "-file" or "-pwad" in
- front of pwads names on the command line. E.G. you can type "yadex
- foo.wad".
- * Command-line: Deleted a few little-used or DOS-specific options.
- * Editing: Menu bar and pop-up menus much improved.
- * Editing: Info bar reworked.
- * Editing: When prompted to "Press a key to continue", you can now
- also press the left mouse button.
- * Editing: Grid: the grid step can now adapt automatically as you
- zoom in/out.
- * Editing: Grid: whether dragging is snapped to grid is now
- independent of whether the grid is shown or not (added flags
- grid_snap and grid_shown).
- * Editing: Added finer-grained confirmation options.
- * Editing: General editing: you can now scroll the map further from
- the centre of the level.
- * Editing: Added ['] to re-centre the window around the centre of
- the map.
- * Editing: Added [`] to re-centre the window around the centre of
- the map and adjust the zoom so that the map fills the screen.
- * Editing: Added [&] to show things and vertices numbers.
- * Editing: Autoscroll: scroll speed is now progressive.
- * Editing: Autoscroll: easier to use near the top of the window.
- * Editing: [Left], [Right], [Up], [Down] do nothing.
- * Editing: [Space] does not toggle move fast/slow anymore; it
- toggles between nominal zoom and x 4.
- * Editing: Highlighting of things, vertices and linedefs much
- improved.
- * Editing: Dragging objects is now done with the left mouse button
- instead of the right button.
- * Editing: Editing object properties is now done by double-clicking
- on the object.
- * Editing: Selection and drag-and-drop have changed a lot.
- * Editing: Selection box: removed the -a option and the addselbox
- parameter. Whether the selection box is additive or not is now
- controlled dynamically by the user (with [Ctrl]).
- * Editing: Sprite viewer: sprites are now centred.
- * Editing: Linedef info: shortened flags names to one character.
- * Editing: Linedef info: a missing normal texture on a 1-sided
- linedef is now flagged in red.
- * Editing: Linedefs copy: you now have the choice between
- duplicating the sidedefs too and reusing the same sidedefs. DEU
- left the new linedefs sidedef-less and, so far, Yadex used to
- reuse the same sidedefs.
- * Editing: Linedefs: added function to "unlink" sidedefs.
- * Editing: Linedefs: dragging linedefs is much faster than before.
- * Editing: Sectors: in the object info window, added display of
- floor and ceiling height delta with respect to previous sector.
- * Editing: Sectors: in the object info window, added display of
- floor and ceiling texture.
- * Editing: Sectors: dragging sectors is much faster than before.
- * Editing: Things: now drawn as squares so that it's easier to see
- whether they are stuck in a wall or another thing. And you don't
- have to highlight them to see their angle. Note: the old shape is
- still available by defining ROUND_THINGS at compile-time.
- * Editing: Things: changed the colours again. Tried to make
- important things stand out and conversely. Bonuses are now dark
- green and player/ deathmatch starts bright green. Keys are
- magenta. Decoration is dim blue instead of white. Unknown objects
- are cyan instead of white. Weapons are orange instead of brownish.
- Heretic sound source things and Boom point pushers are dim
- turquoise-ish.
- * Editing: Things: the sprite is now shown in the object info
- window.
- * Editing: Vertices: deciding whether a vertex is on a linedef is
- now done on the distance in pixels, not in map units. So you can
- now work on very fine details (E.G. vertices only 2 map units
- away) provided that the zoom factor is high enough.
- * Editing: Fixed minor glitch in texture viewer that showed with
- BIGDOOR7, SKY1, TEKWALL1, TEKWALL5 and others (DEU).
- * Editing: When highlighting a sector, compared
- SideDefs[LineDef[n].sidedef1].sector with ObjNum even though
- .sector was -1. Somehow it always tested false (DEU).
- * Editing: "Check textures names": the name of the offending texture
- is now printed correctly even if it is 8 characters long (DEU).
- * Editing: "Check textures names": if you fixed a missing texture,
- the editor was not made aware that you had made changes to the
- level (DEU).
- * Editing: Unused sectors are not selected anymore (DEU).
- * Editing: Changing the preferences could overwrite other variables
- (DEU).
- * Editing: InputNameFromListWithFunc() used to segfault if you
- pressed [Pgdn] on a list shorter than (listdisp + 1) elements
- (DEU).
- * Editing: Removed segfault in AlignTexturesX() (DEU).
- * Game/wad: Heretic is now supported.
- * Game/wad: Added support for Boom's new thing flags
- not-in-deathmatch and not-in-coop.
- * Game/wad: Added support for Boom's new linedef flag pass-through.
- * Misc: Renamed as Yadex to avoid confusion with Yet Another Diagram
- Editor.
- * Misc: Loading pwads: implemented standard directories. If the pwad
- to load is in one of the standard directories (or a subdirectory)
- you don't have to type the whole name.
- * Misc: Loading pwads: added standard directories and made the
- messages less verbose for pwads that contain patches
- (PP_START/PP_END).
- * Misc: Removed segfault during fatal_error() on failure to open the
- iwad (DEU).
- * Misc: The prompt now groks TTYs with a number of lines other than
- 25.
- * Misc: Changed the welcome message (a.k.a. "reminder").
- * Misc: Added an "About Yadex..." window.
- * Misc: Don't copy SEGS, SSECTORS, NODES, REJECT and BLOCKMAP from
- the original file anymore when the map has changed. Makes smaller
- wad files. Nice for archival.
- * Misc: Added environment variable YADEX_GAME.
- * Platform: Ported to X (plain Xlib). This version is not available
- for DOS.
- * Platform: Now works on big-endian machines.
- * Platform: Removed several DOS-isms from file name handling code.
-
-References
-
- 1. http://www.teaser.fr/~amajorel/info2ygd/
- 2. http://my.ohio.voyager.net/~mattm/
- 3. ftp://ftp.cdrom.com/pub/idgames/themes/aliens/alntc19a.zip
- 4. ftp://ftp.cdrom.com/pub/idgames/levels/doom/a-c/basilica.zip
- 5. ftp://ftp.cdrom.com/pub/idgames/levels/doom2/Ports/s-u/strifed1.zip
- 6. http://www.netspace.net.au/~ajapted/
- 7. http://lxdoom.linuxgames.com/notes.html#bsp
- 8. http://www.teaser.fr/~amajorel/doom/bsp23bug.zip
- 9. ftp://ftp.cdrom.com/pub/idgames/source/
+ * Code: Removed dereferencing of NULL pointer in
+ ParseCommandLineOptions() (DEU).
+
+ * Code: Replaced occurrences of "x==TRUE" and "x==FALSE" by "x" and
+ "!x".
+
+ * Code: Replaced occurrences of "x=TRUE" and "x=FALSE" by "x=1" and
+ "x=0".
+
+ * Command-line: You don't have anymore to put "-file" or "-pwad" in
+ front of pwads names on the command line. E.G. you can type "yadex
+ foo.wad".
+
+ * Command-line: Deleted a few little-used or DOS-specific options.
+
+ * Editing: Menu bar and pop-up menus much improved.
+
+ * Editing: Info bar reworked.
+
+ * Editing: When prompted to "Press a key to continue", you can now
+ also press the left mouse button.
+
+ * Editing: Grid: the grid step can now adapt automatically as you
+ zoom in/out.
+
+ * Editing: Grid: whether dragging is snapped to grid is now
+ independent of whether the grid is shown or not (added flags
+ grid_snap and grid_shown).
+
+ * Editing: Added finer-grained confirmation options.
+
+ * Editing: General editing: you can now scroll the map further from
+ the centre of the level.
+
+ * Editing: Added ['] to re-centre the window around the centre of the
+ map.
+
+ * Editing: Added [`] to re-centre the window around the centre of the
+ map and adjust the zoom so that the map fills the screen.
+
+ * Editing: Added [&] to show things and vertices numbers.
+
+ * Editing: Autoscroll: scroll speed is now progressive.
+
+ * Editing: Autoscroll: easier to use near the top of the window.
+
+ * Editing: [Left], [Right], [Up], [Down] do nothing.
+
+ * Editing: [Space] does not toggle move fast/slow anymore; it toggles
+ between nominal zoom and x 4.
+
+ * Editing: Highlighting of things, vertices and linedefs much
+ improved.
+
+ * Editing: Dragging objects is now done with the left mouse button
+ instead of the right button.
+
+ * Editing: Editing object properties is now done by double-clicking
+ on the object.
+
+ * Editing: Selection and drag-and-drop have changed a lot.
+
+ * Editing: Selection box: removed the -a option and the addselbox
+ parameter. Whether the selection box is additive or not is now
+ controlled dynamically by the user (with [Ctrl]).
+
+ * Editing: Sprite viewer: sprites are now centred.
+
+ * Editing: Linedef info: shortened flags names to one character.
+
+ * Editing: Linedef info: a missing normal texture on a 1-sided
+ linedef is now flagged in red.
+
+ * Editing: Linedefs copy: you now have the choice between duplicating
+ the sidedefs too and reusing the same sidedefs. DEU left the new
+ linedefs sidedef-less and, so far, Yadex used to reuse the same
+ sidedefs.
+
+ * Editing: Linedefs: added function to "unlink" sidedefs.
+
+ * Editing: Linedefs: dragging linedefs is much faster than before.
+
+ * Editing: Sectors: in the object info window, added display of floor
+ and ceiling height delta with respect to previous sector.
+
+ * Editing: Sectors: in the object info window, added display of floor
+ and ceiling texture.
+
+ * Editing: Sectors: dragging sectors is much faster than before.
+
+ * Editing: Things: now drawn as squares so that it's easier to see
+ whether they are stuck in a wall or another thing. And you don't
+ have to highlight them to see their angle. Note: the old shape is
+ still available by defining ROUND_THINGS at compile-time.
+
+ * Editing: Things: changed the colours again. Tried to make important
+ things stand out and conversely. Bonuses are now dark green and
+ player/ deathmatch starts bright green. Keys are magenta.
+ Decoration is dim blue instead of white. Unknown objects are cyan
+ instead of white. Weapons are orange instead of brownish. Heretic
+ sound source things and Boom point pushers are dim turquoise-ish.
+
+ * Editing: Things: the sprite is now shown in the object info window.
+
+ * Editing: Vertices: deciding whether a vertex is on a linedef is now
+ done on the distance in pixels, not in map units. So you can now
+ work on very fine details (E.G. vertices only 2 map units away)
+ provided that the zoom factor is high enough.
+
+ * Editing: Fixed minor glitch in texture viewer that showed with
+ BIGDOOR7, SKY1, TEKWALL1, TEKWALL5 and others (DEU).
+
+ * Editing: When highlighting a sector, compared SideDefs[LineDef
+ [n].sidedef1].sector with ObjNum even though .sector was -1.
+ Somehow it always tested false (DEU).
+
+ * Editing: "Check textures names": the name of the offending texture
+ is now printed correctly even if it is 8 characters long (DEU).
+
+ * Editing: "Check textures names": if you fixed a missing texture,
+ the editor was not made aware that you had made changes to the
+ level (DEU).
+
+ * Editing: Unused sectors are not selected anymore (DEU).
+
+ * Editing: Changing the preferences could overwrite other variables
+ (DEU).
+
+ * Editing: InputNameFromListWithFunc() used to segfault if you
+ pressed [Pgdn] on a list shorter than (listdisp + 1) elements
+ (DEU).
+
+ * Editing: Removed segfault in AlignTexturesX() (DEU).
+
+ * Game/wad: Heretic is now supported.
+
+ * Game/wad: Added support for Boom's new thing flags
+ not-in-deathmatch and not-in-coop.
+
+ * Game/wad: Added support for Boom's new linedef flag pass-through.
+
+ * Misc: Renamed as Yadex to avoid confusion with Yet Another Diagram
+ Editor.
+
+ * Misc: Loading pwads: implemented standard directories. If the pwad
+ to load is in one of the standard directories (or a subdirectory)
+ you don't have to type the whole name.
+
+ * Misc: Loading pwads: added standard directories and made the
+ messages less verbose for pwads that contain patches (PP_START/
+ PP_END).
+
+ * Misc: Removed segfault during fatal_error() on failure to open the
+ iwad (DEU).
+
+ * Misc: The prompt now groks TTYs with a number of lines other than
+ 25.
+
+ * Misc: Changed the welcome message (a.k.a. "reminder").
+
+ * Misc: Added an "About Yadex..." window.
+
+ * Misc: Don't copy SEGS, SSECTORS, NODES, REJECT and BLOCKMAP from
+ the original file anymore when the map has changed. Makes smaller
+ wad files. Nice for archival.
+
+ * Misc: Added environment variable YADEX_GAME.
+
+ * Platform: Ported to X (plain Xlib). This version is not available
+ for DOS.
+
+ * Platform: Now works on big-endian machines.
+
+ * Platform: Removed several DOS-isms from file name handling code.
+
diff -uaNr yadex-1.5.2/FAQ yadex-1.6.0/FAQ
--- yadex-1.5.2/FAQ 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/FAQ 2001-07-01 11:12:13.000000000 +0200
@@ -0,0 +1,125 @@
+
+ Fancy logo
+ Yadex 1.6.0 (2001-06-27)
+
+ Yadex FAQ
+
+Compilation problems
+
+ warning: comparison between signed and unsigned
+ Not a problem. GCC is over-sensitive to signedness mismatches.
+
+ In sanity.cc,
+ warning: decimal integer constant is so large that it is
+ unsigned
+ Not a problem. It's a bug in GCC.
+
+ c++: command not found
+ Are you sure you have a C++ compiler ? If not, install one. If
+ you do have one, find out how it's called and change the "CXX
+ =" line in GNUmakefile accordingly.
+
+ X11/Xlib.h: No such file or directory
+ Are you sure you have the Xlib headers ? If not, install them.
+ If you already have them, then find out where they are and
+ change the "X11INCLUDEDIR =" line in GNUmakefile accordingly.
+
+ The compiler chokes on the Xlib headers
+ This happens on Solaris 2.6 with GCC 2.95.2. Oliver Kraus says
+ that the solution is to add "-fpermissive" to "CXXFLAGS =" in
+ GNUmakefile.
+
+ /usr/X11R6/lib/libX11.so: undefined reference to `recv'
+ /usr/X11R6/lib/libX11.so: undefined reference to `connect'
+ /usr/X11R6/lib/libX11.so: undefined reference to `socket'
+ /usr/X11R6/lib/libX11.so: undefined reference to `setsockopt'
+ /usr/X11R6/lib/libX11.so: undefined reference to `shutdown'
+ /usr/X11R6/lib/libX11.so: undefined reference to
+ `gethostbyname'
+ /usr/X11R6/lib/libX11.so: undefined reference to
+ `getservbyname'
+ /usr/X11R6/lib/libX11.so: undefined reference to `getpeername'
+ /usr/X11R6/lib/libX11.so: undefined reference to `getsockname'
+ This happens with QNX 6 and other Unices. Add "-lsocket" to
+ "LDFLAGS =" in GNUmakefile.
+
+ I have GCC 3.0 and Yadex 1.5.1 doesn't compile
+ Get Yadex 1.5.2 or later.
+
+ I have GCC 2.96 and Yadex 1.5.0 doesn't compile
+ Get Yadex 1.5.1 or later.
+
+ I have GCC 2.7 and I get lots of errors
+ GCC 2.7 is a very old compiler, it does not implement the
+ current C++ standard and I don't support it. If you must, try
+ applying patch/gcc-2.7.diff that's included in the archive but
+ don't complain to me if it doesn't work.
+
+ I have EGCS 1.1.2 / SuSE 6.2 and I get
+ "no matching function for call to `menu_c::menu_c (...)'"
+ Apparently, there is a bug in certain EGCS 1.1.2 installations
+ that makes them choke on src/editloop.cc. I know no workaround.
+ I'd suggest that you try to get a fix from your distributor or
+ use another compiler. EGCS 1.0.3, EGCS 1.1.1 and GCC 2.95.2 are
+ known to work.
+
+ Yadex 1.3.1 doesn't compile
+ There's a thinko in the makefile. It's fixed in version 1.3.2.
+
+ Yadex 1.1.0 doesn't compile
+ In src/infobar.cc, lines 48 and 49, replace
+
+ const char infobar_c::FILE_NAME_UNSET[1]; // A special pointer value
+ const char infobar_c::LEVEL_NAME_UNSET[1]; // A special pointer value
+
+ by
+
+ const char infobar_c::FILE_NAME_UNSET[1] = { ' ' };
+ const char infobar_c::LEVEL_NAME_UNSET[1] = { ' ' };
+
+ Yadex 1.0.1 doesn't compile
+ In src/vector.h, delete line 44 ("return this;") and compile
+ again.
+
+Misc.
+
+ I don't have an iwad
+ You can download certain iwads for free ;
+
+ + [1]Doom 1.8 shareware iwad
+ + [2]Heretic shareware version
+ + [3]Hexen demo
+ + [4]Strife demo
+
+ What about a 3D preview ?
+ Unless I suddenly become interested in 3D graphics, that is not
+ going to happen. Besides, I suspect that a better and easier
+ way to achieve what you're after might be to implement a
+ reload-level in your favourite Doom port.
+
+ Yadex is slow, particularly when dragging objects
+ Yes. I plan to replace the current implementation (pixmap) by
+ drawing directly to the window. The difficulty lies in making
+ that without generating a lot of flicker. In the meantime, try
+ the -P option.
+
+ How many people use Yadex ?
+ I don't know for sure. Each new release gets a few hundred
+ downloads.
+
+ Why didn't you use ?
+ I used plain Xlib and not a toolkit for several reasons.
+ Firstly, I wanted to learn Xlib. Secondly, I reckoned it would
+ be easier to translate the existing BGI calls to Xlib than to
+ some higher level toolkit. Thirdly, I feared that depending on
+ a toolkit would hurt portability.
+ _________________________________________________________________
+
+ AYM 2001-06-29
+
+References
+
+ 1. ftp://ftp.idsoftware.com/idstuff/doom/doom-1.8.wad.gz
+ 2. ftp://ftp.idsoftware.com/idstuff/heretic/htic_v12.zip
+ 3. ftp://ftp.idsoftware.com/idstuff/hexen/hexndemo.zip
+ 4. http://www.rogue-ent.com/sfiles.html
diff -uaNr yadex-1.5.2/GNUmakefile yadex-1.6.0/GNUmakefile
--- yadex-1.5.2/GNUmakefile 2001-06-30 23:31:28.000000000 +0200
+++ yadex-1.6.0/GNUmakefile 2003-03-31 18:57:59.000000000 +0200
@@ -1,6 +1,6 @@
#
# Makefile for Yadex
-# Copyright Andr Majorel 1998-2000.
+# Copyright Andr Majorel 1998-2003.
# AYM 1998-06-10
#
@@ -8,52 +8,51 @@
# rules, addprefix, addsuffix, etc. It's not named "GNUmakefile"
# for nothing.
-# Don't change these lines.
-DEFINES =
-VERSION := $(shell cat VERSION)
-VERPREV := $(shell test -f VERSION~ && cat VERSION~)
-
########################################################################
#
-# Definitions that end users
+# Definitions that only hackers
# might want to change
#
########################################################################
-# Where you want "make install" to put things.
-# Typical values : "/usr", "/usr/local" and "/opt".
-PREFIX = /usr/local
-
-# Which OS ?
-OS := $(shell uname -s | tr A-Z a-z)
-
-# Can we use GCC to compile BSP ?
-HAVE_GCC := $(shell if gcc --version; then echo OK; fi)
+# The name of the directory where objects and
+# binaries are put. I include the output of
+# "uname -a" to make it easier for me to build
+# Yadex for different platforms from the same
+# source tree.
+SYSTEM := $(shell echo `uname -n`_`uname -a | cksum` | tr -dc '[:alnum:]._-')
+OBJDIR = obj/0
+DOBJDIR = dobj/0
+OBJPHYSDIR = obj/$(SYSTEM)
+DOBJPHYSDIR = dobj/$(SYSTEM)
+OBJDIR_ATCLIB = $(OBJDIR)/atclib
+DOBJDIR_ATCLIB = $(DOBJDIR)/atclib
+OBJPHYSDIR_ATCLIB = $(OBJPHYSDIR)/atclib
+DOBJPHYSDIR_ATCLIB = $(DOBJPHYSDIR)/atclib
-# Is that /usr/man or /usr/share/man ?
-FHS_MAN := $(shell if [ -d $(PREFIX)/share/man ]; then echo OK; fi)
+# Create all directories and make symlinks to
+# config.cc and config.h. Doing it at the start
+# makes things much simpler later on.
+DUMMY := $(shell \
+ mkdir -p $(OBJPHYSDIR) $(OBJPHYSDIR_ATCLIB); \
+ mkdir -p $(DOBJPHYSDIR) $(DOBJPHYSDIR_ATCLIB); \
+ [ ! -h $(OBJDIR) ] || rm $(OBJDIR); \
+ [ ! -h $(DOBJDIR) ] || rm $(DOBJDIR); \
+ ln -s $(SYSTEM) $(OBJDIR); \
+ ln -s $(SYSTEM) $(DOBJDIR); \
+ )
-# Does your system have gettimeofday() ?
-# Current rule: all systems have it.
-HAVE_GETTIMEOFDAY = 1
-
-# Does your system have nanosleep() ?
-# Current rule: only Linux has it.
-ifneq (,$(findstring $(OS), linux))
- HAVE_NANOSLEEP = 1
-endif
+include $(OBJDIR)/Makefile.config
-# Does your system have snprintf() ?
-# Current rule: only Linux has it.
-ifneq (,$(findstring $(OS), linux))
- HAVE_SNPRINTF = 1
-endif
+########################################################################
+#
+# Definitions that end users
+# might want to change
+#
+########################################################################
-# Does your system have usleep() ?
-# Current rule: all unices have it.
-ifdef OS
- HAVE_USLEEP = 1
-endif
+# Which OS ?
+OS := $(shell uname -s | tr A-Z a-z)
# Where your X11 libraries and headers reside.
# Current rule:
@@ -73,25 +72,25 @@
endif
endif
-# Your C and C++ compilers.
-CC = cc
-CXX = c++
+# C and C++ compiler
+#CC = cc
+#CXX = c++
# Options used when compiling Atclib.
CFLAGS = -O
# Options used when compiling and linking Yadex.
-# ld is invoked through the C++ compiler
-# so LDFLAGS should not contain options that mean
+# ld is invoked through the C++ compiler so
+# LDFLAGS should not contain options that mean
# something to the C++ compiler.
-CXXFLAGS = -O -I$(X11INCLUDEDIR)
-LDFLAGS =
+CXXFLAGS = -O
+#LDFLAGS =
# Options used to compile and link the debugging
# targets. Not used by normal end-user targets.
# Unlike CFLAGS, CXXFLAGS and LDFLAGS, assume
# GCC/EGCS.
-DCFLAGS = -g -O -I$(X11INCLUDEDIR)
+DCFLAGS = -g -O
DCFLAGS += -Wall # GCC warnings
DCFLAGS += -pedantic # GCC warnings
DCFLAGS += -Wno-parentheses # GCC warnings
@@ -104,7 +103,7 @@
DCFLAGS += -Winline # GCC warnings
DCFLAGS += -pg # Profiling
-DCXXFLAGS = -g -O -I$(X11INCLUDEDIR)
+DCXXFLAGS = -g -O
DCXXFLAGS += -Wall # GCC warnings
DCXXFLAGS += -pedantic # GCC warnings
DCXXFLAGS += -Wno-parentheses # GCC warnings
@@ -130,13 +129,15 @@
########################################################################
MAKEFILE = GNUmakefile
+VERSION := $(shell cat VERSION)
+VERPREV := $(shell test -f VERPREV && cat VERPREV)
# All the modules of Yadex without path or extension.
-MODULES_YADEX =\
+MODULES_YADEX = \
acolours aym bench bitvec \
- cfgfile checks colour1 \
- colour2 colour3 colour4 dependcy \
- dialog disppic drawmap \
+ cfgfile checks colour1 colour2 \
+ colour3 colour4 config credits \
+ dependcy dialog disppic drawmap \
edisplay editgrid editlev editloop \
editobj editsave endian editzoom \
entry entry2 events flats \
@@ -146,28 +147,27 @@
img imgscale imgspect infobar \
input l_align l_centre l_flags \
l_misc l_prop l_unlink l_vertices \
- levels lists lumpdir macro \
- memory menubar menu mkpalette \
- mouse names nop objects \
- objinfo oldmenus palview patchdir \
- pic2img prefer s_centre s_door \
- s_lift s_linedefs s_merge s_misc \
- s_prop s_split s_swapf s_vertices \
- sanity \
- savepic scrnshot selbox selectn \
- selpath selrect serialnum spritdir \
- sticker swapmem t_centre t_flags \
- t_prop \
- t_spin textures things trace \
- v_centre v_merge v_polyg vectext \
- verbmsg \
- version wadnamec wadres wads \
- wads2 warn windim x_centre \
- x_exchng x_mirror x_rotate x11 \
- xref yadex ytime
+ levels lists locate lumpdir \
+ macro memory menubar menu \
+ mkpalette mouse names nop \
+ objects objinfo oldmenus palview \
+ patchdir pic2img prefer s_centre \
+ s_door s_lift s_linedefs s_merge \
+ s_misc s_prop s_slice s_split \
+ s_swapf s_vertices sanity scrnshot \
+ selbox selectn selpath selrect \
+ serialnum spritdir sticker swapmem \
+ t_centre t_flags t_prop t_spin \
+ textures things trace v_centre \
+ v_merge v_polyg vectext verbmsg \
+ version wadfile wadlist wadnamec \
+ wadres wads wads2 warn \
+ windim x_centre x_exchng x_hover \
+ x_mirror x_rotate x11 xref \
+ yadex ytime
# All the modules of Atclib without path or extension.
-MODULES_ATCLIB =\
+MODULES_ATCLIB = \
al_adigits al_aerrno al_astrerror al_fana \
al_fnature al_lateol al_lcount al_lcreate \
al_ldelete al_ldiscard al_lgetpos al_linsert \
@@ -178,68 +178,32 @@
al_sapc al_saps al_scps al_scpslower \
al_sdup al_sisnum al_strolc
-# All the modules of BSP without path or extension.
-MODULES_BSP =\
- bsp funcs makenode picknode
-
-# The source files of Yadex, Atclib and BSP
+# The source files of Yadex and Atclib
SRC_YADEX = $(addprefix src/, $(addsuffix .cc, $(MODULES_YADEX)))
SRC_ATCLIB = $(addprefix atclib/, $(addsuffix .c, $(MODULES_ATCLIB)))
-SRC_BSP = $(addprefix bsp-2.3/, $(addsuffix .c, $(MODULES_BSP)))
-# The headers of Yadex, Atclib and BSP
+# The headers of Yadex and Atclib
HEADERS_YADEX := $(wildcard src/*.h)
HEADERS_ATCLIB = atclib/atclib.h
-HEADERS_BSP = bsp-2.3/bsp.h bsp-2.3/structs.h
# All the source files, including the headers.
-SRC = $(SRC_YADEX) $(HEADERS_YADEX)\
- $(SRC_ATCLIB) $(HEADERS_ATCLIB)\
- $(SRC_BSP) $(HEADERS_BSP)
+SRC = $(filter-out src/config.cc, $(SRC_YADEX)) \
+ $(filter-out src/config.h, $(HEADERS_YADEX)) \
+ $(SRC_ATCLIB) $(HEADERS_ATCLIB)
# The files on which youngest is run.
-SRC_NON_GEN = $(filter-out src/version.cc, $(SRC))
-
-# Defines used when compiling Yadex.
-# If you change Y_UNIX for Y_DOS or Y_X11 for Y_BGI,
-# don't even expect it to compile. As of this release,
-# the DOS/BGI version is _broken_.
-DEFINES += -DY_UNIX -DY_X11
-#DEFINES += -DY_ALPHA
-#DEFINES += -DY_BETA
-ifdef HAVE_GETTIMEOFDAY
- DEFINES += -DY_GETTIMEOFDAY
-endif
-ifdef HAVE_NANOSLEEP
- DEFINES += -DY_NANOSLEEP
-endif
-ifdef HAVE_SNPRINTF
- DEFINES += -DY_SNPRINTF
-endif
-ifdef HAVE_USLEEP
- DEFINES += -DY_USLEEP
-endif
+SRC_NON_GEN = $(filter-out src/credits.cc src/prefix.cc src/version.cc, $(SRC))
-# The name of the directory where objects and binaries
-# are put. I include the output of "uname -a" to make
-# it easier for me to build Yadex for different platforms
-# from the same source tree.
-OBJSUBDIR := $(shell uname -a | tr -c "[:alnum:]._-" "[_*]")
-OBJDIR = obj/0
-DOBJDIR = dobj/0
-OBJPHYSDIR = obj/$(OBJSUBDIR)
-DOBJPHYSDIR = dobj/$(OBJSUBDIR)
-OBJDIR_ATCLIB = $(OBJDIR)/atclib
-DOBJDIR_ATCLIB = $(DOBJDIR)/atclib
-OBJPHYSDIR_ATCLIB = $(OBJPHYSDIR)/atclib
-DOBJPHYSDIR_ATCLIB = $(DOBJPHYSDIR)/atclib
+# The object files
+OBJ_CONFIG =# $(OBJDIR)/config.o
+DOBJ_CONFIG =# $(DOBJDIR)/config.o
OBJ_YADEX = $(addprefix $(OBJDIR)/, $(addsuffix .o, $(MODULES_YADEX)))
DOBJ_YADEX = $(addprefix $(DOBJDIR)/, $(addsuffix .o, $(MODULES_YADEX)))
-OBJ_ATCLIB = $(addprefix $(OBJDIR_ATCLIB)/, $(addsuffix .o, $(MODULES_ATCLIB)))
-DOBJ_ATCLIB = $(addprefix $(DOBJDIR_ATCLIB)/, $(addsuffix .o, $(MODULES_ATCLIB)))
+OBJ_ATCLIB = $(addprefix $(OBJDIR_ATCLIB)/, $(addsuffix .o,$(MODULES_ATCLIB)))
+DOBJ_ATCLIB = $(addprefix $(DOBJDIR_ATCLIB)/, $(addsuffix .o,$(MODULES_ATCLIB)))
# The game definition files.
-YGD = $(addprefix ygd/,\
+YGD = $(addprefix ygd/, \
doom.ygd doom02.ygd doom04.ygd doom05.ygd \
doom2.ygd doompr.ygd heretic.ygd hexen.ygd \
strife.ygd strife10.ygd)
@@ -247,14 +211,14 @@
# Files that are used with scripts/process to
# generate files that are included in the
# distribution archive.
-DOC1_SRC =\
+DOC1_SRC = \
docsrc/README \
docsrc/README.doc
# Files that are used with scripts/process to
# generate files that go in the doc/ directory
# and are NOT included in the archive.
-DOC2_SRC_HTML =\
+DOC2_SRC_HTML = \
docsrc/advanced.html \
docsrc/contact.html \
docsrc/credits.html \
@@ -268,6 +232,7 @@
docsrc/index.html \
docsrc/keeping_up.html \
docsrc/legal.html \
+ docsrc/packagers_guide.html \
docsrc/palette.html \
docsrc/reporting.html \
docsrc/tips.html \
@@ -277,15 +242,14 @@
docsrc/wad_specs.html \
docsrc/ygd.html
-DOC2_SRC_MISC =\
- bsp-2.3/ybsp.6 \
+DOC2_SRC_MISC = \
docsrc/yadex.6 \
# docsrc/yadex.lsm\
# Files that must be put in the distribution
# archive. Most (but not all) are generated from
# $(DOC1_SRC_*) into the base directory.
-DOC1 = README doc/README
+DOC1 = FAQ README doc/README
# Files that go in the doc/ directory and must
# NOT be put in the distribution archive. Most
@@ -295,69 +259,108 @@
# Misc. other files that must be put in the
# distribution archive.
-MISC_FILES =\
- src/.srcdate \
- src/.uptodate \
- CHANGES \
- COPYING \
- COPYING.LIB \
- GNUmakefile \
- Makefile \
- TODO \
- VERSION \
- bsp-2.3/bsp23x.txt \
- bsp-2.3/transdor.wad \
- docsrc/.pixlist \
- yadex.cfg \
+MISC_FILES = \
+ boost/boost/config.hpp \
+ boost/boost/config/compiler/borland.hpp \
+ boost/boost/config/compiler/comeau.hpp \
+ boost/boost/config/compiler/common_edg.hpp \
+ boost/boost/config/compiler/compaq_cxx.hpp \
+ boost/boost/config/compiler/gcc.hpp \
+ boost/boost/config/compiler/greenhills.hpp \
+ boost/boost/config/compiler/hp_acc.hpp \
+ boost/boost/config/compiler/intel.hpp \
+ boost/boost/config/compiler/kai.hpp \
+ boost/boost/config/compiler/metrowerks.hpp \
+ boost/boost/config/compiler/mpw.hpp \
+ boost/boost/config/compiler/sgi_mipspro.hpp \
+ boost/boost/config/compiler/sunpro_cc.hpp \
+ boost/boost/config/compiler/vacpp.hpp \
+ boost/boost/config/compiler/visualc.hpp \
+ boost/boost/config/platform/aix.hpp \
+ boost/boost/config/platform/beos.hpp \
+ boost/boost/config/platform/bsd.hpp \
+ boost/boost/config/platform/cygwin.hpp \
+ boost/boost/config/platform/hpux.hpp \
+ boost/boost/config/platform/irix.hpp \
+ boost/boost/config/platform/linux.hpp \
+ boost/boost/config/platform/macos.hpp \
+ boost/boost/config/platform/solaris.hpp \
+ boost/boost/config/platform/win32.hpp \
+ boost/boost/config/posix_features.hpp \
+ boost/boost/config/select_compiler_config.hpp \
+ boost/boost/config/select_platform_config.hpp \
+ boost/boost/config/select_stdlib_config.hpp \
+ boost/boost/config/stdlib/dinkumware.hpp \
+ boost/boost/config/stdlib/libstdcpp3.hpp \
+ boost/boost/config/stdlib/modena.hpp \
+ boost/boost/config/stdlib/msl.hpp \
+ boost/boost/config/stdlib/roguewave.hpp \
+ boost/boost/config/stdlib/sgi.hpp \
+ boost/boost/config/stdlib/stlport.hpp \
+ boost/boost/config/stdlib/vacpp.hpp \
+ boost/boost/config/suffix.hpp \
+ boost/boost/config/user.hpp \
+ boost/boost/smart_ptr.hpp \
+ boost/boost/static_assert.hpp \
+ boost/boost/utility.hpp \
+ boost/boost/utility/base_from_member.hpp \
+ boost/boost/utility_fwd.hpp \
+ cache/copyright.man \
+ cache/copyright.txt \
+ cache/pixlist \
+ cache/srcdate \
+ cache/uptodate \
+ configure \
+ docsrc/copyright \
+ CHANGES \
+ COPYING \
+ COPYING.LIB \
+ GNUmakefile \
+ Makefile \
+ TODO \
+ VERSION \
+ yadex.cfg \
yadex.dep
# The images used in the HTML doc. FIXME: "&1
-
-.PHONY: ybsp
-ybsp: $(BINDIR)/ybsp
-
-$(BINDIR)/ybsp: $(SRC_BSP) $(HEADERS_BSP) $(MAKEFILE)
- @echo
-ifdef HAVE_GCC
- @echo Compiling and linking BSP with gcc
- @gcc bsp-2.3/bsp.c -DYADEX_VERSION=\"$(VERSION)\" \
- -O2 -Wall -Winline -finline-functions -ffast-math -lm -o $@
-else
- @echo Compiling and linking BSP with cc
- @$(CC) bsp-2.3/bsp.c -DYADEX_VERSION=\"$(VERSION)\" -O2 -lm -o $@
-endif
+$(OBJDIR)/yadex: $(OBJ_CONFIG) $(OBJ_YADEX) $(OBJ_ATCLIB) $(MAKEFILE)
+ @echo "** Linking Yadex"
+ $(CXX) $(OBJ_CONFIG) $(OBJ_YADEX) $(OBJ_ATCLIB) -o $@ \
+ -L$(X11LIBDIR) -lX11 -lm -lc $(LDFLAGS)
.PHONY: test
test:
- $(BINDIR)/yadex $(A)
+ $(OBJDIR)/yadex $(A)
.PHONY: install
-install:
- @echo
- @scripts/mkinstalldirs $(INST_BINDIR)
- @scripts/mkinstalldirs $(INST_CFGDIR)
- @scripts/mkinstalldirs $(INST_MANDIR)
- @scripts/mkinstalldirs $(INST_YGDDIR)
- @echo Installing yadex and ybsp in $(INST_BINDIR)
- cp -p $(BINDIR)/yadex $(INST_BINDIR)/yadex-$(VERSION) 2>&1
- ln -sf yadex-$(VERSION) $(INST_BINDIR)/yadex 2>&1
- cp -p $(BINDIR)/ybsp $(INST_BINDIR)/ybsp-$(VERSION) 2>&1
- ln -sf ybsp-$(VERSION) $(INST_BINDIR)/ybsp 2>&1
- @echo Installing man pages in $(INST_MANDIR)
- cp -p doc/yadex.6 $(INST_MANDIR) 2>&1
- cp -p doc/ybsp.6 $(INST_MANDIR) 2>&1
- @echo Installing game definition files in $(INST_YGDDIR)
- cp -p $(YGD) $(INST_YGDDIR) 2>&1
- @echo Installing configuration file in $(INST_CFGDIR)
- cp -p yadex.cfg $(INST_CFGDIR) 2>&1
- chmod a+w $(INST_CFGDIR)/yadex.cfg 2>&1
+install: $(OBJDIR)/install
+ @scripts/mkinstalldirs $(BINDIR)
+ @scripts/mkinstalldirs $(ETCDIR)
+ @scripts/mkinstalldirs $(MANDIR)
+ @scripts/mkinstalldirs $(MANDIR)/man6
+ @scripts/mkinstalldirs $(SHAREDIR)
+ $(OBJDIR)/install -m 755 $(OBJDIR)/yadex $(BINDIR)/yadex-$(VERSION)
+ rm -f $(BINDIR)/yadex
+ ln -s yadex-$(VERSION) $(BINDIR)/yadex
+ $(OBJDIR)/install -m 644 doc/yadex.6 $(MANDIR)/man6/yadex-$(VERSION).6
+ rm -f $(MANDIR)/man6/yadex.6
+ ln -s yadex-$(VERSION).6 $(MANDIR)/man6/yadex.6
+ $(OBJDIR)/install -m 644 -d $(SHAREDIR) $(YGD)
+ $(OBJDIR)/install -m 644 -d $(ETCDIR) yadex.cfg
@echo "---------------------------------------------------------------"
@echo " Yadex is now installed."
@echo
@echo " Before you run it, enter the paths to your iwads in"
- @echo " $(INST_CFGDIR)/yadex.cfg."
+ @echo " $(ETCDIR)/yadex.cfg or ~/.yadex/yadex.cfg."
@echo " When you're done, type \"yadex\" to start."
- @echo " If you're confused, take a look at index.html."
+ @echo " If you're confused, take a look at doc/index.html."
@echo
- @echo " Good editing !"
+ @echo " Happy editing !"
@echo "---------------------------------------------------------------"
.PHONY: clean
clean:
- rm -r $(OBJPHYSDIR)
+ rm -f $(OBJ_CONFIG) $(OBJ_YADEX) $(OBJ_ATCLIB) $(OBJDIR)/yadex
+ rm -f $(DOBJ_CONFIG) $(DOBJ_YADEX) $(DOBJ_ATCLIB) $(DOBJDIR)/yadex
+ rm -f $(OBJDIR)/ftime
+ rm -f $(OBJDIR)/install
+ rm -f $(OBJDIR)/notexist
+ rm -f $(OBJDIR)
+ rm -f $(DOBJDIR)
+ rm -rf doc
.PHONY: dclean
dclean:
- rm -r $(DOBJPHYSDIR)
+ rm -rf $(DOBJPHYSDIR)
+ rm -f $(DOBJDIR)
.PHONY: doc
-doc: docsrc/.pixlist docdirs $(DOC1) doc2
+doc: cache/pixlist docdirs $(DOC1) doc2
# Have to put it separately because evaluation
-# of $(DOC2) requires docsrc/.pixlist to exist.
+# of $(DOC2) requires cache/pixlist to exist.
.PHONY: doc2
doc2: $(DOC2)
.PHONY: help
help:
@echo User targets:
- @echo "make [all] Build Yadex and BSP"
- @echo "make yadex Build Yadex"
- @echo "make ybsp Build BSP"
- @echo "make test [A=args] Test Yadex"
- @echo "make install [PREFIX=dir] Install Yadex and BSP"
+ @echo "make [all] Build everything"
+ @echo "make yadex Build Yadex"
+ @echo "make test [A=args] Test Yadex"
+ @echo "make install Install everything"
+ @echo "make showconf Show current configuration"
@echo
@echo Hacker targets:
- @echo "make dall Build debug version of Yadex and BSP"
+ @echo "make dall Build debug version of everything"
@echo "make dyadex Build debug version of Yadex"
- @echo "make dybsp Build debug version of BSP"
@echo "make dtest [A=args] Test debug version of Yadex"
@echo "make dg Run debug version of Yadex through gdb"
@echo "make dd Run debug version of Yadex through ddd"
@@ -466,7 +456,6 @@
@echo "make ps View man page with gv"
@echo "make dist Create distribution archive"
@echo "make save Create backup archive"
- @echo "make showconf Show current configuration"
########################################################################
@@ -482,142 +471,130 @@
.PHONY: save
save:
- tar -zcvf yadex-$$(date '+%Y%m%d').tgz\
- --exclude "*.wad"\
- --exclude "*.zip"\
- --exclude "core"\
- --exclude "dos/*"\
- --exclude "obj"\
- --exclude "dobj"\
- --exclude "old/*"\
- --exclude "*~"\
- --exclude "*.bak"\
- --exclude "web/arc"\
- --exclude yadex-$$(date '+%Y%m%d').tgz\
+ tar -Icvf yadex-$$(date '+%Y%m%d').tar.bz2 \
+ --exclude "*.wad" \
+ --exclude "*.zip" \
+ --exclude "core" \
+ --exclude "dos/*" \
+ --exclude "obj" \
+ --exclude "dobj" \
+ --exclude "old/*" \
+ --exclude "*~" \
+ --exclude "*.bak" \
+ --exclude "web/arc" \
+ --exclude yadex-$$(date '+%Y%m%d').tar.bz2 \
.
.PHONY: dall
-dall: yadex.dep ddirs dyadex dybsp $(YGD)
+dall: yadex.dep dyadex $(YGD)
.PHONY: dyadex
-dyadex: ddirs $(DBINDIR)/yadex
+dyadex: $(DOBJDIR)/yadex
-$(DBINDIR)/yadex: $(DOBJ_YADEX) $(DOBJ_ATCLIB) $(MAKEFILE)
- @echo
- @echo Linking Yadex
- @$(CXX) $(DOBJ_YADEX) $(DOBJ_ATCLIB) -o $@\
- -L$(X11LIBDIR) -lc -lm -lX11 $(DLDFLAGS) 2>&1
-
-.PHONY: dybsp
-dybsp: ddirs $(DBINDIR)/ybsp
-
-$(DBINDIR)/ybsp: $(SRC_BSP) $(HEADERS_BSP) $(MAKEFILE)
- @echo
- @echo Compiling and linking BSP
- @$(CC) bsp-2.3/bsp.c -Wall -Winline -O2 -finline-functions\
- -ffast-math -lm -o $@
+$(DOBJDIR)/yadex: $(DOBJ_CONFIG) $(DOBJ_YADEX) $(DOBJ_ATCLIB) $(MAKEFILE)
+ @echo "** Linking Yadex"
+ $(CXX) $(DOBJ_CONFIG) $(DOBJ_YADEX) $(DOBJ_ATCLIB) -o $@ \
+ -L$(X11LIBDIR) -lX11 -lm -lc $(DLDFLAGS)
.PHONY: dtest
dtest:
- $(DBINDIR)/yadex $(A)
- gprof $(DBINDIR)/yadex >gprof.out
+ $(DOBJDIR)/yadex $(A)
+ gprof $(DOBJDIR)/yadex >gprof.out
.PHONY: dg
dg:
- gdb $(DBINDIR)/yadex
+ gdb $(DOBJDIR)/yadex
.PHONY: dd
dd:
- ddd $(DBINDIR)/yadex
+ ddd $(DOBJDIR)/yadex
+
+.PHONY: asm
+asm: $(addprefix $(OBJDIR)/, $(addsuffix .S, $(MODULES_YADEX)))
# Generate the distribution archives. Requires GNU tar,
-# GNU cp, gzip and optionally bzip2. bzip2 is cool but,
-# in this case, it's 900% slower than gzip while being
-# only 15% more efficient. That's why the creation
-# of the .tar.bz2 archive is commented out.
+# GNU cp, gzip and optionally bzip2 (if distbz2 is
+# uncommented).
.PHONY: dist
dist: changes distimage distgz distdiff #distbz2
- @echo "> Removing distribution image tree $(ARCHIVE)"
+ @echo "** Removing distribution image tree $(ARCHIVE)"
rm -r $(ARCHIVE)
.PHONY: distimage
distimage: all $(ARC_FILES)
- @echo "> Creating distribution image tree $(ARCHIVE)"
- @[ ! -e $(ARCHIVE) ] || (echo "Error: $(ARCHIVE) already exists"; false)
+ @echo "** Creating distribution image tree $(ARCHIVE)"
+ rm -rf $(ARCHIVE)
scripts/mkinstalldirs $(ARCHIVE)
@tar -cf - $(ARC_FILES) | (cd $(ARCHIVE); tar -xf -)
.PHONY: distgz
distgz: distimage
- @echo "> Creating gzipped distribution"
+ @echo "** Creating tar.gz distribution"
tar -czf $(ARCHIVE).tar.gz $(ARCHIVE)
.PHONY: distbz2
distbz2: distimage
- @echo "> Creating bzip2'd distribution"
+ @echo "** Creating .tar.bz2 distribution"
tar -cIf $(ARCHIVE).tar.bz2 $(ARCHIVE)
.PHONY: distdiff
TMP0 = $$HOME/tmp
TMPPREV = $(TMP0)/$(ARCPREV)
TMPCURR = $(TMP0)/$(ARCHIVE)
-TMPDIFF = $(TMP0)/$(ARCDIFF)
-DIFF = $(TMP0)/$(ARCDIFF)/$(ARCDIFF)
distdiff:
- @echo "> Building the diff distribution"
- @echo ">> Creating the diff"
- @[ ! -e $(TMPPREV) ] || (echo "Error: $(TMPPREV) already exists"; false)
- @[ ! -e $(TMPCURR) ] || (echo "Error: $(TMPCURR) already exists"; false)
- @[ ! -e $(TMPDIFF) ] || (echo "Error: $(TMPDIFF) already exists"; false)
- tar -xzf $(ARCHIVE).tar.gz -C $(TMP0)
+ @echo "** Building the diff distribution"
+ @echo "Creating the diff"
+ rm -rf $(TMPPREV) $(TMPCURR) $(TMPDIFF)
+ mkdir -p $(TMP0)
+ tar -xzf $(ARCHIVE).tar.gz -C $(TMP0)
tar -xzf ../yadex-arc/pub/$(ARCPREV).tar.gz -C $(TMP0)
- mkdir -p $(TMPDIFF)
- cd $(TMP0) && (diff -uNr $(ARCPREV) $(ARCHIVE) >$(DIFF) || true)
- #! grep "Binary files y.* and .* differ" $(DIFF)
- scripts/process docsrc/README.diff >$(TMPDIFF)/README
- cd $(TMP0) && tar -czf $(ARCDIFF).tar.gz $(ARCDIFF)
- cd $(TMPO) && rm -rf $(ARCDIFF)
- cd $(TMP0) && tar -xzf $(ARCDIFF).tar.gz
- @echo ">> Verifying the diff"
- cd $(TMPPREV) && patch -p1 <../$(ARCDIFF)/$(ARCDIFF)
- cd $(TMP0) && diff -r $(ARCPREV) $(ARCHIVE)
- mv $(TMPDIFF).tar.gz .
- @echo ">> Cleaning up"
+ scripts/process docsrc/README.diff >$(TMP0)/$(ARCDIFF)
+ echo >>$(TMP0)/$(ARCDIFF)
+ cd $(TMP0) && (diff -uaNr $(ARCPREV) $(ARCHIVE) >>$(ARCDIFF) || true)
+ @# KLUDGE - On my system, just "! grep" makes make choke
+ true; ! grep "^Binary files .* and .* differ" $(TMP0)/$(ARCDIFF)
+ gzip -f $(TMP0)/$(ARCDIFF)
+ @echo "Verifying the diff"
+ cd $(TMPPREV) && gzip -d <../$(ARCDIFF).gz | patch -p1
+ @# FIXME remove -N after 1.6 is done, it's there because
+ @# uptodate has been moved between 1.5 and 1.6 and since
+ @# it's empty it remains in $(ARCPREV).
+ cd $(TMP0) && diff -rP $(ARCHIVE) $(ARCPREV)
+ mv $(TMP0)/$(ARCDIFF).gz .
+ @echo "Cleaning up"
cd $(TMP0) && rm -rf $(ARCPREV)
cd $(TMP0) && rm -rf $(ARCHIVE)
- cd $(TMP0) && rm -rf $(ARCDIFF)
.PHONY: showconf
showconf:
@echo "ARCHIVE \"$(ARCHIVE)\""
+ @echo "BINDIR \"$(BINDIR)\""
@echo "CC \"$(CC)\""
@echo "CFLAGS \"$(CFLAGS)\""
@echo "CXX \"$(CXX)\""
@echo "CXXFLAGS \"$(CXXFLAGS)\""
@echo "DCFLAGS \"$(DCFLAGS)\""
@echo "DCXXFLAGS \"$(DCXXFLAGS)\""
- @echo "DEFINES \"$(DEFINES)\""
@echo "DLDFLAGS \"$(DLDFLAGS)\""
- @echo "FHS_MAN \"$(FHS_MAN)\""
- @echo "HAVE_GCC \"$(HAVE_GCC)\""
+ @echo "ETCDIR \"$(ETCDIR)\""
+ @echo "ETCDIRNV \"$(ETCDIRNV)\""
@echo "HAVE_GETTIMEOFDAY \"$(HAVE_GETTIMEOFDAY)\""
@echo "HAVE_NANOSLEEP \"$(HAVE_NANOSLEEP)\""
@echo "HAVE_SNPRINTF \"$(HAVE_SNPRINTF)\""
@echo "HAVE_USLEEP \"$(HAVE_USLEEP)\""
- @echo "INST_BINDIR \"$(INST_BINDIR)\""
- @echo "INST_CFGDIR \"$(INST_CFGDIR)\""
- @echo "INST_MANDIR \"$(INST_MANDIR)\""
- @echo "INST_YGDDIR \"$(INST_YGDDIR)\""
@echo "LDFLAGS \"$(LDFLAGS)\""
- @echo "OBJSUBDIR \"$(OBJSUBDIR)\""
+ @echo "MANDIR \"$(MANDIR)\""
@echo "OS \"$(OS)\""
@echo "PREFIX \"$(PREFIX)\""
+ @echo "SHAREDIR \"$(SHAREDIR)\""
+ @echo "SHAREDIRNV \"$(SHAREDIRNV)\""
@echo "SHELL \"$(SHELL)\""
+ @echo "SYSTEM \"$(SYSTEM)\""
@echo "VERSION \"$(VERSION)\""
@echo "X11INCLUDEDIR \"$(X11INCLUDEDIR)\""
@echo "X11LIBDIR \"$(X11LIBDIR)\""
- @echo "c++ --version \"`c++ --version`\""
- @echo "cc --version \"`cc --version`\""
+ @echo "CXX --version \"`$(CXX) --version`\""
+ @echo "CC --version \"`$(CC) --version`\""
@echo "shell \"$$SHELL\""
@echo "uname \"`uname`\""
@@ -629,6 +606,17 @@
#
########################################################################
+# If Makefile.config doesn't exist, give a hint...
+$(OBJDIR)/Makefile.config:
+ @echo "Sorry guv'nor, but... did you run ./configure ?" >&2
+ @false
+
+$(OBJDIR)/files_etc.man: $(OBJDIR)/config.etc $(MAKEFILE)
+ sed 's/%v/$(VERSION)/g; s,.*,.B &/yadex.cfg,' $< >$@
+
+$(OBJDIR)/files_share.man: $(OBJDIR)/config.share $(MAKEFILE)
+ sed 's/%v/$(VERSION)/g; s,.*,.BI &/ game .ygd,' $< >$@
+
# Dependencies of the modules of Yadex
# -Y is here to prevent the inclusion of dependencies on
# /usr/include/*.h etc. As a side-effect, it generates many
@@ -646,162 +634,152 @@
# Note: the modules of Atclib are not scanned as they all
# depend on $(HEADERS_ATCLIB) and nothing else.
-yadex.dep: $(SRC_YADEX)
- @echo
- @echo makedepend
- @makedepend -f- -Y -Iatclib $(DEFINES) $(SRC_YADEX) 2>/dev/null\
- | awk 'sub (/^src/, "") == 1 {\
- print "'$(OBJDIR)'" $$0;\
- print "'$(DOBJDIR)'" $$0;\
- next;\
+yadex.dep: $(SRC_NON_GEN)
+ @echo "Generating $@"
+ @makedepend -f- -Y -Iatclib $(SRC_NON_GEN) 2>/dev/null \
+ | awk 'sub (/^src/, "") == 1 { \
+ print "'$(OBJDIR)'" $$0; \
+ print "'$(DOBJDIR)'" $$0; \
+ next; \
}' >$@
+cache/copyright.man: $(MAKEFILE) scripts/copyright docsrc/copyright
+ scripts/copyright -m docsrc/copyright >$@
+
+cache/copyright.txt: $(MAKEFILE) scripts/copyright docsrc/copyright
+ scripts/copyright -t docsrc/copyright | sed 's/^./ &/' >$@
+
# The YYYY-MM-DD date indicated in the parentheses after the
# version number is the mtime of the most recent source file
# (where "being a source file" is defined as "being listed in
# $(SRC_NON_GEN)"). That string is the output of a perl script,
# scripts/youngest. Since perl is not necessarily installed on
-# all machines, we cache that string in the file src/.srcdate
+# all machines, we cache that string in the file cache/srcdate
# and include that file in the distribution archive. If we
# didn't do that, people who don't have perl would be unable to
# build Yadex.
#
-# Conceptually, src/.srcdate depends on $(SRC_NON_GEN) and
-# doc/*.html depend on src/.srcdate. However, we can't write the
+# Conceptually, cache/srcdate depends on $(SRC_NON_GEN) and
+# doc/*.html depend on cache/srcdate. However, we can't write the
# makefile that way because if we did, that would cause two
# problems. Firstly every time a source file is changed,
# scripts/youngest would be ran, most of the time for nothing
# since its output is always the same, unless it's never been
-# run today. Secondly, src/.srcdate being just generated, it's
+# run today. Secondly, cache/srcdate being just generated, it's
# more recent than the content of the doc/ directory. The result
# would be that the entire doc/ directory would be rebuilt every
# time a single source file is changed, which is guaranteed to
# have an unnerving effect on the hacker at the keyboard.
#
# Part of the solution is to systematically force the mtime of
-# src/.srcdate to 00:00, today. Thus, src/.srcdate always looks
+# cache/srcdate to 00:00, today. Thus, cache/srcdate always looks
# older than the content of the doc/ directory, unless it's not
# been refreshed yet today.
#
-# But that's not enough because then src/.srcdate also looks
+# But that's not enough because then cache/srcdate also looks
# always older than the source files it depends on, and thus
# make attempts to regenerate it every time make is invoked at
-# all, which would render the very existence of src/.srcdate
-# useless. That's why we have another file, src/.uptodate, that
+# all, which would render the very existence of cache/srcdate
+# useless. That's why we have another file, cache/uptodate, that
# we touch to keep track of the time when we last generated
-# src/.srcdate.
+# cache/srcdate.
#
# If there was a such thing as _date-only_ dependencies, I could
# get away with just this :
#
-# src/.srcdate: scripts/youngest
-# src/.srcdate $(SRC_NON_GEN)
+# cache/srcdate: scripts/youngest
+# cache/srcdate $(SRC_NON_GEN)
# if perl -v >/dev/null 2>&1; then\
# scripts/youngest >$@;\
# else\
# blah...
-# doc/*.html src/.srcdate
+# doc/*.html cache/srcdate
# blah...
#
# That would save two calls to "touch", one intermediary
-# dependency (src/.uptodate) and a lot of obfuscation.
-
-src/.srcdate: src/.uptodate
+# dependency (cache/uptodate) and a lot of obfuscation.
+cache/srcdate: cache/uptodate
-src/.uptodate: scripts/youngest $(SRC_NON_GEN)
- @if perl -v >/dev/null 2>&1; then\
- echo Generating src/.srcdate;\
- scripts/youngest $(SRC_NON_GEN) >src/.srcdate;\
- touch -t `date '+%m%d'`0000 src/.srcdate;\
- elif [ -f src/.srcdate ]; then\
- echo Perl not available. Keeping old src/.srcdate;\
- else\
- echo Perl not available. Creating bogus src/.srcdate;\
- date '+%Y-%m-%d' >src/.srcdate;\
+cache/uptodate: scripts/youngest $(SRC_NON_GEN)
+ @mkdir -p cache
+ @if perl -v >/dev/null 2>&1; then \
+ echo Generating cache/srcdate; \
+ scripts/youngest $(SRC_NON_GEN) >cache/srcdate; \
+ touch -t `date '+%m%d'`0000 cache/srcdate; \
+ elif [ -r cache/srcdate ]; then \
+ echo Perl not available. Keeping old cache/srcdate; \
+ else \
+ echo Perl not available. Creating bogus cache/srcdate; \
+ date '+%Y-%m-%d' >cache/srcdate; \
fi
@touch $@;
-# Directories where objects and binaries are put.
+# To compile the modules of Yadex
# (normal and debugging versions)
+include yadex.dep
-.PHONY: dirs
-dirs:
- @if [ ! -d $(OBJPHYSDIR)\
- -o ! -d $(OBJPHYSDIR_ATCLIB) ];\
- then\
- echo Creating object directories;\
- scripts/mkinstalldirs $(OBJPHYSDIR) 2>&1;\
- scripts/mkinstalldirs $(OBJPHYSDIR_ATCLIB) 2>&1;\
- fi
- @if [ -e $(OBJDIR) ]; then rm $(OBJDIR) 2>&1; fi
- @ln -sf $(OBJSUBDIR) $(OBJDIR) 2>&1
-
-.PHONY: ddirs
-ddirs:
- @if [ ! -d $(DOBJPHYSDIR)\
- -o ! -d $(DOBJPHYSDIR_ATCLIB) ];\
- then\
- echo Creating object directories;\
- scripts/mkinstalldirs $(DOBJPHYSDIR) 2>&1;\
- scripts/mkinstalldirs $(DOBJPHYSDIR_ATCLIB) 2>&1;\
- fi
- @if [ -e $(DOBJDIR) ]; then rm $(DOBJDIR) 2>&1; fi
- @ln -sf $(OBJSUBDIR) $(DOBJDIR) 2>&1
+# It's simpler to copy config.cc into src/ than to have a
+# compilation rule for just one file.
+src/config.cc: $(OBJDIR)/config.cc
+ cp -p $< $@
-# To compile the modules of Yadex
-# (normal and debugging versions)
+src/config.h: $(OBJDIR)/config.h
+ cp -p $< $@
-include yadex.dep
$(OBJDIR)/%.o: src/%.cc
- @echo
- @echo $(CXX) $<
- @$(CXX) $(CXXFLAGS) -c -Iatclib $(DEFINES) $< -o $@ 2>&1
+ $(CXX) -c -Iatclib -Iboost -I$(X11INCLUDEDIR) $(CXXFLAGS) $< -o $@
$(DOBJDIR)/%.o: src/%.cc
- @echo
- @echo $(CXX) $<
- @$(CXX) $(DCXXFLAGS) -c -Iatclib $(DEFINES) $< -o $@ 2>&1
+ $(CXX) -c -Iatclib -Iboost -I$(X11INCLUDEDIR) $(DCXXFLAGS) $< -o $@
# To compile the modules of Atclib
# (normal and debugging versions)
-
$(OBJDIR_ATCLIB)/%.o: atclib/%.c $(HEADERS_ATCLIB)
- @echo
- @echo $(CC) $<
- @$(CC) $(CFLAGS) -c $< -o $@ 2>&1
+ $(CC) -c $(CFLAGS) $< -o $@
$(DOBJDIR_ATCLIB)/%.o: atclib/%.c $(HEADERS_ATCLIB)
- @echo
- @echo $(CC) $<
- @$(CC) $(DCFLAGS) -c $< -o $@ 2>&1
+ $(CC) -c $(DCFLAGS) $< -o $@
+
+# To see the generated assembly code
+# for the modules of Yadex
+$(OBJDIR)/%.S: src/%.cc $(MAKEFILE)
+ $(CXX) $(CXXFLAGS) -S -fverbose-asm -Iatclib -Iboost -I$(X11INCLUDEDIR)\
+ $< -o $@
+
+# A source file containing the credits
+src/credits.cc: $(MAKEFILE) docsrc/copyright scripts/copyright
+ @echo Generating $@
+ @echo '// DO NOT EDIT -- generated from docsrc/copyright' >$@
+ scripts/copyright -c docsrc/copyright >>$@
# A source file containing just the date of the
# most recent source file and the version number
-# (found in ./VERSION).
-
-src/version.cc: $(SRC_NON_GEN) VERSION src/.srcdate
- @echo
+# (found in ./VERSION)
+src/version.cc: $(SRC_NON_GEN) VERSION cache/srcdate $(MAKEFILE)
@echo Generating $@
+ @printf '// DO NOT EDIT -- generated from VERSION\n\n' >$@
@printf "extern const char *const yadex_source_date = \"%s\";\n" \
- `cat src/.srcdate` >$@
- @printf "extern const char *const yadex_version = \"%s\";\n" \
- $(VERSION) >>$@
+ `cat cache/srcdate` >>$@
+ @printf "extern const char *const yadex_version = \"%s\";\n" \
+ "$(VERSION)" >>$@
+
# -------- Doc-related stuff --------
docdirs:
@if [ ! -d doc ]; then mkdir doc; fi
-docsrc/.pixlist: $(DOC2_SRC_HTML)
+cache/pixlist: $(DOC2_SRC_HTML)
@echo Generating $@
- @if perl -v >/dev/null; then\
- perl -ne '@l = m/]*src="?([^\s">]+)/io;\
- print "@l\n" if @l;' $(DOC2_SRC_HTML) | sort | uniq >$@;\
- elif [ -e $@ ]; then\
- echo "Sorry, you need Perl to refresh $@. Keeping old $@.";\
- else\
- echo "Sorry, you need Perl to create $@. Creating empty $@.";\
- touch $@;\
+ @mkdir -p cache
+ @if perl -v >/dev/null 2>/dev/null; then \
+ perl -ne '@l = m/]*src="?([^\s">]+)/io; \
+ print "@l\n" if @l;' $(DOC2_SRC_HTML) | sort | uniq >$@; \
+ elif [ -f $@ ]; then \
+ echo "Sorry, you need Perl to refresh $@. Keeping old $@."; \
+ else \
+ echo "Sorry, you need Perl to create $@. Creating empty $@."; \
+ touch $@; \
fi
events.html: ev evhtml
@@ -810,13 +788,13 @@
events.txt: events.html
lynx -dump $< >$@
-changes/changes.html: changes/*.log log2html
- ./log2html -- $$(ls -r changes/*.log) >$@
+changes/changes.html: changes/*.log log2html RELEASE
+ ./log2html -- -r `cat RELEASE` -- $$(ls -r changes/*.log) >$@
# changes - update the changelog
.PHONY: changes
changes: changes/changes.html
- lynx -dump $< >CHANGES
+ w3m -dump -cols 72 $< >CHANGES
# cns - view the changelog with Netscape
.PHONY: cns
@@ -848,6 +826,14 @@
ps: doc/yadex.ps
gv $^
+# Use docsrc/faq.html and not directly
+# doc/faq.html because we don't want FAQ to be
+# remade at first build time.
+FAQ: docsrc/faq.html
+ scripts/process $< >cache/faq.html
+ lynx -dump cache/faq.html >$@
+ rm cache/faq.html
+
doc/yadex.dvi: doc/yadex.6
groff -Tdvi -man $^ >$@
@@ -856,43 +842,45 @@
# Generate the doc by filtering them through scripts/process
-
-PROCESS = VERSION src/.srcdate scripts/process scripts/ftime
-
-doc/ybsp.6: bsp-2.3/ybsp.6 $(PROCESS)
- @echo
- @echo Generating $@
- @scripts/process $< >$@
+PROCESS = \
+ VERSION \
+ cache/copyright.man \
+ cache/copyright.txt \
+ cache/srcdate \
+ scripts/process \
+ $(OBJDIR)/ftime \
+ $(OBJDIR)/files_etc.man \
+ $(OBJDIR)/files_share.man \
+ $(OBJDIR)/notexist
doc/yadex.6: docsrc/yadex.6 $(PROCESS)
- @echo
@echo Generating $@
@scripts/process $< >$@
doc/README: docsrc/README.doc $(PROCESS)
- @echo
@echo Generating $@
@scripts/process $< >$@
%: docsrc/% $(PROCESS)
- @echo
@echo Generating $@
@scripts/process $< >$@
doc/%.html: docsrc/%.html $(PROCESS)
- @echo
@echo Generating $@
@scripts/process $< >$@
# The images are just symlinked from docsrc/ to doc/
-
doc/%.png: docsrc/%.png
- @ln -sf ../$< $@
+ @rm -f $@
+ @ln -s ../$< $@
-#scripts/mdate: scripts/mdate.c
-# $(CC) $< -o $@
+$(OBJDIR)/ftime: scripts/ftime.c
+ $(CC) $< -o $@
+
+$(OBJDIR)/install: scripts/install.c
+ $(CC) $< -o $@
-scripts/ftime: scripts/ftime.c
+$(OBJDIR)/notexist: scripts/notexist.c
$(CC) $< -o $@
diff -uaNr yadex-1.5.2/README yadex-1.6.0/README
--- yadex-1.5.2/README 2001-06-30 21:17:46.000000000 +0200
+++ yadex-1.6.0/README 2003-04-01 02:30:42.000000000 +0200
@@ -1,4 +1,4 @@
-Yadex 1.5.2 (2001-06-30)
+Yadex 1.6.0 (2003-04-01)
WHAT IS YADEX ?
Yadex is a Doom level (wad) editor for Unix systems running X,
@@ -9,8 +9,9 @@
PREREQUISITES
You need :
- - Some flavour of Unix,
- - X11R6 or X11R5 and a display of at least 640x480x256,
+ - Some flavour of Unix (known to work with AIX, FreeBSD, HP-UX,
+ Irix, Linux, NetBSD, OpenBSD, OpenUnix, QNX and Solaris),
+ - X11R6 or X11R5 and a display of at least 640x480,
- a Doom/Doom II/Heretic/Strife iwad (shareware/demo is OK),
- GNU make (vanilla make won't do),
- a standard C compiler (ISO 9899:1990),
@@ -18,46 +19,46 @@
- hypot() and either nanosleep() or usleep().
BUILDING AND INSTALLING
- Type this :
+ To install in /usr/local :
- make
- su -c 'make install'
+ ./configure
+ make
+ su -c 'make install'
- Notes :
- 1) If you get an error on -lX11, add X11LIBDIR= to the make
- command line, where is the path to your libX11* files.
- E.G. "make X11LIBDIR=/usr/lpp/X11/lib"
+ To install somewhere else, for example in ~/yadex :
+
+ ./configure --prefix ~/yadex
+ make
+ make install
+
+ Got problems getting Yadex to compile ? See doc/faq.html.
+ Got no problem ? Read the FAQ anyway. See doc/faq.html.
- 2) If you want to install somewhere else than in /usr/local/bin,
- add PREFIX= to the "make install" command line.
- E.G. "su -c 'make install PREFIX=/opt/yadex'"
- or "make install PREFIX=~"
-
- 3) Beware, the installation OVERWRITES the following files:
- /usr/local/bin/ybsp
- /usr/local/bin/ybsp-1.5.2
- /usr/local/bin/yadex
- /usr/local/bin/yadex-1.5.2
- /usr/local/etc/yadex/1.5.2/yadex.cfg
- /usr/local/share/games/yadex/1.5.2/doom.ygd
- /usr/local/share/games/yadex/1.5.2/doom02.ygd
- /usr/local/share/games/yadex/1.5.2/doom04.ygd
- /usr/local/share/games/yadex/1.5.2/doom05.ygd
- /usr/local/share/games/yadex/1.5.2/doom2.ygd
- /usr/local/share/games/yadex/1.5.2/doompr.ygd
- /usr/local/share/games/yadex/1.5.2/heretic.ygd
- /usr/local/share/games/yadex/1.5.2/hexen.ygd
- /usr/local/share/games/yadex/1.5.2/strife.ygd
- /usr/local/share/games/yadex/1.5.2/strife10.ygd
- /usr/local/[share/]man/man6/ybsp.6
- /usr/local/[share/]man/man6/yadex.6
+ Beware, the installation OVERWRITES the following files (assuming
+ you're installing in /usr/local) :
+ /etc/yadex/1.6.0/yadex.cfg
+ /usr/local/bin/yadex
+ /usr/local/bin/yadex-1.6.0
+ /usr/local/man/man6/yadex.6
+ /usr/local/man/man6/yadex-1.6.0.6
+ /usr/local/share/games/yadex/1.6.0/doom.ygd
+ /usr/local/share/games/yadex/1.6.0/doom02.ygd
+ /usr/local/share/games/yadex/1.6.0/doom04.ygd
+ /usr/local/share/games/yadex/1.6.0/doom05.ygd
+ /usr/local/share/games/yadex/1.6.0/doom2.ygd
+ /usr/local/share/games/yadex/1.6.0/doompr.ygd
+ /usr/local/share/games/yadex/1.6.0/heretic.ygd
+ /usr/local/share/games/yadex/1.6.0/hexen.ygd
+ /usr/local/share/games/yadex/1.6.0/strife.ygd
+ /usr/local/share/games/yadex/1.6.0/strife10.ygd
CONFIGURING AND RUNNING
Before you run Yadex, you need to tell it where to find your iwads.
- Open /usr/local/etc/yadex/1.5.2/yadex.cfg with your favourite
- text editor and insert the appropriate values for the parameters
- "iwad1", "iwad2", etc. If you don't want Doom II to be the default
- iwad, also change the value of the "game" parameter.
+ Assuming you have installed in /usr/local, open
+ /etc/yadex/1.6.0/yadex.cfg with your favourite text editor and
+ insert the appropriate values for the parameters "iwad1", "iwad2",
+ etc. If you don't want Doom II to be the default iwad, also change
+ the value of the "game" parameter.
You can now run Yadex by typing :
@@ -74,11 +75,14 @@
Have fun !
DOCUMENTATION
- There are man pages and quite a lot of documentation, most of it in
+ There is a man page and quite a lot of documentation, most of it in
HTML format. Start at :
doc/index.html
+ If you're upgrading from a previous version of Yadex, please read
+ carefully CHANGES.
+
STATUS
Yadex is work in progress. It still lacks important features like a
better interface, cut-and-paste, undo/redo, support for Boom and
@@ -86,25 +90,46 @@
code is a horrible mess. I'm not proud of it. Be indulgent.
LEGAL
- Yadex is GPL'd libre software. It incorporates code from DEU 5.21
- that was put in the public domain in 1994 by Raphal Quinet and
- Brendon Wyber. The rest is Copyright 1997-2000 Andr Majorel.
-
- Now comes the part I like best : 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, write to the Free Software Foundation, Inc., 675 Mass Ave,
- Cambridge, MA 02139, USA.
+ 1. Yadex
+
+ Parts copyright Andrew Apted 2000-2001, GNU GPL v2
+ Parts copyright Andr Majorel 1997-2003, GNU GPL v2
+ Parts copyright Matthew W. Miller 2000, GNU GPL v2
+ Parts written by Raphal Quinet, public domain
+ Parts written by Brendon Wyber, public domain
+
+ 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ 2. Atclib
+
+ The Yadex distribution includes a subset of Atclib.
+
+ Atclib is copyright Andr Majorel 1995-1999 and distributed under
+ the terms of version 2 of the GNU Library General Public License.
+
+ 3. Boost
- All trademarks are the propriety of their owners.
+ The Yadex distribution includes a subset of Boost 1.25.0. Boost
+ 1.25.0 is copyright various authors and released under the following
+ terms : Permission to copy, use, modify, sell and distribute this
+ software is granted provided this copyright notice appears in all
+ copies. This software is provided "as is" without express or
+ implied warranty, and with no claim as to its suitability for any
+ purpose.
CONTACT
See doc/contact.html for addresses.
-AYM 2000-01-10
+AYM 2003-02-15
diff -uaNr yadex-1.5.2/TODO yadex-1.6.0/TODO
--- yadex-1.5.2/TODO 2000-08-26 00:32:19.000000000 +0200
+++ yadex-1.6.0/TODO 2003-03-28 21:12:16.000000000 +0100
@@ -14,10 +14,14 @@
Command line
- Add option -e like in sed and Perl. Auto quit at end or not ?
- Add option -f like in sed ?
+- Unix version recognizes -V but does not list it in the usage.
Configuration file
- Add operator ".=" (E.G. "iwad_dir .= ,/foo/bar"). Perhaps implement
real lists. Perhaps not.
+- Comments are not allowed if not at the beginning of a line
+- New option --print-config-path or --cfg-dirs to print the config file
+ search path and exit
Variables
- Make variables objects instead of C++ variables. It should not be
@@ -38,10 +42,6 @@
different sections of the .cfg.
- Fix TranslateToDoomColor().
- -g should accept anything as long as .ygd exists.
-- Have to think of how to handle different games : Doom, Doom II and
- Boom all have a lot in common. Try not to duplicate all this, perhaps
- by _include_ing a "generic_doom" block, which contains _if_s before
- features not common to all versions.
- It is prob. possible to crash the program by entering weird things in
LoadGameDefs. For example, shortdesc is not truncated and the current
number of "raise floor" types will probably make the menu "overflow"
@@ -61,8 +61,6 @@
- Move the definition of special sector tags out of the exe and into the
ygd files.
- Gadget: add level names (E.G. "E1M1" -> "Hangar").
-- An attempt to define twice the same thing/linedef/sector type
- should be detected and reported.
- The basename need not be in the configuration file; it should be in
the ygd (E.G. iwad_base = "doom.wad,doom1.wad")
- The .ygd collection has grown so large that it has become difficult to
@@ -100,17 +98,22 @@
one that has the appropriate magic (but warn). If an include was not
found just print a warning and continue ?
- Allow overriding of a previous linedef type / thing type / sector type
- definition (currently it just *adds*).
+ definition (currently it just *adds* and, since the new definition is
+ at the end the of list, it's *ignored*). Possibly with an option to
+ warn about such redefinitions.
+- New option -Y (or -y or -G ?) to insert a directory at the beginning
+ of the .ygd files search path. Perhaps -Y- to clear the path (think
+ -I-). Add it to "make test" and "make dtest".
+- New option --print-ygd-path or --ygd-dirs to print the ygd file search
+ path and exit.
Game and wad support
- Some wads have sidedefs with a sector# of -1. Apparently, those are
always unused sidedefs but perhaps there is something to do about it.
dyst3, mm, mm2 map13,28, wads2/1kill (e2m2,6,7,8,9), wads2/adieu
wads2/ebola, wads2/requiem (map03,08,etc).
-- Some wads generating a flurry of messages "updating entry ''" when
+- Some wads generate a flurry of messages "updating entry ''" when
loaded (11fortko, 1_on_1, chase21). Fix that.
-- Support Boom extensions, at least by allowing to enter hexadecimal
- linedef types etc.
- Some working pwads are not pwads. 1sthell is an iwad.
- Some wads have a large number of unused vertices in the middle. base,
phobos, 2wad/dks_e1l1, 2wad/dks_e1l3, amanda2 (no tail !), atica,
@@ -156,15 +159,29 @@
replacement patches but not the new ones of course.
- Now that wad_read_i16() and wad_read_i32() don't abort anymore, check
the code that uses them.
-- Add definition for sector tag 667 (MAP07).
- Colin wants to be able to use the Final Doom iwads without having to
type "yadex -iwad2 /foo/bar/tnt.wad". He suggests either (1) adding a
new game or (2) changing the code so that "yadex -iwad2 tnt.wad" looks
for tnt.wad in the iwad2 directory defined in the config file.
- Graphics: Yadex uses no COLORMAP, instead of COLORMAP 0. In practice
COLORMAP 0 is very close to no COLORMAP but...
+- Graphics: Yadex uses colour index IMG_TRANSP = 0 to represent
+ transparent pixels and remaps index 0 to the closest index (247 in the
+ case of Doom). Because we save in PPM format, it doesn't matter. But
+ if we wanted to save in BMP format, many pixels would have their value
+ changed, which I'd rather avoid. If Yadex used IMG_TRANSP = 255, no
+ remapping would be necessary because that index is not used in Doom,
+ Doom II, Heretic and Hexen. For Strife, it's the other way around :
+ index 255 is used quite a lot and index 0 is not.
- Be able to edit levels with silly names like "QD2" (cf. qdoomtst.wad).
This implies not replacing entries in the master directory anymore !
+- When "saving as" a create'd level, NODES, SEGS, SSECTORS, REJECT,
+ BLOCKMAP and VERTEXES are not empty. Recipe : yadex: c [Return] [F3]
+ [y] [Return] beurk.wad q yadex: q $ lswad -l beurk.wad.
+- Bug: there is a small memory leak in that can be seen when repeatedly
+ loading two wads that contain the same level (E.G. while true; do echo
+ r tmp.wad; echo r 11.wad; done | yadex). I suspect the leak is in
+ ReadLevelData().
Doom alpha
- Fix wrong things definitions and add missing ones.
@@ -178,6 +195,7 @@
- Hexen has some flats with a size of 8 kB.
- Generate the "thing" directives by either parsing info.c or ripping
off the one in DETH.
+- Hexen: add linedef types and check
Heretic
- Heretic has some flats with a size of 4160. Is this why DeuTex accepts
@@ -189,6 +207,24 @@
- Matt wonders what RIFLB0 is and what's the difference with RIFLA0.
- Incorporate what's only in the USS.
+Boom
+- convenient way of entering generalized types.
+- Decode generalized types.
+- Allow WATERMAP pseudo-texture (frankc@srv.net).
+
+XDoom
+- Write or get someone to write xdoom.ygd.
+- Check XDoom linedef types
+- Copy XDoom linedefs types to doom.ygd
+
+ZDoom
+- Allow AARRGGBB pseudo-texture ? (frankc@srv.net)
+
+EDGE
+- Abstract away extrafloor linedef types.
+- Parse DDF and RTS.
+- Function to jump to n-th extrafloor for this sector.
+
Messages and reports
The reason for emitting messages :
- Bug (internal error, unexpected condition in the program that
@@ -242,6 +278,15 @@
- When moving a bunch of vertices, do not check for vertex-on-linedef
condition if both vertices of the linedef were part of the vertices
that are being moved.
+ AJA 2000-09-21: (d) when moving a large bunch of vertices or linedefs
+ that are very close together (e.g. 2 units), there often pops up a
+ message to confirm merging vertices or splitting a linedef. (This
+ would be worse with the 1.5.0 config file which makes merges/splits
+ happen automatically).
+ I guess the solution would be making Yadex to skip checks for
+ overlapping vertex/linedef _between_ all the vertices/lines that are
+ being moved at once (i.e. only check a moving V/L against a non-moving
+ V/L).
Old bugs to fix
- When splitting and merging sectors, some of the sidedefs in the split
@@ -250,14 +295,10 @@
"vertices A and B not on the same sector" or "cannot find a closed
path", etc. I have already got "no sector between vertex A and vertex
B" ; save, quit, edit and try again : it works !
-- Let RIGHT work after SPACE (works if no mouse driver!)
+- DOS: Let [right] work after [space] (works if no mouse driver!)
- DOS: understand why mouse pointer moves 8 pixels at a time and fix
that.
-- I already got erroneous "sector not closed" messages. The last time I
- remember, it was on a tiny triangular sector (base=16, height=2).
- When merging sectors, linedefs sometimes get only 1 sidedef...
-- InputInteger limits numbers to [-32749,+32749].
-- InputInteger doesn't accept hexadecimal numbers.
- If you do "delete linedef and merge sectors" when it's the same sector
on both sides of the linedef, the sector is deleted.
- Check that all sectors are closed : chokes on pseudo sectors (s1=s2).
@@ -268,9 +309,6 @@
Editing in general
- Implement undo and redo.
-- Move things along with vertexes
-- Add a "global" or "everything" editing mode. In that mode, moving,
- deleting, duplicating affects all objects (things, vertexes...)
- Move cursor : jump to next object in direction ...
- Move objects n grid steps in direction ...
- Move objects n Grid steps in direction ...
@@ -296,9 +334,6 @@
(E.G. segfault upon switching to sector mode).
- For very large levels, the lower limit on the zoom factor is too high
to allow showing the whole level.
-- Bug: for very large levels, the automatic zoom factor setting is hosed
- (instead of using the lowest allowed zoom factor, it falls back on a
- rather high value).
- Bug: for very large levels (very low zoom factors), the upper limit on
the grid step is too restrictive.
- Strife's MAP29 is so much to the west (-23,000 or so) that the current
@@ -308,8 +343,177 @@
adding the number of such items already existing. E.G. if there are
already 50 vertices, increment the vertex numbers in all the linedefs
by 50. Same thing for sidedefs numbers in linedefs, sector tags (DON'T
- increment those above 900!). increment sector# in sidedefs too. that's
- all ?
+ increment those that have a special meaning like 666 or 667 or those
+ above 900!). increment sector# in sidedefs too. that's all ?
+- Andy Baker wants a don't-drag toggle. I'd rather just add some initial
+ resistance.
+- For the two widest grids, display the coordinates along the edges.
+- There is something that sucks in the edit loop ; when you scroll
+ without moving the mouse, the selection box always "lags behind"
+ because its map coordinates are updated only _after_ the next screen
+ refresh.
+- Select all.
+- Reverse selection (select everything that's not selected and unselect
+ everything that's selected).
+- Edit functions : copy, cut, paste.
+- Crop (delete all unselected objects).
+- Persistent box for cropping ?
+- BD suggests sector creation la DCK ([r] then draw box).
+- When there are several objects under the pointer, report it and give a
+ way to access any one of them. Or maybe implement planes ?
+- When doing drag-n-drop, should the snap-to-grid be applied to A.
+ relative position since started dragging B. or to the highlighted
+ object ? If A, you can't use drag-n-drop to snap-to-grid objects that
+ aren't. If B, you can't drag correctly objects that are not aligned on
+ grid.
+- Object number: the type should be "i16", not "int" (cf. SelPtr).
+- Object number: the test for "none" should not be hard-coded "< 0".
+- While dragging or drawing a selbox, prevent Del, Ins, etc. from
+ working. E.G. Del would suppress the object being dragged !
+- Add config file parameters for initial snap_to_grid and
+ lock_grid_step.
+- Scale: make it local to an edit window.
+- MadeChanges: make it local to an edit window.
+- MadeMapChanges: make it local to an edit window.
+- When saving with [F2], ".wad" should be appended automatically.
+- Save ([F2]): should not ask for the file name every time.
+- Save ([F2]): I swear I've seen the file name dialog open with
+ "nase.bak" in it !
+- Save ([F2]): should use the Save as... ([F3]) code, not duplicate it.
+- Get rid of the Level variable.
+- The file name should be a member of edit-session or level-data, not
+ retrieved by looking up the master directory.
+- A function that would be really very useful would be the possibility
+ to change the start/end vertex of a linedef. That could be done by
+ holding, say, [Alt], down and dragging the start/end until on top of
+ another vertex. When the button is released, the linedef start/end is
+ changed and the sector references of the impacted linedefs are
+ updated.
+- Displaying pointer coords; should look into using PutImageFont().
+- [Ctrl][Click]: Press button: do nothing. Release button: select or
+ unselect IF STILL ON TOP OF OBJECT. Thus we can use [Ctrl] + drag to
+ copy :-).
+- Dragging with [Ctrl] on duplicates ?
+- Vertex on linedef: lower tolerance when zoom factor is high. [partly
+ done as of 1998-12-20 but still needs work].
+- Check self-consistency of level data: for each linedef, v1 and v2 must
+ be either OBJ_NO_NONE or between 0 and NumVertexes and s1 and s2 must
+ be either OBJ_NO_NONE or between 0 and NumSideDefs.
+- Goto function: takes as an argument either the centre of the level or
+ a previously set mark. Like in vi: m, '. Maybe '' to go to
+ centre ?
+- Clicking and superimposed objects: if n1 and n2 (n1 < n2) are
+ superimposed, n1 is not selected but n2 is selected and you click on
+ them, Yadex thinks you are starting a new selection because
+ is_selected (highlight) is false.
+- objects.cc: GetObjectCoords(): should use center_of_objects() instead.
+- Permanently show a 64-wide object to scale ?
+- Right-button menus: access to many different menus (no modifier,
+ [Shift], [Ctrl], [Alt], several of them).
+ - Cut, copy, paste
+ - Show properties
+ - Misc. operations
+ - Frequently used properties (toggle bit of linedef...)
+ - Change tool
+- Menus: when you move the pointer over a pulled down menu is, you can
+ highlight the objects it hides.
+- Replace "insert rectangle"/"insert polygon" by :
+ - insert pillar (nb. of sides, size)
+ - insert subsector Differences in floor/ceiling height/textures and
+ lighting level could be set by predefined styles :
+ - pedestal (floor + 48, ceiling - ...)
+ - hanging from ceiling
+ - teleporters
+- In addition of make nook/make boss,
+ - insert protruding subsector
+ - insert recessed subsector
+- Minor glitch: when a popup menu is active, the spot is still shown
+- Object info box: if the box is already drawn, don't draw it again; it
+ makes the strings flicker slightly.
+- [Alt] alone should highlight the menu bar.
+- Split linedefs and sector: if there is no sector between the linedefs,
+ they shouldn't be split.
+- Split linedefs and sector: if only one linedef is
+ selected/highlighted, assume that the other linedef is the one
+ opposite.
+- Moving/scrolling: centre view around spot under pointer (binding :
+ perhaps [Ctrl][But2]).
+- James Caldwell says that, with v1.4, if you create a polygon, delete
+ the sector inside it and try to draw a selection box around the
+ linedefs, Yadex segfaults. James was not able to give me a backtrace
+ and, apparently, no one has been able to reproduce that bug. After
+ upgrading to 1.5 and a new version of Red Hat, the problem
+ disappeared. A bug in GCC 2.96 ?
+- Linedef type/sector type/thing type selector : the current
+ implementation (cascaded menus) has certain shortcomings :
+ - No scrollbars for long lists.
+ - It's not possible to associate a bitmap to an item, which would be
+ very useful for thing types.
+ - There doesn't seem to be a good way to specify which fields are to
+ be printed, especially not dynamically. This could be useful in some
+ occasions (thing types : sprite root).
+ - There doesn't seem to be a good way to change the sorting order,
+ especially not dynamically. Still it would be nice to be able to
+ sort linedef types by either (function, trigger) or (trigger,
+ function) or (number), etc.
+ - There doesn't seem to be a good way to restrict which items are
+ shown. For example, one might wish to hide all linedef types that
+ are not available in plain Doom 1.666. Arguably, that should be done
+ by chosing the right game specification in the first place, but
+ there *might* be good reasons to do otherwise.
+ It seems that ldt/st/tt selection is an operation that calls for more
+ complex interactions than a simple list menu can do. We should
+ probably use a specialised widget, perhaps like this one :
+ _________________________________________________________________
+ | _____________________________ |
+ | Group ( ) Door | 0 -- None |^| |
+ | ( ) Door (red key) | 1 DR Open door | | |
+ | ... | 2 W1 Open door (stays op| | |
+ | ( ) Misc | 3 ... | | |
+ | (o) All | 4 | | |
+ | | 5 | | |
+ | Sort ( ) Group, desc, trig | 6 | | |
+ | ( ) Group, trig, desc | 7 | | |
+ | ( ) Desc, trig, group | 8 | | |
+ | ( ) Trig, desc, group | 9 | | |
+ | ( ) Desc, trig, number | 10 | | |
+ | ( ) Trig, desc, number | 11 | | |
+ | (o) Number | 12 | | |
+ | | 13 | | |
+ | Show [x] Boom | 14 | | |
+ | [x] EDGE | 15 | | |
+ | [x] MBF | 16 | | |
+ | [x] PR | 17 |_| |
+ | [x] XDoom |_18________________________|v| |
+ | [x] v1.6 |<_________________________>| |
+ | _________________ |
+ | |___OK___|_Cancel_| |
+ |_________________________________________________________________|
+
+ Note #1: how do we enter linedef types by number ?
+ Note #2: the "Show" items are not hard coded but unique values of a
+ field that does not yet exist (alternatively "from which ygd file the
+ definition comes from").
+ Note #3: instead of hard-coding "Sort" items, one could make this
+ group a collection of special widgets, one for each field. Each widget
+ has two buttons : up and down. By clicking on said button, you move
+ the widget up down the list. More flexible, but also more confusing
+ when you're not used to it. Promises to be awkward to use with the
+ keyboard.
+ Note #4: it might be useful to have two descriptions : an internal one
+ that sorts well (door open, door close) and an external one that's
+ human readable (Open door, Close door).
+
+Editing, global mode:
+- Editing properties (double-clicking or [Return]), selecting by
+ clicking and selecting with a box still care about the mode. Selection
+ in general is broken, because only the number is remembered.
+- Autosplit linedef by dragging vertex doesn't work unless in vertex
+ mode.
+- draw_map(): linedefs are still shown according to mode.
+- draw_map(): need another representation for sectors (conflicts with
+ linedefs).
+- draw_map(): always show right side of linedefs ?
Editing things:
- Thing info box:
@@ -330,12 +534,6 @@
be spinned.
- Thing properties -> type : on selecting group with 0 things, fatal
error PTD1.
-- Maintain a list of all things on the level, sorted by increasing
- radius. To determine which thing is under the pointer, scan that list
- and highlight the first thing such that the pointer in inside the
- square of half-side (scale x radius + slack). Possible refinement ; if
- several things would be highlighted, highlight the one whose centre is
- closest to the pointer.
- Check Doom's behaviour w.r.t. negative angles.
- On the map, if the thing has a root but no sprite by that root was
found, display the root ? (instead of the type)
@@ -343,13 +541,15 @@
- On the map, switch between displaying the sprite, the type in decimal,
the type in hex, the root, etc.
- Option to show both the sprite and the square. Or maybe the sprite and
- a cross, la WinDEU ?
+ a cross, la WinDEU/DETH ?
- Perhaps choose between sprite and square automatically depending on
zoom factor ?
+- Things: the name is sometimes too long and cut off. It looks bad.
+- Unknown things (i.e. thing numbers for which there's no record in the
+ ygd) should be displayed in red, to distinguish them from things that
+ just don't have a root.
Editing vertices:
-- Change the highlighting algorithm so that it's more bearable at low
- zoom factors.
Editing linedefs and sidedefs
- Linedef type : show long name.
@@ -438,8 +638,105 @@
- Linedef tag : same thing.
- Linedef flags : give choice between string, signed decimal, unsigned
decimal and hexadecimal.
-- If a linedef has a type that requires a tag but its tag is set to 0,
- draw the linedef in red.
+- AJA 2000-09-21: (b) the texture checker only gives you two choices
+ when it encounters missing textures: stop, or make it STARTAN3 and
+ continue. When using some Doom tricks using missing uppers/lowers,
+ this is a pain, ideally (IMHO) there would be four options:
+
+ Press ESC to see the object,
+ or `y' to fix the texture and continue,
+ or `A' to fix all remaining textures,
+ or any other key to leave it and continue
+
+- Look into texture alignment. Look at what's been done with DETH.
+ AJA 2000-09-21: (e) I wanted to horizontally align a bunch of lower
+ textures on some two-sided lines, but the X alignment functions only
+ work on middle textures.
+
+ This is how I would prefer it to work: well, pseudo-code would
+ explain it best:
+
+ AlignX(sidedef_t S[], int NUM)
+ {
+ int i, x_offset;
+
+ // initial x offset comes from first sidedef
+ int x_offset = S[0].x_offset;
+
+ for (i=1; i < NUM; i++)
+ {
+ // ... check if S[i] contiguous with S[i-1] ...
+
+ x_offset += LineLength(S[i-1]);
+ x_offset &= 4095;
+
+ S[i].x_offset = x_offset;
+ }
+ }
+
+ That would collapse the 8 alignment choices into 2 (sidedef1 or
+ sidedef2). Well, 4 if you keep the texture checking versions.
+
+ It should work fine in practice since all Doom textures are powers
+ of two. If one wasn't, it wouldn't be drawn properly since the
+ R_GetColumn() routine in the Doom source does this:
+
+ column &= (width-1)
+
+ Do you think this "texture-independent" version is better ?
+
+- Highlighting linedefs: the test "tag > 0" is arguable. Shouldn't it be
+ "tag != 0" ?
+- When merging superimposed 1S linedefs, the resulting 2S linedef often
+ has the middle textures the 1S linedefs had.
+- Showing linedef textures: several solutions:
+ - easiest: show raw middle texture,
+ - easy: show raw upper, middle and lower textures,
+ - hardest: show as Doom would render it, with offsets, LTU, UTU and
+ all. Scale it down so as to fit in the window that has a fixed size.
+ Optionally apply brightness. Maybe show the edge of the neighbouring
+ walls, it might help for alignment. ISSUE: it might not be a good
+ thing to respect the length of the linedef as, for long linedefs, it
+ will force us to scale down too much. For textures that don't
+ exist, show background with cross. For texture "-", show background
+ only. For transparent texture, background sees through. It's
+ probably better to use a special colour (like black) for background
+ as the user might want to use a bright colour for window
+ backgrounds, which wouldn't look too good with Doom's dark textures.
+- Split linedef: if pointer is somewhere on top of linedef, split it
+ there (not in the middle).
+- Split linedef: buglet: the new vertex is initially put at (0,0) and
+ MapMaxX and friends are updated accordingly. So if the centre of the
+ map is way off (0,0), the next centre-map command will appear to put
+ the map off-centre.
+- Highlighting linedefs: same problem when some of the linedefs to
+ highlight have a non-zero tag. IMO, the key of the problem is the O(2)
+ part in the highlighting of sectors. Should restructure
+ HighlightObject() and HighlightObjects(). Build a bit vector of all
+ linedefs that should be highlighted and do them all in a loop, without
+ recursion. And thus we would not highlight the same linedef more than
+ once anymore.
+- Warn if W? linedef type used on single-sided linedef.
+- Show all linedefs that have errors in red. That includes :
+ 1. bad type,
+ 2. type requires a tag but its tag is set to 0,
+ 3. type requires a tag but no sector uses that tag,
+ 4. door type on a single-sided linedef,
+ 5. missing texture (HOM) (though this is normal for some tricks),
+ 6. tx with multi-patch columns on a double-sided linedef (medusa),
+ 7. bad flag,
+ 8. misaligned (bad X-offset),
+ 9. superimposed linedefs.
+ Notes:
+ - For (3), you probably need a bit vector of tags used by at least one
+ sector. When should it be refreshed ? It's perhaps safer to do it
+ from scratch before displaying, than trying to keep track...
+ - (7) is another reason to move the definition of flags out of the
+ executable and into the .ygd.
+ - (6), (8) and (9) are not too easy.
+ - The colour of the linedef should probably be reset to normal before
+ highlighting and selecting. Having lines of many different colour is
+ just going to be confusing.
Editing sectors
- Set floor height to ceiling height - headroom.
@@ -454,6 +751,12 @@
be because of the overhead incurred by highlighting all the linedefs.
- Sectors are sometimes mistakenly considered unclosed and don't
highlight properly. E.G. in ss27bet2.wad, sector #66.
+ Also: I already got erroneous "sector not closed" messages. The last
+ time I remember, it was on a tiny triangular sector (base=16,
+ height=2).
+ AJA 2000-09-21: two linedefs meeting at a vertex, and the other ends
+ are very close to each other (like 2 units) causes spurious
+ Sector-not-closed messages in the consistency check.
- A DCK-like philosophy could be used when moving sectors :
| |
@@ -478,6 +781,12 @@
vertices on one side. One strategy that comes to mind is
placing it at the centre of the largest area (where
"largeness" is a compound of "surface" and "squareness").
+- Showing sector textures: optionally apply brightness.
+- Andy Baker reported than when merging linedefs, Yadex sometimes
+ deleted the wrong linedef.
+- Highlighting sectors: for a constant number of sectors to highlight,
+ gets slower as the total number of sectors increases. Might have to do
+ with the search for tagged linedefs.
Keyboard interface
- Proposition: in linedef mode, gives access to
@@ -489,6 +798,13 @@
- Document screenshot.
- faq.html should be included in the distribution.
- Some entries in the FAQ should also be in trouble.html and vice-versa.
+- In TODO, entries should be numbered.
+- The following should be externalized:
+ - the URL of the homepage (when it's done, update web/readme.html)
+ - the URLs of the mirrors
+ - the names of the copyright holders (contributors et al.)
+ - the name of the maintainer
+- Each file should have its own copyright statement.
Unimportant :
- If bgi= or -bgi specifies a path for the .bgi driver, handle it.
@@ -498,7 +814,11 @@
Flat/sprite/texture viewer
- Use other palettes than #0 (also when saving).
- Use COLORMAPs (also when saving).
-- Reimplement "save image to file" with PPM, PNG and perhaps XPM.
+- Save bug: should save entire image, not clipped. Requires implementing
+ Sticker::load (Img, int oxfs, int yofs, int width, int height). And
+ changing textures.cc so that it does not clip the width and height.
+- Save: will never be able to save all arch-vile frame under MS-DOS
+ (contain "[", "\", "]"). Use DeuTex's translation scheme ?
- Zoom and scrollbars.
- Add binding to toggle between SW1* and SW2*, cycle through the frames
of an animation. For Hexen, it's much more complicated (3-frame
@@ -510,9 +830,23 @@
- Support pictures higher than 255 and textures higher than 128.
- If the "view" command is given a lower case argument, the positionning
in the list of sprite names is wrong.
-- When viewing patches or sprites, the entire view window is refreshed
- even though, in most of the cases, the picture to display is much
- smaller than that.
+
+Build:
+- Document somewhere what RELEASE does and why it's important.
+- Makefile: after changing DEFINES in the makefile, running make does
+ nothing ! (have to delete manually wads.o and sanity.o)
+- Makefile: after hacking for two days on a machine, some objects are
+ not rebuilt on another machine. Even though yadex.h has changed !
+- Should not build yadex.dep from scratch every time you type "make".
+- "make clean all" fails because clean removes obj/0 but does not create
+ it again.
+- Some configuration items are not detected by configure but by the
+ makefile. This is confusing (there's no simple rule).
+- It would be nice to automatically detect when -fpermissive is needed
+ (GCC >= 3 + "extern XSetTransientForHint" in /usr/include/X11/Xlib.h)
+- It would be nice to automatically detect where the X11 headers and
+ library are. And omit -I/usr/X11R6/include from the command line when
+ it's not needed.
DOS/BGI port
- Do more modules splitting (deu.c, ReadConfigFile, menus.c). In
@@ -580,6 +914,18 @@
Sprite::make_bitmap, scale_img and, above all, Sprite::make_ximage.
Making sprites persistent across iterations helps enormously. Do it.
+Unix port
+- Basenames are truncated to 8 characters. The DOS approach of fixed
+ size al_f* types does not scale on Unix. Should probably modify
+ al_fana() to use dynamically allocated buffers.
+
+Platforms/Portability
+- Solaris 2.7: bad X11/Xlib.h. With GCC, need -fpermissive
+ and/or -isystem /usr/openwin/include
+- Solaris 2.7: don't assume that having gcc implies that cc is
+ gcc. cc might be the native compiler in which case -Wall might
+ no be appreciated.
+
Prompt
- Add access to the prompt from an editing window (":" like in vi).
- Use readline.
@@ -589,46 +935,16 @@
Misc.
- Implement several windows at once ?
- Replace all occurrences of BLACK, WHITE, ... by logical colours.
-- The highlight proximity should always match the apparent size of the
- object (done for things, to be done for vertices and linedefs).
-- GetCurObject(): the radius should not be expressed in map units but in
- screen units and should depend on the apparent size of the object.
- Indeed, 20 is too much for linedefs at high zoom factors and too
- little for vertexes at low zoom factors.
-- Highlighthing things: if there is a small thing and a large thing in
- the same spot, when you're "in" the small thing, it should be
- highlighted, even if it's higher-numbered. At the moment, it's the
- lowest-numbered thing that's highlighted.
- Externalize occurrences of ".wad".
- Externalize occurrences of ".bak".
-- Let the selection include objects of different types.
-- There is something that sucks in the edit loop ; when you scroll
- without moving the mouse, the selection box always "lags behind"
- because its map coordinates are updated only _after_ the next screen
- refresh.
-- Select all.
-- Reverse selection (select everything that's not selected and unselect
- everything that's selected).
-- Edit functions : copy, cut, paste.
-- Crop (delete all unselected objects).
-- Persistent box for cropping ?
-- BD suggests sector creation la DCK ([r] then draw box).
-- Be able to select objects of several types at once.
-- Modelessness ?
-- When there are several objects under the pointer, report it and give a
- way to access any one of them. Or maybe implement planes ?
-- When doing drag-n-drop, should the snap-to-grid be applied to A.
- relative position since started dragging B. or to the highlighted
- object ? If A, you can't use drag-n-drop to snap-to-grid objects that
- aren't. If B, you can't drag correctly objects that are not aligned on
- grid.
-- Object number: the type should be "i16", not "int" (cf. SelPtr).
-- Object number: the test for "none" should not be hard-coded "< 0".
- Browse mode, as in xv and psp, to browse through a large number of
wads.
- Be able to open zipped files ?
-- On ProgError(), save current data to a file named yadexcrash.wad. On
+- On ProgError(), save current data to a file named yadexcrash.wad. On
startup, if that file exists, propose to use it.
+- Add a handler for the SIGSEGV signal to, on segfault (SIGSEGV), save
+ current data to a file named yadexcrash.wad. On startup, if that file
+ exists, propose to use it.
- If DOOMWADDIR exists, use it ? But overridden by yadex.cfg & -iwad
- Texture browser : it's so slow that, even on a K6/200, some textures
are slow to come (AMRIBS). Should cache patches ? 1999-11-28: after
@@ -637,134 +953,22 @@
- colour# used to represent transparent colour when saving textures,
- rgb used to represent transparent colour when saving textures,
- rgb used to represent transparent colour when displaying textures,
-- While dragging or drawing a selbox, prevent Del, Ins, etc. from
- working. E.G. Del would suppress the object being dragged !
-- Add config file parameters for initial snap_to_grid and
- lock_grid_step.
-- Scale: make it local to an edit window.
-- MadeChanges: make it local to an edit window.
-- MadeMapChanges: make it local to an edit window.
-- When saving with [F2], ".wad" should be appended automatically.
- Log file: create/update it iff the pwad file is modified.
-- Things: the name is sometimes too long and cut off. It looks bad.
-- A function that would be really very useful would be the possibility
- to change the start/end vertex of a linedef. That could be done by
- holding, say, [Alt], down and dragging the start/end until on top of
- another vertex. When the button is released, the linedef start/end is
- changed and the sector references of the impacted linedefs are
- updated.
- Events; generalize internal events and hold refresh until all events
have been processed. Though autoscroll could bite me.
- Delete all those "huge" qualifiers ; means nothing for Unix and the
DOS version should be compiled with -mh anyway. Update: 1999-11-25:
Ha! Ha! Ha! Ha! Ho! Ho! ... I was so young and naive...
-- Displaying pointer coords; should look into using PutImageFont().
-- [Ctrl][Click]: Press button: do nothing. Release button: select or
- unselect IF STILL ON TOP OF OBJECT. Thus we can use [Ctrl] + drag to
- copy :-).
-- Vertex on linedef: lower tolerance when zoom factor is high. [partly
- done as of 1998-12-20 but still needs work].
-- Check self-consistency of level data: for each linedef, v1 and v2 must
- be either OBJ_NO_NONE or between 0 and NumVertexes and s1 and s2 must
- be either OBJ_NO_NONE or between 0 and NumSideDefs.
-- Showing linedef textures: several solutions:
- - easiest: show raw middle texture,
- - easy: show raw upper, middle and lower textures,
- - hardest: show as Doom would render it, with offsets, LTU, UTU and
- all. Scale it down so as to fit in the window that has a fixed size.
- Optionally apply brightness. Maybe show the edge of the neighbouring
- walls, it might help for alignment. ISSUE: it might not be a good
- thing to respect the length of the linedef as, for long linedefs, it
- will force us to scale down too much. For textures that don't
- exist, show background with cross. For texture "-", show background
- only. For transparent texture, background sees through. It's
- probably better to use a special colour (like black) for background
- as the user might want to use a bright colour for window
- backgrounds, which wouldn't look too good with Doom's dark textures.
-- Showing sector textures: optionally apply brightness.
-- Goto function: takes as an argument either the centre of the level or
- a previously set mark. Like in vi: m, '. Maybe '' to go to
- centre ?
-- Clicking and superimposed objects: if n1 and n2 (n1 < n2) are
- superimposed, n1 is not selected but n2 is selected and you click on
- them, Yadex thinks you are starting a new selection because
- is_selected (highlight) is false.
-- objects.cc: GetObjectCoords(): should use center_of_objects() instead.
-- Permanently show a 64-wide object to scale ?
-- Right-button menus: access to many different menus (no modifier,
- [Shift], [Ctrl], [Alt], several of them).
- - Cut, copy, paste
- - Show properties
- - Misc. operations
- - Frequently used properties (toggle bit of linedef...)
- - Change tool
-- Dragging with [Ctrl] on duplicates ?
-- Makefile: after changing DEFINES in the makefile, running make does
- nothing ! (have to delete manually wads.o and sanity.o)
-- Makefile: after hacking for two days on a machine, some objects are
- not rebuilt on another machine. Even though yadex.h has changed !
-- Menus: when you move the pointer over a pulled down menu is, you can
- highlight the objects it hides.
-- Replace "insert rectangle"/"insert polygon" by :
- - insert pillar (nb. of sides, size)
- - insert subsector Differences in floor/ceiling height/textures and
- lighting level could be set by predefined styles :
- - pedestal (floor + 48, ceiling - ...)
- - hanging from ceiling
- - teleporters
-- In addition of make nook/make boss,
- - insert protruding subsector
- - insert recessed subsector
-- Force the event type to 16 bit. Would make us save a few kB in the
- menus (shortcut_key and cooked_shortcut).
-- Change the way the menu_c class is defined so that it wastes less
- space. Should probably look into other classes too. Why not using
- bitvectors instead of arrays of ints used as booleans ?
- The popup menus should get the pointer position event when there is no
motion event. It's an issue when, to close a submenu, you click on the
parent menu; until you move, the parent menu still highlights the old
line.
-- Object info box: if the box is already drawn, don't draw it again; it
- makes the strings flicker slightly.
-- [Alt] alone should highlight the menu bar.
-- Minor glitch: when a popup menu is active, the spot is still shown
-- Minor glitch: when a popup menu becomes active (active again) it does
- not try to check if the pointer is over it. It waits for the first
- motion event. I'm not sure whether this is the right thing.
- Popup menus: that code is brittle because the same menu_c object is
used for popups and pull-downs. For example, if a menu was pulled down
before the same menu (that was previously popped up) was undrawn,
weird things might happen. I don't like the idea of duplicating the
whole menus, though. It would be cleaner to split the menu_c class
into a constant part and a dynamic part but it would be a lot of work.
-- Highlighting sectors: for a constant number of sectors to highlight,
- gets slower as the total number of sectors increases. Might have to do
- with the search for tagged linedefs.
-- Highlighting linedefs: same problem when some of the linedefs to
- highlight have a non-zero tag. IMO, the key of the problem is the O(2)
- part in the highlighting of sectors. Should restructure
- HighlightObject() and HighlightObjects(). Build a bit vector of all
- linedefs that should be highlighted and do them all in a loop, without
- recursion. And thus we would not highlight the same linedef more than
- once anymore.
-- Highlighting linedefs: the test "tag > 0" is arguable. Shouldn't it be
- "tag != 0" ?
-- When merging superimposed 1S linedefs, the resulting 2S linedef often
- has the middle textures the 1S linedefs had.
-- [Shift][Ins] doesn't work.
-- Split linedefs and sector: if there is no sector between the linedefs,
- they shouldn't be split.
-- Split linedefs and sector: if only one linedef is
- selected/highlighted, assume that the other linedef is the one
- opposite.
-- Split linedef: if pointer is somewhere on top of linedef, split it
- there (not in the middle).
-- Split linedef: buglet: the new vertex is initially put at (0,0) and
- MapMaxX and friends are updated accordingly. So if the centre of the
- map is way off (0,0), the next centre-map command will appear to put
- the map off-centre.
-- Moving/scrolling: centre view around spot under pointer (binding :
- perhaps [Ctrl][But2]).
- Instead of { Beep(); Notify (); }, should have a specialized function.
- Somehow unify configuration variables and game definition variables,
at least so that "set" displays both. AYM 2000-07-11: mmm...
@@ -776,18 +980,21 @@
- There is a way to trigger the "Callback %p did not set disp_" bug
message. Don't remember where. Perphaps in the texture viewer. Had to
do with missing patches ?
-- James Caldwell says that, with v1.4, if you create a polygon, delete
- the sector inside it and try to draw a selection box around the
- linedefs, Yadex segfaults. James was not able to give me a backtrace
- and, apparently, no one has been able to reproduce that bug. Does it
- still occur with v1.5 ?
+
+ yadex: viewflat checkers
+ Yadex: Bug: Callback 0x805a770 did not set disp_
+ REPORT ALL "Bug:" MESSAGES TO THE MAINTAINER !
+
+- Certain calls to InputInteger() should use different bounds so that
+ one can enter E.G. 0xffff as well as -1.
+- InputInteger() should be objectified so that it doesn't force the
+ number back to decimal every time the user hits [Tab], [Down] and
+ friends.
+- Wad_file has too many friends.
+- Do not include so much of the Boost library in the distribution
+ archive.
To do soon
-- Try to restore the "save image to file" function. The data should
- not be taken from the window, since clipping could occur, but directly
- from the buffer.
-- Talk about the above in the doc. Mention that ppm files are always
- created with NL = LF.
- Finish window_to_rgbbmp()
- Transfer rgbbmp_to_rawppm() in another file (rgbppm2.cc ?)
- Rename rgbbmp_to_rawppm() -> _ppm(), and add a parameter to choose
@@ -798,12 +1005,32 @@
- Test XK_*_ISO_* on SCO X11R5.
- Test on Final Doom.
- Add option to let Yadex tell you with which options it was compiled.
-- Generate text announcement (yadex-announce, freshmeat, rgcde, cola)
- Fix any remaining problems that might remain in saving.
- "create": Fix the problem with levelname being NULL in EditLoop().
Check [F3].
- "create": every time you [F2], the wad name is reset to the default
(E.G. "map01.wad").
+- Replace Patch_dir by Lump_dir.
+
+Web
+- Announce to cola automatically.
+- Generate LSM and upload to ftp.metalab.edu.
+- Upload to ftp.cdrom.com.
+- faq.html bears the wrong version number.
+- Bcc announcements to Oliver Kraus too.
+- Add patches/
+- patches/README: on the version included with the distribution archive,
+ mention that the latest patches can be found in
+ http://www.teaser.fr/~amajorel/yadex/patches/.
+- patches/README: mention the fate of the patches (some have already
+ made in into the dev version, some will have not because I haven't
+ decided yet or haven't even looked into them and some will never make
+ it).
+- Have an index page for patches/ ready, in case the web server does not
+ support automatic indexing. Use dldir for that.
+- Should all patches in the web page be also included in the
+ distribution, and vice-versa ?
+
----------------------------------------
@@ -847,6 +1074,7 @@
(E.G. "startx -- -bpp 16"),
- restart Yadex with -privatecmap.
+
WIDGETS
A widget should have the following methods :
- create:
@@ -883,6 +1111,7 @@
Attribute: title
Attribute: a list of widgets with placement information.
+
GEOMETRY MANAGER
The geometry manager is passed a list of widgets with placement
information.
@@ -902,6 +1131,7 @@
- "^" place to the top
- "v" place to the bottom
+
DRAG-AND-DROP
When dragging a group of objects, I see two possible policies:
1. snap position of current object
@@ -909,6 +1139,7 @@
The inconvenient of (1) is that, if no object was aligned, it is difficult
to move the group by a whole number of grid steps.
+
MOVING AND DRAGGING WITH THE KEYBOARD
From main mode:
[c] move cursor
@@ -930,6 +1161,7 @@
[c] coarser (grid step *= 4)
Any other key returns to main mode.
+
FASTER DISPLAY
I think that screen refreshes could be sped up a lot by avoiding to
clear the pixmap but instead redrawing every widget as black. It would
@@ -959,9 +1191,1151 @@
If it works well, I might even get be able to do without a pixmap :-).
+
FILE SELECTION BOX
It would be nice to have a file selection box with a small window that
shows a preview of the level(s) and also a few indicators for textures,
flats and other lumps.
+FUNCTIONS AND BINDINGS
+As of version 1.6, there is a number of problems:
+- There is no way to get a list of all the bindings in use. Because of
+ that, neither the user's guide nor the man page document them and the
+ [F1] online help is incomplete and often out of date. There is also no
+ way to detect conflicts (i.e. two functions having the same binding).
+- It would be nice to be able to change the bindings for a function
+ without recompiling.
+- It would be nice to be able to define aliases or macros for the
+ functions you use often.
+- Adding a new function involves redundant changes to add it in both the
+ menus and in EditorLoop().
+- MiscOperations() makes me want to laugh.
+- EditorLoop() makes me want to cry.
+- Some functions are defined inside EditorLoop().
+- There is no simple way to define bindings using a sequence of keys
+ like g? and z? in vi.
+- The mechanism used to override the selection operation is awkward.
+- There is no support for a count prefix.
+- There is no command mode as in vi so you can't script and you can't
+ add a function without assigning it a binding first.
+
+The solution:
+All actions should, as far as possible be functions. A function is a
+piece of code that acts on editing session. It's identified by its name
+(E.G. "split_sector"). It can take parameters, such a count, the working
+set, a texture name, etc.
+
+There are three ways to invoke functions :
+- through the bindings,
+- through the menus,
+- in command mode.
+
+There should be a --list-functions option to print the list of functions
+to stdout. The output of this command would be included, after some
+massaging, into the man page and users guide.
+
+Bindings: a binding is a sequence of keystrokes, a function name and
+directives which define how the parameters of the function are set.
+There should be a --list-bindings option to print the list of bindings
+to stdout. This option would be used to generated the .cfg and the doc.
+
+Keys: keys that have no corresponding character in ASCII should be
+representable with something like "[keyname]": [ctrl], [alt], [shift],
+[return], [left], [pageup], [home], [end], [f1], [tab], [backtab]. To
+what KeySyms these map should be documented. There should be a
+--list-keys option to list all those codes to stdout. FIXME: How do we
+make the difference simultaneous and disjoint keystrokes ? Or do we just
+assume that modifiers (ctrl/alt/shift) are always simultaneous and the
+rest never are ?
+
+Command mode: by typing [:], you enter command mode. This is similar to
+vi's. Any function name can be used as a command. Parameters such as
+object numbers are entered literally (E.G. ":delete_vertex 69"). It
+should be possible to use the selection and highlight, either implicitly
+(E.G. ":delete_vertex") or explicitly (E.G. ":delete_vertex $S"). There
+should be shortcuts for function names (E.G. "dv" for "delete_vertex").
+I'd like to unify the command mode and the .cfg syntax so that you can
+call function in a .cfg, that sort of stuff.
+
+Interactivity: functions should probably refrain from popping up dialog
+boxes when called from command mode (it could be script). Either the
+caller should pass a "don't-be-interactive" flag or it's the caller that
+should pop up the dialog boxes, in which case it would have to be aware
+of an awful lot of things.
+
+Arguments 1: FIXME: named arguments ? Unix-style options ? Purely
+positional ?
+
+Arguments 2: FIXME: if there are any commands that take more than one
+list, arguments must be typed (is it a list or not) and command mode
+must provide a syntax for lists, E.G. "item1,item2,item3".
+
+Arguments 3: FIXME: cardinality checks in the caller ? (E.G. "need
+exactly two linedefs selected").
+
+Movement functions: movement commands are used in several ways:
+- to select everything between the current pointer position to where
+ destination position without actually moving the pointer,
+- to move the pointer.
+How ?
+
+Modifiers: some functions don't do anything by themselves but change the
+way the next function behaves :
+- ["] followed by a register name, causes the next cut or paste function
+ to used that register instead of the unnamed register
+- Modifiers for selection operations. By default a selection function
+ replaces the current selection. With the following modifiers, the
+ output of the function is combined with the current selection by the
+ means of a selop : [^] xor (sel = sel ^ func), [&] intersection (sel =
+ sel & func), [|] union (sel = sel | func), [~] subtraction (sel = sel
+ & ~func).
+-
+- something to make the next command use a movement selection as its
+ working set (vi can afford the luxury of duplicating commands (c vs. s
+ and d vs. x, but Yadex cannot because it has too many commands).
+
+It is desirable that these modifiers be implemented as functions, so
+that they use the same binding system as everything else.
+
+A problem with modifiers is who resets the default settings ? If it's
+EditorLoop(), how does it know which functions trigger resetting and
+which don't ? If it's the functions, isn't it a bit bletcherous ? Should
+functions have to declare that they use, say, the working set and
+EditorLoop() reset the working set only after such functions ?
+
+FIXME: at the moment, certain keys are bound to several different
+functions, depending on the mode. How do we do that ? Does it make any
+sense now that global mode is in sight ?
+
+Current functions:
+- [!] _debug_info
+- [#] move_num
+- [%] toggle_show_things_sprites
+- [&] toggle_show_object_numbers
+- ['] view_centre
+- [+] zoom_in
+- [-] zoom_out
+- [0]..[9] zoom_set
+- [<] move_prev
+- [=] zoom_in
+- [>] move_next
+- [@] pop up font window
+- [E] select_linedefs_ss
+- [G] grid_inc
+- [H] grid_reset
+- [_] zoom_out
+- [`] view_centre_zoom_fit
+- [a] pop up "Set flag"
+- [alt][a] pop up "About"
+- [alt][i] info_bar_toggle
+- [b] pop up "Toggle flag"
+- [backtab] mode_prev
+- [c] pop up "Clear flag"
+- [ctrl][E] ^select_linedefs_ss
+- [ctrl][b] select_linedefs_whose_sidedefs_reference_non_existant_sector
+- [ctrl][e] ^select_linedefs_nf
+- [ctrl][g] mode_global_toggle
+- [ctrl][k] sector_slice
+- [ctrl][l] force_redraw
+- [ctrl][p] pop up palette window
+- [ctrl][r] print sidedef xref
+- [ctrl][s] print secret sectors
+- [ctrl][t] print tagged linedefs or sectors
+- [ctrl][u] select linedefs with unknown type
+- [ctrl][v] toggle snap vertex tool
+- [ctrl][x] obj_exchange_numbers
+- [del] obj_delete
+- [down] scroll_down
+- [e] select_linedefs_nf
+- [end] scroll_down_page
+- [esc] quit
+- [f10] pop up "Checks"
+- [f1] pop up "Help"
+- [f2] save
+- [f3] save_as
+- [f5] pop up "Preferences"
+- [f8] pop up "Misc. operations"
+- [f9] pop up "Insert a standard object"
+- [g] grid_dec
+- [h] grid_toggle
+- [home] scroll_up_page
+- [i] info_box_toggle
+- [ins] obj_insert
+- [j] move_num
+- [l] mode_linedefs
+- [left] scroll_left
+- [n] move_next
+- [o] copy
+- [p] move_prev
+- [pagedown] scroll_right_page
+- [pageup] scroll_left_page
+- [q] quit
+- [r] rulers_toggle
+- [return] pop up "Properties"
+- [right] scroll_right
+- [s] mode_sectors
+- [shift][f1] screenshot
+- [shift][f2] test_entry2
+- [space] zoom_toggle
+- [t] mode_things
+- [tab] mode_next
+- [up] scroll_up
+- [v] mode_vertices
+- [w] linedef_split_sector_split
+- [w] thing_spin_ccw
+- [x] linedef_split
+- [x] thing_spin_cw
+- [y] snap_toggle
+- [z] grid_lock_toggle
+- [|] pop up colour window
+
+Possible new functions:
+- go to {start,end,middle,other end} of linedef
+- go pixels toward the {start,end} of this linedef
+- go to the {next,previous} angle along this path of linedefs (how are
+ "next" and "previous" defined ? what happens if you're on a vertex
+ that's shared by several linedefs ?)
+- move {left,right,up,down} to the edge of the selection
+- go to the centre of the rectangle that contains the selection
+- go to the nearest vertex
+- go to the nearest vertex to the {north,south,east,west}
+- make sector from linedefs, adding linedefs if necessary
+- select shortest closed linedef path
+- raise or lower the {ceiling,floor} of a sector by units
+- [e][space] select_clear
+- [e][~] select_invert (in same class of objects ?)
+
+Implementation: Functions are C++ functions (FIXME: what about aliases
+and macros ?). There is a global map named "function" whose key is the
+name of the function and the value a pointer on the corresponding C++
+function. FIXME: How is this map filled ? Hard coded ? Is is possible to
+insert new elements dynamically ? It should probably be forbidden to
+modify an existing element.
+
+There is a global map named "binding" whose key is the key sequence and
+whose value is a structure containing the function name and the binding
+information. FIXME: How is this map filled ? Are the default binding
+hard coded ?
+
+FIXME: what the syntax to modify the bindings from the .cfg ? A separate
+keyword (bind [shift][f9] fart \$@) or a pseudo hash
+(binding["[shift][f9]"] = fart \$@) ? The interesting feature of the
+pseudo hash is that it can be read, not just written to.
+
+Functions that modify the selection: They do not necessarily operate on
+the main selection but perhaps on a copy of it. If we want to implement
+env_push and env_pop, it is necessary to be able to dissociate the
+selection from the editing session.
+
+FIXME do we implement the selop in EditorLoop() or in the selection
+functions ? The obvious drawback of doing it in the functions is
+redundant code and more bugs. The advantage is that it permits certain
+optimisations. For example, if selop is intersect, there is no need to
+scan the objects that are not already in the selection. Is the
+performance gain worth the ugliness ? A O(1) scan is fast and if we need
+a O(2) scan (for example to get the list of linedefs tagged to a list a
+sectors), we can make it O(1) again by using a temporary table. It's
+also a more general way to improve performance ; what if the selection
+contains everything ?
+
+I'm tempted to go for the clean, easy solution (having the functions
+return a selection of their own and having EditorLoop() combine it with
+the existing list). If performance is a problem, it can be changed
+later. One thing that will not be possible with this approach, though,
+is to write a function that inserts items in the selection a certain
+places (silly example : a function that takes a list of linedefs and
+inserts after each linedef the sectors it is tagged to). But I guess we
+can do without such a feature for the time being.
+
+Combining code:
+ (*function) (old_list, new_list);
+ if (selop == replace) {
+ old_list = new_list;
+ }
+ else {
+ if (selop == intersection) {
+ // Make bitvector new_bv from new_list
+ for each item in old_list
+ if not in new_bv
+ remove it from old_list
+ }
+ else if (selop == union) {
+ // Make bitvector old_bv from old_list
+ for each item in new_list
+ if not in old_bv
+ append in to old_list
+ }
+ else if (selop == xor) {
+ // Make bitvector new_bv from new_list
+ for each item in old_list
+ if in new_bv
+ remove it from old_list and from new_bv
+ for each item in new_list
+ if in new_bv
+ append it to old_list
+ }
+ else if (selop == subtraction) {
+ // Make bitvector new_bv from new_list
+ for each item in old_list
+ if in new_bv
+ remove it from old_list
+ }
+ }
+
+In any case, it should be possible for functions to modify the input
+selection because select_clear is going to be implemented as a function.
+
+There should be a way to override the selop until further notice.
+
+EditorLoop() algorithm:
+1. Get keystroke
+2. Append to buffer
+3. Is there a binding that is exactly equal to the buffer ? If yes, call
+ the corresponding function, empty the buffer and go to 1.
+4. Is there a binding of which the contents of the buffer is an initial
+ substring ? If no, beep and empty the buffer.
+5. Go to 1.
+Also accumulate count.
+
+
+AJA PATCH
+Below is a patch that implements two other things that I would've
+liked. Firstly, being able to turn off the warning message for the
+"Swap Sidedefs" functions for lines. I find that I often need to flip
+a line but keep the sidedefs where they were. The patch adds a
+"blindly_swap_sidedefs" field to the config file. Incidentally I
+found it strange that using "Add a 2nd Sidedef" onto a fresh line
+(with no sidedefs already) put it as the first, yet flipping a single
+sided line happily swaps the sidedefs, making a line with no right
+side.
+
+Secondly, the patch lets the zoom factors of the number keys be
+configurable.
+
+Cheers,
+__
+\/ Andrew Apted
+
+
+===========================================================================
+
+diff -u ./src/editloop.cc.prev ./src/editloop.cc
+--- ./src/editloop.cc.prev Tue Sep 19 16:20:03 2000
++++ ./src/editloop.cc Tue Sep 19 17:38:52 2000
+@@ -247,6 +247,8 @@
+ OrigX = 0;
+ OrigY = 0;
+
++edit_zoom_init ();
++
+ if (zoom_default == 0)
+ {
+ zoom_fit (e);
+@@ -1370,7 +1372,7 @@
+ // [0], [1], ... [9]: set the zoom factor
+ else if (is.key >= '0' && is.key <= '9')
+ {
+- int r = edit_set_zoom (&e, is.key == '0' ? 0.1 : 1.0 / dectoi(is.key));
++ int r = edit_set_zoom (&e, digit_zoom_factors[dectoi(is.key)]);
+ if (r == 0)
+ RedrawMap = 1;
+ }
+diff -u ./src/cfgfile.cc.prev ./src/cfgfile.cc
+--- ./src/cfgfile.cc.prev Tue Sep 19 16:20:24 2000
++++ ./src/cfgfile.cc Tue Sep 19 18:33:03 2000
+@@ -345,6 +345,13 @@
+ "Merge vertices after ins. vertex",
+ &insert_vertex_merge_vertices },
+
++{ "blindly_swap_sidedefs",
++ NULL,
++ OPT_BOOLEAN,
++ NULL,
++ "Blindly swap sidedefs on a linedef",
++ &blindly_swap_sidedefs },
++
+ { "iwad1",
+ "i1",
+ OPT_STRINGPTR,
+@@ -556,6 +563,20 @@
+ NULL,
+ "Step between zoom factors (in %)",
+ &zoom_step },
++
++{ "digit_zoom_base",
++ NULL,
++ OPT_INTEGER,
++ NULL,
++ "Base zoom factor of digit keys (in %)",
++ &digit_zoom_base },
++
++{ "digit_zoom_step",
++ NULL,
++ OPT_INTEGER,
++ NULL,
++ "Step between zoom factors of digit keys (in %)",
++ &digit_zoom_step },
+
+ { NULL,
+ NULL,
+diff -u ./src/yadex.cc.prev ./src/yadex.cc
+--- ./src/yadex.cc.prev Tue Sep 19 16:21:16 2000
++++ ./src/yadex.cc Tue Sep 19 18:33:03 2000
+@@ -109,8 +109,11 @@
+ bool InfoShown = true;
+ int zoom_default = 0; // 0 means fit
+ int zoom_step = 0; // 0 means sqrt(2)
++int digit_zoom_base = 100;
++int digit_zoom_step = 30;
+ confirm_t insert_vertex_split_linedef = YC_ASK_ONCE;
+ confirm_t insert_vertex_merge_vertices = YC_ASK_ONCE;
++bool blindly_swap_sidedefs = false;
+ const char *Iwad1 = NULL;
+ const char *Iwad2 = NULL;
+ const char *Iwad3 = NULL;
+diff -u ./src/yadex.h.prev ./src/yadex.h
+--- ./src/yadex.h.prev Tue Sep 19 16:21:20 2000
++++ ./src/yadex.h Tue Sep 19 18:33:03 2000
+@@ -396,8 +396,11 @@
+ extern int idle_sleep_ms; // Time to sleep after empty XPending()
+ extern int zoom_default; // Initial zoom factor for map
+ extern int zoom_step; // Step between zoom factors in percent
++extern int digit_zoom_base; // Zoom factor of `1' key, in percent
++extern int digit_zoom_step; // Step between digit keys, in percent
+ extern confirm_t insert_vertex_merge_vertices;
+ extern confirm_t insert_vertex_split_linedef;
++extern bool blindly_swap_sidedefs;
+ extern const char *Iwad1; // Name of the Doom iwad
+ extern const char *Iwad2; // Name of the Doom II iwad
+ extern const char *Iwad3; // Name of the Heretic iwad
+diff -u ./src/editobj.cc.prev ./src/editobj.cc
+--- ./src/editobj.cc.prev Tue Sep 19 18:29:40 2000
++++ ./src/editobj.cc Tue Sep 19 18:29:53 2000
+@@ -747,6 +747,7 @@
+ if (objtype == OBJ_LINEDEFS)
+ {
+ if (Expert
++ || blindly_swap_sidedefs
+ || Confirm (-1, -1,
+ "Warning: the sector references are also swapped",
+ "You may get strange results if you don't know what you are doing..."))
+diff -u ./src/editzoom.cc.prev ./src/editzoom.cc
+--- ./src/editzoom.cc.prev Tue Sep 19 17:15:54 2000
++++ ./src/editzoom.cc Tue Sep 19 17:42:57 2000
+@@ -36,6 +36,21 @@
+ #include "gfx.h"
+
+
++double digit_zoom_factors[10];
++
++
++void edit_zoom_init ()
++{
++ int i;
++
++ double current = digit_zoom_base / 100.0;
++ double step = (digit_zoom_step + 100.0) / 100.0;
++
++ for (i=1; i <= 10; i++, current /= step)
++ digit_zoom_factors[i % 10] = current;
++}
++
++
+ int edit_zoom_in (edit_t *e)
+ {
+ if (! e) return 1; // Prevent compiler warning about unused .p.
+diff -u ./src/editzoom.h.prev ./src/editzoom.h
+--- ./src/editzoom.h.prev Tue Sep 19 17:15:58 2000
++++ ./src/editzoom.h Tue Sep 19 17:39:03 2000
+@@ -4,6 +4,17 @@
+ */
+
+
++/* zoom factors for the digit keys
++ */
++extern double digit_zoom_factors[10];
++
++
++/*
++ * edit_zoom_init - initialise
++ */
++void edit_zoom_init (void);
++
++
+ /*
+ * edit_zoom_in - zoom_in
+ *
+diff -u ./yadex.cfg.prev ./yadex.cfg
+--- ./yadex.cfg.prev Tue Sep 19 16:30:47 2000
++++ ./yadex.cfg Tue Sep 19 18:41:14 2000
+@@ -78,6 +78,11 @@
+
+ insert_vertex_split_linedef = yes
+
++# Blindly swaps the sidedefs on a linedef, i.e. without any warning
++# prompt. Default is false.
++
++ #blindly_swap_sidedefs = false
++
+ # Is the infobar shown ? On by default.
+
+ #info_bar = true
+@@ -111,8 +116,8 @@
+ #default_light_level = 144
+ #default_lower_texture = STARTAN3
+ #default_middle_texture = STARTAN3
+- #default_thing = 3004
+ #default_upper_texture = STARTAN3
++ #default_thing = 3004
+
+ # Initial zoom factor when opening a new edit window, in
+ # percent. The special value 0 causes Yadex to adjust the zoom
+@@ -127,6 +132,12 @@
+ # two (slightly above 41% increase). It's the default.
+
+ #zoom_step = 0
++
++# Base zoom factor and step for the digit keys, in percent. They work
++# like zoom_default and zoom_step above, but no special values.
++
++ #digit_zoom_base = 100
++ #digit_zoom_step = 30
+
+
+ #
+
+
+AJA PATCH #2
+Hey all,
+
+One feature I've really wanted in Yadex is the ability to point to an
+area, press a key, and have all the linedefs that face into that area
+updated so that it forms a new sector. If the lines don't have a
+sidedef on that side, it is added, otherwise the existing sidedef is
+updated.
+
+Well I've implemented it, below is the patch :-). The key is capital
+`Z'. I tried `S' initially but it was easy to get mixed up with the
+sector mode switch key `s'. It hasn't gotten heavy testing yet, but
+so far so good. One limitation is that it doesn't handle islands
+within the chosen area -- for example the pillars near the start of
+MAP01 of DOOM 2. Oh yeah if you're in sector mode and press the 'Z'
+key while another sector is selected, that sector reference is used on
+the updated sidedefs rather than making a new sector.
+
+Cheers,
+__
+\/ Andrew Apted
+
+
+diff -r -u src_aja/editloop.cc src/editloop.cc
+--- src_aja/editloop.cc Tue Aug 15 11:14:25 2000
++++ src/editloop.cc Wed May 9 17:19:27 2001
+@@ -2123,6 +2123,21 @@
+ RedrawMap = 1;
+ }
+
++ // [Z] Set sector on surrounding linedefs (AJA)
++ else if (is.key == 'Z' && e.pointer_in_window)
++ {
++ if (e.obj_type == OBJ_SECTORS && e.Selected)
++ {
++ SuperSectorSelector (e.pointer_x, e.pointer_y,
++ e.Selected->objnum);
++ }
++ else
++ {
++ SuperSectorSelector (e.pointer_x, e.pointer_y, OBJ_NO_NONE);
++ }
++ RedrawMap = 1;
++ }
++
+ // [!] Debug info (not documented)
+ else if (is.key == '!')
+ {
+diff -r -u src_aja/s_misc.cc src/s_misc.cc
+--- src_aja/s_misc.cc Mon Aug 28 07:33:51 2000
++++ src/s_misc.cc Thu May 10 22:16:49 2001
+@@ -29,10 +29,13 @@
+
+
+ #include "yadex.h"
++#include
++
+ #include "entry.h"
+ #include "gfx.h"
+ #include "levels.h"
+ #include "selectn.h"
++#include "dialog.h"
+
+
+ /*
+@@ -176,6 +179,342 @@
+ Sectors[cur->objnum].light = light;
+ }
+ MadeChanges = 1;
++}
++
++
++static int find_linedef_for_area (int x, int y, int& side)
++{
++ int n, m, curx;
++ int best_match = -1;
++
++ curx = 32767; // Oh yes, one more hard-coded constant!
++
++ for (n = 0; n < NumLineDefs; n++)
++ if ((Vertices[LineDefs[n].start].y > y)
++ != (Vertices[LineDefs[n].end].y > y))
++ {
++ int lx0 = Vertices[LineDefs[n].start].x;
++ int ly0 = Vertices[LineDefs[n].start].y;
++ int lx1 = Vertices[LineDefs[n].end].x;
++ int ly1 = Vertices[LineDefs[n].end].y;
++ m = lx0 + (int) ((long) (y - ly0) * (long) (lx1 - lx0)
++ / (long) (ly1 - ly0));
++ if (m >= x && m < curx)
++ {
++ curx = m;
++ best_match = n;
++ }
++ }
++
++ /* now look if this linedef has a sidedef bound to one sector */
++ if (best_match < 0)
++ return OBJ_NO_NONE;
++
++ if (Vertices[LineDefs[best_match].start].y
++ > Vertices[LineDefs[best_match].end].y)
++ side = 1;
++ else
++ side = 2;
++
++ return best_match;
++}
++
++/*
++ compute the angle between lines AB and BC, going anticlockwise.
++ result is in degrees 0 - 359. A, B and C are vertex indices.
++ -AJA- 2001-05-09
++ */
++#define DEBUG_ANGLE 0
++
++static double angle_between_linedefs (int A, int B, int C)
++{
++ int a_dx = Vertices[B].x - Vertices[A].x;
++ int a_dy = Vertices[B].y - Vertices[A].y;
++
++ int c_dx = Vertices[B].x - Vertices[C].x;
++ int c_dy = Vertices[B].y - Vertices[C].y;
++
++ double AB_angle = (a_dx == 0) ? (a_dy >= 0 ? 90 : -90) :
++ atan2 (a_dy, a_dx) * 180 / M_PI;
++
++ double CB_angle = (c_dx == 0) ? (c_dy >= 0 ? 90 : -90) :
++ atan2 (c_dy, c_dx) * 180 / M_PI;
++
++ double result = CB_angle - AB_angle;
++
++ if (result >= 360)
++ result -= 360;
++
++ while (result < 0)
++ result += 360;
++
++#if (DEBUG_ANGLE)
++ fprintf(stderr, "ANGLE %1.6f (%d,%d) -> (%d,%d) -> (%d,%d)\n",
++ result, Vertices[A].x, Vertices[A].y,
++ Vertices[B].x, Vertices[B].y, Vertices[C].x, Vertices[C].y);
++#endif
++
++ return result;
++}
++
++/*
++ follows the path clockwise from the given start line, adding each
++ line into the appropriate set. If the path is not closed, zero is
++ returned.
++
++ -AJA- 2001-05-09
++ */
++#define DEBUG_PATH 0
++
++static int select_sides_in_closed_path (bitvec_c& ld_side1,
++ bitvec_c& ld_side2, int line, int side)
++{
++ int cur_vert, prev_vert, final_vert;
++
++ if (side == 1)
++ {
++ ld_side1.set (line);
++ cur_vert = LineDefs[line].end;
++ prev_vert = final_vert = LineDefs[line].start;
++ }
++ else
++ {
++ ld_side2.set (line);
++ cur_vert = LineDefs[line].start;
++ prev_vert = final_vert = LineDefs[line].end;
++ }
++
++#if (DEBUG_PATH)
++ fprintf(stderr, "PATH: line %d side %d cur %d final %d\n",
++ line, side, cur_vert, final_vert);
++#endif
++
++ while (cur_vert != final_vert)
++ {
++ int next_line = OBJ_NO_NONE;
++ int next_vert = OBJ_NO_NONE;
++ int next_side;
++ double best_angle = 999;
++
++ // Look for the next linedef in the path. It's the linedef that
++ // uses the current vertex and is not the current one.
++
++ for (int n = 0; n < NumLineDefs; n++)
++ {
++ if (n == line)
++ continue;
++
++ int other_vert;
++ int which_side;
++
++ if (LineDefs[n].start == cur_vert)
++ {
++ other_vert = LineDefs[n].end;
++ which_side = 1;
++ }
++ else if (LineDefs[n].end == cur_vert)
++ {
++ other_vert = LineDefs[n].start;
++ which_side = 2;
++ }
++ else
++ continue;
++
++ // found adjoining linedef
++
++ double angle = angle_between_linedefs (prev_vert, cur_vert,
++ other_vert);
++
++ if (! is_obj (next_line) || angle < best_angle)
++ {
++ next_line = n;
++ next_vert = other_vert;
++ next_side = which_side;
++
++ best_angle = angle;
++ }
++
++ // Continue the search
++ }
++
++ line = next_line;
++ side = next_side;
++
++#if (DEBUG_PATH)
++ fprintf(stderr, "PATH NEXT: line %d side %d vert %d angle %1.6f\n",
++ line, side, next_vert, best_angle);
++#endif
++
++ // None ? Path cannot be closed
++ if (! is_obj (line))
++ return 0;
++
++ // Line already seen ? Under normal circumstances this won't
++ // happen, but it _can_ happen and indicates a non-closed
++ // structure
++ if (ld_side1.get (line) || ld_side2.get (line))
++ return 0;
++
++ if (side == 1)
++ ld_side1.set (line);
++ else
++ ld_side2.set (line);
++
++ prev_vert = cur_vert;
++ cur_vert = next_vert;
++ }
++
++#if (DEBUG_PATH)
++ fprintf(stderr, "PATH CLOSED !\n");
++#endif
++
++ return 1;
++}
++
++/*
++ update the side on a single linedef, using the given sector
++ reference. Will create a new sidedef if necessary.
++ */
++static void super_set_sector_on_side (int line, wad_sdn_t& side,
++ wad_sdn_t& other, int side_no, int sector)
++{
++ if (is_obj (side) && SideDefs[side].sector == sector)
++ {
++ // there was no change.
++ return;
++ }
++
++ int must_flip = 0;
++
++ if (! is_obj (side))
++ {
++ // if we're adding a sidedef to a line that has no sides, and
++ // the sidedef would be the 2nd one, then flip the linedef.
++ // Thus we don't end up with invalid lines -- i.e. ones with a
++ // left side but no right side.
++
++ if (! is_obj (other) && side_no == 2)
++ must_flip = 1;
++
++ InsertObject (OBJ_SIDEDEFS, OBJ_NO_NONE, 0, 0);
++ side = NumSideDefs - 1;
++
++ // if we're adding a second side to the linedef, clear out some
++ // of the properties that aren't needed anymore: middle texture,
++ // two-sided flag, and impassible flag.
++
++ if (is_obj (other))
++ {
++ strncpy (SideDefs[side].tex3, "-", WAD_TEX_NAME);
++ strncpy (SideDefs[other].tex3, "-", WAD_TEX_NAME);
++
++ LineDefs[line].flags |= 4; // Set the 2S bit
++ LineDefs[line].flags &= ~1; // Clear the Im bit
++ }
++ }
++
++ SideDefs[side].sector = sector;
++
++ if (must_flip)
++ {
++ int temp = LineDefs[line].start;
++ LineDefs[line].start = LineDefs[line].end;
++ LineDefs[line].end = temp;
++
++ temp = side;
++ side = other;
++ other = temp;
++ }
++
++ MadeChanges = 1;
++ MadeMapChanges = 1;
++}
++
++static int super_find_sector_model (bitvec_c& ld_side1,
++ bitvec_c& ld_side2)
++{
++ for (int line=0; line < NumLineDefs; line++)
++ {
++ int side1 = LineDefs[line].sidedef1;
++ int side2 = LineDefs[line].sidedef2;
++
++ if (ld_side1.get (line))
++ if (is_obj (side2))
++ return SideDefs[side2].sector;
++
++ if (ld_side2.get (line))
++ if (is_obj (side1))
++ return SideDefs[side1].sector;
++ }
++
++ return OBJ_NO_NONE;
++}
++
++
++/*
++ Change the closed sector at the pointer
++
++ "sector" here really means a bunch of sidedefs that all face
++ inward to the current area under the mouse cursor. Two basic
++ operations: (a) set the sidedef sector references to a completely
++ new sector, or (b) set them to an existing sector. This is
++ controlled by the `new_sec' parameter.
++
++ -AJA- 2001-05-08
++ */
++
++void SuperSectorSelector (int map_x, int map_y, int new_sec)
++{
++ int line, side;
++ char msg_buf[200];
++
++ line = find_linedef_for_area (map_x, map_y, side);
++
++ if (! is_obj (line))
++ {
++ Beep ();
++ sprintf (msg_buf, "Chosen area is not closed");
++ Notify (-1, -1, msg_buf, NULL);
++ return;
++ }
++
++ bitvec_c ld_side1 (NumLineDefs);
++ bitvec_c ld_side2 (NumLineDefs);
++
++ int closed = select_sides_in_closed_path (ld_side1, ld_side2,
++ line, side);
++
++ if (! closed)
++ {
++ Beep ();
++ sprintf (msg_buf, "Area chosen is not closed");
++ Notify (-1, -1, msg_buf, NULL);
++ return;
++ }
++
++ // -AJA- FIXME: look for "islands", closed linedef paths that lie
++ // completely inside the area, i.e. not connected to the main path.
++ // Example: the two pillars at the start of MAP01 of DOOM 2. See
++ // GetOppositeSector() and the end of SplitSector() for a possible
++ // algorithm.
++
++ if (! is_obj (new_sec))
++ {
++ int model = super_find_sector_model (ld_side1, ld_side2);
++ InsertObject (OBJ_SECTORS, model, 0, 0);
++ new_sec = NumSectors - 1;
++ }
++
++ for (line=0; line < NumLineDefs; line++)
++ {
++ if (ld_side1.get (line))
++ super_set_sector_on_side (line, LineDefs[line].sidedef1,
++ LineDefs[line].sidedef2, 1, new_sec);
++
++ else if (ld_side2.get (line))
++ super_set_sector_on_side (line, LineDefs[line].sidedef2,
++ LineDefs[line].sidedef1, 2, new_sec);
++ }
+ }
+
+ /* end of file */
+diff -r -u src_aja/yadex.h src/yadex.h
+--- src_aja/yadex.h Wed Aug 16 07:22:40 2000
++++ src/yadex.h Tue May 8 20:32:53 2001
+@@ -584,6 +584,7 @@
+ void DistributeSectorCeilings (SelPtr); /* SWAP! */
+ void RaiseOrLowerSectors (SelPtr obj);
+ void BrightenOrDarkenSectors (SelPtr obj);
++void SuperSectorSelector (int map_x, int map_y, int new_sec);
+
+ /* s_prop.cc (previously in editobj.cc) */
+ void SectorProperties (int x0, int y0, SelPtr obj);
+
+
+AJA PATCH #3
+Here is a patch that implements two features I mentioned before:
+
+ (a) the 'w' key in vertex mode doing "split sector" function.
+ It's quite handy. (code was a doddle).
+
+ (b) the 'T' key doing property transfer from highlighted object
+ to all selected objects.
+
+Patch is against 1.5.1 (like the SuperSector one, which BTW has been
+extremely useful -- I use it all the time and wouldn't want to edit
+without it. Plus it hasn't crashed or fouled up yet). I've tried to
+keep both patches independent -- might cause a reject against yadex.h
+though. Andre, if you'd rather one big patch, will do.
+
+Cheers,
+__
+\/ Andrew Apted
+
+
+diff -u -r src_aja/editloop.cc src/editloop.cc
+--- src_aja/editloop.cc Tue Aug 15 11:14:25 2000
++++ src/editloop.cc Sun May 27 15:46:12 2001
+@@ -1853,6 +1853,17 @@
+ StretchSelBox = false;
+ }
+
++ // [w]: split sector between vertices
++ else if (is.key == 'w' && e.obj_type == OBJ_VERTICES
++ && e.Selected && e.Selected->next && ! e.Selected->next->next)
++ {
++ SplitSector (e.Selected->next->objnum, e.Selected->objnum);
++ ForgetSelection (&e.Selected);
++ RedrawMap = 1;
++ DragObject = false;
++ StretchSelBox = false;
++ }
++
+ // [x]: spin things 1/8 turn clockwise
+ else if (is.key == 'x' && e.obj_type == OBJ_THINGS
+ && (e.Selected || is_obj (e.highlight_obj_no)))
+@@ -2134,6 +2160,30 @@
+ {
+ show_font ();
+ RedrawMap = 1;
++ }
++
++ // [T] Transfer properties to selected objects (AJA)
++ else if (is.key == 'T' && e.Selected
++ && e.highlight_obj_no >= 0)
++ {
++ switch (e.obj_type)
++ {
++ case OBJ_SECTORS:
++ TransferSectorProperties (e.highlight_obj_no, e.Selected);
++ RedrawMap = 1;
++ break;
++ case OBJ_THINGS:
++ TransferThingProperties (e.highlight_obj_no, e.Selected);
++ RedrawMap = 1;
++ break;
++ case OBJ_LINEDEFS:
++ TransferLinedefProperties (e.highlight_obj_no, e.Selected);
++ RedrawMap = 1;
++ break;
++ default:
++ Beep ();
++ break;
++ }
+ }
+
+ // [|] Show colours (not documented)
+diff -u -r src_aja/l_prop.cc src/l_prop.cc
+--- src_aja/l_prop.cc Sun Apr 30 06:37:12 2000
++++ src/l_prop.cc Sun May 27 15:41:37 2001
+@@ -477,3 +477,37 @@
+ }
+
+
++/*
++ * TransferLinedefProperties
++ *
++ * Note: right now nothing is done about sidedefs. Being able to
++ * (intelligently) transfer sidedef properties from source line to
++ * destination linedefs could be a useful feature -- though it is
++ * unclear the best way to do it. OTOH not touching sidedefs might
++ * be useful too.
++ *
++ * -AJA- 2001-05-27
++ */
++#define LINEDEF_FLAG_KEEP (1 + 4)
++
++void TransferLinedefProperties (int src_linedef, SelPtr linedefs)
++{
++ SelPtr cur;
++ wad_ldflags_t src_flags = LineDefs[src_linedef].flags & ~LINEDEF_FLAG_KEEP;
++
++ for (cur=linedefs; cur; cur=cur->next)
++ {
++ if (! is_obj(cur->objnum))
++ continue;
++
++ // don't transfer certain flags
++ LineDefs[cur->objnum].flags &= LINEDEF_FLAG_KEEP;
++ LineDefs[cur->objnum].flags |= src_flags;
++
++ LineDefs[cur->objnum].type = LineDefs[src_linedef].type;
++ LineDefs[cur->objnum].tag = LineDefs[src_linedef].tag;
++
++ MadeChanges = 1;
++ }
++}
++
+diff -u -r src_aja/s_prop.cc src/s_prop.cc
+--- src_aja/s_prop.cc Tue Jan 11 00:40:11 2000
++++ src/s_prop.cc Sun May 27 13:29:27 2001
+@@ -208,3 +208,32 @@
+ }
+
+
++/*
++ * TransferSectorProperties
++ *
++ * -AJA- 2001-05-27
++ */
++void TransferSectorProperties (int src_sector, SelPtr sectors)
++{
++ SelPtr cur;
++
++ for (cur=sectors; cur; cur=cur->next)
++ {
++ if (! is_obj(cur->objnum))
++ continue;
++
++ strncpy (Sectors[cur->objnum].floort, Sectors[src_sector].floort,
++ WAD_FLAT_NAME);
++ strncpy (Sectors[cur->objnum].ceilt, Sectors[src_sector].ceilt,
++ WAD_FLAT_NAME);
++
++ Sectors[cur->objnum].floorh = Sectors[src_sector].floorh;
++ Sectors[cur->objnum].ceilh = Sectors[src_sector].ceilh;
++ Sectors[cur->objnum].light = Sectors[src_sector].light;
++ Sectors[cur->objnum].special = Sectors[src_sector].special;
++ Sectors[cur->objnum].tag = Sectors[src_sector].tag;
++
++ MadeChanges = 1;
++ }
++}
++
+diff -u -r src_aja/t_prop.cc src/t_prop.cc
+--- src_aja/t_prop.cc Tue Jul 25 08:46:49 2000
++++ src/t_prop.cc Sun May 27 15:22:29 2001
+@@ -315,4 +315,30 @@
+ }
+
+
++/*
++ * TransferThingProperties
++ *
++ * -AJA- 2001-05-27
++ */
++void TransferThingProperties (int src_thing, SelPtr things)
++{
++ SelPtr cur;
++
++ for (cur=things; cur; cur=cur->next)
++ {
++ if (! is_obj(cur->objnum))
++ continue;
++
++ Things[cur->objnum].angle = Things[src_thing].angle;
++ Things[cur->objnum].type = Things[src_thing].type;
++ Things[cur->objnum].when = Things[src_thing].when;
++
++ MadeChanges = 1;
++
++ things_types++;
++ things_angles++;
++ }
++}
++
++
+ /* end of file */
+diff -u -r src_aja/yadex.h src/yadex.h
+--- src_aja/yadex.h Wed Aug 16 07:22:40 2000
++++ src/yadex.h Sun May 27 15:45:18 2001
+@@ -506,6 +506,7 @@
+
+ /* l_prop.cc (previously in editobj.cc) */
+ void LinedefProperties (int x0, int y0, SelPtr obj);
++void TransferLinedefProperties (int src_linedef, SelPtr linedefs);
+
+ /* l_unlink.cc */
+ void unlink_sidedef (SelPtr linedefs, int side1, int side2);
+@@ -587,6 +589,7 @@
+
+ /* s_prop.cc (previously in editobj.cc) */
+ void SectorProperties (int x0, int y0, SelPtr obj);
++void TransferSectorProperties (int src_sector, SelPtr sectors);
+
+ /* s_split.cc (previously in objects.cc) */
+ void SplitSector (int, int); /* SWAP! */
+@@ -603,6 +606,7 @@
+ /* selrect.cc */
+ /* t_prop.c (previously in editobj.c) */
+ void ThingProperties (int x0, int y0, SelPtr obj);
++void TransferThingProperties (int src_thing, SelPtr things);
+
+ /* v_merge.cc */
+ void DeleteVerticesJoinLineDefs (SelPtr ); /* SWAP! */
+
+
diff -uaNr yadex-1.5.2/VERSION yadex-1.6.0/VERSION
--- yadex-1.5.2/VERSION 2001-06-21 16:05:44.000000000 +0200
+++ yadex-1.6.0/VERSION 2003-03-30 14:18:03.000000000 +0200
@@ -1 +1 @@
-1.5.2
+1.6.0
diff -uaNr yadex-1.5.2/atclib/al_sdup.c yadex-1.6.0/atclib/al_sdup.c
--- yadex-1.5.2/atclib/al_sdup.c 1999-08-01 17:23:50.000000000 +0200
+++ yadex-1.6.0/atclib/al_sdup.c 2001-06-21 16:22:13.000000000 +0200
@@ -27,6 +27,7 @@
#include
+#include
#include "atclib.h"
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/borland.hpp yadex-1.6.0/boost/boost/config/compiler/borland.hpp
--- yadex-1.5.2/boost/boost/config/compiler/borland.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/borland.hpp 2001-10-01 19:26:33.000000000 +0200
@@ -0,0 +1,55 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Borland C++ compiler setup:
+
+# if __BORLANDC__ <= 0x0550
+// Borland C++ Builder 4 and 5:
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# if __BORLANDC__ == 0x0550
+// Borland C++ Builder 5, command-line compiler 5.5:
+# define BOOST_NO_OPERATORS_IN_NAMESPACE
+# endif
+# endif
+
+#if (__BORLANDC__ >= 0x550)
+// is partly broken, some macos define symbols that are really in
+// namespace std, so you end up having to use illegal constructs like
+// std::DBL_MAX, as a fix we'll just include float.h and have done with:
+#include
+#endif
+
+// Version 5.51:
+#if (__BORLANDC__ <= 0x551) || !defined(BOOST_STRICT_CONFIG)
+# define BOOST_NO_CV_SPECIALIZATIONS
+# define BOOST_NO_CV_VOID_SPECIALIZATIONS
+# define BOOST_NO_INTEGRAL_INT64_T
+# define BOOST_NO_PRIVATE_IN_AGGREGATE
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_SWPRINTF
+# define BOOST_NO_USING_TEMPLATE
+#endif
+
+#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
+
+//
+// versions check:
+// we don't support Borland prior to version 5.4:
+#if __BORLANDC__ < 0x540
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 5.51:
+#if (__BORLANDC__ > 0x551)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# else
+# pragma message( "Unknown compiler version - please run the configure tests and report the results")
+# endif
+#endif
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/comeau.hpp yadex-1.6.0/boost/boost/config/compiler/comeau.hpp
--- yadex-1.5.2/boost/boost/config/compiler/comeau.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/comeau.hpp 2001-10-01 19:26:33.000000000 +0200
@@ -0,0 +1,38 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Comeau C++ compiler setup:
+
+#include "boost/config/compiler/common_edg.hpp"
+
+#if (__COMO_VERSION__ <= 4245) || !defined(BOOST_STRICT_CONFIG)
+# define BOOST_FUNCTION_USE_VIRTUAL_FUNCTIONS
+# if defined(_MSC_VER) && _MSC_VER <= 1300
+# define BOOST_NO_STDC_NAMESPACE
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_SWPRINTF
+# endif
+#endif
+
+#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__)
+
+//
+// versions check:
+// we don't know Comeau prior to version 4245:
+#if __COMO_VERSION__ < 4245
+# error "Compiler not configured - please reconfigure"
+#endif
+//
+// last known and checked version is 4245:
+#if (__COMO_VERSION__ > 4245)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/common_edg.hpp yadex-1.6.0/boost/boost/config/compiler/common_edg.hpp
--- yadex-1.5.2/boost/boost/config/compiler/common_edg.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/common_edg.hpp 2001-10-01 19:26:35.000000000 +0200
@@ -0,0 +1,25 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+//
+// Options common to all edg based compilers.
+//
+// This is included from within the individual compiler mini-configs.
+
+#ifndef __EDG_VERSION__
+# error This file requires that __EDG_VERSION__ be defined.
+#endif
+
+#if (__EDG_VERSION__ <= 238)
+# define BOOST_NO_VOID_RETURNS
+#endif
+
+#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+#endif
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/compaq_cxx.hpp yadex-1.6.0/boost/boost/config/compiler/compaq_cxx.hpp
--- yadex-1.5.2/boost/boost/config/compiler/compaq_cxx.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/compaq_cxx.hpp 2001-10-01 19:26:33.000000000 +0200
@@ -0,0 +1,18 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Dec Alpha True64 C++ compiler setup:
+
+#define BOOST_COMPILER "Dec Alpha True64 " BOOST_STRINGIZE(__DECCXX_VER)
+
+#include "boost/config/compiler/common_edg.hpp"
+
+//
+// versions check:
+// Nothing to do here?
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/gcc.hpp yadex-1.6.0/boost/boost/config/compiler/gcc.hpp
--- yadex-1.5.2/boost/boost/config/compiler/gcc.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/gcc.hpp 2001-10-01 19:26:33.000000000 +0200
@@ -0,0 +1,54 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// GNU C++ compiler setup:
+
+# if __GNUC__ == 2 && __GNUC_MINOR__ == 91
+ // egcs 1.1 won't parse smart_ptr.hpp without this:
+# define BOOST_NO_AUTO_PTR
+# endif
+# if __GNUC__ == 2 && __GNUC_MINOR__ < 95
+ //
+ // Prior to gcc 2.95 member templates only partly
+ // work - define BOOST_MSVC6_MEMBER_TEMPLATES
+ // instead since inline member templates mostly work.
+ //
+# define BOOST_NO_MEMBER_TEMPLATES
+# if __GNUC_MINOR__ >= 9
+# define BOOST_MSVC6_MEMBER_TEMPLATES
+# endif
+# endif
+
+# if __GNUC__ == 2 && __GNUC_MINOR__ <= 97
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_OPERATORS_IN_NAMESPACE
+# endif
+
+//
+// Threading support:
+// Turn this on unconditionally here, it will get turned off again later
+// if no threading API is detected.
+//
+#define BOOST_HAS_THREADS
+
+#define BOOST_COMPILER "GNU C++ version " BOOST_STRINGIZE(__GNUC__) "." BOOST_STRINGIZE(__GNUC_MINOR__)
+
+//
+// versions check:
+// we don't know gcc prior to version 2.90:
+#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90)
+# error "Compiler not configured - please reconfigure"
+#endif
+//
+// last known and checked version is 3.0:
+#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 0))
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# else
+# warning "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/greenhills.hpp yadex-1.6.0/boost/boost/config/compiler/greenhills.hpp
--- yadex-1.5.2/boost/boost/config/compiler/greenhills.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/greenhills.hpp 2001-10-01 19:26:33.000000000 +0200
@@ -0,0 +1,27 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Greenhills C++ compiler setup:
+
+#define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs)
+
+#include "boost/config/compiler/common_edg.hpp"
+
+//
+// versions check:
+// we don't support Greenhills prior to version 0:
+#if __ghs < 0
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 0:
+#if (__ghs > 0)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/hp_acc.hpp yadex-1.6.0/boost/boost/config/compiler/hp_acc.hpp
--- yadex-1.5.2/boost/boost/config/compiler/hp_acc.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/hp_acc.hpp 2001-10-01 19:26:34.000000000 +0200
@@ -0,0 +1,36 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// HP aCC C++ compiler setup:
+
+// THIS FILE IS INCOMPLETE: WE NEED THE CORRECT VERSION CHECKS ADDING!!!
+#if (__HP_aCC <= 0) || !defined(BOOST_STRICT_CONFIG)
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_OPERATORS_IN_NAMESPACE
+# if !defined(_NAMESPACE_STD)
+# define BOOST_NO_STD_LOCALE
+# define BOOST_NO_STRINGSTREAM
+# endif
+#endif
+
+
+#define BOOST_COMPILER "HP aCC version " BOOST_STRINGIZE(__HP_aCC)
+
+//
+// versions check:
+// we don't support HP aCC prior to version 0:
+#if __HP_aCC < 0
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 0:
+#if (__HP_aCC > 0)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/intel.hpp yadex-1.6.0/boost/boost/config/compiler/intel.hpp
--- yadex-1.5.2/boost/boost/config/compiler/intel.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/intel.hpp 2001-10-01 19:26:34.000000000 +0200
@@ -0,0 +1,61 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Intel compiler setup:
+
+#include "boost/config/compiler/common_edg.hpp"
+
+#ifdef __ICL
+# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(__ICL)
+# define BOOST_INTEL_CXX_VERSION __ICL
+#else
+# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(__ICC)
+# define BOOST_INTEL_CXX_VERSION __ICC
+#endif
+
+#if (BOOST_INTEL_CXX_VERSION <= 600) || !defined(BOOST_STRICT_CONFIG)
+
+# if defined(_MSC_VER)
+ // Intel C++ 5.0.1 uses EDG 2.45, but fails to activate Koenig lookup
+ // in the frontend even in "strict" mode. (reported by Kirk Klobe)
+ // Intel C++ 6.0 (currently in Beta test) doesn't have any front-end
+ // changes at all. (reported by Kirk Klobe)
+# ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# endif
+# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+# define BOOST_NO_SWPRINTF
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# endif
+
+#endif
+
+#ifdef _MSC_VER
+# ifndef _NATIVE_WCHAR_T_DEFINED
+# define BOOST_NO_INTRINSIC_WCHAR_T
+# endif
+# define BOOST_NO_SWPRINTF
+#endif
+
+
+//
+// versions check:
+// we don't support Intel prior to version 5.0:
+#if BOOST_INTEL_CXX_VERSION < 500
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 500:
+#if (BOOST_INTEL_CXX_VERSION > 500)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# elif defined(_MSC_VER)
+# warning "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/kai.hpp yadex-1.6.0/boost/boost/config/compiler/kai.hpp
--- yadex-1.5.2/boost/boost/config/compiler/kai.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/kai.hpp 2001-10-01 19:26:34.000000000 +0200
@@ -0,0 +1,27 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Kai C++ compiler setup:
+
+#include "boost/config/compiler/common_edg.hpp"
+
+# if (__KCC_VERSION <= 4001) || !defined(BOOST_STRICT_CONFIG)
+ // at least on Sun, the contents of is not in namespace std
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+
+#define BOOST_COMPILER "Kai C++ version " BOOST_STRINGIZE(__KCC_VERSION)
+
+//
+// last known and checked version is 4001:
+#if (__KCC_VERSION > 4001)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/metrowerks.hpp yadex-1.6.0/boost/boost/config/compiler/metrowerks.hpp
--- yadex-1.5.2/boost/boost/config/compiler/metrowerks.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/metrowerks.hpp 2001-10-01 19:26:34.000000000 +0200
@@ -0,0 +1,50 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Metrowerks C++ compiler setup:
+
+# if __MWERKS__ <= 0x2301 // 5.3
+# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# define BOOST_NO_POINTER_TO_MEMBER_CONST
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+# endif
+
+# if __MWERKS__ <= 0x2401 // 6.2
+//# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# endif
+
+# if(__MWERKS__ <= 0x2405) || !defined(BOOST_STRICT_CONFIG) // 7.0
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# endif
+
+#if !__option(wchar_type)
+# define BOOST_NO_INTRINSIC_WCHAR_T
+#endif
+
+
+#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(__MWERKS__)
+
+//
+// versions check:
+// we don't support Metrowerks prior to version 5.3:
+#if __MWERKS__ < 0x2301
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 0x2405:
+#if (__MWERKS__ > 0x2405)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
+
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/mpw.hpp yadex-1.6.0/boost/boost/config/compiler/mpw.hpp
--- yadex-1.5.2/boost/boost/config/compiler/mpw.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/mpw.hpp 2001-10-01 19:26:34.000000000 +0200
@@ -0,0 +1,49 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// MPW C++ compilers setup:
+
+# if defined(__SC__)
+# define BOOST_COMPILER "MPW SCpp version " BOOST_STRINGIZE(__SC__)
+# elif defined(__MRC__)
+# define BOOST_COMPILER "MPW MrCpp version " BOOST_STRINGIZE(__MRC__)
+# else
+# error "Using MPW compiler configuration by mistake. Please update."
+# endif
+
+//
+// MPW 8.90:
+//
+#if (MPW_CPLUS <= 0x890) || !defined(BOOST_STRICT_CONFIG)
+# define BOOST_NO_CV_SPECIALIZATIONS
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_NO_INTRINSIC_WCHAR_T
+# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# define BOOST_NO_USING_TEMPLATE
+
+# define BOOST_NO_CWCHAR
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+
+# define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */
+#endif
+
+//
+// versions check:
+// we don't support MPW prior to version 8.9:
+#if MPW_CPLUS < 0x890
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 0x890:
+#if (MPW_CPLUS > 0x890)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/sgi_mipspro.hpp yadex-1.6.0/boost/boost/config/compiler/sgi_mipspro.hpp
--- yadex-1.5.2/boost/boost/config/compiler/sgi_mipspro.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/sgi_mipspro.hpp 2001-10-01 19:26:34.000000000 +0200
@@ -0,0 +1,16 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// SGI C++ compiler setup:
+
+#define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION)
+
+#include "boost/config/compiler/common_edg.hpp"
+
+//
+// version check:
+// probably nothing to do here?
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/sunpro_cc.hpp yadex-1.6.0/boost/boost/config/compiler/sunpro_cc.hpp
--- yadex-1.5.2/boost/boost/config/compiler/sunpro_cc.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/sunpro_cc.hpp 2001-10-01 19:26:34.000000000 +0200
@@ -0,0 +1,50 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Sun C++ compiler setup:
+
+# if __SUNPRO_CC >= 0x520
+ //
+ // Sunpro 5.1 and later:
+ //
+ // although sunpro 5.1 supports the syntax for
+ // inline initialization it often gets the value
+ // wrong, especially where the value is computed
+ // from other constants (J Maddock 6th May 2001)
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+ // although sunpro 5.1 supports the syntax for
+ // partial specialization, it often seems to
+ // bind to the wrong specialization. Better
+ // to disable it until suppport becomes more stable
+ // (J Maddock 6th May 2001).
+# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ // integral constant expressions with 64 bit numbers fail
+# define BOOST_NO_INTEGRAL_INT64_T
+# endif
+# if __SUNPRO_CC <= 0x500
+# define BOOST_NO_MEMBER_TEMPLATES
+# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# endif
+
+#define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC)
+
+//
+// versions check:
+// we don't support sunpro prior to version 4:
+#if __SUNPRO_CC < 0x400
+#error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 0x520:
+#if (__SUNPRO_CC > 0x520)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/vacpp.hpp yadex-1.6.0/boost/boost/config/compiler/vacpp.hpp
--- yadex-1.5.2/boost/boost/config/compiler/vacpp.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/vacpp.hpp 2001-10-01 19:26:34.000000000 +0200
@@ -0,0 +1,37 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Visual Age (IBM) C++ compiler setup:
+
+#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+#define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+
+//
+// On AIX thread support seems to be indicated by _THREAD_SAFE:
+//
+#ifdef _THREAD_SAFE
+# define BOOST_HAS_THREADS
+#endif
+
+#define BOOST_COMPILER "IBM Visual Age" BOOST_STRINGIZE(__IBMCPP__)
+
+//
+// versions check:
+// we don't support Visual age prior to version 5:
+#if __IBMCPP__ < 500
+#error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 500:
+#if (__IBMCPP__ > 500)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/compiler/visualc.hpp yadex-1.6.0/boost/boost/config/compiler/visualc.hpp
--- yadex-1.5.2/boost/boost/config/compiler/visualc.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/compiler/visualc.hpp 2001-10-01 19:26:34.000000000 +0200
@@ -0,0 +1,76 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Microsoft Visual C++ compiler setup:
+
+#define BOOST_MSVC _MSC_VER
+
+// turn off the warnings before we #include anything
+#pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info
+#pragma warning( disable : 4503 ) // warning: decorated name length exceeded
+
+#if _MSC_VER <= 1200 // 1200 == VC++ 6.0
+# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_VOID_RETURNS
+#endif
+
+#if (_MSC_VER <= 1300) || !defined(BOOST_STRICT_CONFIG) // VC7 Beta 2 or later
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_NO_PRIVATE_IN_AGGREGATE
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_INTEGRAL_INT64_T
+
+// VC++ 6/7 has member templates but they have numerous problems including
+// cases of silent failure, so for safety we define:
+# define BOOST_NO_MEMBER_TEMPLATES
+// For VC++ experts wishing to attempt workarounds, we define:
+# define BOOST_MSVC6_MEMBER_TEMPLATES
+
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# define BOOST_NO_CV_VOID_SPECIALIZATIONS
+# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# define BOOST_NO_USING_TEMPLATE
+# define BOOST_NO_SWPRINTF
+//# define BOOST_NO_POINTER_TO_MEMBER_CONST
+ //
+ // disable min/max macros if defined:
+ //
+# ifdef min
+# undef min
+# endif
+# ifdef max
+# undef max
+# endif
+ // disable min/max macro defines on vc6:
+ //
+# define NOMINMAX
+#endif
+
+#ifndef _NATIVE_WCHAR_T_DEFINED
+# define BOOST_NO_INTRINSIC_WCHAR_T
+#endif
+
+#define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(_MSC_VER)
+
+//
+// versions check:
+// we don't support Visual C++ prior to version 6:
+#if _MSC_VER < 1200
+#error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 1300:
+#if (_MSC_VER > 1300)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# else
+# warning "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
diff -uaNr yadex-1.5.2/boost/boost/config/platform/aix.hpp yadex-1.6.0/boost/boost/config/platform/aix.hpp
--- yadex-1.5.2/boost/boost/config/platform/aix.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/platform/aix.hpp 2001-10-01 19:26:35.000000000 +0200
@@ -0,0 +1,20 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// IBM/Aix specific config options:
+
+#define BOOST_PLATFORM "IBM Aix"
+
+#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_NL_TYPES_H
+
+// Threading API's:
+#define BOOST_HAS_PTHREAD_DELAY_NP
+#define BOOST_HAS_PTHREAD_YIELD
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/platform/beos.hpp yadex-1.6.0/boost/boost/config/platform/beos.hpp
--- yadex-1.5.2/boost/boost/config/platform/beos.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/platform/beos.hpp 2001-10-01 19:26:35.000000000 +0200
@@ -0,0 +1,23 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// BeOS specific config options:
+
+#define BOOST_PLATFORM "BeOS"
+
+#define BOOST_NO_CWCHAR
+#define BOOST_NO_CWCTYPE
+#define BOOST_HAS_UNISTD_H
+
+#define BOOST_HAS_BETHREADS
+
+#ifndef BOOST_DISABLE_THREADS
+# define BOOST_HAS_THREADS
+#endif
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/platform/bsd.hpp yadex-1.6.0/boost/boost/config/platform/bsd.hpp
--- yadex-1.5.2/boost/boost/config/platform/bsd.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/platform/bsd.hpp 2001-10-01 19:26:35.000000000 +0200
@@ -0,0 +1,39 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// generic BSD config options:
+
+#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
+#error "This platform is not BSD"
+#endif
+
+#ifdef __FreeBSD__
+#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__)
+#elif defined(__NetBSD__)
+#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__)
+#elif defined(__OpenBSD__)
+#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__)
+#endif
+
+//
+// is this the correct version check?
+// FreeBSD has but does not
+// advertise the fact in :
+//
+#if defined(__FreeBSD__) && (__FreeBSD__ >= 4)
+# define BOOST_HAS_NL_TYPES_H
+#endif
+
+//
+// No wide character support in the BSD header files:
+//
+#define BOOST_NO_CWCHAR
+
+//
+// The BSD has macros only, no functions:
+//
+#define BOOST_NO_CTYPE_FUNCTIONS
diff -uaNr yadex-1.5.2/boost/boost/config/platform/cygwin.hpp yadex-1.6.0/boost/boost/config/platform/cygwin.hpp
--- yadex-1.5.2/boost/boost/config/platform/cygwin.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/platform/cygwin.hpp 2001-10-01 19:26:35.000000000 +0200
@@ -0,0 +1,30 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// cygwin specific config options:
+
+#define BOOST_PLATFORM "Cygwin"
+#define BOOST_NO_CWCTYPE
+#define BOOST_NO_CWCHAR
+#define BOOST_NO_SWPRINTF
+
+//
+// Threading API:
+// See if we have POSIX threads, if we do use them, otherwise
+// revert to native Win threads.
+#include
+#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
+# define BOOST_HAS_PTHREADS
+# define BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_GETTIMEOFDAY
+#else
+# define BOOST_HAS_WINTHREADS
+# define BOOST_HAS_FTIME
+#endif
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/platform/hpux.hpp yadex-1.6.0/boost/boost/config/platform/hpux.hpp
--- yadex-1.5.2/boost/boost/config/platform/hpux.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/platform/hpux.hpp 2001-10-01 19:26:35.000000000 +0200
@@ -0,0 +1,19 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// hpux specific config options:
+
+#define BOOST_PLATFORM "HP-UX"
+
+// In principle, HP-UX has a nice under the name
+// However, it has the following problem:
+// Use of UINT32_C(0) results in "0u l" for the preprocessed source
+// (verifyable with gcc 2.95.3, assumed for HP aCC)
+// #define BOOST_HAS_STDINT_H
+
+#define BOOST_NO_SWPRINTF
+#define BOOST_NO_CWCTYPE
diff -uaNr yadex-1.5.2/boost/boost/config/platform/irix.hpp yadex-1.6.0/boost/boost/config/platform/irix.hpp
--- yadex-1.5.2/boost/boost/config/platform/irix.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/platform/irix.hpp 2001-10-01 19:26:36.000000000 +0200
@@ -0,0 +1,13 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// SGI Irix specific config options:
+
+#define BOOST_PLATFORM "SGI Irix"
+
+#define BOOST_NO_SWPRINTF
+
diff -uaNr yadex-1.5.2/boost/boost/config/platform/linux.hpp yadex-1.6.0/boost/boost/config/platform/linux.hpp
--- yadex-1.5.2/boost/boost/config/platform/linux.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/platform/linux.hpp 2001-10-01 19:26:36.000000000 +0200
@@ -0,0 +1,64 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// linux specific config options:
+
+#define BOOST_PLATFORM "linux"
+
+// make sure we have __GLIBC_PREREQ if available at all
+#include
+
+//
+// added to glibc 2.1.1
+// We can only test for 2.1 though:
+//
+#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
+ // defines int64_t unconditionally, but defines
+ // int64_t only if __GNUC__. Thus, assume a fully usable
+ // only when using GCC.
+# if defined __GNUC__
+# define BOOST_HAS_STDINT_H
+# endif
+#endif
+
+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
+// __GLIBC_PREREQ is available since 2.1.2
+
+ // swprintf is available since glibc 2.2.0
+# if !__GLIBC_PREREQ(2,2) || (!defined(__USE_ISOC99) && !defined(__USE_UNIX98))
+# define BOOST_NO_SWPRINTF
+# endif
+#else
+# define BOOST_NO_SWPRINTF
+#endif
+
+#ifndef __GNUC__
+//
+// if the compiler is not gcc we still need to be able to parse
+// the GNU system headers, some of which (mainly )
+// use GNU specific extensions:
+//
+# ifndef __extension__
+# define __extension__
+# endif
+# ifndef __const__
+# define __const__ const
+# endif
+# ifndef __volatile__
+# define __volatile__ volatile
+# endif
+# ifndef __signed__
+# define __signed__ signed
+# endif
+# ifndef __typeof__
+# define __typeof__ typeof
+# endif
+# ifndef __inline__
+# define __inline__ inline
+# endif
+#endif
+
diff -uaNr yadex-1.5.2/boost/boost/config/platform/macos.hpp yadex-1.6.0/boost/boost/config/platform/macos.hpp
--- yadex-1.5.2/boost/boost/config/platform/macos.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/platform/macos.hpp 2001-10-01 19:26:36.000000000 +0200
@@ -0,0 +1,32 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Mac OS specific config options:
+
+#define BOOST_PLATFORM "Mac OS"
+
+// If __MACH__, we're using the BSD standard C library, not the MSL:
+#if defined(__MACH__)
+
+# define BOOST_NO_CTYPE_FUNCTIONS
+# define BOOST_NO_CWCHAR
+# ifndef BOOST_HAS_UNISTD_H
+# define BOOST_HAS_UNISTD_H
+# endif
+# ifndef BOOST_HAS_STDINT_H
+# define BOOST_HAS_STDINT_H
+# endif
+
+# ifndef __APPLE_CC__
+
+// GCC strange "ignore std" mode works better if you pretend everything
+// is in the std namespace, for the most part.
+
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+
+#endif
diff -uaNr yadex-1.5.2/boost/boost/config/platform/solaris.hpp yadex-1.6.0/boost/boost/config/platform/solaris.hpp
--- yadex-1.5.2/boost/boost/config/platform/solaris.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/platform/solaris.hpp 2001-10-01 19:26:36.000000000 +0200
@@ -0,0 +1,13 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// sun specific config options:
+
+#define BOOST_PLATFORM "sun"
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/platform/win32.hpp yadex-1.6.0/boost/boost/config/platform/win32.hpp
--- yadex-1.5.2/boost/boost/config/platform/win32.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/platform/win32.hpp 2001-10-01 19:26:36.000000000 +0200
@@ -0,0 +1,36 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Win32 specific config options:
+
+#define BOOST_PLATFORM "Win32"
+
+#if defined BOOST_DECL_EXPORTS
+# if defined BOOST_DECL_IMPORTS
+# error Not valid to define both BOOST_DECL_EXPORTS and BOOST_DECL_IMPORTS
+# endif
+# define BOOST_DECL __declspec(dllexport)
+#elif defined BOOST_DECL_IMPORTS
+# define BOOST_DECL __declspec(dllimport)
+#else
+# define BOOST_DECL
+#endif
+
+#if defined(__GNUC__) && !defined(BOOST_NO_SWPRINTF)
+# define BOOST_NO_SWPRINTF
+#endif
+
+//
+// Win32 will normally be using native Win32 threads,
+// but there is a pthread library avaliable as an option:
+//
+#ifndef BOOST_HAS_PTHREADS
+# define BOOST_HAS_WINTHREADS
+#endif
+
+// WEK: Added
+#define BOOST_HAS_FTIME
diff -uaNr yadex-1.5.2/boost/boost/config/posix_features.hpp yadex-1.6.0/boost/boost/config/posix_features.hpp
--- yadex-1.5.2/boost/boost/config/posix_features.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/posix_features.hpp 2001-10-01 19:26:32.000000000 +0200
@@ -0,0 +1,65 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// All POSIX feature tests go in this file:
+
+# ifdef BOOST_HAS_UNISTD_H
+# include
+
+ // XOpen has , but is this the correct version check?
+# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 3)
+# define BOOST_HAS_NL_TYPES_H
+# endif
+
+ // POSIX version 6 requires
+# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 200100)
+# define BOOST_HAS_STDINT_H
+# endif
+
+ // POSIX defines _POSIX_THREADS > 0 for pthread support,
+ // however some platforms define _POSIX_THREADS without
+ // a value, hence the (_POSIX_THREADS+0 >= 0) check.
+ // Strictly speaking this may catch platforms with a
+ // non-functioning stub , but such occurrences should
+ // occur very rarely if at all.
+# if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
+# define BOOST_HAS_PTHREADS
+# endif
+
+ // BOOST_HAS_NANOSLEEP:
+ // This is predicated on _POSIX_TIMERS:
+# if defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0)
+# define BOOST_HAS_NANOSLEEP
+# endif
+
+ // BOOST_HAS_SCHED_YIELD:
+ // This is predicated on _POSIX_PRIORITY_SCHEDULING or
+ // on _POSIX_THREAD_PRIORITY_SCHEDULING.
+# if defined(_POSIX_PRIORITY_SCHEDULING) && (_POSIX_PRIORITY_SCHEDULING+0 > 0)
+# define BOOST_HAS_SCHED_YIELD
+# endif
+# if defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING+0 > 0)
+# define BOOST_HAS_SCHED_YIELD
+# endif
+
+ // BOOST_HAS_GETTIMEOFDAY:
+ // BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE:
+ // These are predicated on _XOPEN_VERSION, and appears to be first released
+ // in issue 4, version 2 (_XOPEN_VERSION > 500).
+# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION+0 > 500)
+# define BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# endif
+
+ // BOOST_HAS_CLOCK_GETTIME:
+ // This is predicated on _POSIX_TIMERS.
+# if defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 > 0)
+# define BOOST_HAS_CLOCK_GETTIME
+# endif
+
+
+# endif
diff -uaNr yadex-1.5.2/boost/boost/config/select_compiler_config.hpp yadex-1.6.0/boost/boost/config/select_compiler_config.hpp
--- yadex-1.5.2/boost/boost/config/select_compiler_config.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/select_compiler_config.hpp 2001-10-01 19:26:32.000000000 +0200
@@ -0,0 +1,77 @@
+// Boost compiler configuration selection header file
+
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// locate which compiler we are using and define
+// BOOST_COMPILER_CONFIG as needed:
+
+#if defined __GNUC__
+// GNU C++:
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp"
+
+#elif defined __KCC
+// Kai C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/kai.hpp"
+
+#elif defined __sgi
+// SGI MIPSpro C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/sgi_mipspro.hpp"
+
+#elif defined __DECCXX
+// Compaq Tru64 Unix cxx
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/compaq_cxx.hpp"
+
+#elif defined __ghs
+// Greenhills C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/greenhills.hpp"
+
+#elif defined __BORLANDC__
+// Borland
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp"
+
+#elif defined(__ICL) || defined(__ICC)
+// Intel
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
+
+#elif defined __MWERKS__
+// Metrowerks CodeWarrior
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/metrowerks.hpp"
+
+#elif defined __SUNPRO_CC
+// Sun Workshop Compiler C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/sunpro_cc.hpp"
+
+#elif defined __HP_aCC
+// HP aCC
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/hp_acc.hpp"
+
+#elif defined(__MRC__) || defined(__SC__)
+// MPW MrCpp or SCpp
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp"
+
+#elif defined(__IBMCPP__)
+// IBM Visual Age
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp"
+
+# elif defined __COMO__
+// Comeau C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp"
+
+#elif defined _MSC_VER
+// Microsoft Visual C++
+//
+// Must remain the last #elif since some other vendors (Metrowerks, for
+// example) also #define _MSC_VER
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/visualc.hpp"
+
+#elif defined (BOOST_ASSERT_CONFIG)
+// this must come last - generate an error if we don't
+// recognise the compiler:
+# error "Unknown compiler - please configure and report the results to boost.org"
+
+#endif
diff -uaNr yadex-1.5.2/boost/boost/config/select_platform_config.hpp yadex-1.6.0/boost/boost/config/select_platform_config.hpp
--- yadex-1.5.2/boost/boost/config/select_platform_config.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/select_platform_config.hpp 2001-10-01 19:26:32.000000000 +0200
@@ -0,0 +1,62 @@
+// Boost compiler configuration selection header file
+
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// locate which platform we are on and define BOOST_PLATFORM_CONFIG as needed.
+// Note that we define the headers to include using "header_name" not
+// in order to prevent macro expansion within the header
+// name (for example "linux" is a macro on linux systems).
+
+#if defined(linux) || defined(__linux) || defined(__linux__)
+// linux:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp"
+
+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+// BSD:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/bsd.hpp"
+
+#elif defined(sun) || defined(__sun)
+// solaris:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/solaris.hpp"
+
+#elif defined(__sgi)
+// SGI Irix:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/irix.hpp"
+
+#elif defined(__hpux)
+// hp unix:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/hpux.hpp"
+
+#elif defined(__CYGWIN__)
+// cygwin is not win32:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/cygwin.hpp"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+// win32:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/win32.hpp"
+
+#elif defined(__BEOS__)
+// BeOS
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/beos.hpp"
+
+#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
+// MacOS
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp"
+
+#elif defined(__IBMCPP__)
+// IBM
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp"
+
+#elif defined (BOOST_ASSERT_CONFIG)
+// this must come last - generate an error if we don't
+// recognise the platform:
+# error "Unknown platform - please configure and report the results to boost.org"
+
+#endif
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/select_stdlib_config.hpp yadex-1.6.0/boost/boost/config/select_stdlib_config.hpp
--- yadex-1.5.2/boost/boost/config/select_stdlib_config.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/select_stdlib_config.hpp 2001-10-01 19:26:32.000000000 +0200
@@ -0,0 +1,61 @@
+// Boost compiler configuration selection header file
+
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed:
+
+// we need to include a std lib header here in order to detect which
+// library is in use, use as it's about the smallest
+// of the std lib headers - do not rely on this header being included -
+// users can short-circuit this header if they know whose std lib
+// they are using.
+
+#include
+
+#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+// STLPort library; this _must_ come first, otherwise since
+// STLport typically sits on top of some other library, we
+// can end up detecting that first rather than STLport:
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/stlport.hpp"
+
+#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
+// Rogue Wave library:
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp"
+
+#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
+// Dinkumware Library:
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/dinkumware.hpp"
+
+#elif defined(__GLIBCPP__)
+// GNU libstdc++ 3
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp"
+
+#elif defined(__STL_CONFIG_H)
+// generic SGI STL
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/sgi.hpp"
+
+#elif defined(__MSL_CPP__)
+// MSL standard lib:
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp"
+
+#elif defined(__IBMCPP__)
+// take the default VACPP std lib
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp"
+
+#elif defined(MSIPL_COMPILE_H)
+// Modena C++ standard library
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/modena.hpp"
+
+#elif defined (BOOST_ASSERT_CONFIG)
+// this must come last - generate an error if we don't
+// recognise the library:
+# error "Unknown standard library - please configure and report the results to boost.org"
+
+#endif
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/stdlib/dinkumware.hpp yadex-1.6.0/boost/boost/config/stdlib/dinkumware.hpp
--- yadex-1.5.2/boost/boost/config/stdlib/dinkumware.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/stdlib/dinkumware.hpp 2001-10-01 19:26:37.000000000 +0200
@@ -0,0 +1,71 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Dinkumware standard library config:
+
+#if !defined(_YVALS) && !defined(_CPPLIB_VER)
+#include
+#if !defined(_YVALS) && !defined(_CPPLIB_VER)
+#error This is not the Dinkumware lib!
+#endif
+#endif
+
+
+#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306)
+ // full dinkumware 3.06 and above
+ // fully conforming provided the compiler supports it:
+# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(_STD) // can be defined in yvals.h
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+# if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0))
+# define BOOST_NO_STD_ALLOCATOR
+# endif
+# if defined(_MSC_VER) && (_MSC_VER < 1300)
+ // if this lib version is set up for vc6 then there is no std::use_facet:
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_TWO_ARG_USE_FACET
+# endif
+// 3.06 appears to have (non-sgi versions of) & ,
+// and no at all
+#else
+# define BOOST_MSVC_STD_ITERATOR 1
+# define BOOST_NO_STD_ITERATOR
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# define BOOST_NO_STD_ALLOCATOR
+# define BOOST_NO_STDC_NAMESPACE
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+# define BOOST_HAS_MACRO_USE_FACET
+# ifndef _CPPLIB_VER
+ // Updated Dinkum library defines this, and provides
+ // its own min and max definitions.
+# define BOOST_NO_STD_MIN_MAX
+# undef min
+# undef max
+# endif
+# ifndef NOMINMAX
+ // avoid spurious NOMINMAX redefinition warning
+# define NOMINMAX
+# endif
+#endif
+
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+ // if we're using a dinkum lib that's
+ // been configured for VC6 then there is
+ // no iterator traits (true even for icl)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+#ifdef _CPPLIB_VER
+# define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER)
+#else
+# define BOOST_STDLIB "Dinkumware standard library version 1.x"
+#endif
+
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/stdlib/libstdcpp3.hpp yadex-1.6.0/boost/boost/config/stdlib/libstdcpp3.hpp
--- yadex-1.5.2/boost/boost/config/stdlib/libstdcpp3.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/stdlib/libstdcpp3.hpp 2001-10-01 19:26:37.000000000 +0200
@@ -0,0 +1,20 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// config for libstdc++ v3
+// not much to go in here:
+
+#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__)
+
+#ifndef _GLIBCPP_USE_WCHAR_T
+# define BOOST_NO_CWCHAR
+# define BOOST_NO_CWCTYPE
+# define BOOST_NO_STD_WSTRING
+#endif
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/stdlib/modena.hpp yadex-1.6.0/boost/boost/config/stdlib/modena.hpp
--- yadex-1.5.2/boost/boost/config/stdlib/modena.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/stdlib/modena.hpp 2001-10-01 19:26:37.000000000 +0200
@@ -0,0 +1,29 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Modena C++ standard library (comes with KAI C++)
+
+#if !defined(MSIPL_COMPILE_H)
+# include
+# if !defined(__MSIPL_COMPILE_H)
+# error "This is not the Modena C++ library!"
+# endif
+#endif
+
+#ifndef MSIPL_NL_TYPES
+#define BOOST_NO_STD_MESSAGES
+#endif
+
+#ifndef MSIPL_WCHART
+#define BOOST_NO_STD_WSTRING
+#endif
+
+#define BOOST_STDLIB "Modena C++ standard library"
+
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/stdlib/msl.hpp yadex-1.6.0/boost/boost/config/stdlib/msl.hpp
--- yadex-1.5.2/boost/boost/config/stdlib/msl.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/stdlib/msl.hpp 2001-10-01 19:26:37.000000000 +0200
@@ -0,0 +1,44 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Metrowerks standard library:
+
+#ifndef __MSL_CPP__
+# include
+# ifndef __MSL_CPP__
+# error This is not the MSL standard library!
+# endif
+#endif
+
+#if __MSL_CPP__ >= 0x6000 // Pro 6
+# define BOOST_HAS_HASH
+# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks
+#endif
+#define BOOST_HAS_SLIST
+
+#if __MSL_CPP__ < 0x6209
+# define BOOST_NO_STD_MESSAGES
+#endif
+
+// check C lib version for
+#include
+
+#if defined(__MSL__) && (__MSL__ >= 0x5000)
+# define BOOST_HAS_STDINT_H
+# define BOOST_HAS_UNISTD_H
+#endif
+
+
+#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)
+
+
+
+
+
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/stdlib/roguewave.hpp yadex-1.6.0/boost/boost/config/stdlib/roguewave.hpp
--- yadex-1.5.2/boost/boost/config/stdlib/roguewave.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/stdlib/roguewave.hpp 2001-10-01 19:26:37.000000000 +0200
@@ -0,0 +1,106 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Rogue Wave std lib:
+
+#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
+# include
+# if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
+# error This is not the Rogue Wave standard library
+# endif
+#endif
+//
+// figure out a consistent version number:
+//
+#ifndef _RWSTD_VER
+# define BOOST_RWSTD_VER 0x010000
+#elif _RWSTD_VER < 0x010000
+# define BOOST_RWSTD_VER (_RWSTD_VER << 8)
+#else
+# define BOOST_RWSTD_VER _RWSTD_VER
+#endif
+
+#ifndef _RWSTD_VER
+# define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
+#else
+# define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
+#endif
+
+//
+// Prior to version 2.2.0 the primary template for std::numeric_limits
+// does not have compile time constants, even though specializations of that
+// template do:
+//
+#if BOOST_RWSTD_VER < 0x020200
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+#endif
+
+//
+// No std::iterator if it can't figure out default template args:
+//
+#if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
+# define BOOST_NO_STD_ITERATOR
+#endif
+
+//
+// No iterator traits without partial specialization:
+//
+#if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+//
+// Prior to version 2.0, std::auto_ptr was buggy, and there were no
+// new-style iostreams, and no conformant std::allocator:
+//
+#if (BOOST_RWSTD_VER < 0x020000)
+# define BOOST_NO_AUTO_PTR
+# define BOOST_NO_STRINGSTREAM
+# define BOOST_NO_STD_ALLOCATOR
+# define BOOST_NO_STD_LOCALE
+#endif
+
+//
+// No template iterator constructors without member template support:
+//
+#if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES)
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+#endif
+
+//
+// RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
+// (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
+// on HP aCC systems even though the allocator is in fact broken):
+//
+#if !defined(_RWSTD_ALLOCATOR) || defined(_HPACC_) || defined(__HP_aCC)
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+//
+// If we have a std::locale, we still may not have std::use_facet:
+//
+#if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_TWO_ARG_USE_FACET
+#endif
+
+//
+// There's no std::distance prior to version 2, or without
+// partial specialization support:
+//
+#if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
+ #define BOOST_NO_STD_DISTANCE
+#endif
+
+//
+// Some versions of the rogue wave library don't have assignable
+// OutputIterators:
+//
+#if BOOST_RWSTD_VER < 0x020100
+# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+#endif
+
diff -uaNr yadex-1.5.2/boost/boost/config/stdlib/sgi.hpp yadex-1.6.0/boost/boost/config/stdlib/sgi.hpp
--- yadex-1.5.2/boost/boost/config/stdlib/sgi.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/stdlib/sgi.hpp 2001-10-01 19:26:37.000000000 +0200
@@ -0,0 +1,77 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// generic SGI STL:
+
+#if !defined(__STL_CONFIG_H)
+# include
+# if !defined(__STL_CONFIG_H)
+# error "This is not the SGI STL!"
+# endif
+#endif
+
+//
+// No std::iterator traits without partial specialisation:
+//
+#if !defined(__STL_CLASS_PARTIAL_SPECIALIZATION)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+//
+// No std::stringstream with gcc < 3
+//
+#if defined(__GNUC__) && (__GNUC__ < 3) && (__GNUC_MINOR__ < 95) && !defined(__STL_USE_NEW_IOSTREAMS) || defined(__APPLE_CC__)
+ // Note that we only set this for gnu C++ prior to 2.95 since the
+ // latest patches for that release do contain a minimal
+ // If you are running a 2.95 release prior to 2.95.3 then this will need
+ // setting, but there is no way to detect that automatically (other
+ // than by running the configure script).
+# define BOOST_NO_STRINGSTREAM
+#endif
+
+//
+// Assume no std::locale without own iostreams (this may be an
+// incorrect assumption in some cases):
+//
+#if !defined(__SGI_STL_OWN_IOSTREAMS) && !defined(__STL_USE_NEW_IOSTREAMS)
+# define BOOST_NO_STD_LOCALE
+#endif
+
+//
+// No template iterator constructors, or std::allocator
+// without member templates:
+//
+#if !defined(__STL_MEMBER_TEMPLATES)
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+//
+// We always have SGI style hash_set, hash_map, and slist:
+//
+#define BOOST_HAS_HASH
+#define BOOST_HAS_SLIST
+
+//
+// If this is GNU libstdc++2, then no and no std::wstring:
+//
+#if (defined(__GNUC__) && (__GNUC__ < 3))
+# include
+# if defined(__BASTRING__)
+# define BOOST_NO_LIMITS
+# define BOOST_NO_STD_WSTRING
+# endif
+#endif
+
+//
+// There is no standard iterator unless we have namespace support:
+//
+#if !defined(__STL_USE_NAMESPACES)
+# define BOOST_NO_STD_ITERATOR
+#endif
+
+#define BOOST_STDLIB "SGI standard library"
diff -uaNr yadex-1.5.2/boost/boost/config/stdlib/stlport.hpp yadex-1.6.0/boost/boost/config/stdlib/stlport.hpp
--- yadex-1.5.2/boost/boost/config/stdlib/stlport.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/stdlib/stlport.hpp 2001-10-01 19:26:37.000000000 +0200
@@ -0,0 +1,105 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// STLPort standard library config:
+
+#if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+# include
+# if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+# error "This is not STLPort!"
+# endif
+#endif
+
+//
+// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+// for versions prior to 4.1(beta)
+//
+#if (defined(__STL_STATIC_CONST_INIT_BUG) || defined(_STLP_STATIC_CONST_INIT_BUG)) && (__SGI_STL_PORT <= 0x400)
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+#endif
+
+//
+// If STLport thinks that there is no partial specialisation, then there is no
+// std::iterator traits:
+//
+#if !(defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || defined(__STL_CLASS_PARTIAL_SPECIALIZATION))
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+//
+// No new style iostreams on GCC without STLport's iostreams enabled:
+//
+#if (defined(__GNUC__) && (__GNUC__ < 3)) && !(defined(__SGI_STL_OWN_IOSTREAMS) || defined(_STLP_OWN_IOSTREAMS))
+# define BOOST_NO_STRINGSTREAM
+#endif
+
+//
+// No new iostreams implies no std::locale, and no std::stringstream:
+//
+#if defined(__STL_NO_IOSTREAMS) || defined(__STL_NO_NEW_IOSTREAMS) || defined(_STLP_NO_IOSTREAMS) || defined(_STLP_NO_NEW_IOSTREAMS)
+# define BOOST_NO_STD_LOCALE
+# define BOOST_NO_STRINGSTREAM
+#endif
+
+//
+// Without member template support enabled, their are no template
+// iterate constructors, and no std::allocator:
+//
+#if !(defined(__STL_MEMBER_TEMPLATES) || defined(_STLP_MEMBER_TEMPLATES))
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+#if !defined(_STLP_MEMBER_TEMPLATE_CLASSES)
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+//
+// We always have SGI style hash_set, hash_map, and slist:
+//
+#define BOOST_HAS_HASH
+#define BOOST_HAS_SLIST
+
+//
+// STLport does a good job of importing names into namespace std::,
+// but doesn't always get them all, define BOOST_NO_STDC_NAMESPACE, since our
+// workaround does not conflict with STLports:
+//
+#if defined(__STL_IMPORT_VENDOR_CSTD) || defined(__STL_USE_OWN_NAMESPACE) || defined(_STLP_IMPORT_VENDOR_CSTD) || defined(_STLP_USE_OWN_NAMESPACE)
+# define BOOST_NO_STDC_NAMESPACE
+#endif
+
+//
+// std::reverse_iterate behaves like VC6's under some circumstances:
+//
+#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) || defined (__STL_USE_OLD_HP_ITERATOR_QUERIES)\
+ || (!defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION ) && !defined ( __STL_CLASS_PARTIAL_SPECIALIZATION ))
+// disable this for now, it causes too many problems, we need a better
+// fix for broken reverse iterators:
+// # define BOOST_MSVC_STD_ITERATOR
+#endif
+
+//
+// std::use_facet may be non-standard, uses a class instead:
+//
+#if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) || defined(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS)
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_STLP_USE_FACET
+#endif
+
+//
+// If STLport thinks there are no wide functions, etc. is not working.
+//
+#if defined(_STLP_NO_NATIVE_WIDE_FUNCTIONS)
+# define BOOST_NO_CWCHAR
+# define BOOST_NO_CWTYPE
+#endif
+
+
+#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/stdlib/vacpp.hpp yadex-1.6.0/boost/boost/config/stdlib/vacpp.hpp
--- yadex-1.5.2/boost/boost/config/stdlib/vacpp.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/stdlib/vacpp.hpp 2001-10-01 19:26:37.000000000 +0200
@@ -0,0 +1,13 @@
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+#define BOOST_HAS_MACRO_USE_FACET
+#define BOOST_NO_STD_ALLOCATOR
+
+#define BOOST_STDLIB "Visual Age default standard library"
+
+
diff -uaNr yadex-1.5.2/boost/boost/config/suffix.hpp yadex-1.6.0/boost/boost/config/suffix.hpp
--- yadex-1.5.2/boost/boost/config/suffix.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/suffix.hpp 2001-10-01 19:26:32.000000000 +0200
@@ -0,0 +1,311 @@
+// Boost config.hpp configuration header file ------------------------------//
+
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Boost config.hpp policy and rationale documentation has been moved to
+// http://www.boost.org/libs/config
+//
+// This file is intended to be stable, and relatively unchanging.
+// It should contain boilerplate code only - no compiler specific
+// code unless it is unavoidable - no changes unless unavoidable.
+
+#ifndef BOOST_CONFIG_SUFFIX_HPP
+#define BOOST_CONFIG_SUFFIX_HPP
+
+# ifndef BOOST_DECL
+# define BOOST_DECL // default for compilers not needing this decoration.
+# endif
+
+//
+// Assume any extensions are in namespace std:: unless stated otherwise:
+//
+# ifndef BOOST_STD_EXTENSION_NAMESPACE
+# define BOOST_STD_EXTENSION_NAMESPACE std
+# endif
+
+//
+// If cv-qualified specializations are not allowed, then neither are cv-void ones:
+//
+# if defined(BOOST_NO_CV_SPECIALIZATIONS) \
+ && !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
+# define BOOST_NO_CV_VOID_SPECIALIZATIONS
+# endif
+
+//
+// If there is no numeric_limits template, then it can't have any compile time
+// constants either!
+//
+# if defined(BOOST_NO_LIMITS) \
+ && !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS)
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# endif
+
+//
+// if member templates are supported then so is the
+// VC6 subset of member templates:
+//
+# if !defined(BOOST_NO_MEMBER_TEMPLATES) \
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+# define BOOST_MSVC6_MEMBER_TEMPLATES
+# endif
+
+//
+// Without partial specialization, std::iterator_traits can't work:
+//
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+# endif
+
+//
+// Without member template support, we can't have template constructors
+// in the standard library either:
+//
+# if defined(BOOST_NO_MEMBER_TEMPLATES) \
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
+ && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# endif
+
+//
+// Without member template support, we can't have a conforming
+// std::allocator template either:
+//
+# if defined(BOOST_NO_MEMBER_TEMPLATES) \
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
+ && !defined(BOOST_NO_STD_ALLOCATOR)
+# define BOOST_NO_STD_ALLOCATOR
+# endif
+
+//
+// We can't have a working std::use_facet if there is no std::locale:
+//
+# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_USE_FACET)
+# define BOOST_NO_STD_USE_FACET
+# endif
+
+//
+// We can't have a std::messages facet if there is no std::locale:
+//
+# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_MESSAGES)
+# define BOOST_NO_STD_MESSAGES
+# endif
+
+//
+// We can't have a if there is no :
+//
+# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_CWCTYPE)
+# define BOOST_NO_CWCTYPE
+# endif
+
+//
+// We can't have a swprintf if there is no :
+//
+# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_SWPRINTF)
+# define BOOST_NO_SWPRINTF
+# endif
+
+//
+// If the platform claims to be Unix, then it had better behave like Unix!
+//
+# if defined(unix) \
+ || defined(__unix) \
+ || defined(_XOPEN_SOURCE) \
+ || defined(_POSIX_SOURCE)
+
+# ifndef BOOST_HAS_UNISTD_H
+# define BOOST_HAS_UNISTD_H
+# endif
+# endif
+
+//
+// If we have a then some options can be deduced from it:
+//
+# ifdef BOOST_HAS_UNISTD_H
+# include
+# endif
+
+//
+// Turn on threading support if the compiler thinks that it's in
+// multithreaded mode. We put this here because there are only a
+// limited number of macros that identify this (if there's any missing
+// from here then add to the appropriate compiler section):
+//
+#if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \
+ || defined(_PTHREADS)) && !defined(BOOST_HAS_THREADS)
+# define BOOST_HAS_THREADS
+#endif
+
+//
+// Turn threading support off if BOOST_DISABLE_THREADS is defined:
+//
+#if defined(BOOST_DISABLE_THREADS) && defined(BOOST_HAS_THREADS)
+# undef BOOST_HAS_THREADS
+#endif
+
+//
+// Turn threading support off if we don't recognise the threading API:
+//
+#if defined(BOOST_HAS_THREADS) && !defined(BOOST_HAS_PTHREADS)\
+ && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_BETHREADS)
+# undef BOOST_HAS_THREADS
+#endif
+
+//
+// If the compiler claims to be C99 conformant, then it had better
+// have a :
+//
+# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
+# define BOOST_HAS_STDINT_H
+# endif
+
+//
+// Define BOOST_NO_SLIST and BOOST_NO_HASH if required.
+// Note that this is for backwards compatibility only.
+//
+# ifndef BOOST_HAS_SLIST
+# define BOOST_NO_SLIST
+# endif
+
+# ifndef BOOST_HAS_HASH
+# define BOOST_NO_HASH
+# endif
+
+// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------//
+// Because std::size_t usage is so common, even in boost headers which do not
+// otherwise use the C library, the workaround is included here so
+// that ugly workaround code need not appear in many other boost headers.
+// NOTE WELL: This is a workaround for non-conforming compilers;
+// must still be #included in the usual places so that inclusion
+// works as expected with standard conforming compilers. The resulting
+// double inclusion of is harmless.
+
+# ifdef BOOST_NO_STDC_NAMESPACE
+# include
+ namespace std { using ::ptrdiff_t; using ::size_t; }
+# endif
+
+// BOOST_NO_STD_MIN_MAX workaround -----------------------------------------//
+
+# ifdef BOOST_NO_STD_MIN_MAX
+
+namespace std {
+ template
+ inline const _Tp& min(const _Tp& __a, const _Tp& __b) {
+ return __b < __a ? __b : __a;
+ }
+ template
+ inline const _Tp& max(const _Tp& __a, const _Tp& __b) {
+ return __a < __b ? __b : __a;
+ }
+# ifdef BOOST_MSVC
+ inline long min(long __a, long __b) {
+ return __b < __a ? __b : __a;
+ }
+ inline long max(long __a, long __b) {
+ return __a < __b ? __b : __a;
+ }
+# endif
+}
+
+# endif
+
+// BOOST_STATIC_CONSTANT workaround --------------------------------------- //
+// On compilers which don't allow in-class initialization of static integral
+// constant members, we must use enums as a workaround if we want the constants
+// to be available at compile-time. This macro gives us a convenient way to
+// declare such constants.
+
+# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment }
+# else
+# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment
+# endif
+
+// BOOST_USE_FACET workaround ----------------------------------------------//
+// When the standard library does not have a conforming std::use_facet there
+// are various workarounds available, but they differ from library to library.
+// This macro provides a consistent way to access a locale's facets.
+// Usage:
+// replace
+// std::use_facet(loc);
+// with
+// BOOST_USE_FACET(Type, loc);
+// Note do not add a std:: prefix to the front of BOOST_USE_FACET!
+
+#if defined(BOOST_NO_STD_USE_FACET)
+# ifdef BOOST_HAS_TWO_ARG_USE_FACET
+# define BOOST_USE_FACET(Type, loc) std::use_facet(loc, static_cast(0))
+# elif defined(BOOST_HAS_MACRO_USE_FACET)
+# define BOOST_USE_FACET(Type, loc) std::_USE(loc, Type)
+# elif defined(BOOST_HAS_STLP_USE_FACET)
+# define BOOST_USE_FACET(Type, loc) (*std::_Use_facet(loc))
+# endif
+#else
+# define BOOST_USE_FACET(Type, loc) std::use_facet< Type >(loc)
+#endif
+
+// BOOST_NESTED_TEMPLATE workaround ------------------------------------------//
+// Member templates are supported by some compilers even though they can't use
+// the A::template member syntax, as a workaround replace:
+//
+// typedef typename A::template rebind binder;
+//
+// with:
+//
+// typedef typename A::BOOST_NESTED_TEMPLATE rebind binder;
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+# define BOOST_NESTED_TEMPLATE template
+#else
+# define BOOST_NESTED_TEMPLATE
+#endif
+
+// ---------------------------------------------------------------------------//
+
+//
+// Helper macro BOOST_STRINGIZE:
+// Converts the parameter X to a string after macro replacement
+// on X has been performed.
+//
+#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
+#define BOOST_DO_STRINGIZE(X) #X
+
+//
+// Helper macro BOOST_JOIN:
+// The following piece of macro magic joins the two
+// arguments together, even when one of the arguments is
+// itself a macro (see 16.3.1 in C++ standard). The key
+// is that macro expansion of macro arguments does not
+// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN.
+//
+#define BOOST_JOIN( X, Y ) BOOST_DO_JOIN( X, Y )
+#define BOOST_DO_JOIN( X, Y ) BOOST_DO_JOIN2(X,Y)
+#define BOOST_DO_JOIN2( X, Y ) X##Y
+
+//
+// Set some default values for compiler/library/platform names.
+// These are for debugging config setup only:
+//
+# ifndef BOOST_COMPILER
+# define BOOST_COMPILER "Unknown ISO C++ Compiler"
+# endif
+# ifndef BOOST_STDLIB
+# define BOOST_STDLIB "Unknown ISO standard library"
+# endif
+# ifndef BOOST_PLATFORM
+# if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \
+ || defined(_POSIX_SOURCE)
+# define BOOST_PLATFORM "Generic Unix"
+# else
+# define BOOST_PLATFORM "Unknown"
+# endif
+# endif
+
+#endif
+
diff -uaNr yadex-1.5.2/boost/boost/config/user.hpp yadex-1.6.0/boost/boost/config/user.hpp
--- yadex-1.5.2/boost/boost/config/user.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config/user.hpp 2001-10-01 19:26:32.000000000 +0200
@@ -0,0 +1,58 @@
+// (C) Copyright Boost.org 2001.
+// Do not check in modified versions of this file,
+// This file may be customized by the end user, but not by boost.
+
+//
+// Use this file to define a site and compiler specific
+// configuration policy:
+//
+
+// define this to locate a compiler config file:
+// #define BOOST_COMPILER_CONFIG
+
+// define this to locate a stdlib config file:
+// #define BOOST_STDLIB_CONFIG
+
+// define this to locate a platform config file:
+// #define BOOST_PLATFORM_CONFIG
+
+// define this to disable compiler config,
+// use if your compiler config has nothing to set:
+// #define BOOST_NO_COMPILER_CONFIG
+
+// define this to disable stdlib config,
+// use if your stdlib config has nothing to set:
+// #define BOOST_NO_STDLIB_CONFIG
+
+// define this to disable platform config,
+// use if your platform config has nothing to set:
+// #define BOOST_NO_PLATFORM_CONFIG
+
+// define this to disable all config options,
+// excluding the user config. Use if your
+// setup is fully ISO compliant, and has no
+// useful extensions, or for autoconf generated
+// setups:
+// #define BOOST_NO_CONFIG
+
+// define this to make the config "optimistic"
+// about unknown compiler versions. Normally
+// unknown compiler versions are assumed to have
+// all the defects of the last known version, however
+// setting this flag, causes the config to assume
+// that unknown compiler versions are fully conformant
+// with the standard:
+// #define BOOST_STRICT_CONFIG
+
+// define this to cause the config to halt compilation
+// with an #error if it encounters anything unknown --
+// either an unknown compiler version or an unknown
+// compiler/platform/library:
+// #define BOOST_ASSERT_CONFIG
+
+
+// define if you want to disable threading support, even
+// when available:
+// #define BOOST_DISABLE_THREADS
+
+
diff -uaNr yadex-1.5.2/boost/boost/config.hpp yadex-1.6.0/boost/boost/config.hpp
--- yadex-1.5.2/boost/boost/config.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/config.hpp 2001-10-01 19:25:36.000000000 +0200
@@ -0,0 +1,69 @@
+// Boost config.hpp configuration header file ------------------------------//
+
+// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version.
+
+// Boost config.hpp policy and rationale documentation has been moved to
+// http://www.boost.org/libs/config
+//
+// CAUTION: This file is intended to be completely stable -
+// DO NOT MODIFY THIS FILE!
+//
+
+#ifndef BOOST_CONFIG_HPP
+#define BOOST_CONFIG_HPP
+
+// if we don't have a user config, then use the default location:
+#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG)
+# define BOOST_USER_CONFIG
+#endif
+// include it first:
+#ifdef BOOST_USER_CONFIG
+# include BOOST_USER_CONFIG
+#endif
+
+// if we don't have a compiler config set, try and find one:
+#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG)
+# include
+#endif
+// if we don't have a std library config set, try and find one:
+#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG)
+# include
+#endif
+// if we don't have a platform config set, try and find one:
+#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG)
+# include
+#endif
+
+
+// if we have a compiler config, include it now:
+#ifdef BOOST_COMPILER_CONFIG
+# include BOOST_COMPILER_CONFIG
+#endif
+// if we have a std library config, include it now:
+#ifdef BOOST_STDLIB_CONFIG
+# include BOOST_STDLIB_CONFIG
+#endif
+// if we have a platform config, include it now:
+#ifdef BOOST_PLATFORM_CONFIG
+# include BOOST_PLATFORM_CONFIG
+#endif
+
+// get config suffix code:
+#include
+
+#endif // BOOST_CONFIG_HPP
+
+
+
+
+
+
+
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/smart_ptr.hpp yadex-1.6.0/boost/boost/smart_ptr.hpp
--- yadex-1.5.2/boost/boost/smart_ptr.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/smart_ptr.hpp 2001-10-01 19:25:39.000000000 +0200
@@ -0,0 +1,402 @@
+// Boost smart_ptr.hpp header file -----------------------------------------//
+
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999. Permission to copy,
+// use, modify, sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided "as is"
+// without express or implied warranty, and with no claim as to its
+// suitability for any purpose.
+
+// See http://www.boost.org for most recent version including documentation.
+
+// Revision History
+// 6 Jul 01 Reorder shared_ptr code so VC++ 6 member templates work, allowing
+// polymorphic pointers to now work with that compiler (Gary Powell)
+// 21 May 01 Require complete type where incomplete type is unsafe.
+// (suggested by Vladimir Prus)
+// 21 May 01 operator= fails if operand transitively owned by *this, as in a
+// linked list (report by Ken Johnson, fix by Beman Dawes)
+// 21 Jan 01 Suppress some useless warnings with MSVC (David Abrahams)
+// 19 Oct 00 Make shared_ptr ctor from auto_ptr explicit. (Robert Vugts)
+// 24 Jul 00 Change throw() to // never throws. See lib guidelines
+// Exception-specification rationale. (Beman Dawes)
+// 22 Jun 00 Remove #if continuations to fix GCC 2.95.2 problem (Beman Dawes)
+// 1 Feb 00 Additional shared_ptr BOOST_NO_MEMBER_TEMPLATES workarounds
+// (Dave Abrahams)
+// 31 Dec 99 Condition tightened for no member template friend workaround
+// (Dave Abrahams)
+// 30 Dec 99 Moved BOOST_NMEMBER_TEMPLATES compatibility code to config.hpp
+// (Dave Abrahams)
+// 30 Nov 99 added operator ==, operator !=, and std::swap and std::less
+// specializations for shared types (Darin Adler)
+// 11 Oct 99 replaced op[](int) with op[](std::size_t) (Ed Brey, Valentin
+// Bonnard), added shared_ptr workaround for no member template
+// friends (Matthew Langston)
+// 25 Sep 99 added shared_ptr::swap and shared_array::swap (Luis Coelho).
+// 20 Jul 99 changed name to smart_ptr.hpp, #include ,
+// #include and use boost::noncopyable
+// 17 May 99 remove scoped_array and shared_array operator*() as
+// unnecessary (Beman Dawes)
+// 14 May 99 reorder code so no effects when bad_alloc thrown (Abrahams/Dawes)
+// 13 May 99 remove certain throw() specifiers to avoid generated try/catch
+// code cost (Beman Dawes)
+// 11 May 99 get() added, conversion to T* placed in macro guard (Valentin
+// Bonnard, Dave Abrahams, and others argued for elimination
+// of the automatic conversion)
+// 28 Apr 99 #include fix (Valentin Bonnard)
+// 28 Apr 99 rename transfer() to share() for clarity (Dave Abrahams)
+// 28 Apr 99 remove unsafe shared_array template conversions(Valentin Bonnard)
+// 28 Apr 99 p(r) changed to p(r.px) for clarity (Dave Abrahams)
+// 21 Apr 99 reset() self assignment fix (Valentin Bonnard)
+// 21 Apr 99 dispose() provided to improve clarity (Valentin Bonnard)
+// 27 Apr 99 leak when new throws fixes (Dave Abrahams)
+// 21 Oct 98 initial Version (Greg Colvin/Beman Dawes)
+
+#ifndef BOOST_SMART_PTR_HPP
+#define BOOST_SMART_PTR_HPP
+
+#include // for broken compiler workarounds
+#include // for std::size_t
+#include // for std::auto_ptr
+#include // for std::swap
+#include // for boost::noncopyable, checked_delete, checked_array_delete
+#include // for std::less
+#include // for BOOST_STATIC_ASSERT
+
+#ifdef BOOST_MSVC // moved here to work around VC++ compiler crash
+# pragma warning(push)
+# pragma warning(disable:4284) // return type for 'identifier::operator->' is not a UDT or reference to a UDT. Will produce errors if applied using infix notation
+#endif
+
+namespace boost {
+
+// scoped_ptr --------------------------------------------------------------//
+
+// scoped_ptr mimics a built-in pointer except that it guarantees deletion
+// of the object pointed to, either on destruction of the scoped_ptr or via
+// an explicit reset(). scoped_ptr is a simple solution for simple needs;
+// see shared_ptr (below) or std::auto_ptr if your needs are more complex.
+
+template class scoped_ptr : noncopyable {
+
+ T* ptr;
+
+ public:
+ typedef T element_type;
+
+ explicit scoped_ptr( T* p=0 ) : ptr(p) {} // never throws
+ ~scoped_ptr() { checked_delete(ptr); }
+ void reset( T* p=0 ) { if ( ptr != p ) { checked_delete(ptr); ptr = p; } }
+ T& operator*() const { return *ptr; } // never throws
+ T* operator->() const { return ptr; } // never throws
+ T* get() const { return ptr; } // never throws
+#ifdef BOOST_SMART_PTR_CONVERSION
+ // get() is safer! Define BOOST_SMART_PTR_CONVERSION at your own risk!
+ operator T*() const { return ptr; } // never throws
+#endif
+ }; // scoped_ptr
+
+// scoped_array ------------------------------------------------------------//
+
+// scoped_array extends scoped_ptr to arrays. Deletion of the array pointed to
+// is guaranteed, either on destruction of the scoped_array or via an explicit
+// reset(). See shared_array or std::vector if your needs are more complex.
+
+template class scoped_array : noncopyable {
+
+ T* ptr;
+
+ public:
+ typedef T element_type;
+
+ explicit scoped_array( T* p=0 ) : ptr(p) {} // never throws
+ ~scoped_array() { checked_array_delete(ptr); }
+
+ void reset( T* p=0 ) { if ( ptr != p )
+ {checked_array_delete(ptr); ptr=p;} }
+
+ T* get() const { return ptr; } // never throws
+#ifdef BOOST_SMART_PTR_CONVERSION
+ // get() is safer! Define BOOST_SMART_PTR_CONVERSION at your own risk!
+ operator T*() const { return ptr; } // never throws
+#else
+ T& operator[](std::size_t i) const { return ptr[i]; } // never throws
+#endif
+ }; // scoped_array
+
+// shared_ptr --------------------------------------------------------------//
+
+// An enhanced relative of scoped_ptr with reference counted copy semantics.
+// The object pointed to is deleted when the last shared_ptr pointing to it
+// is destroyed or reset.
+
+template class shared_ptr {
+ public:
+ typedef T element_type;
+
+ explicit shared_ptr(T* p =0) : px(p) {
+ try { pn = new long(1); } // fix: prevent leak if new throws
+ catch (...) { checked_delete(p); throw; }
+ }
+
+ ~shared_ptr() { dispose(); }
+
+#if !defined( BOOST_NO_MEMBER_TEMPLATES ) || defined (BOOST_MSVC6_MEMBER_TEMPLATES)
+ template
+ shared_ptr(const shared_ptr& r) : px(r.px) { // never throws
+ ++*(pn = r.pn);
+ }
+#ifndef BOOST_NO_AUTO_PTR
+ template
+ explicit shared_ptr(std::auto_ptr& r) {
+ pn = new long(1); // may throw
+ px = r.release(); // fix: moved here to stop leak if new throws
+ }
+#endif
+
+ template
+ shared_ptr& operator=(const shared_ptr& r) {
+ share(r.px,r.pn);
+ return *this;
+ }
+
+#ifndef BOOST_NO_AUTO_PTR
+ template
+ shared_ptr& operator=(std::auto_ptr& r) {
+ // code choice driven by guarantee of "no effect if new throws"
+ if (*pn == 1) { checked_delete(px); }
+ else { // allocate new reference counter
+ long * tmp = new long(1); // may throw
+ --*pn; // only decrement once danger of new throwing is past
+ pn = tmp;
+ } // allocate new reference counter
+ px = r.release(); // fix: moved here so doesn't leak if new throws
+ return *this;
+ }
+#endif
+#else
+#ifndef BOOST_NO_AUTO_PTR
+ explicit shared_ptr(std::auto_ptr& r) {
+ pn = new long(1); // may throw
+ px = r.release(); // fix: moved here to stop leak if new throws
+ }
+
+ shared_ptr& operator=(std::auto_ptr& r) {
+ // code choice driven by guarantee of "no effect if new throws"
+ if (*pn == 1) { checked_delete(px); }
+ else { // allocate new reference counter
+ long * tmp = new long(1); // may throw
+ --*pn; // only decrement once danger of new throwing is past
+ pn = tmp;
+ } // allocate new reference counter
+ px = r.release(); // fix: moved here so doesn't leak if new throws
+ return *this;
+ }
+#endif
+#endif
+
+ // The assignment operator and the copy constructor must come after
+ // the templated versions for MSVC6 to work. (Gary Powell)
+ shared_ptr(const shared_ptr& r) : px(r.px) { ++*(pn = r.pn); } // never throws
+
+ shared_ptr& operator=(const shared_ptr& r) {
+ share(r.px,r.pn);
+ return *this;
+ }
+
+ void reset(T* p=0) {
+ if ( px == p ) return; // fix: self-assignment safe
+ if (--*pn == 0) { checked_delete(px); }
+ else { // allocate new reference counter
+ try { pn = new long; } // fix: prevent leak if new throws
+ catch (...) {
+ ++*pn; // undo effect of --*pn above to meet effects guarantee
+ checked_delete(p);
+ throw;
+ } // catch
+ } // allocate new reference counter
+ *pn = 1;
+ px = p;
+ } // reset
+
+ T& operator*() const { return *px; } // never throws
+ T* operator->() const { return px; } // never throws
+ T* get() const { return px; } // never throws
+ #ifdef BOOST_SMART_PTR_CONVERSION
+ // get() is safer! Define BOOST_SMART_PTR_CONVERSION at your own risk!
+ operator T*() const { return px; } // never throws
+ #endif
+
+ long use_count() const { return *pn; } // never throws
+ bool unique() const { return *pn == 1; } // never throws
+
+ void swap(shared_ptr& other) // never throws
+ { std::swap(px,other.px); std::swap(pn,other.pn); }
+
+// Tasteless as this may seem, making all members public allows member templates
+// to work in the absence of member template friends. (Matthew Langston)
+// Don't split this line into two; that causes problems for some GCC 2.95.2 builds
+#if ( defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) ) || !defined( BOOST_NO_MEMBER_TEMPLATE_FRIENDS )
+ private:
+#endif
+
+ T* px; // contained pointer
+ long* pn; // ptr to reference counter
+
+// Don't split this line into two; that causes problems for some GCC 2.95.2 builds
+#if !defined( BOOST_NO_MEMBER_TEMPLATES ) && !defined( BOOST_NO_MEMBER_TEMPLATE_FRIENDS )
+ template friend class shared_ptr;
+#endif
+
+ void dispose() { if (--*pn == 0) { checked_delete(px); delete pn; } }
+
+ void share(T* rpx, long* rpn) {
+ if (pn != rpn) { // Q: why not px != rpx? A: fails when both == 0
+ ++*rpn; // done before dispose() in case rpn transitively
+ // dependent on *this (bug reported by Ken Johnson)
+ dispose();
+ px = rpx;
+ pn = rpn;
+ }
+ } // share
+}; // shared_ptr
+
+template
+ inline bool operator==(const shared_ptr& a, const shared_ptr& b)
+ { return a.get() == b.get(); }
+
+template
+ inline bool operator!=(const shared_ptr& a, const shared_ptr& b)
+ { return a.get() != b.get(); }
+
+// shared_array ------------------------------------------------------------//
+
+// shared_array extends shared_ptr to arrays.
+// The array pointed to is deleted when the last shared_array pointing to it
+// is destroyed or reset.
+
+template class shared_array {
+ public:
+ typedef T element_type;
+
+ explicit shared_array(T* p =0) : px(p) {
+ try { pn = new long(1); } // fix: prevent leak if new throws
+ catch (...) { checked_array_delete(p); throw; }
+ }
+
+ shared_array(const shared_array& r) : px(r.px) // never throws
+ { ++*(pn = r.pn); }
+
+ ~shared_array() { dispose(); }
+
+ shared_array& operator=(const shared_array& r) {
+ if (pn != r.pn) { // Q: why not px != r.px? A: fails when both px == 0
+ ++*r.pn; // done before dispose() in case r.pn transitively
+ // dependent on *this (bug reported by Ken Johnson)
+ dispose();
+ px = r.px;
+ pn = r.pn;
+ }
+ return *this;
+ } // operator=
+
+ void reset(T* p=0) {
+ if ( px == p ) return; // fix: self-assignment safe
+ if (--*pn == 0) { checked_array_delete(px); }
+ else { // allocate new reference counter
+ try { pn = new long; } // fix: prevent leak if new throws
+ catch (...) {
+ ++*pn; // undo effect of --*pn above to meet effects guarantee
+ checked_array_delete(p);
+ throw;
+ } // catch
+ } // allocate new reference counter
+ *pn = 1;
+ px = p;
+ } // reset
+
+ T* get() const { return px; } // never throws
+ #ifdef BOOST_SMART_PTR_CONVERSION
+ // get() is safer! Define BOOST_SMART_PTR_CONVERSION at your own risk!
+ operator T*() const { return px; } // never throws
+ #else
+ T& operator[](std::size_t i) const { return px[i]; } // never throws
+ #endif
+
+ long use_count() const { return *pn; } // never throws
+ bool unique() const { return *pn == 1; } // never throws
+
+ void swap(shared_array& other) // never throws
+ { std::swap(px,other.px); std::swap(pn,other.pn); }
+
+ private:
+
+ T* px; // contained pointer
+ long* pn; // ptr to reference counter
+
+ void dispose() { if (--*pn == 0) { checked_array_delete(px); delete pn; } }
+
+}; // shared_array
+
+template
+ inline bool operator==(const shared_array& a, const shared_array& b)
+ { return a.get() == b.get(); }
+
+template
+ inline bool operator!=(const shared_array& a, const shared_array& b)
+ { return a.get() != b.get(); }
+
+} // namespace boost
+
+// specializations for things in namespace std -----------------------------//
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace std {
+
+// Specialize std::swap to use the fast, non-throwing swap that's provided
+// as a member function instead of using the default algorithm which creates
+// a temporary and uses assignment.
+
+template
+ inline void swap(boost::shared_ptr& a, boost::shared_ptr& b)
+ { a.swap(b); }
+
+template
+ inline void swap(boost::shared_array& a, boost::shared_array& b)
+ { a.swap(b); }
+
+// Specialize std::less so we can use shared pointers and arrays as keys in
+// associative collections.
+
+// It's still a controversial question whether this is better than supplying
+// a full range of comparison operators (<, >, <=, >=).
+
+template
+ struct less< boost::shared_ptr >
+ : binary_function, boost::shared_ptr, bool>
+ {
+ bool operator()(const boost::shared_ptr& a,
+ const boost::shared_ptr& b) const
+ { return less()(a.get(),b.get()); }
+ };
+
+template
+ struct less< boost::shared_array >
+ : binary_function, boost::shared_array, bool>
+ {
+ bool operator()(const boost::shared_array& a,
+ const boost::shared_array& b) const
+ { return less()(a.get(),b.get()); }
+ };
+
+} // namespace std
+
+#endif // ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#endif // BOOST_SMART_PTR_HPP
+
+
diff -uaNr yadex-1.5.2/boost/boost/static_assert.hpp yadex-1.6.0/boost/boost/static_assert.hpp
--- yadex-1.5.2/boost/boost/static_assert.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/static_assert.hpp 2001-10-01 19:25:40.000000000 +0200
@@ -0,0 +1,86 @@
+// (C) Copyright John Maddock 2000.
+// Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+// See http://www.boost.org for most recent version including documentation.
+
+/*
+ Revision history:
+ 02 August 2000
+ Initial version.
+*/
+
+#ifndef BOOST_STATIC_ASSERT_HPP
+#define BOOST_STATIC_ASSERT_HPP
+
+#include
+
+#ifdef __BORLANDC__
+//
+// workaround for buggy integral-constant expression support:
+#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS
+#endif
+
+namespace boost{
+
+// HP aCC cannot deal with missing names for template value parameters
+template struct STATIC_ASSERTION_FAILURE;
+
+template <> struct STATIC_ASSERTION_FAILURE{};
+
+// HP aCC cannot deal with missing names for template value parameters
+template struct static_assert_test{};
+
+}
+
+//
+// Implicit instantiation requires that all member declarations be
+// instantiated, but that the definitions are *not* instantiated.
+//
+// It's not particularly clear how this applies to enum's or typedefs;
+// both are described as declarations [7.1.3] and [7.2] in the standard,
+// however some compilers use "delayed evaluation" of one or more of
+// these when implicitly instantiating templates. We use typedef declarations
+// by default, but try defining BOOST_USE_ENUM_STATIC_ASSERT if the enum
+// version gets better results from your compiler...
+//
+// Implementation:
+// Both of these versions rely on sizeof(incomplete_type) generating an error
+// message containing the name of the incomplete type. We use
+// "STATIC_ASSERTION_FAILURE" as the type name here to generate
+// an eye catching error message. The result of the sizeof expression is either
+// used as an enum initialiser, or as a template argument depending which version
+// is in use...
+// Note that the argument to the assert is explicitly cast to bool using old-
+// style casts: too many compilers currently have problems with static_cast
+// when used inside integral constant expressions.
+//
+#if !defined(BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS) && !defined(__MWERKS__)
+#ifndef BOOST_MSVC
+#define BOOST_STATIC_ASSERT( B ) \
+ typedef ::boost::static_assert_test<\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)>\
+ BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
+#else
+// __LINE__ macro broken when -ZI is used see Q199057
+// fortunately MSVC ignores duplicate typedef's.
+#define BOOST_STATIC_ASSERT( B ) \
+ typedef ::boost::static_assert_test<\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)\
+ > boost_static_assert_typedef_
+#endif
+#else
+// alternative enum based implementation:
+#define BOOST_STATIC_ASSERT( B ) \
+ enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
+ = sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) }
+#endif
+
+
+#endif // BOOST_STATIC_ASSERT_HPP
+
+
+
+
diff -uaNr yadex-1.5.2/boost/boost/utility/base_from_member.hpp yadex-1.6.0/boost/boost/utility/base_from_member.hpp
--- yadex-1.5.2/boost/boost/utility/base_from_member.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/utility/base_from_member.hpp 2001-10-01 19:26:31.000000000 +0200
@@ -0,0 +1,59 @@
+// boost utility/base_from_member.hpp header file --------------------------//
+
+// (C) Copyright Daryle Walker 2001. Permission to copy, use, modify, sell
+// and distribute this software is granted provided this copyright
+// notice appears in all copies. This software is provided "as is" without
+// express or implied warranty, and with no claim as to its suitability for
+// any purpose.
+
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_UTILITY_BASE_FROM_MEMBER_HPP
+#define BOOST_UTILITY_BASE_FROM_MEMBER_HPP
+
+#include // required for parameter defaults
+
+
+namespace boost
+{
+
+// Base-from-member class template -----------------------------------------//
+
+// Helper to initialize a base object so a derived class can use this
+// object in the initialization of another base class. Used by
+// Dietmar Kuehl from ideas by Ron Klatcho to solve the problem of a
+// base class needing to be initialized by a member.
+
+// Contributed by Daryle Walker
+
+template < typename MemberType, int UniqueID >
+class base_from_member
+{
+protected:
+ MemberType member;
+
+ explicit base_from_member()
+ : member()
+ {}
+
+ template< typename T1 >
+ explicit base_from_member( T1 x1 )
+ : member( x1 )
+ {}
+
+ template< typename T1, typename T2 >
+ base_from_member( T1 x1, T2 x2 )
+ : member( x1, x2 )
+ {}
+
+ template< typename T1, typename T2, typename T3 >
+ base_from_member( T1 x1, T2 x2, T3 x3 )
+ : member( x1, x2, x3 )
+ {}
+
+}; // boost::base_from_member
+
+} // namespace boost
+
+
+#endif // BOOST_UTILITY_BASE_FROM_MEMBER_HPP
diff -uaNr yadex-1.5.2/boost/boost/utility.hpp yadex-1.6.0/boost/boost/utility.hpp
--- yadex-1.5.2/boost/boost/utility.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/utility.hpp 2001-10-01 19:25:40.000000000 +0200
@@ -0,0 +1,86 @@
+// boost utility.hpp header file -------------------------------------------//
+
+// (C) Copyright boost.org 1999. Permission to copy, use, modify, sell
+// and distribute this software is granted provided this copyright
+// notice appears in all copies. This software is provided "as is" without
+// express or implied warranty, and with no claim as to its suitability for
+// any purpose.
+
+// See http://www.boost.org for most recent version including documentation.
+
+// Classes appear in alphabetical order
+
+#ifndef BOOST_UTILITY_HPP
+#define BOOST_UTILITY_HPP
+
+#include // broken compiler workarounds
+#include
+
+// certain headers are part of the interface
+#include
+
+#include // for size_t
+#include // for std::pair
+
+namespace boost
+{
+// checked_delete() and checked_array_delete() -----------------------------//
+
+ // verify that types are complete for increased safety
+
+ template< typename T >
+ inline void checked_delete(T * x)
+ {
+ BOOST_STATIC_ASSERT( sizeof(T) != 0 ); // assert type complete at point
+ // of instantiation
+ delete x;
+ }
+
+ template< typename T >
+ inline void checked_array_delete(T * x)
+ {
+ BOOST_STATIC_ASSERT( sizeof(T) != 0 ); // assert type complete at point
+ // of instantiation
+ delete [] x;
+ }
+
+// next() and prior() template functions -----------------------------------//
+
+ // Helper functions for classes like bidirectional iterators not supporting
+ // operator+ and operator-.
+ //
+ // Usage:
+ // const std::list::iterator p = get_some_iterator();
+ // const std::list::iterator prev = boost::prior(p);
+
+ // Contributed by Dave Abrahams
+
+ template
+ inline T next(T x) { return ++x; }
+
+ template
+ inline T prior(T x) { return --x; }
+
+
+// class noncopyable -------------------------------------------------------//
+
+ // Private copy constructor and copy assignment ensure classes derived from
+ // class noncopyable cannot be copied.
+
+ // Contributed by Dave Abrahams
+
+ class noncopyable
+ {
+ protected:
+ noncopyable(){}
+ ~noncopyable(){}
+ private: // emphasize the following members are private
+ noncopyable( const noncopyable& );
+ const noncopyable& operator=( const noncopyable& );
+ }; // noncopyable
+
+
+} // namespace boost
+
+#endif // BOOST_UTILITY_HPP
+
diff -uaNr yadex-1.5.2/boost/boost/utility_fwd.hpp yadex-1.6.0/boost/boost/utility_fwd.hpp
--- yadex-1.5.2/boost/boost/utility_fwd.hpp 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/boost/boost/utility_fwd.hpp 2001-10-01 19:25:41.000000000 +0200
@@ -0,0 +1,38 @@
+// Boost utility_fwd.hpp header file ---------------------------------------//
+
+// (C) Copyright boost.org 2001. Permission to copy, use, modify, sell
+// and distribute this software is granted provided this copyright
+// notice appears in all copies. This software is provided "as is" without
+// express or implied warranty, and with no claim as to its suitability for
+// any purpose.
+
+// See http://www.boost.org for most recent version including documentation.
+
+#ifndef BOOST_UTILITY_FWD_HPP
+#define BOOST_UTILITY_FWD_HPP
+
+
+namespace boost
+{
+
+
+// From -------------------------------//
+
+template < typename MemberType, int UniqueID = 0 >
+ class base_from_member;
+
+
+// From ------------------------------------------------//
+
+class noncopyable;
+
+template < class A, class B >
+ class tied;
+
+// Also has a few function templates
+
+
+} // namespace boost
+
+
+#endif // BOOST_UTILITY_FWD_HPP
diff -uaNr yadex-1.5.2/bsp-2.3/bsp.c yadex-1.6.0/bsp-2.3/bsp.c
--- yadex-1.5.2/bsp-2.3/bsp.c 2001-06-30 23:34:36.000000000 +0200
+++ yadex-1.6.0/bsp-2.3/bsp.c 1970-01-01 01:00:00.000000000 +0100
@@ -1,923 +0,0 @@
-/*- BSP.C -------------------------------------------------------------------*
-
- Node builder for DOOM levels (c) 1998 Colin Reed, version 2.3 (dos extended)
-
- Performance increased 200% over 1.2x
-
- Many thanks to Mark Harrison for finding a bug in 1.1 which caused some
- texture align problems when a flipped SEG was split.
-
- Credit to:-
-
- Raphael Quinet (A very small amount of code has been borrowed from DEU).
-
- Matt Fell for the doom specs.
-
- Lee Killough for performance tuning, support for multilevel wads, special
- effects, and wads with lumps besides levels.
-
- Also, the original idea for some of the techniques where also taken from the
- comment at the bottom of OBJECTS.C in DEU, and the doc by Matt Fell about
- the nodes.
-
- Use this code for your own editors, but please credit me.
-
-*---------------------------------------------------------------------------*/
-
-#include "bsp.h"
-#include "structs.h"
-
-/*- Global Vars ------------------------------------------------------------*/
-
-static FILE *outfile;
-static char *testwad;
-static char *outwad;
-
-static struct directory *direc = NULL;
-
-static struct Thing *things;
-static long num_things = 0;
-
-static struct Vertex *vertices;
-static long num_verts = 0;
-
-static struct LineDef *linedefs;
-static long num_lines = 0;
-
-static struct SideDef *sidedefs;
-static long num_sides = 0;
-
-static struct Sector *sectors;
-static long num_sects = 0;
-
-static struct SSector *ssectors;
-static long num_ssectors = 0;
-
-static struct Pseg *psegs = NULL;
-static long num_psegs = 0;
-
-static struct Pnode *pnodes = NULL;
-static long num_pnodes = 0;
-static long pnode_indx = 0;
-static long num_nodes = 0;
-
-static struct Block blockhead;
-static short int *blockptrs;
-static short int *blocklists=NULL;
-static long blockptrs_size;
-
-unsigned char *SectorHits;
-
-static short lminx;
-static short lmaxx;
-static short lminy;
-static short lmaxy;
-
-static short mapminx;
-static short mapmaxx;
-static short mapminy;
-static short mapmaxy;
-
-static int show_progress = 1;
-static unsigned char pcnt;
-
-static struct Seg *PickNode_traditional(struct Seg *);
-static struct Seg *PickNode_visplane(struct Seg *);
-static struct Seg *(*PickNode)(struct Seg *)=PickNode_traditional;
-static int visplane,visplane_warning,mark_visplanes,threshold=128;
-static int noreject;
-
-static struct lumplist {
- struct lumplist *next;
- struct directory *dir;
- void *data;
- char islevel;
-} *lumplist,*current_level;
-
-static char current_level_name[9];
-
-static struct wad_header wad;
-
-/*- Prototypes -------------------------------------------------------------*/
-
-static void OpenWadFile(char *);
-static struct lumplist *FindDir(const char *);
-static void GetThings(void);
-static void GetVertexes(void);
-static void GetLinedefs(void);
-static void GetSidedefs(void);
-static void GetSectors(void);
-static void FindLimits(struct Seg *);
-
-static struct Seg *CreateSegs();
-
-static struct Node *CreateNode(struct Seg *);
-static int IsItConvex(const struct Seg *);
-static void DelSegs(struct Seg *);
-
-static void ReverseNodes(struct Node *);
-static long CreateBlockmap(void);
-
-static void progress(void);
-static int IsLineDefInside(int, int, int, int, int);
-static int CreateSSector(struct Seg *);
-
-/*--------------------------------------------------------------------------*/
-
-static void progress()
-{
- if(show_progress)
- if(!((++pcnt)&31))
- fprintf(stderr,"%c\b","/-\\|"[((pcnt)>>5)&3]);
-}
-
-/*--------------------------------------------------------------------------*/
-/* Find limits from a list of segs, does this by stepping through the segs*/
-/* and comparing the vertices at both ends.*/
-/*--------------------------------------------------------------------------*/
-
-static void FindLimits(struct Seg *ts)
-{
- int minx=INT_MAX,miny=INT_MAX,maxx=INT_MIN,maxy=INT_MIN;
- int fv,tv;
-
- for(;;) {
- fv = ts->start;
- tv = ts->end;
-/* printf("%d : %d,%d\n",n,vertices[n].x,vertices[n].y);*/
- if(vertices[fv].x < minx) minx = vertices[fv].x;
- if(vertices[fv].x > maxx) maxx = vertices[fv].x;
- if(vertices[fv].y < miny) miny = vertices[fv].y;
- if(vertices[fv].y > maxy) maxy = vertices[fv].y;
- if(vertices[tv].x < minx) minx = vertices[tv].x;
- if(vertices[tv].x > maxx) maxx = vertices[tv].x;
- if(vertices[tv].y < miny) miny = vertices[tv].y;
- if(vertices[tv].y > maxy) maxy = vertices[tv].y;
- if(ts->next == NULL) break;
- ts = ts->next;
- }
- lminx = minx;
- lmaxx = maxx;
- lminy = miny;
- lmaxy = maxy;
-}
-
-
-/*--------------------------------------------------------------------------*/
-#include "funcs.c"
-#include "picknode.c"
-#include "makenode.c"
-
-
-static struct Seg *add_seg(struct Seg *cs, int n, int fv, int tv,
- struct Seg **fs, struct SideDef *sd)
-{
- struct Seg *ts = GetMemory( sizeof( struct Seg)); /* get mem for Seg*/
- cs = cs ? (cs->next = ts) : (*fs = ts);
- cs->next = NULL;
- cs->start = fv;
- cs->end = tv;
- cs->pdx = (long) (cs->pex = vertices[tv].x)
- - (cs->psx = vertices[fv].x);
- cs->pdy = (long) (cs->pey = vertices[tv].y)
- - (cs->psy = vertices[fv].y);
- cs->ptmp = cs->pdx*cs->psy-cs->psx*cs->pdy;
- cs->len = (long) sqrt( (double) cs->pdx * cs->pdx +
- (double) cs->pdy * cs->pdy);
-
- if ((cs->sector=sd->sector)==-1)
- printf("\nWarning: Bad sidedef in linedef %d (Z_CheckHeap error)\n",n);
-
- cs->angle = ComputeAngle(cs->pdx,cs->pdy);
-
- if (linedefs[n].tag==999)
- cs->angle=(cs->angle + (unsigned)(sd->xoff*(65536.0/360.0))) & 65535u;
-
- cs->linedef = n;
- cs->dist = 0;
- return cs;
-}
-
-/*- initially creates all segs, one for each line def ----------------------*/
-
-static struct Seg *CreateSegs()
-{
- struct Seg *cs = NULL; /* current Seg */
- struct Seg *fs = NULL; /* first Seg in list */
- struct LineDef *l = linedefs;
- int n;
-
- puts("Creating Segs ..........");
-
- for (n=0;nsidedef1 != -1)
- (cs=add_seg(cs,n,l->start,l->end,&fs,sidedefs+l->sidedef1))->flip=0;
- else
- printf("\nWarning: Linedef %d has no right sidedef\n",n);
-
- if (l->sidedef2 != -1)
- (cs=add_seg(cs,n,l->end,l->start,&fs,sidedefs+l->sidedef2))->flip=1;
- else
- if (l->flags & 4)
- printf("\nWarning: Linedef %d is 2s but has no left sidedef\n",n);
- }
- return fs;
-}
-
-/*- get the directory from a wad file --------------------------------------*/
-/* rewritten by Lee Killough to support multiple levels and extra lumps */
-
-static void OpenWadFile(char *filename)
-{
- long i;
- register struct directory *dir;
- struct lumplist *levelp=NULL;
- FILE *infile;
-
- if (!(infile = fopen(filename,"rb")))
- ProgError("Error: Cannot open WAD file %s", filename);
-
- if (fread(&wad,1,sizeof(wad),infile)!=sizeof(wad) ||
- (wad.type[0]!='I' && wad.type[0]!='P') || wad.type[1]!='W'
- || wad.type[2]!='A' || wad.type[3]!='D')
- ProgError("%s does not appear to be a wad file -- bad magic", filename);
-
- printf("Opened %cWAD file : %s. %lu dir entries at 0x%lX.\n",
- wad.type[0],filename,wad.num_entries,wad.dir_start);
-
- direc = GetMemory(sizeof(struct directory) * wad.num_entries);
-
- fseek(infile,wad.dir_start,0);
- fread(direc,sizeof(struct directory),wad.num_entries,infile);
-
- current_level=NULL;
- dir = direc;
- for (i=wad.num_entries;i--;dir++)
- {
- register struct lumplist *l=GetMemory(sizeof(*l));
- l->dir=dir;
- l->data=NULL;
- l->next=NULL;
- l->islevel=0;
-
- if ((dir->name[0]=='E' && dir->name[2]=='M' &&
- dir->name[1]>='1' && dir->name[1]<='9' &&
- dir->name[3]>='1' && dir->name[3]<='9' &&
- (!dir->name[4] || (dir->name[4]>='0' &&
- dir->name[4]<='9' &&
- !dir->name[5]) )) || (
- dir->name[0]=='M' && dir->name[1]=='A' &&
- dir->name[2]=='P' && !dir->name[5] &&
- dir->name[3]>='0' && dir->name[3]<='9' &&
- dir->name[4]>='0' && dir->name[4]<='9'))
- {
- dir->length=0;
- l->islevel=1; /* Begin new level */
- }
- else
- {
- if (levelp && (!strncmp(dir->name,"SEGS",8) ||
- !strncmp(dir->name,"SSECTORS",8) ||
- !strncmp(dir->name,"NODES",8) ||
- !strncmp(dir->name,"BLOCKMAP",8) ||
- (!noreject && !strncmp(dir->name,"REJECT",8)) ||
- FindDir(dir->name)))
- continue; /* Ignore these since we're rebuilding them anyway */
-
- if (levelp && FindDir(dir->name))
- {
- printf("Warning: Duplicate entry \"%-8.8s\" ignored in %-.8s\n",
- dir->name, current_level->dir->name);
- continue;
- }
-
- if (dir->length)
- {
- l->data=GetMemory(dir->length);
- if (fseek(infile,dir->start,0) ||
- fread(l->data,1,dir->length,infile) != dir->length)
- printf("Warning: Trouble reading wad directory entry \"%-8.8s\" in %-.8s\n",
- dir->name, current_level->dir->name);
- }
-
- if (levelp && (!strncmp(dir->name,"THINGS",8) ||
- !strncmp(dir->name,"LINEDEFS",8) ||
- !strncmp(dir->name,"SIDEDEFS",8) ||
- !strncmp(dir->name,"VERTEXES",8) ||
- !strncmp(dir->name,"SECTORS",8) ||
- (noreject && !strncmp(dir->name,"REJECT",8))))
- { /* Store in current level */
- levelp->next=l;
- levelp=l;
- continue;
- }
- }
-
- /* Mark end of level and advance one main lump entry */
-
- if (levelp && !(current_level->data=current_level->next))
- current_level->islevel=0; /* Ignore oddly formed levels */
-
- levelp = l->islevel ? l : NULL;
-
- if (current_level)
- current_level->next=l;
- else
- lumplist=l;
- current_level=l;
- }
-
- if (levelp)
- {
- if (!(current_level->data=current_level->next))
- current_level->islevel=0; /* Ignore oddly formed levels */
- current_level->next=NULL;
- }
- fclose(infile);
-}
-
-/*- find the pointer to a resource -----------------------*/
-
-static struct lumplist *FindDir(const char *name)
-{
- struct lumplist *l = current_level;
- while (l && strncmp(l->dir->name,name,8))
- l=l->next;
- return l;
-}
-
-/*- read the things from the wad file and place in 'things' ----------------*/
-static void GetThings(void)
-{
- struct lumplist *l;
-
- l = FindDir("THINGS");
-
- if (!l || !(num_things = l->dir->length / sizeof( struct Thing)))
- ProgError("Must have at least 1 Thing");
-
- things = l->data;
-}
-
-/*- read the vertices from the wad file and place in 'vertices' ------------
- Rewritten by Lee Killough, to speed up performance */
-
-static struct lumplist *vertlmp;
-
-static void GetVertexes(void)
-{
- long n,used_verts,i;
- int *translate;
- struct lumplist *l = FindDir("VERTEXES");
-
- if(!l || !(num_verts = l->dir->length / sizeof(struct Vertex)))
- ProgError("Couldn't find any Vertices");
-
- vertlmp = l;
-
- vertices = l->data;
-
- translate = GetMemory(num_verts*sizeof(*translate));
-
- for (n=0;n=num_verts || e<0 || e>=num_verts)
- ProgError("Linedef %ld has vertex out of range\n",i);
- if (vertices[s].x!=vertices[e].x || vertices[s].y!=vertices[e].y)
- {
- linedefs[n++]=linedefs[i];
- translate[s]=translate[e]=0;
- }
- }
- i-=num_lines=n;
- used_verts=0;
- for (n=0;n= used_verts || e < 0 || e >= used_verts)
- ProgError("Trouble in GetVertexes: Renumbering\n");
- linedefs[n].start=s;
- linedefs[n].end=e;
- }
-
- free(translate);
-
- printf("Loaded %ld vertices",num_verts);
- if (num_verts>used_verts)
- printf(", but %ld were unused\n(this is normal if the nodes were built before).\n",
- num_verts-used_verts);
- else
- puts(".");
- printf(i ? "%ld zero-length lines were removed.\n" : "\n",i);
- num_verts = used_verts;
- if (!num_verts)
- ProgError("Couldn't find any used Vertices");
-}
-
-/*- read the linedefs from the wad file and place in 'linedefs' ------------*/
-
-static void GetLinedefs(void)
-{
- struct lumplist *l = FindDir("LINEDEFS");
-
- if (!l || !(num_lines = l->dir->length / sizeof(struct LineDef)))
- ProgError("Couldn't find any Linedefs");
-
- linedefs = l->data;
-}
-
-/*- read the sidedefs from the wad file and place in 'sidedefs' ------------*/
-
-static void GetSidedefs(void)
-{
- struct lumplist *l = FindDir("SIDEDEFS");
-
- if (!l || !(num_sides = l->dir->length / sizeof(struct SideDef)))
- ProgError("Couldn't find any Sidedefs");
-
- sidedefs = l->data;
-}
-
-/*- read the sectors from the wad file and place count in 'num_sectors' ----*/
-
-static void GetSectors(void)
-{
- struct lumplist *l = FindDir("SECTORS");
-
- if (!l || !(num_sects = l->dir->length / sizeof(struct Sector)))
- ProgError("Couldn't find any Sectors");
-
- sectors = l->data;
-}
-
-/*--------------------------------------------------------------------------*/
-
-static int IsLineDefInside(int ldnum, int xmin, int ymin, int xmax, int ymax )
-{
- int x1 = vertices[ linedefs[ ldnum].start].x;
- int y1 = vertices[ linedefs[ ldnum].start].y;
- int x2 = vertices[ linedefs[ ldnum].end].x;
- int y2 = vertices[ linedefs[ ldnum].end].y;
- int count=2;
-
- for (;;)
- if (y1>ymax)
- {
- if (y2>ymax)
- return(FALSE);
- x1=x1+(x2-x1)*(double)(ymax-y1)/(y2-y1);
- y1=ymax;
- count=2;
- }
- else
- if (y1xmax)
- {
- if (x2>xmax)
- return(FALSE);
- y1=y1+(y2-y1)*(double)(xmax-x1)/(x2-x1);
- x1=xmax;
- count=2;
- }
- else
- if (x1chright = tn->nextr ? ReverseNodes(tn->nextr), tn->nextr->node_num :
- tn->chright | 0x8000;
-
- tn->chleft = tn->nextl ? ReverseNodes(tn->nextl), tn->nextl->node_num :
- tn->chleft | 0x8000;
-
- pn = pnodes + pnode_indx++;
-
- pn->x = tn->x;
- pn->y = tn->y;
- pn->dx = tn->dx;
- pn->dy = tn->dy;
- pn->maxy1 = tn->maxy1;
- pn->miny1 = tn->miny1;
- pn->minx1 = tn->minx1;
- pn->maxx1 = tn->maxx1;
- pn->maxy2 = tn->maxy2;
- pn->miny2 = tn->miny2;
- pn->minx2 = tn->minx2;
- pn->maxx2 = tn->maxx2;
- pn->chright = tn->chright;
- pn->chleft = tn->chleft;
- tn->node_num = num_pnodes++;
-}
-
-/* Add a lump to current level
- by Lee Killough */
-
-static void add_lump(const char *name, void *data, size_t length)
-{
- struct lumplist *l;
- for (l=current_level;l;l=l->next)
- if (!strncmp(name,l->dir->name,8))
- break;
- if (!l)
- {
- l=current_level;
- while (l->next)
- l=l->next;
- l->next = GetMemory(sizeof(*l));
- l = l->next;
- l->next=NULL;
- l->dir = GetMemory(sizeof(struct directory));
- strncpy(l->dir->name,name,8);
- }
- l->dir->length=length;
- l->islevel=0;
- l->data=data;
-}
-
-static struct directory write_lump(struct lumplist *lump)
-{
- if (ftell(outfile)!=lump->dir->start || (lump->dir->length &&
- fwrite(lump->data, 1, lump->dir->length, outfile) != lump->dir->length))
- printf("Warning: Consistency check failure writing %-.8s\n", lump->dir->name);
- return *lump->dir;
-}
-
-static void sortlump(struct lumplist **link)
-{
- static const char *const lumps[10]={"THINGS", "LINEDEFS", "SIDEDEFS",
- "VERTEXES", "SEGS", "SSECTORS", "NODES", "SECTORS", "REJECT", "BLOCKMAP"};
- int i=sizeof(lumps)/sizeof(*lumps)-1;
- struct lumplist **l;
- do
- for (l=link;*l;l=&(*l)->next)
- if (!strncmp(lumps[i],(*l)->dir->name,8))
- {
- struct lumplist *t=(*l)->next;
- (*l)->next=*link;
- *link=*l;
- *l=t;
- break;
- }
- while (--i>=0);
-}
-
-
-void usage(void)
-{
- fprintf(stdout,
- "\nThis Node builder was created from the basic theory stated in DEU5 (OBJECTS.C)\n"
- "Credits should go to :-\n"
- "Matt Fell (msfell@aol.com) for the Doom Specs.\n"
- "Raphael Quinet (Raphael.Quinet@eed.ericsson.se) for DEU and the original idea.\n"
- "Mark Harrison (harrison@lclark.edu) for finding a bug in 1.1x\n"
- "Jim Flynn (jflynn@pacbell.net) for many good ideas and encouragement.\n"
- "Jan Van der Veken for finding invisible barrier bug.\n"
- "Colin Phipps for two bug fixes (http://lxdoom.linuxgames.com/notes.html#bsp).\n"
-#ifdef MSDOS
- "\nUsage: BSP [options] input.wad [[-o] ]\n"
-#else
- "\nUsage: BSP [options] input.wad [-o ]\n"
-#endif
- " (If no output.wad is specified, \"tmp.wad\" is written)\n\n"
- "Options:\n\n"
- " -factor Changes the cost assigned to SEG splits\n"
- " -vp Attempts to prevent visplane overflows\n"
- " -vpwarn Warns about potential visplane overflows\n"
- " -vpmark Marks visplane overflows with player starts\n"
- " -thold Threshold for visplane overflow (default 128)\n"
- " -noreject Does not clobber reject map\n"
- );
- exit(1);
-}
-
-static void parse_options(int argc, char *argv[])
-{
- static char *fnames[2];
- static const struct {
- const char *option;
- void *var;
- enum {NONE, STRING, INT} arg;
- } tab[]= { {"-vp", &visplane, NONE},
- {"-vpwarn", &visplane_warning, NONE},
- {"-warnvp", &visplane_warning, NONE},
- {"-noreject", &noreject, NONE},
- {"-vpmark", &mark_visplanes, NONE},
- {"-markvp", &mark_visplanes, NONE},
- {"-factor", &factor, INT},
- {"-thold", &threshold, INT},
- {"-o", fnames+1, STRING},
- };
- int nf=0;
-
- while (--argc)
- if (**++argv=='-')
- {
- int i=sizeof(tab)/sizeof(*tab);
- for (;;)
- if (!strcmp(*argv,tab[--i].option))
- {
- if (tab[i].arg==INT)
- if (--argc)
- {
- char *end;
- *(int *) tab[i].var=strtol(*++argv,&end,0);
- if (*end || factor<0)
- usage();
- }
- else
- usage();
- else
- if (tab[i].arg==STRING)
- if (--argc)
- *(char **) tab[i].var = *++argv;
- else
- usage();
- else
- ++*(int *) tab[i].var;
- break;
- }
- else
- if (!i)
- {
- usage();
- break;
- }
- }
- else
-#ifdef MSDOS
- if (nf<2)
-#else
- if (nf<1)
-#endif
- fnames[nf++]=*argv;
- else
- usage();
-
- testwad = fnames[0]; /* Get input name*/
-
- if (!testwad || factor<0 || threshold<0)
- usage();
-
- outwad = fnames[1] ? fnames[1] : "tmp.wad"; /* Get output name*/
-}
-
-/*- Main Program -----------------------------------------------------------*/
-
-int main(int argc,char *argv[])
-{
- struct lumplist *lump,*l;
- struct directory *newdirec;
-
- setbuf(stdout,NULL);
-#ifndef MSDOS /* Unix: no whirling baton if stderr is redirected */
- if(!isatty(2))
- show_progress=0;
-#endif
-
- puts("* Doom BSP node builder ver 2.3 (c) 1998 Colin Reed, Lee Killough *");
- printf("* This is the modified version that comes with Yadex %s. *\n",
- YADEX_VERSION);
-
- parse_options(argc,argv);
-
- OpenWadFile(testwad); /* Opens and reads directory*/
-
- printf("\nCreating nodes using tunable factor of %d\n",factor);
-
- if (visplane)
- {
- puts("\nTaking special measures to reduce the chances of visplane overflow");
- PickNode=PickNode_visplane;
- }
-
- for (lump=lumplist; lump; lump=lump->next)
- if (lump->islevel)
- {
- struct Seg *tsegs;
- static struct Node *nodelist;
-
- current_level=lump->data;
- strncpy(current_level_name,lump->dir->name,8);
- printf("\nBuilding nodes on %-.8s\n\n",current_level_name);
-
- blockptrs=NULL;
- blocklists=NULL;
- blockptrs_size=0;
- num_ssectors=0;
- num_psegs=0;
- num_nodes=0;
-
- GetThings();
- GetLinedefs(); /* Get linedefs and vertices*/
- GetVertexes(); /* and delete redundant.*/
- GetSidedefs();
- GetSectors();
-
- tsegs = CreateSegs(); /* Initially create segs*/
-
- FindLimits(tsegs); /* Find limits of vertices*/
-
- mapminx = lminx; /* store as map limits*/
- mapmaxx = lmaxx;
- mapminy = lminy;
- mapmaxy = lmaxy;
-
- printf("Map goes from (%d,%d) to (%d,%d)\n",lminx,lminy,lmaxx,lmaxy);
-
- SectorHits = GetMemory(num_sects);
-
- nodelist = CreateNode(tsegs); /* recursively create nodes*/
-
- fputs(" \n",stderr);
-
- printf("%lu NODES created, with %lu SSECTORS.\n",num_nodes,num_ssectors);
-
- printf("Found %lu used vertices\n",num_verts);
-
- printf("Heights of left and right subtrees = (%u,%u)\n",
- height(nodelist->nextl), height(nodelist->nextr));
-
- vertlmp->dir->length=num_verts * sizeof(struct Vertex);
- vertlmp->data=vertices;
-
- add_lump("SEGS", psegs, sizeof(struct Pseg)*num_psegs);
-
- add_lump("SSECTORS", ssectors, sizeof(struct SSector)*num_ssectors);
-
- if (!FindDir("REJECT"))
- {
- long reject_size = (num_sects*num_sects+7)/8;
- void *data = GetMemory(reject_size);
- memset(data,0,reject_size);
- add_lump("REJECT", data, reject_size);
- }
-
- {
- long blockmap_size = CreateBlockmap();
- char *data = GetMemory(blockmap_size+blockptrs_size+8);
- memcpy(data,&blockhead,8);
- memcpy(data+8,blockptrs,blockptrs_size);
- memcpy(data+8+blockptrs_size,blocklists,blockmap_size);
- free(blockptrs);
- free(blocklists);
- add_lump("BLOCKMAP",data,blockmap_size+blockptrs_size+8);
- puts("Completed blockmap building");
- }
-
- if (visplane_warning || mark_visplanes)
- warn_visplanes(nodelist);
-
- if (mark_visplanes)
- add_lump("THINGS", things, sizeof(struct Thing)*num_things);
-
- pnodes = GetMemory(sizeof(struct Pnode)*num_nodes);
- num_pnodes = 0;
- pnode_indx = 0;
- ReverseNodes(nodelist);
- add_lump("NODES", pnodes, sizeof(struct Pnode)*num_pnodes);
-
- free(SectorHits);
-
- } /* if (lump->islevel) */
-
-
- {
- long offs=12;
- wad.num_entries=0;
- for (lump=lumplist; lump; lump=lump->next)
- {
- lump->dir->start=offs;
- offs+=lump->dir->length;
- wad.num_entries++;
- if (lump->islevel)
- {
- sortlump((struct lumplist **) &lump->data);
- for (l=lump->data; l; l=l->next)
- {
- l->dir->start=offs;
- offs+=l->dir->length;
- wad.num_entries++;
- }
- }
- }
-
- newdirec = GetMemory(wad.num_entries*sizeof(struct directory));
-
- if (!(outfile=fopen(outwad,"wb")))
- {
- fputs("Error: Could not open output PWAD file ",stderr);
- perror(outwad);
- exit(1);
- }
-
- wad.dir_start=offs;
- if (fwrite(&wad,1,12,outfile)!=12)
- puts("Warning: Consistency check failure writing wad header");
-
- for (offs=0,lump=lumplist; lump; lump=lump->next)
- {
- newdirec[offs++]=write_lump(lump);
- if (lump->islevel)
- for (l=lump->data; l; l=l->next)
- newdirec[offs++]=write_lump(l);
- }
-
- if (ftell(outfile)!=wad.dir_start ||
- fwrite(newdirec,sizeof(struct directory),wad.num_entries,outfile)!=wad.num_entries)
- puts("Warning: Consistency check failure writing lump directory");
- fclose(outfile);
-
- if (offs!=wad.num_entries)
- puts("Warning: Lump directory count consistency check failure");
- printf("\nSaved WAD as %s\n",outwad);
- }
- return 0;
-}
-
-/*- end of file ------------------------------------------------------------*/
diff -uaNr yadex-1.5.2/bsp-2.3/bsp.h yadex-1.6.0/bsp-2.3/bsp.h
--- yadex-1.5.2/bsp-2.3/bsp.h 1999-08-10 18:49:21.000000000 +0200
+++ yadex-1.6.0/bsp-2.3/bsp.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,41 +0,0 @@
-/*- BSP.H ------------------------------------------------------------------*/
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#if defined(MSDOS) || defined(__MSDOS__)
-#include
-#endif
-#ifdef __TURBOC__
-#include
-#endif
-#ifndef MSDOS
-#include /* Unix: isatty() */
-#endif
-
-/*- boolean constants ------------------------------------------------------*/
-
-#define TRUE 1
-#define FALSE 0
-
-/*- The function prototypes ------------------------------------------------*/
-
-static void ProgError( char *, ...);
-static void *GetMemory(size_t);
-static void *ResizeMemory(void *, size_t);
-static unsigned ComputeAngle(long,long);
-
-#undef max
-#define max(a,b) (((a)>(b))?(a):(b))
-
-/*- print a resource name by printing first 8 characters --*/
-
-#define Printname(dir) printf("%-8.8s",(dir)->name)
-
-/*------------------------------- end of file ------------------------------*/
diff -uaNr yadex-1.5.2/bsp-2.3/bsp23x.txt yadex-1.6.0/bsp-2.3/bsp23x.txt
--- yadex-1.5.2/bsp-2.3/bsp23x.txt 1998-12-19 13:18:16.000000000 +0100
+++ yadex-1.6.0/bsp-2.3/bsp23x.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,190 +0,0 @@
-This is BSP version 2.3 dos extended, written by Colin Reed, Lee Killough
-
-Please send all comments and/or questions about BSP to Lee Killough
-(killough@rsn.hp.com).
-
------------------------------------------------------------
-Changes in 2.3x:
-
-Lee Killough 2/98:
-
-Fixed a minor bug which caused textures to bleed sometimes.
-Thanks to Jonathan Campbell (joncamp@tiac.net) for finding it.
-
-Switched from djgpp v1.12 to v2.01.
-
-Linux builds now supported (thanks to Andre Majorel for the port).
-
-Possible future enhancement:
-
->64K blockmap support (requires changes in Doom source code as well).
-
------------------------------------------------------------
-Changes in 2.2x:
-
-Lee Killough 10/97:
-
-Added -vp option to reduce the chances of visplane overflows, without loss
-of detail. Using -vp causes node line picker to choose node lines in a way
-that is empirically known to reduce or eliminate visplane overflows (see
-visplane.txt). No guarantees, though!!!
-
-Added -vpwarn option to warn about possible visplane overflows (see
-visplane.txt).
-
--vpmark option also added, which leaves permanent marks in the form of player
-1 starts. It's a good idea to write to a separate output file when using this
-option!!! You can then use an editor, play each alternate player start, and
-see if each one causes visplane overflows, and then remove it. Usually no-
-clipping must be used, at least to step out from the wall, since it inserts
-player starts without regard to collisions, and it uses walls as a basis for
-visplane calculations.
-
-Added -noreject option, to allow building nodes without messing up an
-already-built reject map.
-
-Added -thold option to change the visplane threshold. May be used to report
-more potential visplane overflows if the -vpwarn or -vpmark approximations
-estimate too few visplanes. Default threshold is 128.
-
-Changed the way level markers in the lump directory are handled, to
-accomodate DCK3.61, EdMap, and perhaps other editors. Some editors, such
-as DCK3.61, do not always set the length field in a level marker to 0, and
-EdMap requires that the offset field in a level marker be equal to the
-offset of the first resource.
-
------------------------------------------------------------
-Changes in 2.1x:
-
-Lee Killough 06/97
-
-Fixed design bug which caused invisible barriers or disappearing Things.
-Problem was in how segs incident to a partitioning node line were
-partitioned -- they were partitioned according to sidedef, rather than
-vertex, orientation w.r.t. the node line. Flipping the affected seg's
-linedef usually fixed the problem. Now an incident seg is properly
-partitioned either on the left or right side of a node line depending
-on whether the two segs are in the same direction or not, not whether
-they are both flipped or not.
-
-Added special effects features:
-
-If a linedef has a sector tag >= 900, then it is treated as "precious"
-and will not be split unless absolutely necessary. This is good to use
-around borders of deep water, invisible stairs, etc.
-
-Furthermore, just for grins, if the linedef's tag is 999, then the sidedefs'
-x-offsets set an angle adjustment in degrees to be applied -- you can look
-straight at a wall, but it might come right at you on both sides and
-"stretch".
-
------------------------------------------------------------
-
-New to 2.0x:
-
-Multilevel support!!! Automatically builds all levels in wad.
-
-Does not strip textures or other lumps from wads anymore!!!
-
-Supports HOM-free transparent doors:
-
- Simply make the sector referenced by the doortracks have a
- sector tag of >= 900. No need to remember sector numbers
- and type them in on a command line -- just use any sector
- tag >= 900 to permanently mark the sector special.
-
- See TRANSDOR.WAD for an example of sector tags in the 900's
- being used to create HOM-free transparent door effects.
-
------------------------------------------------------------
-
-Changes from 1.4x to 1.5x:
-
-Replaced GO32.EXE with newer version, to support Windows
-and DPMI.
-
------------------------------------------------------------
-
-Changes from 1.3x to 1.4x:
-
-Lee Killough:
-
-Fixed bug which caused BSP to "do nothing" on systems where
-GO32.EXE was not in the user's path.
-
-Added -factor option to allow changing the heuristic used by the
-node picker. Factor can be any positive integer, and the larger
-the factor, the more costly seg splits are. A factor of 17 is the
-default and behaves just like earlier versions of BSP. Changing the
-factor can sometimes prevent visplane overflows in wads. But then
-again, some wads have just too many visible 2s linedefs for the
-node builder to make a difference. If you have visplane overflows,
-experiment with the -factor option before giving up.
-
------------------------------------------------------------
-
-Changes from 1.2x to 1.3x:
-
-New version due to performance enhancements by Lee Killough
-(killough@rsn.hp.com).
-
-Runs at least 3 times as fast as before, due to changes in PickNode.
-Same results are obtained, but with greater speed. Differences from
-1.2x:
-
- PickNode() rewritten to maximize performance. New PickNode()
- algorithm features pruning strategy which allows inner loop
- to exit as soon as a seg is detected as being worse than the
- best so far.
-
- All floating-point arithmetic inside inner loop has been eliminated.
-
- GetVertexes() changed and Reference() removed, replaced with a
- faster vertex renumbering algorithm which also removes lines of
- length zero.
-
- IsLineDefInside() tuned by eliminating bit mask variable.
-
- Functions are static, to reduce code size by permitting total
- inlining.
-
- Various other minor performance enhancements
-
------------------------------------------------------------
-
-Changes from 1.1 to 1.2x:
-
-New version 1.2 due to bug found by Mark Harrison that caused some
-problems with flipped segs having their textures buggered up.
-
-The GO32 dos extender has been pre-pended to the executable.
-
------------------------------------------------------------
-
-This builds a BSP node tree for your DOOM wad files.
-
-Usage:
-
-BSP [-factor nnn] [
Requested scrolling with arrow keys and possibility to disable the
autoscrolling. Helped a lot with Final Doom compatibility and porting
- issues. Wrote XDoom
- and Xwadtools.
+ issues. Wrote XDoom and Xwadtools.
More bug reports than everybody else combined.
-
-
Atgeirr F. Rasmussen <atgeirr@sintef.no>
-
C++ help.
+
More bug reports than everybody else combined. Provides a mirror of the
+ web page.
Josh R. Ray <joshray@prodigy.net> (JRR)
Encouragements.
@@ -239,9 +240,6 @@
splitting, single-key linedefs of sector splitting and scrolling with arrow
keys.
-
Ivan Vecerina <ivec@mail.com>
-
C++ help.
-
The Wildman
Encouragements.
@@ -249,6 +247,19 @@
Figured out the picture format for the Doom alpha and press release
versions and told us about it on rgcde. Without him, Yadex probably
wouldn't support them.
+
+
Pierre Baillargeon <pb@artquest.net>
+
Carl Barron <cbarron3@ix.netcom.com>
+
David Ferguson <DavidFerguson@NOcsiSPAM.com>
+
John Potter <jpotter@falcon.lhup.edu>
+
Atgeirr F. Rasmussen <atgeirr@sintef.no>
+
Ivan Vecerina <ivec@mail.com>
+
C++ help.
+
+
Benjamin Bayart
+
Ouafae Kotby
+
diff consulting.
+
If I'm forgetting you, pardon my mistake and please send me a
@@ -277,7 +288,7 @@
The rgcders for their interesting answers and questions.
The level designers who have made all the wonderful levels
and graphics I've been admiring.
-Linuxgames for providing the mailing list.
+Linuxgames and freelists.org for providing the mailing lists.
The makers of the internet for connecting us all.
All the other people who help making this world bearable.
diff -uaNr yadex-1.5.2/docsrc/editing_docs.html yadex-1.6.0/docsrc/editing_docs.html
--- yadex-1.5.2/docsrc/editing_docs.html 1999-08-13 19:05:53.000000000 +0200
+++ yadex-1.6.0/docsrc/editing_docs.html 2003-03-27 20:20:16.000000000 +0100
@@ -22,27 +22,27 @@
Unless I suddenly become interested in 3D graphics, that is not going to
+ happen. Besides, I suspect that a better and easier way to achieve what
+ you're after might be to implement a reload-level in your favourite Doom
+ port.
+
+
Yadex is slow, particularly when dragging objects
+
Yes. I plan to replace the current implementation (pixmap) by drawing
+ directly to the window. The difficulty lies in making that without
+ generating a lot of flicker. In the meantime, try the -P
+ option.
+
How many people use Yadex ?
I don't know for sure. Each new release gets a few hundred downloads.
Why didn't you use <insert speaker's favourite
toolkit> ?
I used plain Xlib and not a toolkit for several reasons. Firstly, I
- wanted to learn Xlib. Secondly, I reckoned that it would be easier to
- translate the existing BGI calls to Xlib than to some higher level toolkit.
- Thirdly, I feared that depending on a toolkit would hurt portability.
+ wanted to learn Xlib. Secondly, I reckoned it would be easier to translate
+ the existing BGI calls to Xlib than to some higher level toolkit. Thirdly,
+ I feared that depending on a toolkit would hurt portability.
AYM $SELF_DATE
diff -uaNr yadex-1.5.2/docsrc/feedback.html yadex-1.6.0/docsrc/feedback.html
--- yadex-1.5.2/docsrc/feedback.html 1999-08-13 18:24:30.000000000 +0200
+++ yadex-1.6.0/docsrc/feedback.html 2003-04-01 00:00:00.000000000 +0200
@@ -29,23 +29,16 @@
yadex mailing
list.
+
Yes, suggestions to switch to toolkit x have
+already been offered for most values of x.
+There even is a FAQ item.
+
For a list of known issues and solutions that have been
considered, see TODO.
Contributions
-
Contributions are welcome. Should you ever get short of ideas,
-you'll find plenty in TODO :-).
-Guidelines for contributors :
-
-
AYM $SELF_DATE
diff -uaNr yadex-1.5.2/docsrc/getting_started.html yadex-1.6.0/docsrc/getting_started.html
--- yadex-1.5.2/docsrc/getting_started.html 2000-01-10 21:47:35.000000000 +0100
+++ yadex-1.6.0/docsrc/getting_started.html 2003-03-31 19:28:26.000000000 +0200
@@ -59,12 +59,12 @@
The installation procedure will try to copy files in the following
directories, creating the directories if they don't exist ;
+
/etc/yadex/$VERSION
/usr/local/bin
-
/usr/local/etc/yadex
-
/usr/local/share/games/yadex
+
/usr/local/share/games/yadex/$VERSION
So make sure you have the necessary rights before installing
-(or change the makefile).
+(or install in a different location).
Display
@@ -99,9 +99,11 @@
Don't forget to tell Yadex where your iwads are by changing
the lines "iwad1 =",
"iwad2 =" etc. in
-/usr/local/etc/version/yadex.cfg. If
-there is an iwad you don't have, you can just comment out the
-corresponding line.
+~/.yadex/yadex.cfg or
+/etc/yadex/$VERSION/yadex.cfg (the actual location
+might be different if you compiled with another prefix than the
+default). If there is an iwad you don't have, you can just
+comment out the corresponding line.
@@ -324,13 +326,14 @@
strange results or you'll crash the game.
There are several nodes builders around. One of the best is
-BSP 2.3. Lee Killough kindly allowed me to include it with the
-Yadex distribution. To build the nodes on your level with BSP
-and then test it with Doom, type something along the lines
-of :
+BSP, which you can download from http://doombsp.sourceforge.net/. To build the nodes
+on your level with BSP and then test it with Doom, type
+something along the lines of :
+ Many possible improvements and fixes have been identified
+ and sometimes a particular approach has already been decided
+ on and written down in TODO. Yes it's tedious
+ reading. But if you skip it, you run the risk of seeing your
+ work go to waste because it's in conflict with an earlier
+ plan.
+
+
+ The mailing list is the way by which users and developers
+ communicate. Subscribe to the list and do all communication
+ through the list. It allows developers to coordinate and to
+ benefit from the feedback of all other developers and users.
+
+
+ For whatever reason, some contributors seem to think they
+ don't need to subscribe to the list. But the need for
+ coordination remains. Each contributor needs a
+ communication channel with the rest of the project. If
+ it's not the mailing list, it'll probably be the
+ maintainer (me) and I don't want to have to play the role
+ of a mailing list digest server.
+
+
+
+ Having a single many-to-many communication channel is
+ better than having many one-to-one channels because you
+ don't have to repeat the same thing n times to
+ n people.
+
+
+
+ The mailing list is archived and the archives are publicly
+ accessible by anyone at any time. Private mail isn't.
+
+
+
Post on the list about your plans
+
+
+ The job you want to do might be already underway, or might
+ be conflicting with something else.
+
+
+
Blah
Foreword
@@ -877,15 +955,18 @@
Indent style
-I use the Whitesmiths style with an indent width of 3.
+BSD style with an indent width of 2.
tab stops every 8 characters,
-
indent width is 3 spaces,
+
indent width is 2 spaces,
line width limited to 80 characters,
the braces have the same indentation as the text they contain,
the body of a function is not indented.
+Many files still use Whitesmiths with an indent width of 3. They
+will be reformatted.
+
Whitespace :
one space between the name of the function/statement and the "(",
@@ -907,15 +988,15 @@
I consistently use the English spelling (E.G. "colour", not "color").
+
Conditionals
+
+The argument of if and while and the
+second argument of for are booleans, not integers,
+so you should provide a boolean expression. The following
+expressions are not booleans :
+
+
+
pointers,
+
the return value of strcmp(),
+
the return value of functions to return 0 to indicate
+ success and non-zero to indicate failure,
+
+
+Therefore, don't write
+
+
+if (! fopen (filename, "r")) // Test for failure
+ ...
+if (strcmp (str1, str2)) // Test for non-equality
+ ...
+if (! strcmp (str1, str2)) // Test for equality
+ ...
+if (remove (filename)) // Test for failure
+ ...
+
+
+On the other hand, when an expression is a boolean, you don't
+need to add anything. Don't write if (boolvar ==
+true).
+
General style
My general style is to try to make it look clear and pretty. If there
diff -uaNr yadex-1.5.2/docsrc/help.html yadex-1.6.0/docsrc/help.html
--- yadex-1.5.2/docsrc/help.html 1999-08-13 18:24:39.000000000 +0200
+++ yadex-1.6.0/docsrc/help.html 2003-03-26 19:19:53.000000000 +0100
@@ -15,11 +15,10 @@
The preferred place to put a question about Yadex is the yadex mailing
-list. Alternatively, you can mail the maintainer (me). I'll be
-happy to help you if I can. Just be nice with me by not making
-me answer the same questions over and over. Many common
-questions are already answered in the documentation.
+list.
+
+
Do not mail the maintainer. Yes, this means you.
+Send all mail to the list.
diff -uaNr yadex-1.5.2/docsrc/keeping_up.html yadex-1.6.0/docsrc/keeping_up.html
--- yadex-1.5.2/docsrc/keeping_up.html 1999-08-13 18:24:45.000000000 +0200
+++ yadex-1.6.0/docsrc/keeping_up.html 2003-03-31 23:48:46.000000000 +0200
@@ -27,10 +27,12 @@
href="news:rec.games.computer.doom.editing"
>rec.games.computer.doom.editing and Freshmeat. Several news sites
-such as Doomworld, Linux Game Tome
-and Linuxgames have
-been witnessed to echo the announcements.
+such as Doom center, Doomworld, Linux Game Tome, New Doom and Linuxgames have been
+witnessed to echo the announcements.
To download the latest version, see the Yadex home page.
diff -uaNr yadex-1.5.2/docsrc/packagers_guide.html yadex-1.6.0/docsrc/packagers_guide.html
--- yadex-1.5.2/docsrc/packagers_guide.html 1970-01-01 01:00:00.000000000 +0100
+++ yadex-1.6.0/docsrc/packagers_guide.html 2003-04-01 00:00:00.000000000 +0200
@@ -0,0 +1,79 @@
+
+
+ Yadex packager's guide
+
+
+
+
+ Yadex $VERSION ($SOURCE_DATE)
+
Packager's guide
+
+
+
+
+
+ This is for people who plan to package Yadex.
+
+
+
+
+
+
+
+
+
+
+
+
So you want to package Yadex ? Here is a list of things you should
+ probably know :
+
+
+
+
To make it install in /usr instead of
+ /usr/local, re-run configure with the right
+ --prefix option, type make clean && make
+ all. That's all there is to it.
+
+
You shouldn't have to make any manual changes ; most
+ references to the prefix in the documentation and elsewhere use the
+ files generated by configure (you'll have to make
+ clean, however). One possibly undesirable consequence of this
+ is that the doc from your package and the doc that one would get
+ after installing from the source will not be identical. I suppose it
+ doesn't matter.
+
+
From version 1.6 on, alternative prefixes are better supported
+ but the behaviour has changed somewhat. Instead of looking for files
+ in both /usr and /usr/local, Yadex uses
+ only the prefix directory. The goal was to reduce the unwanted
+ interactions between Yadexes installed with different prefixes on the
+ same system. Since packagers typically use /usr, users
+ should be able to have on their system both the original and the
+ packaged version of Yadex. (Incidentally, that's not true for
+ /etc/yadex/$VERSION/yadex.cfg but the FHS is to
+ blame).
+
+
To allow one to have several different versions installed at the
+ same time on the same system, Yadex uses a somewhat unusual scheme
+ where each file installed has the version number somewhere in its
+ pathname. If your packaging system allows version n + 1 to
+ have a different set of files than version n of the same
+ package, this should cause no problem. In fact, if the package
+ manager allows that, two different versions of the package could
+ coexist (except that they would overwrite each other's symlinks in
+ bin/ and man/, but that's what they're
+ for).
+
+
If you have problems with that scheme, let me know.
+
+
If you actually try to understand the makefile, you're going to
+ end up hating me.
+
+
If you find a bug, tell me about it. It's important. Especially
-if it makes Yadex crash or lose data. However, there are a few
-things to bear in mind :
+
If you find a bug, tell the list about it. It's
+important. Especially if it makes Yadex crash or lose data.
+However, there are a few things to bear in mind :