home *** CD-ROM | disk | FTP | other *** search
- "======================================================================
- |
- | Copyright (C) 1990, 1991 Free Software Foundation, Inc.
- | Written by Steve Byrne.
- |
- | This file is part of GNU Smalltalk.
- |
- | GNU Smalltalk is free software; you can redistribute it and/or modify it
- | under the terms of the GNU General Public License as published by the Free
- | Software Foundation; either version 1, or (at your option) any later version.
- |
- | GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
- | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- | details.
- |
- | You should have received a copy of the GNU General Public License along with
- | GNU Smalltalk; see the file COPYING. If not, write to the Free Software
- | Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- |
- ======================================================================"
-
-
- "
- | Change Log
- | ============================================================================
- | Author Date Change
- | sbyrne 24 May 90 created.
- |
- "
-
- Smalltalk at: #DataTypeMap put: Dictionary new.
- Smalltalk at: #DataTypeSize put: Dictionary new!
-
-
- DataTypeMap at: #card8 put: #ubyte.
- DataTypeMap at: #bool put: #byte.
- DataTypeMap at: #keycode put: #byte.
- DataTypeMap at: #card16 put: #uword.
- DataTypeMap at: #int16 put: #word.
- DataTypeMap at: #setOfKeyButMask put: #word.
- DataTypeMap at: #card32 put: #ulong.
- DataTypeMap at: #window put: #long.
- DataTypeMap at: #drawable put: #long.
- DataTypeMap at: #atom put: #long.
- DataTypeMap at: #colormap put: #long.
- DataTypeMap at: #timestamp put: #long.
-
-
-
- DataTypeSize at: #card8 put: 1.
- DataTypeSize at: #bool put: 1.
- DataTypeSize at: #keycode put: 1.
- DataTypeSize at: #card16 put: 2.
- DataTypeSize at: #int16 put: 2.
- DataTypeSize at: #setOfKeyButMask put: 2.
- DataTypeSize at: #card32 put: 4.
- DataTypeSize at: #window put: 4.
- DataTypeSize at: #drawable put: 4.
- DataTypeSize at: #atom put: 4.
- DataTypeSize at: #colormap put: 4.
- DataTypeSize at: #timestamp put: 4
- !
-
- !Object class methodsFor: 'hacking'!
-
- genErrorInit
- | stream |
- stream _ FileStream open: 'Xerr.st' mode: 'w'.
- stream close.
- !
-
- genErrorClass: className args: anArray
- | stream |
- stream _ FileStream open: 'Xerr.st' mode: 'a'.
- self genErrorClassDef: className on: stream args: anArray.
- self genErrorClassMethods: className on: stream args: anArray.
- stream nextPut: Character newPage.
- stream nl.
- stream close
- !
-
- " private definitions "
-
- genErrorClassDef: className on: aStream args: anArray
- self genClassDef: 'Error' forClass: className on: aStream args: anArray
- !
-
- genClassDef: type forClass: className on: aStream args: anArray
- 'X', type, ' subclass: #' printOn: aStream.
- className, type printOn: aStream.
- aStream nl.
- self genClassInstVars: anArray on: aStream.
- ' classVariableNames: ''''
- poolDictionaries: ''''
- category: ''X hacking''
- !' printOn: aStream.
- aStream nl.
- aStream nl
- !
-
- genErrorClassMethods: className on: aStream args: anArray
- self genClassMethods: 'Error' forClass: className on: aStream args: anArray
- !
-
- genClassMethods: type forClass: className on: aStream args: anArray
- | totalBytes dataType |
- '!', className, type, ' class methodsFor: ''instance creation''!
-
- newFrom: aStream
- ^self new initFrom: aStream
- !!
-
- ' printOn: aStream.
- '!', className, type ' methodsFor: ''private''!
-
- ' printOn: aStream.
- 'initFrom: aStream' printOn: aStream. aStream nl.
- totalBytes _ 0.
- anArray do:
- [ :var | ' ' printOn: aStream.
- var size > 1
- ifTrue: [ (var at: 1) printOn: aStream.
- ' _ ' printOn: aStream ].
- 'aStream ' printOn: aStream.
- dataType _ (var at: var size).
- (self mapType: dataType) printOn: aStream.
- totalBytes _ totalBytes + (self typeSize: dataType).
- '. ' printOn: aStream. aStream nl ].
- ' aStream skipBytes: ' printOn: aStream.
- (30 - totalBytes) printOn: aStream.
- aStream nl.
- '!!' printOn: aStream.
- aStream nl.
- aStream nl.
- !
-
- mapType: aType
- ^DataTypeMap at: aType
- ifAbsent: [ self error: 'no such type: ', (aType printString) ]
- !
-
- typeSize: aType
- ^DataTypeSize at: aType
- ifAbsent: [ self error: 'no such type: ', (aType printString) ]
- !
-
- genClassInstVars: anArray on: aStream
- | varName |
- aStream tab.
- 'instanceVariableNames: ''' printOn: aStream.
- anArray do:
- [ :var | var size = 2
- ifTrue: [ (#(sequenceNumber minorOp majorOp)
- indexOf: (varName _ var at: 1)) = 0
- ifTrue: [ varName, ' ' printOn: aStream ] ]
- ].
- '''' printOn: aStream.
- aStream nl
- !!
-
- Object genErrorInit.
- Object genErrorClass: 'Request'
- args: #((sequenceNumber card16) (card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Value'
- args: #((sequenceNumber card16) (badValue card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Window'
- args: #((sequenceNumber card16) (badId card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Pixmap'
- args: #((sequenceNumber card16) (badId card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Atom'
- args: #((sequenceNumber card16) (badId card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Cursor'
- args: #((sequenceNumber card16) (badId card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Font'
- args: #((sequenceNumber card16) (badId card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Match'
- args: #((sequenceNumber card16) (card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Drawable'
- args: #((sequenceNumber card16) (badId card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Access'
- args: #((sequenceNumber card16) (card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Alloc'
- args: #((sequenceNumber card16) (card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Colormap'
- args: #((sequenceNumber card16) (badId card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'GContext'
- args: #((sequenceNumber card16) (badId card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'IDChoice'
- args: #((sequenceNumber card16) (badId card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Name'
- args: #((sequenceNumber card16) (card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Length'
- args: #((sequenceNumber card16) (card32) (minorOp card16) (majorOp card8)).
- Object genErrorClass: 'Implementation'
- args: #((sequenceNumber card16) (card32) (minorOp card16) (majorOp card8))
- !
-
- Smalltalk quitPrimitive!
-