Mercurial > hg > xemacs-beta
comparison man/internals/internals.texi @ 253:157b30c96d03 r20-5b25
Import from CVS: tag r20-5b25
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:20:27 +0200 |
parents | 262b8bb4a523 |
children | 11cf20601dec |
comparison
equal
deleted
inserted
replaced
252:afb15df44434 | 253:157b30c96d03 |
---|---|
3264 This function provides a Lisp primitive that implements the MD5 secure | 3264 This function provides a Lisp primitive that implements the MD5 secure |
3265 hashing scheme, used to create a large hash value of a string of data such that | 3265 hashing scheme, used to create a large hash value of a string of data such that |
3266 the data cannot be derived from the hash value. This is used for | 3266 the data cannot be derived from the hash value. This is used for |
3267 various security applications on the Internet. | 3267 various security applications on the Internet. |
3268 | 3268 |
3269 | |
3270 | |
3271 @example | |
3272 7000 mocklisp.c | |
3273 @end example | |
3274 | |
3275 This function provides some emulation of MockLisp, a version of Lisp | |
3276 provided in Gosling Emacs (aka Unipress Emacs), from which some old | |
3277 versions of GNU Emacs were derived. You have to explicitly enable this | |
3278 code with a configure option and shouldn't normally, because it changes | |
3279 the semantics of XEmacs Lisp in ways that are not desirable for normal | |
3280 Lisp programs. | |
3281 | 3269 |
3282 | 3270 |
3283 | 3271 |
3284 @node Modules for Interfacing with the Operating System | 3272 @node Modules for Interfacing with the Operating System |
3285 @section Modules for Interfacing with the Operating System | 3273 @section Modules for Interfacing with the Operating System |
5031 @node Evaluation | 5019 @node Evaluation |
5032 @section Evaluation | 5020 @section Evaluation |
5033 | 5021 |
5034 @code{Feval()} evaluates the form (a Lisp object) that is passed to | 5022 @code{Feval()} evaluates the form (a Lisp object) that is passed to |
5035 it. Note that evaluation is only non-trivial for two types of objects: | 5023 it. Note that evaluation is only non-trivial for two types of objects: |
5036 symbols and conses. Under normal circumstances (i.e. not mocklisp) a | 5024 symbols and conses. A symbol is evaluated simply by calling |
5037 symbol is evaluated simply by calling symbol-value on it and returning | 5025 symbol-value on it and returning the value. |
5038 the value. | |
5039 | 5026 |
5040 Evaluating a cons means calling a function. First, @code{eval} checks | 5027 Evaluating a cons means calling a function. First, @code{eval} checks |
5041 to see if garbage-collection is necessary, and calls | 5028 to see if garbage-collection is necessary, and calls |
5042 @code{Fgarbage_collect()} if so. It then increases the evaluation depth | 5029 @code{Fgarbage_collect()} if so. It then increases the evaluation depth |
5043 by 1 (@code{lisp_eval_depth}, which is always less than @code{max_lisp_eval_depth}) and adds an | 5030 by 1 (@code{lisp_eval_depth}, which is always less than @code{max_lisp_eval_depth}) and adds an |
5056 At this point, the function to be called is determined by looking at | 5043 At this point, the function to be called is determined by looking at |
5057 the car of the cons (if this is a symbol, its function definition is | 5044 the car of the cons (if this is a symbol, its function definition is |
5058 retrieved and the process repeated). The function should then consist | 5045 retrieved and the process repeated). The function should then consist |
5059 of either a @code{Lisp_Subr} (built-in function), a | 5046 of either a @code{Lisp_Subr} (built-in function), a |
5060 @code{Lisp_Compiled_Function} object, or a cons whose car is the symbol | 5047 @code{Lisp_Compiled_Function} object, or a cons whose car is the symbol |
5061 @code{autoload}, @code{macro}, @code{lambda}, or @code{mocklisp}. | 5048 @code{autoload}, @code{macro} or @code{lambda}. |
5062 | 5049 |
5063 If the function is a @code{Lisp_Subr}, the lisp object points to a | 5050 If the function is a @code{Lisp_Subr}, the lisp object points to a |
5064 @code{struct Lisp_Subr} (created by @code{DEFUN()}), which contains a | 5051 @code{struct Lisp_Subr} (created by @code{DEFUN()}), which contains a |
5065 pointer to the C function, a minimum and maximum number of arguments | 5052 pointer to the C function, a minimum and maximum number of arguments |
5066 (possibly the special constants @code{MANY} or @code{UNEVALLED}), a | 5053 (possibly the special constants @code{MANY} or @code{UNEVALLED}), a |
5072 | 5059 |
5073 If the function is a @code{Lisp_Compiled_Function} object or a lambda, | 5060 If the function is a @code{Lisp_Compiled_Function} object or a lambda, |
5074 @code{apply_lambda()} is called. If the function is a macro, | 5061 @code{apply_lambda()} is called. If the function is a macro, |
5075 [..... fill in] is done. If the function is an autoload, | 5062 [..... fill in] is done. If the function is an autoload, |
5076 @code{do_autoload()} is called to load the definition and then eval | 5063 @code{do_autoload()} is called to load the definition and then eval |
5077 starts over [explain this more]. If the function is a mocklisp, | 5064 starts over [explain this more]. |
5078 @code{ml_apply()} is called. | |
5079 | 5065 |
5080 When @code{Feval} exits, the evaluation depth is reduced by one, the | 5066 When @code{Feval} exits, the evaluation depth is reduced by one, the |
5081 debugger is called if appropriate, and the current backtrace structure | 5067 debugger is called if appropriate, and the current backtrace structure |
5082 is removed from the list. | 5068 is removed from the list. |
5083 | 5069 |