Function: semantic-lex-spp-merge-streams
semantic-lex-spp-merge-streams is a byte-compiled function defined in
lex-spp.el.gz.
Signature
(semantic-lex-spp-merge-streams RAW-STREAM)
Documentation
Merge elements from the RAW-STREAM together.
Handle spp-concat symbol concatenation. Handle Nested macro replacements. Return the cooked stream.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/lex-spp.el.gz
;;; Macro Merging
;;
;; Used when token streams from different macros include each other.
;; Merged macro streams perform in place replacements.
(defun semantic-lex-spp-merge-streams (raw-stream)
"Merge elements from the RAW-STREAM together.
Handle spp-concat symbol concatenation.
Handle Nested macro replacements.
Return the cooked stream."
(let ((cooked-stream nil))
;; Merge the stream
(while raw-stream
(cond ((eq (semantic-lex-token-class (car raw-stream)) 'spp-concat)
;; handle hashhash, by skipping it.
(setq raw-stream (cdr raw-stream))
;; Now merge the symbols.
(let ((prev-tok (car cooked-stream))
(next-tok (car raw-stream)))
(setq cooked-stream (cdr cooked-stream))
(push (semantic-lex-token
'spp-symbol-merge
(semantic-lex-token-start prev-tok)
(semantic-lex-token-end next-tok)
(list prev-tok next-tok))
cooked-stream)
))
(t
(push (car raw-stream) cooked-stream))
)
(setq raw-stream (cdr raw-stream))
)
(nreverse cooked-stream))
)