Dictionary Sorting 
Author Message
 Dictionary Sorting


fonts in a printer.  Since the dictionary FontDirectory is a hash table,
the output is not in alphabetical order.  I modified it to print the
result in alphabetical order.

As a side product, I wrote a dictionary sorting routine which uses the
standard insertion sort algorithm.  The keys of the dictionary are left
on stack as text strings.  The function can be used on any dictionary.

==== cut === fontname.ps === cut ====
%!


%

% Sort Dictionary key           dict => (keyn) ... (key3) (key2) (key1) n
% Dictionary is a hash table, this function is useful when the keys
% needed to be printed in increasing order, the results are left on
% stack in string datatype.  Conversion may be needed if used for other
% purposes.
% Limitation: According to the Red Book, the Operand stack's maximum
%             depth is 500, this function will fail if the results
%             overflow the stack.
% Written by C.P.Lai  Dec 17, 1988
% normal usage:
%       anydictionary SortDictKey {
%               show newline
%       } repeat
/SortDictKey { % function def
    /dictcount 1 def
    { %forall  -  sort dict keys on operand stack
        pop     % consume the value part
        % convert Key to string since type is unknown, or else ge may {*filter*}
        80 string cvs    % leave each key in a unique string on stack
        dictcount -1 2 {% for
            dup /dictindex exch def     % save index of key being checked
            1 index exch     % copy latest key for ge
            index            % use dictindex to get compare key for ge
            ge {dictindex 1 roll exit} if    % insert into place
        } for   % check from the already sorted high end
        /dictcount dictcount 1 add def
    } forall    % standard insertion sort algorithm
    dictcount 1 sub     % leave final count on stack

Quote:
} def


/placesub {     % sub argument from place
    /place place
    3 -1 roll   % < /p p arg >
    sub def
    place       % leave place on stack

Quote:
} def

/getfont {      % arguments < size font >
    findfont
    exch scalefont
    setfont
Quote:
} def

%%EndProlog

% pretty printing of all the font name available.
/x 72 def
/top 756 def
/place top def
FontDirectory SortDictKey {     %repeat
    dup cvn 28 exch getfont     % select the font
    place 72 lt { showpage /place top def } if
    x 36 placesub moveto
    show

Quote:
} repeat

showpage
--
.signature under construction ...

{cbosgd,fortune,hplabs,seismo!ihnp4,ucbvax!hpda}!nsc!daisy!cplai    C.P. Lai
Daisy Systems Corp, 700B Middlefield Road, Mtn View CA 94039.  (415)960-6961



Wed, 19 May 1993 04:43:00 GMT  
 
 [ 1 post ] 

 Relevant Pages 

1. Sorting a dictionary?

2. sorting arrays or dictionary object items in vbscript

3. dictionary performance - single dictionary vs. multiple dictionaries

4. dictionary object failure when using nested dictionary objects

5. Dictionaries in dictionaries

6. sorting numbers correctly with array.sort()

7. Items.Sort NOT Sorting????

8. Sort of Not Sorting at all: Excel

9. Sorting and Array or Dictionary Oject: VBScript & ASP

10. CreateObject("Scripting.Dictionary") Is there a dictionary DLL to get this to work?

11. regexp pattern and dictionary obj

12. Dictionary Object Item Size Limit

 

 
Powered by phpBB® Forum Software