Mercurial > hg > xemacs-beta
annotate modules/sample/external/sample.c @ 1330:4542b72c005e
[xemacs-hg @ 2003-03-01 07:25:26 by ben]
build patch
Makefile.in.in: Move src deletions to src/Makefile.in.in.
dump-paths.el, dumped-lisp.el: Delete. Combine stuff into setup-paths.el.
find-paths.el: Removed.
Make this file contain generic routines only. Move stuff to
compute Emacs roots to setup-paths.el.
startup.el: Removed.
Move these variables into setup-paths.el.
setup-paths.el, startup.el: Removed.
Combine all high-level code for computing the paths into
setup-paths.el. Create new function startup-find-load-path to
encapsulate all logic for computing `load-path'. Eliminate
invocation-directory and invocation-name parameters since
there is no point (false generality) -- the code references
other globals, which cannot be specified. Eliminate some code
duplicated between setup-paths.el and startup.el. Clean up
the debug-paths code and output load-path in addition.
Add logic to paths-emacs-root-p to support separated source
and build trees.
loadup.el, make-docfile.el, update-elc-2.el, update-elc.el: Rewrite to allow for separated source and build trees, as may occur
in MS Windows.
NOTE TO BUILD HACKERS:
loadup.el, make-docfile.el, update-elc.el and update-elc-2.el made two
assumptions that are no longer correct:
(1) The source and build trees are in the same place.
(2) They can make assumptions about where `.' is.
These files now compute the locations of the source and build
roots at the top of the file. *ALL* constant file names or path
snippets must now be made absolute using expand-file-name and one
of these roots.
dumped-lisp.el, packages.el: Removed.
Remove some unused lists of Lisp files. packages-hardcoded-lisp
(empty, in any case) moved to dumped-lisp.el.
startup.el: When a compiled init file is out-of-date wrt the uncompiled
version, load the uncompiled version and issue a nasty warning.
update-elc-2.el: Force touching of auto-autoloads files when REBUILD_AUTOLOADS
was set.
update-elc.el: Fix code that checks whether dumping is necessary to check against
xemacs.dmp, not xemacs.exe, when Unix and pdump.
lwlib-Xm.c: Fix compile warning.
README, config.inc.samp, xemacs.mak: -- Major reorganization and cleanup.
-- Add support for separated build tree and source tree.
-- Delete all support for X Windows building, since it's
totally bit-rotten and will never be fixed up. Instruct
people to use Cygwin if they want such support.
make-build-dir: New script to create a skeleton build tree for use with
separated build and source tree compilation.
m/acorn.h, m/alliant-2800.h, m/alliant.h, m/altos.h, m/amdahl.h, m/arm.h, m/att3b.h, m/aviion.h, m/clipper.h, m/cnvrgnt.h, m/convex.h, m/cydra5.h, m/delta.h, m/delta88k.h, m/dpx2.h, m/elxsi.h, m/ews4800r.h, m/gould.h, m/hp800.h, m/hp9000s300.h, m/i860.h, m/ibmps2-aix.h, m/ibmrs6000.h, m/ibmrt-aix.h, m/ibmrt.h, m/intel386.h, m/iris4d.h, m/iris5d.h, m/iris6d.h, m/irist.h, m/m68k.h, m/masscomp.h, m/mg1.h, m/mips-nec.h, m/mips-siemens.h, m/mips.h, m/nh3000.h, m/nh4000.h, m/ns32000.h, m/plexus.h, m/powerpc.h, m/sequent-ptx.h, m/sequent.h, m/sgi-challenge.h, m/stride.h, m/tad68k.h, m/targon31.h, m/tekxd88.h, m/template.h, m/tower32.h, m/tower32v3.h, m/ustation.h, m/wicat.h, m/xps100.h, data.c, doc.c, editfns.c, emacs.c, lrecord.h, ntheap.c, process-unix.c, sysdep.c, unexec.c: Delete all support for bit-rotten CANNOT_DUMP. Just use pdump.
Makefile.in.in: Lots o' cleanup. Use names like LISP, SRC instead of
lispdir, srcdir, for consistency with xemacs.mak and the
conventions in the rest of the file. Eliminate use of ${...}
in favor of $(...), to make it easier to move code between
this file and xemacs.mak. Fix dependency handling wrt
NEEDTODUMP to eliminate problems some people (e.g. Vin) have
been seeing with non-GNU makes. Write a long section about
the subtle but oh-so-important differences in dependency
processing between nmake, make, and GNU make. Add
unicode-encapsulate target, from xemacs.mak.
chartab.c, lrecord.h: Fix crash due to attempt to free objects across dump/undump.
| author | ben |
|---|---|
| date | Sat, 01 Mar 2003 07:25:56 +0000 |
| parents | 25e260cb7994 |
| children | dce479915b74 |
| rev | line source |
|---|---|
| 996 | 1 /* |
| 2 * Very simple sample module. Illustrates most of the salient features | |
| 3 * of Emacs dynamic modules. | |
| 4 * (C) Copyright 1998, 1999 J. Kean Johnston. All rights reserved. | |
| 5 * (C) Copyright 2002 Jerry James. | |
| 6 */ | |
| 7 | |
| 8 #include <config.h> | |
| 9 #include "lisp.h" | |
| 10 | |
| 11 /* | |
| 12 * This sample introduces three new Lisp objects to the Lisp reader. | |
| 13 * The first, a simple boolean value, and the second a string. The | |
| 14 * Third is a sample function that simply prints a message. | |
| 15 */ | |
| 16 int sample_bool; | |
| 17 Lisp_Object Vsample_string; | |
| 18 | |
| 19 DEFUN ("sample-function", Fsample_function, 0, 0, "", /* | |
| 20 This is a sample function loaded dynamically. | |
| 21 | |
| 22 You will notice in the source code for this module that the | |
| 23 declaration is identical to internal Emacs functions. This | |
| 24 makes it possible to use the exact same code in a dumped | |
| 25 version of Emacs. | |
| 26 */ | |
| 27 ()) | |
| 28 { | |
| 29 message ("Eureka! It worked"); | |
| 30 return Qt; | |
| 31 } | |
| 32 | |
| 33 /* | |
| 34 * Each dynamically loaded Emacs module is given a name at compile | |
| 35 * time. This is a short name, and must be a valid part of a C | |
| 36 * identifier. This name is used to construct the name of several | |
| 37 * functions which must appear in the module source code. | |
| 38 * The first such function, modules_of_XXXX, should load in any dependent | |
| 39 * modules. This function is optional, and the module will still load if | |
| 40 * it is not present in the module. | |
| 41 * | |
| 42 * The second function, which is NOT optional, is syms_of_XXXX, in which | |
| 43 * all functions that the module will be provided are declared. This | |
| 44 * function will contain calls to DEFSUBR(). | |
| 45 * | |
| 46 * The third function, which is also NOT optional, is vars_of_XXXX, in | |
| 47 * which you declare all variables that the module provides. This | |
| 48 * function will contain calls to DEFVAR_LISP(), DEFVAR_BOOL() etc. | |
| 49 * | |
| 50 * When declaring functions and variables in the syms_of_XXXX and | |
| 51 * vars_of_XXXX functions, you use the exact same syntax that you | |
| 52 * would as if this module were being compiled into the pure Emacs. | |
| 53 * | |
| 54 * The fourth function, which is optional, is unload_XXXX, in which actions | |
| 55 * that must be taken to unload the module are listed. XEmacs will unbind | |
| 56 * functions and variables for you. Anything else that must be done should | |
| 57 * appear in this function. | |
| 58 * | |
| 59 * All four of these functions are declared as void functions, | |
| 60 * taking no parameters. Since this sample module is called 'sample', | |
| 61 * the functions will be named 'modules_of_sample', 'syms_of_sample', | |
| 62 * 'vars_of_sample', and 'unload_sample'. | |
| 63 */ | |
| 64 | |
| 65 void | |
| 66 modules_of_sample() | |
| 67 { | |
| 68 /* | |
| 69 * This function isn't actually required as we will not be loading | |
| 70 * in any dependent modules, but if we were, we would do something like: | |
| 71 * emodules_load ("dependent.ell", "sample2", "1.0.0"); | |
| 72 */ | |
| 73 } | |
| 74 | |
| 75 void | |
| 76 syms_of_sample() | |
| 77 { | |
| 78 DEFSUBR(Fsample_function); | |
| 79 } | |
| 80 | |
| 81 void | |
| 82 vars_of_sample() | |
| 83 { | |
| 84 DEFVAR_LISP ("sample-string", &Vsample_string /* | |
| 85 This is a sample string, declared in a dynamic module. | |
| 86 | |
| 87 The syntax and conventions used for all normal Emacs variables | |
| 88 apply equally to modules, using an identical syntax. | |
| 89 */ ); | |
| 90 | |
| 91 DEFVAR_BOOL ("sample-boolean", &sample_bool /* | |
| 92 *Sample boolean value, in a dynamic module. | |
| 93 | |
| 94 This is a user-settable variable, as indicated by the * | |
| 95 as the first character of the description. Declared in | |
| 96 a module exactly as it would be internally in Emacs. | |
| 97 */ ); | |
| 98 } | |
| 99 | |
| 100 #ifdef HAVE_SHLIB | |
| 101 void | |
| 102 unload_sample() | |
| 103 { | |
| 104 /* We don't need to do anything here in the sample case. However, if you | |
| 105 create any new types with INIT_LRECORD_IMPLEMENTATION (sample_type), then | |
| 106 UNDEF_LRECORD_IMPLEMENTATION (sample_type) must appear here. Also, any | |
| 107 symbols declared with DEFSYMBOL (Qsample_var), or one of its variants, | |
| 108 must have a corresponding unstaticpro_nodump (&Qsample_var) here. */ | |
| 109 } | |
| 110 #endif |
