Alguns tipos de objeto OOGL (LIST
, INST
) permitem referências a outros
objetos OOGL, que podem aparecer literalmente no fluxo de dados, serem chamados
a partir de arquivos em disco, ou serem comunicados a partir de outro lugar via objetos
nomeados. Comandos GCL também aceitam objetos geométricos através desses meios citados.
A sintaxe genérica é
<oogl-object> ::= [ "{" ] [ "define"symbolname
] [ ["="]object-keyword
... | "<"filename
| ":"symbolname
] [ "}" ]
onde os itens entre aspas duplas são sequências de caracteres literais (que aparecem sem as aspas), os itens entre colchêtes ([]) são opcionais, e a barra vertical (|) denota alternativas. Chaves, quando estiverem presentes, apenas indicam coincidência; o par mais externo de chaves é geralmente requerido quando o objeto estiver em um contexto maior, e.g. quando for parte de um objeto maior ou incluído em um fluxo de comando do Geomview.
Por exemplo, cada uma das três linhas seguintes:
{ define fred QUAD 1 0 0 0 0 1 0 1 0 1 0 0 } { define fred = QUAD 1 0 0 0 0 1 0 1 0 1 0 0 } { appearance { +edge } LIST { < "file1" } { : fred } } VECT 1 2 0 2 0 0 0 0 1 1 2
é um bojeto OOGL válido. O último exemplo é válido somente quando estiver delimitado precisamente e residindo precisamente no seu próprio arquivo em disco.
A construção com ":" permite referência a símbolos, criados com
define
. Um valor inicial de um símbolo é um objeto nulo. Quando um
símbolo for (re)definido, todas as referências a esse símbolo são automaticamente modificadas.
A construção "define
NOME" permite definir um simbolo global para
um objeto especificado. Se "NOME" referir-se a um objeto que já existia anteriormente, então o antigo
objeto é descartado e substituído pela nova
definição. Veja (read ...)
. (hdefine ...)
.
A construção "<" faz com que um arquivo em disco seja lido. Note que isso não é um mecanismo textual genérico de uso da diretiva de programação "include"; um objeto OOGL completo deve aparecer no arquivo referenciado na construção "<".
Arquivos lidos usando "<" são procurados primeiramente no diretório do arquivo que
é refrenciado em "<", se existir; se essa busca falhar, o caminho normal de busca
(veja (load-path ...)
) é usado. A busca padrão
olha primeiro no diretório atual, a seguir nos diretórios de dados do
Geomview.
Ressaltando, espaços em branco e caracteres indicadores de final de linha são insignificantes, e comentários de "#" podem aparecer em qualquer lugar.