Initial commit.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Sat, 07 Jun 2014 11:21:59 +0100
changeset 0 33a652015a1a
child 1 09b3ef5606e7
Initial commit. Visual Debugger window contains only dumb, console-like pane to enter GDB CLI commands. No completion, no history, no error handling. Does not handle properly inferior's stdin/stdout/stderr (need to allocate pty for that)
Make.proto
Make.spec
Makefile.init
VDBAbstractApplication.st
VDBConsoleApplication.st
VDBConsoleView.st
VDBDebuggerApplication.st
VDBInternalPipeStream.st
abbrev.stc
bc.mak
bmake.bat
jv_vdb.st
lccmake.bat
libInit.cc
mingwmake.bat
tests/Make.proto
tests/Make.spec
tests/Makefile.init
tests/VDBInternalPipeStreamTests.st
tests/abbrev.stc
tests/bc.mak
tests/bmake.bat
tests/jv_vdb_tests.st
tests/lccmake.bat
tests/libInit.cc
tests/mingwmake.bat
tests/tests.rc
tests/vcmake.bat
vcmake.bat
vdb.rc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Make.proto	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,136 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: jv_vdb.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# The Makefile as generated by this Make.proto supports the following targets:
+#    make         - compile all st-files to a classLib
+#    make clean   - clean all temp files
+#    make clobber - clean all
+#
+# This file contains definitions for Unix based platforms.
+# It shares common definitions with the win32-make in Make.spec.
+
+#
+# position (of this package) in directory hierarchy:
+# (must point to ST/X top directory, for tools and includes)
+TOP=../../stx
+INCLUDE_TOP=$(TOP)/..
+
+# subdirectories where targets are to be made:
+SUBDIRS=
+
+
+# subdirectories where Makefiles are to be made:
+# (only define if different from SUBDIRS)
+# ALLSUBDIRS=
+
+REQUIRED_SUPPORT_DIRS=
+
+# if your embedded C code requires any system includes,
+# add the path(es) here:,
+# ********** OPTIONAL: MODIFY the next lines ***
+# LOCALINCLUDES=-Ifoo -Ibar
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libwidg
+
+
+# if you need any additional defines for embedded C code,
+# add them here:,
+# ********** OPTIONAL: MODIFY the next lines ***
+# LOCALDEFINES=-Dfoo -Dbar -DDEBUG
+LOCALDEFINES=
+
+LIBNAME=libjv_vdb
+STCLOCALOPT='-package=$(PACKAGE)' -I. $(LOCALINCLUDES) $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -headerDir=.  -varPrefix=$(LIBNAME)
+
+
+# ********** OPTIONAL: MODIFY the next line ***
+# additional C-libraries that should be pre-linked with the class-objects
+LD_OBJ_LIBS=
+LOCAL_SHARED_LIBS=
+
+
+# ********** OPTIONAL: MODIFY the next line ***
+# additional C targets or libraries should be added below
+LOCAL_EXTRA_TARGETS=
+
+OBJS= $(COMMON_OBJS) $(UNIX_OBJS)
+
+
+
+all:: preMake classLibRule postMake
+
+pre_objs::  
+
+
+
+
+
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+ifneq (**NOHG**, $(shell hg root 2> /dev/null || echo -n '**NOHG**'))
+jv_vdb.$(O): $(shell hg root)/.hg/dirstate
+endif
+
+
+
+
+# run default testsuite for this package
+test: $(TOP)/goodies/builder/reports
+	$(MAKE) -C $(TOP)/goodies/builder/reports -f Makefile.init
+	$(TOP)/goodies/builder/reports/report-runner.sh -D . -r Builder::TestReport -p $(PACKAGE)
+
+
+
+# add more install actions here
+install::
+
+# add more install actions for aux-files (resources) here
+installAux::
+
+# add more preMake actions here
+preMake::
+
+# add more postMake actions here
+postMake:: cleanjunk
+
+# build all mandatory prerequisite packages (containing superclasses) for this package
+prereq:
+	cd $(TOP)/libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd $(TOP)/libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd $(TOP)/libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd $(TOP)/libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd $(TOP)/libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+
+
+# build all packages containing referenced classes for this package
+# they are nor needed to compile the package
+references:
+
+
+cleanjunk::
+	-rm -f *.s *.s2
+
+clean::
+	-rm -f *.o *.H
+
+clobber:: clean
+	-rm -f *.so *.dll
+
+
+# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)VDBAbstractApplication.$(O) VDBAbstractApplication.$(H): VDBAbstractApplication.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
+$(OUTDIR)VDBConsoleView.$(O) VDBConsoleView.$(H): VDBConsoleView.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libwidg/EditTextView.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(H) $(INCLUDE_TOP)/stx/libwidg/TextCollector.$(H) $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(STCHDR)
+$(OUTDIR)VDBInternalPipeStream.$(O) VDBInternalPipeStream.$(H): VDBInternalPipeStream.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(STCHDR)
+$(OUTDIR)jv_vdb.$(O) jv_vdb.$(H): jv_vdb.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)VDBConsoleApplication.$(O) VDBConsoleApplication.$(H): VDBConsoleApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
+$(OUTDIR)VDBDebuggerApplication.$(O) VDBDebuggerApplication.$(H): VDBDebuggerApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
+
+# ENDMAKEDEPEND --- do not remove this line
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Make.spec	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,72 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: jv_vdb.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# This file contains specifications which are common to all platforms.
+#
+
+# Do NOT CHANGE THESE DEFINITIONS
+# (otherwise, ST/X will have a hard time to find out the packages location from its packageID,
+#  to find the source code of a class and to find the library for a package)
+MODULE=jv
+MODULE_DIR=vdb
+PACKAGE=$(MODULE):$(MODULE_DIR)
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -headerDir=. : create header files locally
+#                (if removed, they will be created as common
+#  -Pxxx       : defines the package
+#  -Zxxx       : a prefix for variables within the classLib
+#  -Dxxx       : defines passed to to CC for inline C-code
+#  -Ixxx       : include path passed to CC for inline C-code
+#  +optspace   : optimized for space
+#  +optspace2  : optimized more for space
+#  +optspace3  : optimized even more for space
+#  +optinline  : generate inline code for some ST constructs
+#  +inlineNew  : additionally inline new
+#  +inlineMath : additionally inline some floatPnt math stuff
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCLOCALOPTIMIZATIONS=+optinline +inlineNew
+# STCLOCALOPTIMIZATIONS=+optspace3
+STCLOCALOPTIMIZATIONS=+optspace3
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -warn            : no warnings
+#  -warnNonStandard : no warnings about ST/X extensions
+#  -warnEOLComments : no warnings about EOL comment extension
+#  -warnPrivacy     : no warnings about privateClass extension
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCWARNINGS=-warn
+# STCWARNINGS=-warnNonStandard
+# STCWARNINGS=-warnEOLComments
+STCWARNINGS=-warnNonStandard
+
+COMMON_CLASSES= \
+	VDBAbstractApplication \
+	VDBConsoleView \
+	VDBInternalPipeStream \
+	jv_vdb \
+	VDBConsoleApplication \
+	VDBDebuggerApplication \
+
+
+
+
+COMMON_OBJS= \
+    $(OUTDIR_SLASH)VDBAbstractApplication.$(O) \
+    $(OUTDIR_SLASH)VDBConsoleView.$(O) \
+    $(OUTDIR_SLASH)VDBInternalPipeStream.$(O) \
+    $(OUTDIR_SLASH)jv_vdb.$(O) \
+    $(OUTDIR_SLASH)VDBConsoleApplication.$(O) \
+    $(OUTDIR_SLASH)VDBDebuggerApplication.$(O) \
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile.init	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,27 @@
+#
+# DO NOT EDIT
+#
+# make uses this file (Makefile) only, if there is no
+# file named "makefile" (lower-case m) in the same directory.
+# My only task is to generate the real makefile and call make again.
+# Thereafter, I am no longer used and needed.
+#
+# MACOSX caveat:
+#   as filenames are not case sensitive (in a default setup),
+#   we cannot use the above trick. Therefore, this file is now named
+#   "Makefile.init", and you have to execute "make -f Makefile.init" to
+#   get the initial makefile.  This is now also done by the toplevel CONFIG
+#   script.
+
+.PHONY: run
+
+run: makefile
+	$(MAKE) -f makefile
+
+#only needed for the definition of $(TOP)
+include Make.proto
+
+makefile: mf
+
+mf:
+	$(TOP)/rules/stmkmf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/VDBAbstractApplication.st	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,134 @@
+"{ Package: 'jv:vdb' }"
+
+ApplicationModel subclass:#VDBAbstractApplication
+	instanceVariableNames:'debuggerHolder debugger'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'VDB-UI-Abstract'
+!
+
+!VDBAbstractApplication class methodsFor:'interface opening'!
+
+openFor: debugger
+    self new 
+        debugger: debugger;
+        open.
+
+    "Created: / 06-06-2014 / 21:35:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractApplication class methodsFor:'plugin spec'!
+
+aspectSelectors
+    ^ #(
+        debuggerHolder
+    )
+
+    "Created: / 06-06-2014 / 21:47:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractApplication methodsFor:'acessing'!
+
+debugger
+    ^ debugger
+
+    "Created: / 06-06-2014 / 21:37:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+debugger: dbg
+    self debuggerHolder value: dbg
+
+    "Created: / 06-06-2014 / 21:36:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractApplication methodsFor:'aspects'!
+
+debuggerHolder
+    "return/create the 'debuggerHolder' value holder (automatically generated)"
+
+    debuggerHolder isNil ifTrue:[
+        debuggerHolder := ValueHolder new.
+        debuggerHolder addDependent:self.
+    ].
+    ^ debuggerHolder
+!
+
+debuggerHolder:aValueModel
+    "set the 'debuggerHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    debuggerHolder notNil ifTrue:[
+        oldValue := debuggerHolder value.
+        debuggerHolder removeDependent:self.
+    ].
+    debuggerHolder := aValueModel.
+    debuggerHolder notNil ifTrue:[
+        debuggerHolder addDependent:self.
+    ].
+    newValue := debuggerHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:debuggerHolder.
+    ].
+! !
+
+!VDBAbstractApplication methodsFor:'change & update'!
+
+update:something with:aParameter from:changedObject
+    "Invoked when an object that I depend upon sends a change notification."
+
+    changedObject == debuggerHolder ifTrue:[
+        debuggerHolder value == debugger ifFalse:[
+            debugger notNil ifTrue:[ 
+                self unsubscribe.
+            ].
+            debugger := debuggerHolder value.
+            debugger notNil ifTrue:[ 
+                self subscribe.
+            ].
+        ].
+        ^ self.
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 06-06-2014 / 22:09:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractApplication methodsFor:'dependents access'!
+
+release
+    "remove all dependencies from the receiver"
+
+    super release.
+    self unsubscribe
+
+    "Created: / 06-06-2014 / 22:13:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractApplication methodsFor:'initialization & release'!
+
+subscribe   
+    "Register for debugger events. To be overrided by subclasses"
+
+    "Created: / 06-06-2014 / 21:26:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+unsubscribe
+    "Unsubscribe myself fo debugger events"
+
+    debugger announcer unsubscribe: self.
+
+    "Created: / 06-06-2014 / 21:26:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBAbstractApplication methodsFor:'startup & release'!
+
+releaseAsSubCanvas
+    "a subcanvas is closed or switching to a new application.
+     Can be redefined to perform a self release in this case."
+
+    self release
+
+    "Created: / 06-06-2014 / 22:12:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/VDBConsoleApplication.st	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,97 @@
+"{ Package: 'jv:vdb' }"
+
+VDBAbstractApplication subclass:#VDBConsoleApplication
+	instanceVariableNames:'consoleView'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'VDB-UI-Console'
+!
+
+
+!VDBConsoleApplication class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:VDBConsoleApplication andSelector:#windowSpec
+     VDBConsoleApplication new openInterface:#windowSpec
+     VDBConsoleApplication open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+    #(FullSpec
+       name: windowSpec
+       window: 
+      (WindowSpec
+         label: 'VDB Console'
+         name: 'VDB Console'
+         min: (Point 10 10)
+         bounds: (Rectangle 0 0 782 332)
+       )
+       component: 
+      (SpecCollection
+         collection: (
+          (ArbitraryComponentSpec
+             name: 'Console'
+             layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+             hasBorder: false
+             component: consoleView
+           )
+          )
+        
+       )
+     )
+! !
+
+!VDBConsoleApplication class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this. If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #debuggerHolder
+      ).
+
+! !
+
+!VDBConsoleApplication methodsFor:'aspects'!
+
+consoleView
+    consoleView isNil ifTrue:[ 
+        consoleView := VDBConsoleView new.
+        consoleView debuggerHolder: self debuggerHolder.
+    ].
+    ^ consoleView
+
+    "Created: / 06-06-2014 / 21:33:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+debuggerHolder:aValueModel
+    super debuggerHolder:aValueModel.
+    self consoleView debuggerHolder:aValueModel
+
+    "Created: / 06-06-2014 / 22:04:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBConsoleApplication class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/VDBConsoleView.st	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,223 @@
+"{ Package: 'jv:vdb' }"
+
+TextCollector subclass:#VDBConsoleView
+	instanceVariableNames:'debuggerHolder debugger'
+	classVariableNames:'Prompt'
+	poolDictionaries:''
+	category:'VDB-UI-Console'
+!
+
+!VDBConsoleView class methodsFor:'initialization'!
+
+initialize
+    "Invoked at system start or when the class is dynamically loaded."
+
+    "/ please change as required (and remove this comment)
+
+    Prompt := '(gdb) '.
+
+    "Modified: / 06-06-2014 / 22:45:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBConsoleView methodsFor:'aspects'!
+
+debuggerHolder
+    "return/create the 'debuggerHolder' value holder (automatically generated)"
+
+    debuggerHolder isNil ifTrue:[
+        debuggerHolder := ValueHolder new.
+        debuggerHolder addDependent:self.
+    ].
+    ^ debuggerHolder
+!
+
+debuggerHolder:aValueModel
+    "set the 'debuggerHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    debuggerHolder notNil ifTrue:[
+        oldValue := debuggerHolder value.
+        debuggerHolder removeDependent:self.
+    ].
+    debuggerHolder := aValueModel.
+    debuggerHolder notNil ifTrue:[
+        debuggerHolder addDependent:self.
+    ].
+    newValue := debuggerHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:debuggerHolder.
+    ].
+! !
+
+!VDBConsoleView methodsFor:'change & update'!
+
+update:something with:aParameter from:changedObject
+    "Invoked when an object that I depend upon sends a change notification."
+
+    changedObject == debuggerHolder ifTrue:[
+        debuggerHolder value == debugger ifFalse:[
+            debugger notNil ifTrue:[ 
+                self unsubscribe.
+            ].
+            debugger := debuggerHolder value.
+            debugger notNil ifTrue:[ 
+                self subscribe.
+            ].
+        ].
+        ^ self.
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 06-06-2014 / 22:10:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBConsoleView methodsFor:'cursor handling'!
+
+cursorMovementAllowed
+    "return true, if the user may move the cursor around
+     (via button-click, or cursor-key with selection).
+     Here false is returned - the cursor is only moved by
+     cursor positioning escape sequences arriving from the
+     stream."
+
+    ^ false
+
+    "Created: / 07-06-2014 / 01:18:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBConsoleView methodsFor:'event handling'!
+
+keyPress: key x: x y: y
+
+    self cursorLine < self list size ifTrue:[ 
+        ^ self.
+    ].
+
+    key == #CursorLeft ifTrue:[ 
+        (self cursorCol) > (Prompt size + 2) ifTrue:[
+            ^ super keyPress: key x: x y: y    
+        ].
+        ^ self
+    ].
+
+
+    key == #CursorUp ifTrue:[ 
+        self keyPressCursorUp.
+        ^ self
+    ].
+    key == #CursorDown ifTrue:[ 
+        self keyPressCursorDown.
+        ^ self.
+    ].
+    key == #Return ifTrue:[ 
+        self keyPressReturn.
+        ^ super keyPress: key x: x y: y
+    ].
+
+    ^ super keyPress: key x: x y: y
+
+    "Created: / 06-06-2014 / 22:33:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-06-2014 / 01:22:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPressCursorDown
+
+    "Created: / 06-06-2014 / 22:36:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPressCursorUp
+
+    "Created: / 06-06-2014 / 22:36:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPressReturn
+    | command |
+
+    command := self list at: self cursorLine.
+    command isEmptyOrNil ifTrue:[ ^ self ].
+    command := command copyFrom: Prompt size + 1.
+    command isEmptyOrNil ifTrue:[ 
+        self showPrompt.
+    ] ifFalse:[
+        debugger send: (GDBCLICommand new value: command) wait: false.
+    ].
+
+    "Created: / 06-06-2014 / 22:36:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+onCommandEvent: event
+
+    "Created: / 06-06-2014 / 22:43:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+onCommandResultEvent: event
+    self showPrompt.
+
+    "Created: / 06-06-2014 / 22:44:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+onConsoleOutputEvent: event
+    self show: event value
+
+    "Created: / 06-06-2014 / 21:45:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+onTargetOutputEvent: event
+    self show: event value
+
+    "Created: / 06-06-2014 / 21:45:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBConsoleView methodsFor:'initialization & release'!
+
+initialize
+    super initialize.
+    self showPrompt.
+
+    "Created: / 06-06-2014 / 22:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+subscribe   
+    "Register for debugger events. To be overrided by subclasses"
+
+    debugger announcer 
+        when: GDBCommandEvent           send: #onCommandEvent:          to: self;
+        when: GDBCommandResultEvent     send: #onCommandResultEvent:    to: self;
+
+        when: GDBConsoleOutputEvent     send: #onConsoleOutputEvent:    to: self;
+        when: GDBTargetOutputEvent      send: #onTargetOutputEvent:     to: self.
+
+    "Created: / 06-06-2014 / 21:26:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+unsubscribe
+    "Unsubscribe myself fo debugger events"
+
+    debugger announcer unsubscribe: self.
+    debugger := nil.
+
+    "Created: / 06-06-2014 / 21:26:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBConsoleView methodsFor:'selection handling'!
+
+autoMoveCursorToEndOfSelection
+    "Redefined to return false since the cursor should
+     not be affected by selecting"
+
+    ^ false
+
+    "Created: / 07-06-2014 / 01:20:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBConsoleView methodsFor:'stream messages'!
+
+showPrompt
+    self nextPutAll: Prompt
+
+    "Created: / 06-06-2014 / 22:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+VDBConsoleView initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/VDBDebuggerApplication.st	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,82 @@
+"{ Package: 'jv:vdb' }"
+
+VDBAbstractApplication subclass:#VDBDebuggerApplication
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'VGB-UI'
+!
+
+!VDBDebuggerApplication class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:VDBDebuggerApplication andSelector:#windowSpec
+     VDBDebuggerApplication new openInterface:#windowSpec
+     VDBDebuggerApplication open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+    #(FullSpec
+       name: windowSpec
+       window: 
+      (WindowSpec
+         label: 'Visual Debugger'
+         name: 'Visual Debugger'
+         min: (Point 10 10)
+         bounds: (Rectangle 0 0 718 390)
+       )
+       component: 
+      (SpecCollection
+         collection: (
+          (SubCanvasSpec
+             name: 'SubCanvas1'
+             layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+             level: 0
+             hasHorizontalScrollBar: false
+             hasVerticalScrollBar: false
+             majorKey: VDBConsoleApplication
+             subAspectHolders: 
+            (Array
+               
+              (SubChannelInfoSpec
+                 subAspect: debuggerHolder
+                 aspect: debuggerHolder
+               )
+             )
+             createNewApplication: true
+             createNewBuilder: true
+           )
+          )
+        
+       )
+     )
+! !
+
+!VDBDebuggerApplication class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this. If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #debuggerHolder
+      ).
+
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/VDBInternalPipeStream.st	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,228 @@
+"{ Package: 'jv:vdb' }"
+
+Stream subclass:#VDBInternalPipeStream
+	instanceVariableNames:'buffer first last dataAvailable spaceAvailable closed'
+	classVariableNames:'DefaultBufferSize'
+	poolDictionaries:''
+	category:'VDB-Support'
+!
+
+!VDBInternalPipeStream class methodsFor:'documentation'!
+
+documentation
+"
+    not useful on its own, but can be used to talk to a vt100
+    terminal view ...
+    See example.
+"
+!
+
+examples
+"
+                                                                [exBegin]
+    |p|
+
+    p := InternalPipeStream new.
+    [
+        10 timesRepeat:[
+            p nextPutLine:'hello'
+        ].
+    ] fork.
+
+    [
+        10 timesRepeat:[
+            Transcript showCR:p nextLine
+        ].
+    ] fork.
+                                                                [exEnd]
+
+                                                                [exBegin]
+    |userInput elizasOutput top terminal|
+
+    userInput    := InternalPipeStream new.
+    elizasOutput := InternalPipeStream new.
+
+    top := StandardSystemView new.
+    terminal := VT100TerminalView openOnInput: userInput output:elizasOutput in:top.
+
+    top extent:(terminal preferredExtent).
+    top label:'The doctor is in'.
+    top iconLabel:'doctor'.
+    top open.
+    top waitUntilVisible.
+
+    terminal translateNLToCRNL:true.
+    terminal inputTranslateCRToNL:true.
+    terminal localEcho:true.
+
+    elizasOutput nextPutLine:'Hi, I am Eliza'.
+    elizasOutput nextPutLine:'What is your problem ?'.
+    elizasOutput nextPutLine:''.
+    elizasOutput nextPutAll:'>'.
+
+    [top realized] whileTrue:[
+        |line answer matchingRule|
+
+        line := userInput nextLine.
+        (#('quit' 'exit' 'end' 'bye') includes:line) ifTrue:[
+            top destroy.
+            ^ self
+        ].
+
+        answer := 'Tell me more.'.
+        elizasOutput nextPutLine:answer.
+        elizasOutput nextPutAll:'>'.
+    ].
+                                                                [exEnd]
+"
+! !
+
+!VDBInternalPipeStream class methodsFor:'initialization'!
+
+initialize
+    "Invoked at system start or when the class is dynamically loaded."
+
+    "/ please change as required (and remove this comment)
+
+    DefaultBufferSize := 1024.
+
+    "Modified: / 07-06-2014 / 00:49:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBInternalPipeStream class methodsFor:'instance creation'!
+
+new
+    ^ self basicNew initialize
+!
+
+newWithBufferSize: bufferSize
+    ^ self basicNew initializeWithBufferSize: bufferSize
+
+    "Created: / 07-06-2014 / 00:48:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBInternalPipeStream methodsFor:'accessing'!
+
+atEnd
+    ^ closed and:[ last == 0 ]
+
+    "Modified: / 07-06-2014 / 01:06:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+close
+    closed := true.
+
+    "Modified: / 07-06-2014 / 01:02:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+next
+    "return the next element from the stream (might block until something is written)"
+
+    | c |
+
+    last == 0 ifTrue:[ 
+        closed ifTrue:[ 
+            ^ nil.
+        ].
+        dataAvailable wait.
+    ].
+    c := buffer at: first.
+    first == last ifTrue:[ 
+        first := 1.
+        last := 0.
+    ] ifFalse:[
+       first ~~ buffer size ifTrue:[
+           first := first + 1.
+       ] ifFalse:[ 
+           first := 1.
+       ].
+    ].
+    spaceAvailable signalForAll.
+    ^ c
+
+    "Modified: / 07-06-2014 / 01:06:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nextAvailableBytes:nMax into:aBuffer startingAt:startIndex
+    |n idx ch|
+
+    n := 0.
+    idx := startIndex.
+    [n <= nMax] whileTrue:[
+        ch := buffer nextIfEmpty:[^ n ].
+        aBuffer at:idx put:ch.
+        idx := idx + 1.
+        n := n + 1
+    ].
+    ^ n
+!
+
+nextPut:aCharacter
+    closed ifTrue:[ 
+        self class writeErrorSignal signal:'Pipe stream closed'.
+    ].
+    
+    last > first ifTrue:[ 
+        last < buffer size ifTrue:[ 
+            last := last + 1.
+        ] ifFalse:[
+            "/ wrapping around
+            first == 1 ifTrue:[ 
+                spaceAvailable wait. "/ wait for some space.
+            ].
+            last := 1.
+        ]
+    ] ifFalse:[ 
+        (last ~~ 0 and:[(last + 1) = (first)]) ifTrue:[ 
+            spaceAvailable wait. "/ wait for some space.                
+        ].
+        last == buffer size ifTrue:[ 
+            last := 1.
+        ] ifFalse:[
+            last := last + 1.
+        ].
+    ].
+    buffer at: last put: aCharacter.
+    dataAvailable signalForAll.
+
+    "Modified: / 07-06-2014 / 01:04:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+size
+    last == 0 ifTrue:[ ^ 0 ].
+    last >= first ifTrue:[ 
+        ^ last - first + 1 
+    ] ifFalse:[ 
+        ^ buffer size - first + 1 + last
+    ].
+
+    "Modified: / 07-06-2014 / 01:08:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBInternalPipeStream methodsFor:'initialization'!
+
+initializeWithBufferSize: bufferSize
+    buffer := String new: bufferSize.
+    first := 1.
+    last := 0.
+
+    dataAvailable := Semaphore new.
+    spaceAvailable := Semaphore new.
+
+    closed := false
+
+    "Created: / 07-06-2014 / 00:49:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBInternalPipeStream methodsFor:'synchronization'!
+
+readWait
+    last == 0 ifTrue:[ 
+        dataAvailable wait.
+    ].
+
+    "Modified: / 07-06-2014 / 01:09:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+VDBInternalPipeStream initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/abbrev.stc	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,9 @@
+# automagically generated by the project definition
+# this file is needed for stc to be able to compile modules independently.
+# it provides information about a classes filename, category and especially namespace.
+VDBAbstractApplication VDBAbstractApplication jv:vdb 'VDB-UI-Abstract' 1
+VDBConsoleView VDBConsoleView jv:vdb 'VDB-UI-Console' 2
+VDBInternalPipeStream VDBInternalPipeStream jv:vdb 'VDB-Support' 0
+jv_vdb jv_vdb jv:vdb '* Projects & Packages *' 3
+VDBConsoleApplication VDBConsoleApplication jv:vdb 'VDB-UI-Console' 1
+VDBDebuggerApplication VDBDebuggerApplication jv:vdb 'VGB-UI' 1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bc.mak	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,90 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: jv_vdb.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# Notice, that the name bc.mak is historical (from times, when only borland c was supported).
+# This file contains make rules for the win32 platform using either borland-bcc or visual-c.
+# It shares common definitions with the unix-make in Make.spec.
+# The bc.mak supports the following targets:
+#    bmake         - compile all st-files to a classLib (dll)
+#    bmake clean   - clean all temp files
+#    bmake clobber - clean all
+#
+# Historic Note:
+#  this used to contain only rules to make with borland
+#    (called via bmake, by "make.exe -f bc.mak")
+#  this has changed; it is now also possible to build using microsoft visual c
+#    (called via vcmake, by "make.exe -f bc.mak -DUSEVC")
+#
+TOP=..\..\stx
+INCLUDE_TOP=$(TOP)\..
+
+
+
+!INCLUDE $(TOP)\rules\stdHeader_bc
+
+!INCLUDE Make.spec
+
+LIBNAME=libjv_vdb
+RESFILES=vdb.$(RES)
+
+
+
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libwidg
+LOCALDEFINES=
+
+STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
+LOCALLIBS=
+
+OBJS= $(COMMON_OBJS) $(WIN32_OBJS)
+
+ALL::  classLibRule
+
+classLibRule: $(OUTDIR) $(OUTDIR)$(LIBNAME).dll
+
+!INCLUDE $(TOP)\rules\stdRules_bc
+
+# build all mandatory prerequisite packages (containing superclasses) for this package
+prereq:
+	pushd ..\..\stx\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\stx\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\stx\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\stx\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\stx\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+
+
+
+
+
+
+
+test: $(TOP)\goodies\builder\reports\NUL
+	pushd $(TOP)\goodies\builder\reports & $(MAKE_BAT)
+	$(TOP)\goodies\builder\reports\report-runner.bat -D . -r Builder::TestReport -p $(PACKAGE)
+        
+clean::
+	del *.$(CSUFFIX)
+
+
+# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)VDBAbstractApplication.$(O) VDBAbstractApplication.$(H): VDBAbstractApplication.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
+$(OUTDIR)VDBConsoleView.$(O) VDBConsoleView.$(H): VDBConsoleView.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libwidg\EditTextView.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(H) $(INCLUDE_TOP)\stx\libwidg\TextCollector.$(H) $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(STCHDR)
+$(OUTDIR)VDBInternalPipeStream.$(O) VDBInternalPipeStream.$(H): VDBInternalPipeStream.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(STCHDR)
+$(OUTDIR)jv_vdb.$(O) jv_vdb.$(H): jv_vdb.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)VDBConsoleApplication.$(O) VDBConsoleApplication.$(H): VDBConsoleApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
+$(OUTDIR)VDBDebuggerApplication.$(O) VDBDebuggerApplication.$(H): VDBDebuggerApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
+
+# ENDMAKEDEPEND --- do not remove this line
+
+# **Must be at end**
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+!IFDEF HGROOT
+$(OUTDIR)jv_vdb.$(O): $(HGROOT)\.hg\dirstate
+!ENDIF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bmake.bat	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,12 @@
+@REM -------
+@REM make using Borland bcc32
+@REM type bmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak  %DEFINES% %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jv_vdb.st	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,122 @@
+"{ Package: 'jv:vdb' }"
+
+LibraryDefinition subclass:#jv_vdb
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'* Projects & Packages *'
+!
+
+
+!jv_vdb class methodsFor:'description'!
+
+excludedFromPreRequisites
+    "list packages which are to be explicitely excluded from the automatic constructed
+     prerequisites list. If empty, everything that is found along the inheritance of any of
+     my classes is considered to be a prerequisite package."
+
+    ^ #(
+    )
+!
+
+mandatoryPreRequisites
+    "list packages which are mandatory as a prerequisite.
+     This are packages containing superclasses of my classes and classes which
+     are extended by myself.
+     They are mandatory, beacuse we need these packages as a prerequisite for loading and compiling.
+     This method is generated automatically,
+     by searching along the inheritance chain of all of my classes."
+
+    ^ #(
+        #'stx:libbasic'    "LibraryDefinition - superclass of jv_vdb "
+        #'stx:libview'    "DisplaySurface - superclass of VDBConsoleView "
+        #'stx:libview2'    "ApplicationModel - superclass of VDBAbstractApplication "
+        #'stx:libwidg'    "EditTextView - superclass of VDBConsoleView "
+    )
+!
+
+referencedPreRequisites
+    "list packages which are a prerequisite, because they contain
+     classes which are referenced by my classes.
+     We do not need these packages as a prerequisite for loading or compiling.
+     This method is generated automatically,
+     by searching all classes (and their packages) which are referenced by my classes."
+
+    ^ #(
+        #'jv:libgdbs'    "GDBCLICommand - referenced by VDBConsoleView>>keyPressReturn "
+    )
+!
+
+subProjects
+    "list packages which are known as subprojects. 
+     The generated makefile will enter those and make there as well.
+     However: they are not forced to be loaded when a package is loaded; 
+     for those, redefine requiredPrerequisites."
+
+    ^ #(
+    )
+! !
+
+!jv_vdb class methodsFor:'description - contents'!
+
+classNamesAndAttributes
+    "lists the classes which are to be included in the project.
+     Each entry in the list may be: a single class-name (symbol),
+     or an array-literal consisting of class name and attributes.
+     Attributes are: #autoload or #<os> where os is one of win32, unix,..."
+
+    ^ #(
+        "<className> or (<className> attributes...) in load order"
+        VDBAbstractApplication
+        VDBConsoleView
+        VDBInternalPipeStream
+        #'jv_vdb'
+        VDBConsoleApplication
+        VDBDebuggerApplication
+    )
+!
+
+extensionMethodNames
+    "list class/selector pairs of extensions.
+     A correponding method with real names must be present in my concrete subclasses"
+
+    ^ #(
+    )
+! !
+
+!jv_vdb class methodsFor:'description - project information'!
+
+companyName
+    "Returns a company string which will appear in <lib>.rc.
+     Under win32, this is placed into the dlls file-info"
+
+    ^ 'My Company'
+!
+
+description
+    "Returns a description string which will appear in nt.def / bc.def"
+
+    ^ 'Class Library'
+!
+
+legalCopyright
+    "Returns a copyright string which will appear in <lib>.rc.
+     Under win32, this is placed into the dlls file-info"
+
+    ^ 'My CopyRight or CopyLeft'
+!
+
+productName
+    "Returns a product name which will appear in <lib>.rc.
+     Under win32, this is placed into the dlls file-info.
+     This method is usually redefined in a concrete application definition"
+
+    ^ 'LibraryName'
+! !
+
+!jv_vdb class methodsFor:'documentation'!
+
+version_HG
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lccmake.bat	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,8 @@
+@REM -------
+@REM make using lcc compiler
+@REM type lccmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak -DUSELCC=1 %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libInit.cc	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,39 @@
+/*
+ * $Header$
+ *
+ * DO NOT EDIT
+ * automagically generated from the projectDefinition: jv_vdb.
+ */
+#define __INDIRECTVMINITCALLS__
+#include <stc.h>
+
+#ifdef WIN32
+# pragma codeseg INITCODE "INITCODE"
+#endif
+
+#if defined(INIT_TEXT_SECTION) || defined(DLL_EXPORT)
+DLL_EXPORT void _libjv_vdb_Init() INIT_TEXT_SECTION;
+DLL_EXPORT void _libjv_vdb_InitDefinition() INIT_TEXT_SECTION;
+#endif
+
+void _libjv_vdb_InitDefinition(pass, __pRT__, snd)
+OBJ snd; struct __vmData__ *__pRT__; {
+__BEGIN_PACKAGE2__("libjv_vdb__DFN", _libjv_vdb_InitDefinition, "jv:vdb");
+_jv_137vdb_Init(pass,__pRT__,snd);
+
+__END_PACKAGE__();
+}
+
+void _libjv_vdb_Init(pass, __pRT__, snd)
+OBJ snd; struct __vmData__ *__pRT__; {
+__BEGIN_PACKAGE2__("libjv_vdb", _libjv_vdb_Init, "jv:vdb");
+_VDBAbstractApplication_Init(pass,__pRT__,snd);
+_VDBConsoleView_Init(pass,__pRT__,snd);
+_VDBInternalPipeStream_Init(pass,__pRT__,snd);
+_jv_137vdb_Init(pass,__pRT__,snd);
+_VDBConsoleApplication_Init(pass,__pRT__,snd);
+_VDBDebuggerApplication_Init(pass,__pRT__,snd);
+
+
+__END_PACKAGE__();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mingwmake.bat	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,16 @@
+@REM -------
+@REM make using mingw gnu compiler
+@REM type mingwmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+
+@pushd ..\..\stx\rules
+@call find_mingw.bat
+@popd
+make.exe -N -f bc.mak %DEFINES% %USEMINGW_ARG% %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/Make.proto	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,132 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: jv_vdb_tests.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# The Makefile as generated by this Make.proto supports the following targets:
+#    make         - compile all st-files to a classLib
+#    make clean   - clean all temp files
+#    make clobber - clean all
+#
+# This file contains definitions for Unix based platforms.
+# It shares common definitions with the win32-make in Make.spec.
+
+#
+# position (of this package) in directory hierarchy:
+# (must point to ST/X top directory, for tools and includes)
+TOP=../../../stx
+INCLUDE_TOP=$(TOP)/..
+
+# subdirectories where targets are to be made:
+SUBDIRS=
+
+
+# subdirectories where Makefiles are to be made:
+# (only define if different from SUBDIRS)
+# ALLSUBDIRS=
+
+REQUIRED_SUPPORT_DIRS=
+
+# if your embedded C code requires any system includes,
+# add the path(es) here:,
+# ********** OPTIONAL: MODIFY the next lines ***
+# LOCALINCLUDES=-Ifoo -Ibar
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic
+
+
+# if you need any additional defines for embedded C code,
+# add them here:,
+# ********** OPTIONAL: MODIFY the next lines ***
+# LOCALDEFINES=-Dfoo -Dbar -DDEBUG
+LOCALDEFINES=
+
+LIBNAME=libjv_vdb_tests
+STCLOCALOPT='-package=$(PACKAGE)' -I. $(LOCALINCLUDES) $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -headerDir=.  -varPrefix=$(LIBNAME)
+
+
+# ********** OPTIONAL: MODIFY the next line ***
+# additional C-libraries that should be pre-linked with the class-objects
+LD_OBJ_LIBS=
+LOCAL_SHARED_LIBS=
+
+
+# ********** OPTIONAL: MODIFY the next line ***
+# additional C targets or libraries should be added below
+LOCAL_EXTRA_TARGETS=
+
+OBJS= $(COMMON_OBJS) $(UNIX_OBJS)
+
+
+
+all:: preMake classLibRule postMake
+
+pre_objs::  
+
+
+
+
+
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+ifneq (**NOHG**, $(shell hg root 2> /dev/null || echo -n '**NOHG**'))
+jv_vdb_tests.$(O): $(shell hg root)/.hg/dirstate
+endif
+
+
+
+
+# run default testsuite for this package
+test: $(TOP)/goodies/builder/reports
+	$(MAKE) -C $(TOP)/goodies/builder/reports -f Makefile.init
+	$(TOP)/goodies/builder/reports/report-runner.sh -D . -r Builder::TestReport -p $(PACKAGE)
+
+
+
+# add more install actions here
+install::
+
+# add more install actions for aux-files (resources) here
+installAux::
+
+# add more preMake actions here
+preMake::
+
+# add more postMake actions here
+postMake:: cleanjunk
+
+# build all mandatory prerequisite packages (containing superclasses) for this package
+prereq:
+	cd $(TOP)/libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd $(TOP)/libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd $(TOP)/libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd $(TOP)/libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd $(TOP)/goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+
+
+# build all packages containing referenced classes for this package
+# they are nor needed to compile the package
+references:
+
+
+cleanjunk::
+	-rm -f *.s *.s2
+
+clean::
+	-rm -f *.o *.H
+
+clobber:: clean
+	-rm -f *.so *.dll
+
+
+# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)VDBInternalPipeStreamTests.$(O) VDBInternalPipeStreamTests.$(H): VDBInternalPipeStreamTests.st $(INCLUDE_TOP)/stx/goodies/sunit/TestAsserter.$(H) $(INCLUDE_TOP)/stx/goodies/sunit/TestCase.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)jv_vdb_tests.$(O) jv_vdb_tests.$(H): jv_vdb_tests.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
+
+# ENDMAKEDEPEND --- do not remove this line
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/Make.spec	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,64 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: jv_vdb_tests.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# This file contains specifications which are common to all platforms.
+#
+
+# Do NOT CHANGE THESE DEFINITIONS
+# (otherwise, ST/X will have a hard time to find out the packages location from its packageID,
+#  to find the source code of a class and to find the library for a package)
+MODULE=jv
+MODULE_DIR=vdb/tests
+PACKAGE=$(MODULE):$(MODULE_DIR)
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -headerDir=. : create header files locally
+#                (if removed, they will be created as common
+#  -Pxxx       : defines the package
+#  -Zxxx       : a prefix for variables within the classLib
+#  -Dxxx       : defines passed to to CC for inline C-code
+#  -Ixxx       : include path passed to CC for inline C-code
+#  +optspace   : optimized for space
+#  +optspace2  : optimized more for space
+#  +optspace3  : optimized even more for space
+#  +optinline  : generate inline code for some ST constructs
+#  +inlineNew  : additionally inline new
+#  +inlineMath : additionally inline some floatPnt math stuff
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCLOCALOPTIMIZATIONS=+optinline +inlineNew
+# STCLOCALOPTIMIZATIONS=+optspace3
+STCLOCALOPTIMIZATIONS=+optspace3
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -warn            : no warnings
+#  -warnNonStandard : no warnings about ST/X extensions
+#  -warnEOLComments : no warnings about EOL comment extension
+#  -warnPrivacy     : no warnings about privateClass extension
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCWARNINGS=-warn
+# STCWARNINGS=-warnNonStandard
+# STCWARNINGS=-warnEOLComments
+STCWARNINGS=-warnNonStandard
+
+COMMON_CLASSES= \
+	VDBInternalPipeStreamTests \
+	jv_vdb_tests \
+
+
+
+
+COMMON_OBJS= \
+    $(OUTDIR_SLASH)VDBInternalPipeStreamTests.$(O) \
+    $(OUTDIR_SLASH)jv_vdb_tests.$(O) \
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/Makefile.init	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,27 @@
+#
+# DO NOT EDIT
+#
+# make uses this file (Makefile) only, if there is no
+# file named "makefile" (lower-case m) in the same directory.
+# My only task is to generate the real makefile and call make again.
+# Thereafter, I am no longer used and needed.
+#
+# MACOSX caveat:
+#   as filenames are not case sensitive (in a default setup),
+#   we cannot use the above trick. Therefore, this file is now named
+#   "Makefile.init", and you have to execute "make -f Makefile.init" to
+#   get the initial makefile.  This is now also done by the toplevel CONFIG
+#   script.
+
+.PHONY: run
+
+run: makefile
+	$(MAKE) -f makefile
+
+#only needed for the definition of $(TOP)
+include Make.proto
+
+makefile: mf
+
+mf:
+	$(TOP)/rules/stmkmf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/VDBInternalPipeStreamTests.st	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,99 @@
+"{ Package: 'jv:vdb/tests' }"
+
+TestCase subclass:#VDBInternalPipeStreamTests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'VDB-Support-Tests'
+!
+
+
+!VDBInternalPipeStreamTests methodsFor:'tests'!
+
+test_01
+    | pipe |
+
+    pipe := VDBInternalPipeStream newWithBufferSize: 3.
+    pipe nextPut: $x.
+    pipe nextPut: $y.
+
+    self assert: pipe next == $x.
+    self assert: pipe next == $y.
+
+    "Created: / 07-06-2014 / 00:52:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_02
+    | pipe |
+
+    pipe := VDBInternalPipeStream newWithBufferSize: 3.
+    pipe nextPut: $x.
+    pipe nextPut: $y.
+    pipe nextPut: $z.
+
+    self assert: pipe next == $x.
+    self assert: pipe next == $y.
+
+    pipe nextPut: $a.
+    pipe nextPut: $b.
+
+    self assert: pipe next == $z.
+    self assert: pipe next == $a.
+    self assert: pipe next == $b.
+
+    "Created: / 07-06-2014 / 00:53:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_03
+    | pipe |
+
+    pipe := VDBInternalPipeStream newWithBufferSize: 3.
+    pipe nextPut: $x.
+    pipe nextPut: $y.
+    pipe nextPut: $z.
+
+    self assert: pipe next == $x.
+    self assert: pipe next == $y.
+
+    pipe nextPut: $a.
+    pipe nextPut: $b.
+
+    self assert: pipe next == $z.
+    self assert: pipe next == $a.
+
+    pipe nextPut: $1.
+    pipe nextPut: $2.
+
+    self assert: pipe next == $b.
+    self assert: pipe next == $1.
+    self assert: pipe next == $2.
+
+    "Created: / 07-06-2014 / 00:56:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_04
+    | pipe |
+
+    pipe := VDBInternalPipeStream newWithBufferSize: 3.
+    pipe nextPut: $x.
+    pipe nextPut: $y.
+
+    pipe close.
+    self should: [ pipe nextPut: $X ] raise: Stream writeErrorSignal.
+
+    self assert: pipe atEnd not.
+    self assert: pipe next == $x.
+    self assert: pipe next == $y.
+    self assert: pipe next isNil.
+    self assert: pipe atEnd.
+
+    "Created: / 07-06-2014 / 01:06:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBInternalPipeStreamTests class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/abbrev.stc	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,5 @@
+# automagically generated by the project definition
+# this file is needed for stc to be able to compile modules independently.
+# it provides information about a classes filename, category and especially namespace.
+VDBInternalPipeStreamTests VDBInternalPipeStreamTests jv:vdb/tests 'VDB-Support-Tests' 1
+jv_vdb_tests jv_vdb_tests jv:vdb/tests '* Projects & Packages *' 3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/bc.mak	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,86 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: jv_vdb_tests.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# Notice, that the name bc.mak is historical (from times, when only borland c was supported).
+# This file contains make rules for the win32 platform using either borland-bcc or visual-c.
+# It shares common definitions with the unix-make in Make.spec.
+# The bc.mak supports the following targets:
+#    bmake         - compile all st-files to a classLib (dll)
+#    bmake clean   - clean all temp files
+#    bmake clobber - clean all
+#
+# Historic Note:
+#  this used to contain only rules to make with borland
+#    (called via bmake, by "make.exe -f bc.mak")
+#  this has changed; it is now also possible to build using microsoft visual c
+#    (called via vcmake, by "make.exe -f bc.mak -DUSEVC")
+#
+TOP=..\..\..\stx
+INCLUDE_TOP=$(TOP)\..
+
+
+
+!INCLUDE $(TOP)\rules\stdHeader_bc
+
+!INCLUDE Make.spec
+
+LIBNAME=libjv_vdb_tests
+RESFILES=tests.$(RES)
+
+
+
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic
+LOCALDEFINES=
+
+STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
+LOCALLIBS=
+
+OBJS= $(COMMON_OBJS) $(WIN32_OBJS)
+
+ALL::  classLibRule
+
+classLibRule: $(OUTDIR) $(OUTDIR)$(LIBNAME).dll
+
+!INCLUDE $(TOP)\rules\stdRules_bc
+
+# build all mandatory prerequisite packages (containing superclasses) for this package
+prereq:
+	pushd ..\..\..\stx\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\..\stx\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\..\stx\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\..\stx\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\..\stx\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+
+
+
+
+
+
+
+test: $(TOP)\goodies\builder\reports\NUL
+	pushd $(TOP)\goodies\builder\reports & $(MAKE_BAT)
+	$(TOP)\goodies\builder\reports\report-runner.bat -D . -r Builder::TestReport -p $(PACKAGE)
+        
+clean::
+	del *.$(CSUFFIX)
+
+
+# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)VDBInternalPipeStreamTests.$(O) VDBInternalPipeStreamTests.$(H): VDBInternalPipeStreamTests.st $(INCLUDE_TOP)\stx\goodies\sunit\TestAsserter.$(H) $(INCLUDE_TOP)\stx\goodies\sunit\TestCase.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)jv_vdb_tests.$(O) jv_vdb_tests.$(H): jv_vdb_tests.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
+
+# ENDMAKEDEPEND --- do not remove this line
+
+# **Must be at end**
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+!IFDEF HGROOT
+$(OUTDIR)jv_vdb_tests.$(O): $(HGROOT)\.hg\dirstate
+!ENDIF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/bmake.bat	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,12 @@
+@REM -------
+@REM make using Borland bcc32
+@REM type bmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak  %DEFINES% %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/jv_vdb_tests.st	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,116 @@
+"{ Package: 'jv:vdb/tests' }"
+
+LibraryDefinition subclass:#jv_vdb_tests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'* Projects & Packages *'
+!
+
+
+!jv_vdb_tests class methodsFor:'description'!
+
+excludedFromPreRequisites
+    "list packages which are to be explicitely excluded from the automatic constructed
+     prerequisites list. If empty, everything that is found along the inheritance of any of
+     my classes is considered to be a prerequisite package."
+
+    ^ #(
+    )
+!
+
+mandatoryPreRequisites
+    "list packages which are mandatory as a prerequisite.
+     This are packages containing superclasses of my classes and classes which
+     are extended by myself.
+     They are mandatory, beacuse we need these packages as a prerequisite for loading and compiling.
+     This method is generated automatically,
+     by searching along the inheritance chain of all of my classes."
+
+    ^ #(
+        #'stx:goodies/sunit'    "TestAsserter - superclass of VDBInternalPipeStreamTests "
+        #'stx:libbasic'    "LibraryDefinition - superclass of jv_vdb_tests "
+    )
+!
+
+referencedPreRequisites
+    "list packages which are a prerequisite, because they contain
+     classes which are referenced by my classes.
+     We do not need these packages as a prerequisite for loading or compiling.
+     This method is generated automatically,
+     by searching all classes (and their packages) which are referenced by my classes."
+
+    ^ #(
+        #'jv:vdb'    "VDBInternalPipeStream - referenced by VDBInternalPipeStreamTests>>test_01 "
+    )
+!
+
+subProjects
+    "list packages which are known as subprojects. 
+     The generated makefile will enter those and make there as well.
+     However: they are not forced to be loaded when a package is loaded; 
+     for those, redefine requiredPrerequisites."
+
+    ^ #(
+    )
+! !
+
+!jv_vdb_tests class methodsFor:'description - contents'!
+
+classNamesAndAttributes
+    "lists the classes which are to be included in the project.
+     Each entry in the list may be: a single class-name (symbol),
+     or an array-literal consisting of class name and attributes.
+     Attributes are: #autoload or #<os> where os is one of win32, unix,..."
+
+    ^ #(
+        "<className> or (<className> attributes...) in load order"
+        VDBInternalPipeStreamTests
+        #'jv_vdb_tests'
+    )
+!
+
+extensionMethodNames
+    "list class/selector pairs of extensions.
+     A correponding method with real names must be present in my concrete subclasses"
+
+    ^ #(
+    )
+! !
+
+!jv_vdb_tests class methodsFor:'description - project information'!
+
+companyName
+    "Returns a company string which will appear in <lib>.rc.
+     Under win32, this is placed into the dlls file-info"
+
+    ^ 'My Company'
+!
+
+description
+    "Returns a description string which will appear in nt.def / bc.def"
+
+    ^ 'Class Library'
+!
+
+legalCopyright
+    "Returns a copyright string which will appear in <lib>.rc.
+     Under win32, this is placed into the dlls file-info"
+
+    ^ 'My CopyRight or CopyLeft'
+!
+
+productName
+    "Returns a product name which will appear in <lib>.rc.
+     Under win32, this is placed into the dlls file-info.
+     This method is usually redefined in a concrete application definition"
+
+    ^ 'LibraryName'
+! !
+
+!jv_vdb_tests class methodsFor:'documentation'!
+
+version_HG
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/lccmake.bat	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,8 @@
+@REM -------
+@REM make using lcc compiler
+@REM type lccmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak -DUSELCC=1 %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/libInit.cc	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,35 @@
+/*
+ * $Header$
+ *
+ * DO NOT EDIT
+ * automagically generated from the projectDefinition: jv_vdb_tests.
+ */
+#define __INDIRECTVMINITCALLS__
+#include <stc.h>
+
+#ifdef WIN32
+# pragma codeseg INITCODE "INITCODE"
+#endif
+
+#if defined(INIT_TEXT_SECTION) || defined(DLL_EXPORT)
+DLL_EXPORT void _libjv_vdb_tests_Init() INIT_TEXT_SECTION;
+DLL_EXPORT void _libjv_vdb_tests_InitDefinition() INIT_TEXT_SECTION;
+#endif
+
+void _libjv_vdb_tests_InitDefinition(pass, __pRT__, snd)
+OBJ snd; struct __vmData__ *__pRT__; {
+__BEGIN_PACKAGE2__("libjv_vdb_tests__DFN", _libjv_vdb_tests_InitDefinition, "jv:vdb/tests");
+_jv_137vdb_137tests_Init(pass,__pRT__,snd);
+
+__END_PACKAGE__();
+}
+
+void _libjv_vdb_tests_Init(pass, __pRT__, snd)
+OBJ snd; struct __vmData__ *__pRT__; {
+__BEGIN_PACKAGE2__("libjv_vdb_tests", _libjv_vdb_tests_Init, "jv:vdb/tests");
+_VDBInternalPipeStreamTests_Init(pass,__pRT__,snd);
+_jv_137vdb_137tests_Init(pass,__pRT__,snd);
+
+
+__END_PACKAGE__();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/mingwmake.bat	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,16 @@
+@REM -------
+@REM make using mingw gnu compiler
+@REM type mingwmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+
+@pushd ..\..\..\stx\rules
+@call find_mingw.bat
+@popd
+make.exe -N -f bc.mak %DEFINES% %USEMINGW_ARG% %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/tests.rc	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,37 @@
+//
+// DO NOT EDIT
+// automagically generated from the projectDefinition: jv_vdb_tests.
+//
+VS_VERSION_INFO VERSIONINFO
+  FILEVERSION     6,2,32767,32767
+  PRODUCTVERSION  6,2,4,0
+#if (__BORLANDC__)
+  FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
+  FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
+  FILEOS          VOS_NT_WINDOWS32
+  FILETYPE        VFT_DLL
+  FILESUBTYPE     VS_USER_DEFINED
+#endif
+
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "040904E4"
+    BEGIN
+      VALUE "CompanyName", "My Company\0"
+      VALUE "FileDescription", "Class Library (LIB)\0"
+      VALUE "FileVersion", "6.2.32767.32767\0"
+      VALUE "InternalName", "jv:vdb/tests\0"
+      VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
+      VALUE "ProductName", "LibraryName\0"
+      VALUE "ProductVersion", "6.2.4.0\0"
+      VALUE "ProductDate", "Sat, 07 Jun 2014 10:14:19 GMT\0"
+    END
+
+  END
+
+  BLOCK "VarFileInfo"
+  BEGIN                               //  Language   |    Translation
+    VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
+  END
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/vcmake.bat	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,20 @@
+@REM -------
+@REM make using Microsoft Visual C compiler
+@REM type vcmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+
+@if not defined VSINSTALLDIR (
+    pushd ..\..\..\stx\rules
+    call vcsetup.bat
+    popd
+)
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak -DUSEVC=1 %DEFINES% %*
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vcmake.bat	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,20 @@
+@REM -------
+@REM make using Microsoft Visual C compiler
+@REM type vcmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+
+@if not defined VSINSTALLDIR (
+    pushd ..\..\stx\rules
+    call vcsetup.bat
+    popd
+)
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak -DUSEVC=1 %DEFINES% %*
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vdb.rc	Sat Jun 07 11:21:59 2014 +0100
@@ -0,0 +1,37 @@
+//
+// DO NOT EDIT
+// automagically generated from the projectDefinition: jv_vdb.
+//
+VS_VERSION_INFO VERSIONINFO
+  FILEVERSION     6,2,32767,32767
+  PRODUCTVERSION  6,2,4,0
+#if (__BORLANDC__)
+  FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
+  FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
+  FILEOS          VOS_NT_WINDOWS32
+  FILETYPE        VFT_DLL
+  FILESUBTYPE     VS_USER_DEFINED
+#endif
+
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "040904E4"
+    BEGIN
+      VALUE "CompanyName", "My Company\0"
+      VALUE "FileDescription", "Class Library (LIB)\0"
+      VALUE "FileVersion", "6.2.32767.32767\0"
+      VALUE "InternalName", "jv:vdb\0"
+      VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
+      VALUE "ProductName", "LibraryName\0"
+      VALUE "ProductVersion", "6.2.4.0\0"
+      VALUE "ProductDate", "Sat, 07 Jun 2014 10:14:16 GMT\0"
+    END
+
+  END
+
+  BLOCK "VarFileInfo"
+  BEGIN                               //  Language   |    Translation
+    VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
+  END
+END