Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Reid G.C.Thinking in PostScript.1990.pdf
Скачиваний:
17
Добавлен:
23.08.2013
Размер:
846.44 Кб
Скачать

Chapter 11

Creating and Manipulating Data

The two most basic types of data structures are arrays and strings. PostScript arrays can contain any other type of PostScript objects, including composite objects. Strings contain individual characters, as in most languages.

CONSTRUCTING AN ARRAY

To construct an array, the simplest thing to do is to use the [ and ] operators. These operators create an array on the fly, during the execution of your program, and put into that array anything that is on the operand stack down through the matching [ at the time the ] operator is executed. A simple example is seen in Example 11.1.

Example 11.1: Sample Constructed Array

[ /one dup dup (four) /five 3 3 add /seven { 8 (the whole procedure) } 9 10 ]

135

This array contains ten elements:

/one

/one

/one

(four)

/five

6

/seven

{ 8 (the whole procedure) }

9

10

Notice that the second and third instances of /one were created by the execution of dup and the 6 was constructed by the add operator before the ] was executed. The elements between the [ and ] operators are all executed, unlike the way procedure bodies are declared.

If you want to construct a literal array (the kind with [ ] brackets) that contains an executable name like dup or add, obviously you have to be careful, or the operators will actually execute instead of landing in your array. We could have created the array first as a procedure, taking advantage of the fact that the execution of objects inside the procedure is deferred, and then converted it to a literal array after it has been constructed (see Example 11.2).

Example 11.2: Making a Procedure into a Literal Array

{ /one dup dup 3 3 add } cvlit

The array generated from the executable procedure body is identical to one that might be constructed with the [ and ] operators. It contains six elements:

/one dup dup 3

3 add

Another way to construct an array is to create an empty one with the array operator, and put data into it yourself with the put or putinterval operators, or with the astore operator, as seen in Example 11.3.

136

Chapter 11: CREATING AND MANIPULATING DATA