code change - oextra

move oattached and oname and other things that vary
the size of the obj structure into a separate
non-adjacent oextra structure, similar to what has
already been done for mextra. The obj structure
itself becomes a fixed size.

New macros:

#define ONAME(o)	((o)->oextra->oname)
#define OMID(o)		((o)->oextra->omid)
#define OMONST(o)	((o)->oextra->omonst)
#define OLONG(o)	((o)->oextra->olong)
#define OMAILCMD(o)	((o)->oextra->omailcmd)

#define has_oname(o)	((o)->oextra && ONAME(o))
#define has_omid(o)	((o)->oextra && OMID(o))
#define has_omonst(o)	((o)->oextra && OMONST(o))
#define has_olong(o)	((o)->oextra && OLONG(o))
#define has_omailcmd(o)	((o)->oextra && OMAILCMD(o))

changed macros:
has_name(mon) becomes has_mname(mon)  to correspond.

The CVS repository was tagged with
	NETHACK_PRE_OEXTRA
before commiting these, and
tagged with
	NETHACK_POST_OEXTRA
immediately after. The diff
between those two tags is this oextra patch.

The associated mail daemon changes to use an oextra
structure instead of a hidden command located in the
name after the terminating NUL, have not been tried
or tested.
This commit is contained in:
nethack.allison
2006-04-14 16:23:56 +00:00
parent f9314448f7
commit f55210be79
31 changed files with 688 additions and 518 deletions

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)mextra.h 3.5 2006/02/19 */
/* SCCS Id: @(#)mextra.h 3.5 2006/04/14 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -47,15 +47,12 @@
* 6. Adjust size_monst() in src/cmd.c appropriately.
* 7. Adjust dealloc_mextra() in src/mon.c to clean up
* properly during monst deallocation.
* 8. Adjust restmonchn() in src/restore.c to deal with your
* struct during a restore.
* 9. Adjust buffer_to_mon() in src/restore.c to properly
* unpackage the mextra fields during revival.
* 10. Adjust savemonchn() in src/save.c to deal with your
* struct during a save.
* 11. Adjust mon_to_buffer() in src/save.c to properly package
* up your struct when the rest of the monst struct is
* packaged up.
* 8. Adjust copy_mextra() in src/mon.c to make duplicate
* copies of your struct or data on another monst struct.
* 9. Adjust restmon() in src/restore.c to deal with your
* struct or data during a restore.
* 10. Adjust savemon() in src/save.c to deal with your
* struct or data during a save.
*/
/***
@@ -184,6 +181,6 @@ struct mextra {
#define ESHK(mon) ((mon)->mextra->eshk)
#define EMIN(mon) ((mon)->mextra->emin)
#define EDOG(mon) ((mon)->mextra->edog)
#define has_name(mon) ((mon)->mextra && MNAME(mon))
#define has_mname(mon) ((mon)->mextra && MNAME(mon))
#endif /* MEXTRA_H */