Function: semantic-unique-tag-table-by-name

semantic-unique-tag-table-by-name is a byte-compiled function defined in sort.el.gz.

Signature

(semantic-unique-tag-table-by-name TAGS)

Documentation

Scan a list of TAGS, removing duplicate names.

This must first sort the tags by name alphabetically ascending. For more complex uniqueness testing used by the semanticdb typecaching system, see semanticdb-typecache-merge-streams.

Source Code

;; Defined in /usr/src/emacs/lisp/cedet/semantic/sort.el.gz
;;; Unique
;;
;; Scan a list of tags, removing duplicates.
;; This must first sort the tags by name alphabetically ascending.
;;
;; Useful for completion lists, or other situations where the
;; other data isn't as useful.

(defun semantic-unique-tag-table-by-name (tags)
  "Scan a list of TAGS, removing duplicate names.
This must first sort the tags by name alphabetically ascending.
For more complex uniqueness testing used by the semanticdb
typecaching system, see `semanticdb-typecache-merge-streams'."
  (let ((sorted (semantic-sort-tags-by-name-increasing
		 (copy-sequence tags)))
	(uniq nil))
    (while sorted
      (if (or (not uniq)
	      (not (string= (semantic-tag-name (car sorted))
			    (semantic-tag-name (car uniq)))))
	  (setq uniq (cons (car sorted) uniq)))
      (setq sorted (cdr sorted))
      )
    (nreverse uniq)))