309 lines
12 KiB
C
309 lines
12 KiB
C
/*
|
|
** Copyright 1995-2095, Silicon Graphics, Inc.
|
|
** All Rights Reserved.
|
|
**
|
|
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
|
|
** the contents of this file may not be disclosed to third parties, copied or
|
|
** duplicated in any form, in whole or in part, without the prior written
|
|
** permission of Silicon Graphics, Inc.
|
|
**
|
|
** RESTRICTED RIGHTS LEGEND:
|
|
** Use, duplication or disclosure by the Government is subject to restrictions
|
|
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
|
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
|
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
|
** rights reserved under the Copyright Laws of the United States.
|
|
*/
|
|
|
|
#include "glslib.h"
|
|
|
|
const GLubyte __glsCharType[256] = {
|
|
/* nul 0x00 */ 0,
|
|
/* soh 0x01 */ 0,
|
|
/* stx 0x02 */ 0,
|
|
/* etx 0x03 */ 0,
|
|
/* eot 0x04 */ 0,
|
|
/* enq 0x05 */ 0,
|
|
/* ack 0x06 */ 0,
|
|
/* bel 0x07 */ 0,
|
|
/* bs 0x08 */ 0,
|
|
/* ht 0x09 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_SPACE_BIT,
|
|
/* nl 0x0A */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_SPACE_BIT,
|
|
/* vt 0x0B */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_SPACE_BIT,
|
|
/* np 0x0C */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_SPACE_BIT,
|
|
/* cr 0x0D */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_SPACE_BIT,
|
|
/* so 0x0E */ 0,
|
|
/* si 0x0F */ 0,
|
|
/* dle 0x10 */ 0,
|
|
/* dc1 0x11 */ 0,
|
|
/* dc2 0x12 */ 0,
|
|
/* dc3 0x13 */ 0,
|
|
/* dc4 0x14 */ 0,
|
|
/* nak 0x15 */ 0,
|
|
/* syn 0x16 */ 0,
|
|
/* etb 0x17 */ 0,
|
|
/* can 0x18 */ 0,
|
|
/* em 0x19 */ 0,
|
|
/* sub 0x1A */ 0,
|
|
/* esc 0x1B */ 0,
|
|
/* fs 0x1C */ 0,
|
|
/* gs 0x1D */ 0,
|
|
/* rs 0x1E */ 0,
|
|
/* us 0x1F */ 0,
|
|
/* sp 0x20 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_SPACE_BIT,
|
|
/* ! 0x21 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* " 0x22 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* # 0x23 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* $ 0x24 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* % 0x25 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* & 0x26 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* ' 0x27 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* ( 0x28 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* ) 0x29 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* * 0x2A */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* + 0x2B */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* , 0x2C */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* - 0x2D */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* . 0x2E */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* / 0x2F */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* 0 0x30 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* 1 0x31 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* 2 0x32 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* 3 0x33 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* 4 0x34 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* 5 0x35 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* 6 0x36 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* 7 0x37 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* 8 0x38 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* 9 0x39 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* : 0x3A */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* ; 0x3B */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* < 0x3C */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* = 0x3D */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* > 0x3E */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* ? 0x3F */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* @ 0x40 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* A 0x41 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* B 0x42 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* C 0x43 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* D 0x44 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* E 0x45 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* F 0x46 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* G 0x47 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* H 0x48 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* I 0x49 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* J 0x4A */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* K 0x4B */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* L 0x4C */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* M 0x4D */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* N 0x4E */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* O 0x4F */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* P 0x50 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* Q 0x51 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* R 0x52 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* S 0x53 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* T 0x54 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* U 0x55 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* V 0x56 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* W 0x57 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* X 0x58 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* Y 0x59 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* Z 0x5A */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* [ 0x5B */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* \ 0x5C */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* ] 0x5D */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* ^ 0x5E */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* _ 0x5F */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* ` 0x60 */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* a 0x61 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* b 0x62 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* c 0x63 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* d 0x64 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* e 0x65 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* f 0x66 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* g 0x67 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* h 0x68 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* i 0x69 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* j 0x6A */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* k 0x6B */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* l 0x6C */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* m 0x6D */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* n 0x6E */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* o 0x6F */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* p 0x70 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* q 0x71 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* r 0x72 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* s 0x73 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* t 0x74 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* u 0x75 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* v 0x76 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* w 0x77 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* x 0x78 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* y 0x79 */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* z 0x7A */ __GLS_CHAR_GRAPHIC_BIT | __GLS_CHAR_TOKEN_BIT,
|
|
/* { 0x7B */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* | 0x7C */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* } 0x7D */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* ~ 0x7E */ __GLS_CHAR_GRAPHIC_BIT,
|
|
/* del 0x7F */ 0,
|
|
/* 0x80 */ 0,
|
|
/* 0x81 */ 0,
|
|
/* 0x82 */ 0,
|
|
/* 0x83 */ 0,
|
|
/* 0x84 */ 0,
|
|
/* 0x85 */ 0,
|
|
/* 0x86 */ 0,
|
|
/* 0x87 */ 0,
|
|
/* 0x88 */ 0,
|
|
/* 0x89 */ 0,
|
|
/* 0x8A */ 0,
|
|
/* 0x8B */ 0,
|
|
/* 0x8C */ 0,
|
|
/* 0x8D */ 0,
|
|
/* 0x8E */ 0,
|
|
/* 0x8F */ 0,
|
|
/* 0x90 */ 0,
|
|
/* 0x91 */ 0,
|
|
/* 0x92 */ 0,
|
|
/* 0x93 */ 0,
|
|
/* 0x94 */ 0,
|
|
/* 0x95 */ 0,
|
|
/* 0x96 */ 0,
|
|
/* 0x97 */ 0,
|
|
/* 0x98 */ 0,
|
|
/* 0x99 */ 0,
|
|
/* 0x9A */ 0,
|
|
/* 0x9B */ 0,
|
|
/* 0x9C */ 0,
|
|
/* 0x9D */ 0,
|
|
/* 0x9E */ 0,
|
|
/* 0x9F */ 0,
|
|
/* 0xA0 */ 0,
|
|
/* 0xA1 */ 0,
|
|
/* 0xA2 */ 0,
|
|
/* 0xA3 */ 0,
|
|
/* 0xA4 */ 0,
|
|
/* 0xA5 */ 0,
|
|
/* 0xA6 */ 0,
|
|
/* 0xA7 */ 0,
|
|
/* 0xA8 */ 0,
|
|
/* 0xA9 */ 0,
|
|
/* 0xAA */ 0,
|
|
/* 0xAB */ 0,
|
|
/* 0xAC */ 0,
|
|
/* 0xAD */ 0,
|
|
/* 0xAE */ 0,
|
|
/* 0xAF */ 0,
|
|
/* 0xB0 */ 0,
|
|
/* 0xB1 */ 0,
|
|
/* 0xB2 */ 0,
|
|
/* 0xB3 */ 0,
|
|
/* 0xB4 */ 0,
|
|
/* 0xB5 */ 0,
|
|
/* 0xB6 */ 0,
|
|
/* 0xB7 */ 0,
|
|
/* 0xB8 */ 0,
|
|
/* 0xB9 */ 0,
|
|
/* 0xBA */ 0,
|
|
/* 0xBB */ 0,
|
|
/* 0xBC */ 0,
|
|
/* 0xBD */ 0,
|
|
/* 0xBE */ 0,
|
|
/* 0xBF */ 0,
|
|
/* 0xC0 */ 0,
|
|
/* 0xC1 */ 0,
|
|
/* 0xC2 */ 0,
|
|
/* 0xC3 */ 0,
|
|
/* 0xC4 */ 0,
|
|
/* 0xC5 */ 0,
|
|
/* 0xC6 */ 0,
|
|
/* 0xC7 */ 0,
|
|
/* 0xC8 */ 0,
|
|
/* 0xC9 */ 0,
|
|
/* 0xCA */ 0,
|
|
/* 0xCB */ 0,
|
|
/* 0xCC */ 0,
|
|
/* 0xCD */ 0,
|
|
/* 0xCE */ 0,
|
|
/* 0xCF */ 0,
|
|
/* 0xD0 */ 0,
|
|
/* 0xD1 */ 0,
|
|
/* 0xD2 */ 0,
|
|
/* 0xD3 */ 0,
|
|
/* 0xD4 */ 0,
|
|
/* 0xD5 */ 0,
|
|
/* 0xD6 */ 0,
|
|
/* 0xD7 */ 0,
|
|
/* 0xD8 */ 0,
|
|
/* 0xD9 */ 0,
|
|
/* 0xDA */ 0,
|
|
/* 0xDB */ 0,
|
|
/* 0xDC */ 0,
|
|
/* 0xDD */ 0,
|
|
/* 0xDE */ 0,
|
|
/* 0xDF */ 0,
|
|
/* 0xE0 */ 0,
|
|
/* 0xE1 */ 0,
|
|
/* 0xE2 */ 0,
|
|
/* 0xE3 */ 0,
|
|
/* 0xE4 */ 0,
|
|
/* 0xE5 */ 0,
|
|
/* 0xE6 */ 0,
|
|
/* 0xE7 */ 0,
|
|
/* 0xE8 */ 0,
|
|
/* 0xE9 */ 0,
|
|
/* 0xEA */ 0,
|
|
/* 0xEB */ 0,
|
|
/* 0xEC */ 0,
|
|
/* 0xED */ 0,
|
|
/* 0xEE */ 0,
|
|
/* 0xEF */ 0,
|
|
/* 0xF0 */ 0,
|
|
/* 0xF1 */ 0,
|
|
/* 0xF2 */ 0,
|
|
/* 0xF3 */ 0,
|
|
/* 0xF4 */ 0,
|
|
/* 0xF5 */ 0,
|
|
/* 0xF6 */ 0,
|
|
/* 0xF7 */ 0,
|
|
/* 0xF8 */ 0,
|
|
/* 0xF9 */ 0,
|
|
/* 0xFA */ 0,
|
|
/* 0xFB */ 0,
|
|
/* 0xFC */ 0,
|
|
/* 0xFD */ 0,
|
|
/* 0xFE */ 0,
|
|
/* 0xFF */ 0,
|
|
};
|
|
|
|
GLSenum __glsBinCommand_BeginGLS_getType(
|
|
__GLSbinCommand_BeginGLS *inCommand, __GLSversion *outVersion
|
|
) {
|
|
GLuint countLarge = inCommand->head.countLarge;
|
|
GLuint opLarge = inCommand->head.opLarge;
|
|
__GLSversion version = inCommand->version;
|
|
|
|
if (inCommand->head.opSmall || inCommand->head.countSmall) return GLS_NONE;
|
|
if (
|
|
opLarge == GLS_OP_glsBeginGLS &&
|
|
countLarge == sizeof(*inCommand) / 4 &&
|
|
(!version.major || version.major == __GLS_VERSION_MAJOR)
|
|
) {
|
|
*outVersion = version;
|
|
return __GLS_BINARY_SWAP0;
|
|
}
|
|
__glsSwap4(&opLarge);
|
|
__glsSwap4(&countLarge);
|
|
__glsSwap4(&version.major);
|
|
__glsSwap4(&version.minor);
|
|
if (
|
|
opLarge == GLS_OP_glsBeginGLS &&
|
|
countLarge == sizeof(*inCommand) / 4 &&
|
|
(!version.major || version.major == __GLS_VERSION_MAJOR)
|
|
) {
|
|
*outVersion = version;
|
|
return __GLS_BINARY_SWAP1;
|
|
}
|
|
return GLS_NONE;
|
|
}
|