1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- Smalltalk current createPackage: 'Helios-Environments' properties: #{}!
- Object subclass: #HLEnvironment
- instanceVariableNames: ''
- package: 'Helios-Environments'!
- !HLEnvironment commentStamp!
- Abstract class defining common behavior for local and remote environments!
- !HLEnvironment methodsFor: 'accessing'!
- packages
- ^ self subclassResponsibility
- ! !
- !HLEnvironment methodsFor: 'actions'!
- eval: someCode on: aReceiver
- ^ self subclassResponsibility
- ! !
- HLEnvironment subclass: #HLLocalEnvironment
- instanceVariableNames: ''
- package: 'Helios-Environments'!
- !HLLocalEnvironment methodsFor: 'accessing'!
- packages
- ^ Smalltalk current packages
- ! !
- !HLLocalEnvironment methodsFor: 'actions'!
- eval: someCode on: aReceiver
- | compiler |
- compiler := Compiler new.
- [compiler parseExpression: someCode] on: Error do: [:ex |
- ^window alert: ex messageText].
- ^(compiler eval: (compiler compile: 'doIt ^[', someCode, '] value' forClass: DoIt)) fn applyTo: aReceiver arguments: #()
- ! !
- HLEnvironment subclass: #HLRemoteEnvironment
- instanceVariableNames: ''
- package: 'Helios-Environments'!
- !HLRemoteEnvironment methodsFor: 'accessing'!
- packages
- "Answer the remote environment's packages"
-
- "to-do"
-
- "Note for future self and friends:
- the problem with remote stuff is that the answers shouldn't be expected to be
- received in a syncrhonous fashion. Everything network is asyc, so you *are going to deal with callbacks* here"
- ! !
- !HLRemoteEnvironment methodsFor: 'actions'!
- eval: someCode on: aReceiver
- "Note for future self and friends:
- whatever way this compilation happens on the other side,
- it should return a proxy to the remote resulting object"
-
- self notYetImplemented
- ! !
- Object subclass: #HLRemoteObject
- instanceVariableNames: ''
- package: 'Helios-Environments'!
- !HLRemoteObject commentStamp!
- This is a local proxy to a remote object.
- Tipically useful for evaluating and inspecting and interacting with instances of a remote VM.!
- !HLRemoteObject methodsFor: 'actions'!
- doesNotUnderstand: aMessage
- "to-do
- aham, blah blah
- super doesNotUnderstand: aMessage"
- !
- inspectOn: anInspector
- "to-do"
- "this is a source of so much fun..."
- !
- printString
- ^ 'this is a remote object'
- ! !
|