merge heads from Austin sync
authorcawthron
Sat, 25 Apr 2009 12:54:10 -0500
changeset 127 c937102a5510
parent 1 37df159d7f81 (current diff)
parent 126 efa1c6e4825e (diff)
child 128 c028612cc555
merge heads from Austin sync
core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/kb/CSKbManager.java
core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/CustomAboutDialog.java
core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/ProductPlugin.java
core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/ProductStartup.java
core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/actions/DisplayReleaseNotesAction.java
core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/logging/DiagnosticLog.java
core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/logging/DiagnosticLogGroup.java
core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/logging/DiagnosticLogManager.java
core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/logging/LoggingPreferencesPage.java
core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/preferences/ExtensionsPreferencesPage.java
debuggercdi/com.nokia.carbide.trk.support/Native/GetTRKVersion/TestGetTRKVersion/TestGetTRKVersion.cpp
debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/connection/TCPIPConnectionFactory.java
debuggercdi/com.nokia.cdt.debug.cw.symbian.tests/src/com/nokia/cdt/debug/cw/symbian/tests/AllTests.java
debuggercdi/com.nokia.cdt.debug.cw.symbian.tests/src/com/nokia/cdt/debug/cw/symbian/tests/DwarfReaderTest.java
debuggercdi/com.nokia.cdt.debug.cw.symbian.tests/src/com/nokia/cdt/debug/cw/symbian/tests/SymbianE32ParserTest.java
debuggercdi/com.nokia.cdt.debug.cw.symbian.tests/src/com/nokia/cdt/debug/cw/symbian/tests/SymbolReaderTest.java
debuggercdi/com.nokia.cdt.debug.cw.symbian.tests/src/com/nokia/cdt/debug/cw/symbian/tests/TestsPlugin.java
project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/images/providers/ThumbnailImageModelLabelProvider.java
uidesigner/com.nokia.carbide.cpp.uiq.ui-feature/build.properties
uidesigner/com.nokia.carbide.cpp.uiq.ui-feature/feature.xml
uidesigner/com.nokia.sdt.uidesigner-feature/build.properties
uidesigner/com.nokia.sdt.uidesigner-feature/feature.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.branch.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,2 @@
+default
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,8 @@
+# use glob syntax.
+syntax: glob
+bin
+runtime
+\.DS_Store
+connectivity/com.nokia.tcf/os/*
+connectivity/com.nokia.tcf/native/TCFNative/*/Release
+connectivity/com.nokia.tcf/native/TCFNative/*/Debug
--- a/builder/com.nokia.carbide.cdt.builder.test/META-INF/MANIFEST.MF	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/META-INF/MANIFEST.MF	Sat Apr 25 12:54:10 2009 -0500
@@ -6,16 +6,21 @@
 Bundle-Activator: com.nokia.carbide.cdt.builder.test.TestPlugin
 Bundle-Vendor: NOKIA
 Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
+Require-Bundle: abbot,
+ abbot.swt,
+ abbot.swt.eclipse,
+ org.eclipse.ui,
  org.eclipse.core.runtime,
  org.junit,
  com.nokia.carbide.cpp.sdk.core,
  org.eclipse.emf.common,
  com.nokia.carbide.cpp.project.core,
  org.eclipse.core.resources,
+ com.nokia.carbide.automation.utils,
  com.nokia.carbide.cdt.builder,
  com.nokia.carbide.cpp.epoc.engine,
  com.nokia.cpp.utils.core,
- org.eclipse.cdt.core
+ org.eclipse.cdt.core,
+ org.jdom
 Bundle-ActivationPolicy: lazy
 Export-Package: com.nokia.carbide.cdt.builder.test
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/abstractgcce.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,4 @@
+arm-none-symbianelf-g++: \test\test.cpp: No such file or directory
+arm-none-symbianelf-g++: no input files
+arm-none-symbianelf-g++: warning: `-x c++' after last input file has no effect
+arm-none-symbianelf-g++: error: some message
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/abstractgcce.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="0" message="\test\test.cpp: No such file or directory" severity="2" variable_name="^EMPTY^" external_path_string="test/test.cpp:" />
+  <!--Error Marker at index 1-->
+  <marker_info file="^EMPTY^" line_number="0" message="no input files" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 2-->
+  <marker_info file="^EMPTY^" line_number="0" message="`-x c++' after last input file has no effect" severity="1" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 3-->
+  <marker_info file="^EMPTY^" line_number="0" message="some message" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/2969.gcce.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,17 @@
+perl.exe -S ABLD.PL \Symbian\Carbide\workspace\test3\group\ target gcce urel  
+  make -r  -f "\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Symbian\Carbide\workspace\test3\group\GCCE.make" TARGET CFG=UREL VERBOSE=-s
+arm-none-symbianelf-ld: \S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\ARMV5\LIB\foo.dso: No such file: No such file or directory
+make[1]: *** [\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\GCCE\urel\test3.exe] Error 1
+make: *** [TARGETTEST3] Error 2
+
+perl.exe -S ABLD.PL \Symbian\Carbide\workspace\test3\group\ target gcce urel  
+  make -r  -f "\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Symbian\Carbide\workspace\test3\group\GCCE.make" TARGET CFG=UREL VERBOSE=-s
+arm-none-symbianelf-g++: \test\test.cpp: No such file or directory
+make[1]: *** [\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\GCCE\urel\test3.exe] Error 1
+make: *** [TARGETTEST3] Error 2
+
+perl.exe -S ABLD.PL \Symbian\Carbide\workspace\test3\group\ target gcce urel  
+  make -r  -f "\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Symbian\Carbide\workspace\test3\group\GCCE.make" TARGET CFG=UREL VERBOSE=-s
+arm-none-symbianelf-as: \test\test.s: No such file or directory
+make[1]: *** [\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\GCCE\urel\test3.exe] Error 1
+make: *** [TARGETTEST3] Error 2
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/2969.gcce.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="0" message="\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\ARMV5\LIB\foo.dso: No such file: No such file or directory" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 1-->
+  <marker_info file="^EMPTY^" line_number="0" message="\test\test.cpp: No such file or directory" severity="2" variable_name="^EMPTY^" external_path_string="test/test.cpp:" />
+  <!--Error Marker at index 2-->
+  <marker_info file="^EMPTY^" line_number="0" message="\test\test.s: No such file or directory" severity="2" variable_name="^EMPTY^" external_path_string="test/test.s:" />
+</root>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/3053.rvct.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,20 @@
+make[1]: Leaving directory `C:/Symbian/9.1/S60_3rd_MR/S60Ex/AddressBook/group'
+  make -r  -f
+"\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Symbian\9.1\S60_3rd_MR\S60Ex\AddressBook\group\ARMV5.make"
+TARGET CFG=UDEB
+Warning: C3492W: Site License not found, falling back to normal license
+ARM/Thumb C/C++ Compiler, RVCT2.2 [Build 593]
+Error: C3397E: Cannot obtain license for Compiler (feature compiler) with
+license version >= 2.2: 
+The desired vendor daemon is down
+ 1) Check the lmgrd log file, or 2) Try lmreread
+Feature:       compiler
+Vendor:Host:   asqarun1.americas.nokia.com
+License path:  7166@asqarun1.americas.nokia.com
+FLEXlm error:  -97,121
+For further information, refer to the FLEXlm End User Manual,
+available at "www.macrovision.com".
+
+make[1]: ***
+[..\..\..\EPOC32\BUILD\Symbian\9.1\S60_3rd_MR\S60Ex\AddressBook\group\ADDRESSBOOK\ARMV5\UDEB\AddressBookApp.o]
+Error 1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/3053.rvct.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="0" message="Error: C3397E: Cannot obtain license for Compiler (feature compiler) with" severity="3" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/3134.winscw.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,2 @@
+  -- C:\Symbian\9.1\S60_3rd\EPOC32\INCLUDE\RVCT0_0\RVCT0_0.H: No such file or directory
+  ERROR: cpp.EXE failure
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/3134.winscw.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="-1" message="RVCT not installed or 'armcc' is not on PATH. Please check that your environment for the RVCT compiler is correct." severity="3" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 1-->
+  <marker_info file="^EMPTY^" line_number="-1" message="ERROR: cpp.EXE failure" severity="3" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/3201.winscw.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,9 @@
+process_begin: CreateProcess((null), mwccsym2.exe -g -O0 -wchar_t off -align 4
+-warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool
+-nostdinc -d _DEBUG -d _UNICODE -d __SYMBIAN32__ -d __CW32__ -d __WINS__ -d
+__WINSCW__ -cwd source -i- -i
+\AUSCVS_JOEY_DEV\ECLIPSE\RUNTIME-NEW_CONFIGURATION\TESTLIB\INC -i
+\Symbian\8.0a\S60_2nd_FP2_CW\EPOC32\INCLUDE -o
+\Symbian\8.0a\S60_2nd_FP2_CW\EPOC32\BUILD\AUSCVS_JOEY_DEV\ECLIPSE\RUNTIME-NEW_CONFIGURATION\TESTLIB\GROUP\TESTLIB\WINSCW\UDEB\TESTLIB.o
+-c \AUSCVS_JOEY_DEV\ECLIPSE\RUNTIME-NEW_CONFIGURATION\TESTLIB\SRC\Testlib.cpp,
+...) failed.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/3201.winscw.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="-1" message="Cannot launch a process. Check the build console for process creation errors." severity="3" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/3490.winscw.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,1 @@
+'nmake' is not recognized as an internal or external command, operable program or batch file.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/3490.winscw.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="-1" message="'nmake' is not recognized as an internal or external command, operable program or batch file." severity="3" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/3642.winscw.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,11 @@
+***Performing targeted build for configuration... Phone Debug (GCCE)
+[S60_3rd_MR].
+C:\WINNT\system32\cmd.exe /c abld  target GCCE UDEB  -v 
+  make -r  -f
+"\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Symbian\Carbide\workspace\baz\group\GCCE.make"
+TARGET CFG=UDEB
+The process cannot access the file because it is being used by another process.
+make[1]: *** [..\..\..\..\9.1\S60_3rd_MR\EPOC32\RELEASE\GCCE\UDEB\baz.exe]
+Error 1
+make: *** [TARGETBAZ] Error 2
+make   -C \Symbian\Carbide\workspace\baz\group -f "ICONS_SCALABLE_DC.MK"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/3642.winscw.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="0" message="The process cannot access the file because it is being used by another process." severity="3" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/4541.gcce.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,6 @@
+perl.exe -S ABLD.PL \Symbian\Carbide\kinoma\test3\group\ target gcce urel  
+  make -r  -f "\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Symbian\Carbide\kinoma\test3\group\GCCE.make" TARGET CFG=UREL VERBOSE=-s
+\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Symbian\Carbide\kinoma\test3\group\TEST3\GCCE\UREL\test3.o: In function `MainL()':
+test3.cpp:(.text+0x14): undefined reference to `foo()'
+make[1]: *** [\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\GCCE\urel\test3.exe] Error 1
+make: *** [TARGETTEST3] Error 2
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/4541.gcce.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="0" message="test3.cpp: undefined reference to `foo()'" severity="2" variable_name="^EMPTY^" external_path_string="test3.cpp:" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/5618.gcce.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,13 @@
+perl.exe -S ABLD.PL \develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\ target gcce urel  
+  make -r  -f "\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\GCCE.make" TARGET CFG=UREL VERBOSE=-s
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x14): undefined reference to `CScanEngine::HandleEvent(TECAMEvent const&)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x18): undefined reference to `CScanEngine::ViewFinderReady(MCameraBuffer&, int)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x1c): undefined reference to `CScanEngine::ImageBufferReady(MCameraBuffer&, int)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x20): undefined reference to `CScanEngine::VideoBufferReady(MCameraBuffer&, int)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x2c): undefined reference to `non-virtual thunk to CScanEngine::HandleEvent(TECAMEvent const&)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x30): undefined reference to `non-virtual thunk to CScanEngine::ViewFinderReady(MCameraBuffer&, int)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x34): undefined reference to `non-virtual thunk to CScanEngine::ImageBufferReady(MCameraBuffer&, int)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x38): undefined reference to `non-virtual thunk to CScanEngine::VideoBufferReady(MCameraBuffer&, int)'
+make[1]: *** [..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\RELEASE\GCCE\UREL\BarcMe_20008181.exe] Error 1
+make: *** [TARGETBARCME] Error 2
+make -j 4 -s  -r -f "\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\BARCME.GCCE" UREL
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/5618.gcce.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x14): undefined reference to `CScanEngine::HandleEvent(TECAMEvent const&amp;)'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 1-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x18): undefined reference to `CScanEngine::ViewFinderReady(MCameraBuffer&amp;, int)'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 2-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x1c): undefined reference to `CScanEngine::ImageBufferReady(MCameraBuffer&amp;, int)'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 3-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x20): undefined reference to `CScanEngine::VideoBufferReady(MCameraBuffer&amp;, int)'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 4-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x2c): undefined reference to `non-virtual thunk to CScanEngine::HandleEvent(TECAMEvent const&amp;)'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 5-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x30): undefined reference to `non-virtual thunk to CScanEngine::ViewFinderReady(MCameraBuffer&amp;, int)'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 6-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x34): undefined reference to `non-virtual thunk to CScanEngine::ImageBufferReady(MCameraBuffer&amp;, int)'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 7-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\develop\S60-3P\BarcMeProject\BarcMe\CS60-3P\BARCME\GCCE\UREL\ScanEngine.o:(.rodata+0x38): undefined reference to `non-virtual thunk to CScanEngine::VideoBufferReady(MCameraBuffer&amp;, int)'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/5824.gcce.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,23 @@
+perl.exe -S ABLD.PL \BlackFlag\ target gcce udeb  
+  make -r  -f "\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\BlackFlag\GCCE.make" TARGET
+CFG=UDEB VERBOSE=-s
+arm-none-symbianelf-g++: ..\..\SRC\Main.cpp: No such file or directory
+arm-none-symbianelf-g++: warning: `-x c++' after last input file has no effect
+arm-none-symbianelf-g++: no input files
+arm-none-symbianelf-g++: ..\..\SRC\Dbg_breakpoints.cpp: No such file or directory
+arm-none-symbianelf-g++: warning: `-x c++' after last input file has no effect
+arm-none-symbianelf-g++: no input files
+make[1]: ***
+[..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\BlackFlag\BLACKFLAG\GCCE\UDEB\main.o] Error 1
+make[1]: *** Waiting for unfinished jobs....
+make[1]: ***
+[..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\BlackFlag\BLACKFLAG\GCCE\UDEB\dbg_breakpoints.o] Error 1
+arm-none-symbianelf-g++: ..\..\SRC\Dbg_debug_menu.cpp: No such file or directory
+arm-none-symbianelf-g++: warning: `-x c++' after last input file has no effect
+arm-none-symbianelf-g++: no input files
+make[1]: ***
+[..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\BlackFlag\BLACKFLAG\GCCE\UDEB\dbg_debug_menu.o] Error 1
+make: *** [TARGETBLACKFLAG] Error 2
+arm-none-symbianelf-g++: ..\..\SRC\Dbg_derived_types.cpp: No such file or directory
+arm-none-symbianelf-g++: warning: `-x c++' after last input file has no effect
+arm-none-symbianelf-g++: no input files
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/5824.gcce.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\SRC\Main.cpp: No such file or directory" severity="2" variable_name="^EMPTY^" external_path_string="../../SRC/Main.cpp:" />
+  <!--Error Marker at index 1-->
+  <marker_info file="^EMPTY^" line_number="0" message="`-x c++' after last input file has no effect" severity="1" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 2-->
+  <marker_info file="^EMPTY^" line_number="0" message="no input files" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 3-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\SRC\Dbg_breakpoints.cpp: No such file or directory" severity="2" variable_name="^EMPTY^" external_path_string="../../SRC/Dbg_breakpoints.cpp:" />
+  <!--Error Marker at index 4-->
+  <marker_info file="^EMPTY^" line_number="0" message="`-x c++' after last input file has no effect" severity="1" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 5-->
+  <marker_info file="^EMPTY^" line_number="0" message="no input files" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 6-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\SRC\Dbg_debug_menu.cpp: No such file or directory" severity="2" variable_name="^EMPTY^" external_path_string="../../SRC/Dbg_debug_menu.cpp:" />
+  <!--Error Marker at index 7-->
+  <marker_info file="^EMPTY^" line_number="0" message="`-x c++' after last input file has no effect" severity="1" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 8-->
+  <marker_info file="^EMPTY^" line_number="0" message="no input files" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 9-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\SRC\Dbg_derived_types.cpp: No such file or directory" severity="2" variable_name="^EMPTY^" external_path_string="../../SRC/Dbg_derived_types.cpp:" />
+  <!--Error Marker at index 10-->
+  <marker_info file="^EMPTY^" line_number="0" message="`-x c++' after last input file has no effect" severity="1" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 11-->
+  <marker_info file="^EMPTY^" line_number="0" message="no input files" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/6415.winscw.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,17 @@
+Reportagencycontainer.cpp
+Reportcontainer.cpp
+Reportprojectcontainer.cpp
+Reportselectcontainer.cpp
+Reportsummarycontainer.cpp
+Reporttaskcontainer.cpp
+Reportview.cpp
+Yearselectitem.cpp
+Importhistorycontainer.cpp
+make[1]: *** [..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\RELEASE\GCCE\UREL\Punch2Go_A00001CE.exe] Error 87
+Importprogressdlgimpl.cpp
+Logentrydetailsdlg.cpp
+Logentrydetailscontainer.cpp
+Logentryeditdlg.cpp
+Logentryeditlistbox.cpp
+make: *** [TARGETPUNCH2GO] Error 2
+Maincontainer.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/6415.winscw.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="-1" message="make[1]: *** [..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\RELEASE\GCCE\UREL\Punch2Go_A00001CE.exe] Error 87 - possibly too many arguments.  If there are a lot of source files in a library, try breaking those out into multiple libraries." severity="3" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/6417.gcce.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,181 @@
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::NewL(CDataKeeper&)':
+Overtimehandler.cpp:(.text+0x0): multiple definition of `COvertimeHandler::NewL(CDataKeeper&)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x0): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::COvertimeHandler(CDataKeeper&)':
+Overtimehandler.cpp:(.text+0xa4): multiple definition of `COvertimeHandler::COvertimeHandler(CDataKeeper&)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0xa4): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::ConstructL()':
+Overtimehandler.cpp:(.text+0x1ac): multiple definition of `COvertimeHandler::ConstructL()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x1ac): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::COvertimeHandler(CDataKeeper&)':
+Overtimehandler.cpp:(.text+0x40): multiple definition of `COvertimeHandler::COvertimeHandler(CDataKeeper&)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x40): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::restoreDefaultValues()':
+Overtimehandler.cpp:(.text+0x3b8): multiple definition of `COvertimeHandler::restoreDefaultValues()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x3b8): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x0): multiple definition of `vtable for COvertimeHandler'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x0): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::~COvertimeHandler()':
+Overtimehandler.cpp:(.text+0x108): multiple definition of `COvertimeHandler::~COvertimeHandler()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x108): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::~COvertimeHandler()':
+Overtimehandler.cpp:(.text+0x13c): multiple definition of `COvertimeHandler::~COvertimeHandler()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x13c): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::~COvertimeHandler()':
+Overtimehandler.cpp:(.text+0x170): multiple definition of `COvertimeHandler::~COvertimeHandler()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x170): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::save(MSettingsStorage&)':
+Overtimehandler.cpp:(.text+0x1b0): multiple definition of `COvertimeHandler::save(MSettingsStorage&)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x1b0): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::load(MSettingsStorage&)':
+Overtimehandler.cpp:(.text+0x280): multiple definition of `COvertimeHandler::load(MSettingsStorage&)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x280): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::handleViewActivated()':
+Overtimehandler.cpp:(.text+0x450): multiple definition of `COvertimeHandler::handleViewActivated()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x450): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::handleViewDeactivated()':
+Overtimehandler.cpp:(.text+0x454): multiple definition of `COvertimeHandler::handleViewDeactivated()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x454): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::handleWentBackground()':
+Overtimehandler.cpp:(.text+0x458): multiple definition of `COvertimeHandler::handleWentBackground()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x458): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::handleWentForeground()':
+Overtimehandler.cpp:(.text+0x45c): multiple definition of `COvertimeHandler::handleWentForeground()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x45c): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getOvertimeEngine()':
+Overtimehandler.cpp:(.text+0x460): multiple definition of `COvertimeHandler::getOvertimeEngine()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x460): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getPunchEngine()':
+Overtimehandler.cpp:(.text+0x478): multiple definition of `COvertimeHandler::getPunchEngine()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x478): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getSelectedHolidayId() const':
+Overtimehandler.cpp:(.text+0x490): multiple definition of `COvertimeHandler::getSelectedHolidayId() const'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x490): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getSelectedHolidayObject()':
+Overtimehandler.cpp:(.text+0x498): multiple definition of `COvertimeHandler::getSelectedHolidayObject()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x498): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getEditHolidayObject()':
+Overtimehandler.cpp:(.text+0x4c0): multiple definition of `COvertimeHandler::getEditHolidayObject()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x4c0): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getSelectedVacationId() const':
+Overtimehandler.cpp:(.text+0x4c8): multiple definition of `COvertimeHandler::getSelectedVacationId() const'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x4c8): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getSelectedVacationObject()':
+Overtimehandler.cpp:(.text+0x4d0): multiple definition of `COvertimeHandler::getSelectedVacationObject()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x4d0): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getEditVacationObject()':
+Overtimehandler.cpp:(.text+0x4f8): multiple definition of `COvertimeHandler::getEditVacationObject()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x4f8): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getStartStatistics() const':
+Overtimehandler.cpp:(.text+0x500): multiple definition of `COvertimeHandler::getStartStatistics() const'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x500): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getEndStatistics() const':
+Overtimehandler.cpp:(.text+0x508): multiple definition of `COvertimeHandler::getEndStatistics() const'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x508): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getStartResult() const':
+Overtimehandler.cpp:(.text+0x510): multiple definition of `COvertimeHandler::getStartResult() const'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x510): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::getWorkHours() const':
+Overtimehandler.cpp:(.text+0x518): multiple definition of `COvertimeHandler::getWorkHours() const'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x518): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::setSelectedHolidayId(int)':
+Overtimehandler.cpp:(.text+0x520): multiple definition of `COvertimeHandler::setSelectedHolidayId(int)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x520): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::setSelectedVacationId(int)':
+Overtimehandler.cpp:(.text+0x528): multiple definition of `COvertimeHandler::setSelectedVacationId(int)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x528): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::setStartStatistics(TTime const&)':
+Overtimehandler.cpp:(.text+0x530): multiple definition of `COvertimeHandler::setStartStatistics(TTime const&)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x530): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::setEndStatistics(TTime const&)':
+Overtimehandler.cpp:(.text+0x598): multiple definition of `COvertimeHandler::setEndStatistics(TTime const&)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x598): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::setStartResult(int)':
+Overtimehandler.cpp:(.text+0x600): multiple definition of `COvertimeHandler::setStartResult(int)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x600): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::setWorkHours(int)':
+Overtimehandler.cpp:(.text+0x63c): multiple definition of `COvertimeHandler::setWorkHours(int)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x63c): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::handleHolidayEditL(MObjectProvider*, MReloadable*)':
+Overtimehandler.cpp:(.text+0x678): multiple definition of `COvertimeHandler::handleHolidayEditL(MObjectProvider*, MReloadable*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x678): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::canModifyObject(TBOBase const*)':
+Overtimehandler.cpp:(.text+0xb20): multiple definition of `COvertimeHandler::canModifyObject(TBOBase const*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0xb20): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::handleHolidayNewL(MObjectProvider*, MReloadable*)':
+Overtimehandler.cpp:(.text+0x750): multiple definition of `COvertimeHandler::handleHolidayNewL(MObjectProvider*, MReloadable*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x750): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::handleHolidayDeleteL(MObjectProvider*, MReloadable*)':
+Overtimehandler.cpp:(.text+0x7f4): multiple definition of `COvertimeHandler::handleHolidayDeleteL(MObjectProvider*, MReloadable*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x7f4): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::handleVacationEditL(MObjectProvider*, MReloadable*)':
+Overtimehandler.cpp:(.text+0x8cc): multiple definition of `COvertimeHandler::handleVacationEditL(MObjectProvider*, MReloadable*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x8cc): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::handleVacationNewL(MObjectProvider*, MReloadable*)':
+Overtimehandler.cpp:(.text+0x9a4): multiple definition of `COvertimeHandler::handleVacationNewL(MObjectProvider*, MReloadable*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0x9a4): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o: In function `COvertimeHandler::handleVacationDeleteL(MObjectProvider*, MReloadable*)':
+Overtimehandler.cpp:(.text+0xa48): multiple definition of `COvertimeHandler::handleVacationDeleteL(MObjectProvider*, MReloadable*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp:(.text+0xa48): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x64): multiple definition of `typeinfo for COvertimeHandler'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x64): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x50): multiple definition of `typeinfo name for COvertimeHandler'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x50): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::CMyContainer(CDataKeeper*)':
+Mycontainer.cpp:(.text+0x0): multiple definition of `CMyContainer::CMyContainer(CDataKeeper*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x0): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x0): multiple definition of `vtable for CMyContainer'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x0): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::CMyContainer(CDataKeeper*)':
+Mycontainer.cpp:(.text+0x5c): multiple definition of `CMyContainer::CMyContainer(CDataKeeper*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x5c): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::~CMyContainer()':
+Mycontainer.cpp:(.text+0xb8): multiple definition of `CMyContainer::~CMyContainer()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0xb8): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::~CMyContainer()':
+Mycontainer.cpp:(.text+0x144): multiple definition of `CMyContainer::~CMyContainer()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x144): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::~CMyContainer()':
+Mycontainer.cpp:(.text+0x1d0): multiple definition of `CMyContainer::~CMyContainer()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x1d0): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::BaseContainerConstructL()':
+Mycontainer.cpp:(.text+0x264): multiple definition of `CMyContainer::BaseContainerConstructL()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x264): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::getDataKeeper() const':
+Mycontainer.cpp:(.text+0x268): multiple definition of `CMyContainer::getDataKeeper() const'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x268): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::handleSizeChanged(TRect const&)':
+Mycontainer.cpp:(.text+0x270): multiple definition of `CMyContainer::handleSizeChanged(TRect const&)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x270): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::CountComponentControls() const':
+Mycontainer.cpp:(.text+0x284): multiple definition of `CMyContainer::CountComponentControls() const'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x284): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::ComponentControl(int) const':
+Mycontainer.cpp:(.text+0x29c): multiple definition of `CMyContainer::ComponentControl(int) const'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x29c): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::addControlL(CCoeControl*)':
+Mycontainer.cpp:(.text+0x2c8): multiple definition of `CMyContainer::addControlL(CCoeControl*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x2c8): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::removeControl(CCoeControl*)':
+Mycontainer.cpp:(.text+0x318): multiple definition of `CMyContainer::removeControl(CCoeControl*)'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x318): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::resetControls()':
+Mycontainer.cpp:(.text+0x3a8): multiple definition of `CMyContainer::resetControls()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x3a8): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::handleBeforeDestruction()':
+Mycontainer.cpp:(.text+0x3c8): multiple definition of `CMyContainer::handleBeforeDestruction()'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x3c8): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o: In function `CMyContainer::isDestructing() const':
+Mycontainer.cpp:(.text+0x3f0): multiple definition of `CMyContainer::isDestructing() const'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp:(.text+0x3f0): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x118): multiple definition of `typeinfo for CMyContainer'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x118): first defined here
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x108): multiple definition of `typeinfo name for CMyContainer'
+..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x108): first defined here
+make[1]: *** [..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\RELEASE\GCCE\UREL\P2GData_A00001CD.dll] Error 1
+make: *** [TARGETP2GDATACLASSES] Error 2
+make -j 4 -s  -C \Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3 -f "PROGRAMICON.MK" TO_ROOT=..\..\..\..\.. EPOCBLD=..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\PROGRAMICON\GCCE TO_BLDINF=..\..\..\..\..\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3 PLATFORM=GCCE CFG=UREL BLD
+make -j 4 -s  -C \Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3 -f "PROGRAMGRAPHICS.MK" TO_ROOT=..\..\..\..\.. EPOCBLD=..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\PROGRAMGRAPHICS\GCCE TO_BLDINF=..\..\..\..\..\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3 PLATFORM=GCCE CFG=UREL BLD
+make -j 4 -s  -r -f "\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GCOMMON\GCCE\P2GCOMMON.GCCE" UREL
+make -j 4 -s  -r -f "\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GSERVER\GCCE\P2GSERVER.GCCE" UREL
+make -j 4 -s  -r -f "\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\P2GDATACLASSES.GCCE" UREL
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/bugzilla/6417.gcce.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::NewL(CDataKeeper&amp;)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 1-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 2-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::COvertimeHandler(CDataKeeper&amp;)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 3-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 4-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::ConstructL()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 5-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 6-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::COvertimeHandler(CDataKeeper&amp;)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 7-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 8-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::restoreDefaultValues()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 9-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 10-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x0): multiple definition of `vtable for COvertimeHandler'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 11-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x0): first defined here" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 12-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::~COvertimeHandler()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 13-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 14-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::~COvertimeHandler()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 15-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 16-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::~COvertimeHandler()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 17-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 18-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::save(MSettingsStorage&amp;)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 19-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 20-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::load(MSettingsStorage&amp;)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 21-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 22-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::handleViewActivated()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 23-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 24-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::handleViewDeactivated()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 25-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 26-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::handleWentBackground()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 27-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 28-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::handleWentForeground()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 29-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 30-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getOvertimeEngine()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 31-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 32-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getPunchEngine()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 33-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 34-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getSelectedHolidayId() const'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 35-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 36-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getSelectedHolidayObject()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 37-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 38-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getEditHolidayObject()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 39-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 40-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getSelectedVacationId() const'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 41-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 42-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getSelectedVacationObject()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 43-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 44-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getEditVacationObject()'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 45-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 46-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getStartStatistics() const'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 47-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 48-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getEndStatistics() const'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 49-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 50-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getStartResult() const'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 51-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 52-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::getWorkHours() const'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 53-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 54-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::setSelectedHolidayId(int)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 55-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 56-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::setSelectedVacationId(int)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 57-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 58-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::setStartStatistics(TTime const&amp;)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 59-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 60-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::setEndStatistics(TTime const&amp;)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 61-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 62-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::setStartResult(int)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 63-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 64-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::setWorkHours(int)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 65-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 66-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::handleHolidayEditL(MObjectProvider*, MReloadable*)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 67-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 68-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::canModifyObject(TBOBase const*)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 69-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 70-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::handleHolidayNewL(MObjectProvider*, MReloadable*)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 71-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 72-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::handleHolidayDeleteL(MObjectProvider*, MReloadable*)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 73-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 74-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::handleVacationEditL(MObjectProvider*, MReloadable*)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 75-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 76-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::handleVacationNewL(MObjectProvider*, MReloadable*)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 77-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 78-->
+  <marker_info file="^EMPTY^" line_number="0" message="Overtimehandler.cpp: multiple definition of `COvertimeHandler::handleVacationDeleteL(MObjectProvider*, MReloadable*)'" severity="2" variable_name="^EMPTY^" external_path_string="Overtimehandler.cpp:" />
+  <!--Error Marker at index 79-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:Overtimehandler.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/OvertimeHandler.o:Overtimehandler.cpp:" />
+  <!--Error Marker at index 80-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x64): multiple definition of `typeinfo for COvertimeHandler'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 81-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x64): first defined here" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 82-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x50): multiple definition of `typeinfo name for COvertimeHandler'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 83-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\OvertimeHandler.o:(.rodata+0x50): first defined here" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 84-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::CMyContainer(CDataKeeper*)'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 85-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 86-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x0): multiple definition of `vtable for CMyContainer'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 87-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x0): first defined here" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 88-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::CMyContainer(CDataKeeper*)'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 89-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 90-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::~CMyContainer()'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 91-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 92-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::~CMyContainer()'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 93-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 94-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::~CMyContainer()'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 95-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 96-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::BaseContainerConstructL()'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 97-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 98-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::getDataKeeper() const'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 99-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 100-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::handleSizeChanged(TRect const&amp;)'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 101-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 102-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::CountComponentControls() const'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 103-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 104-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::ComponentControl(int) const'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 105-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 106-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::addControlL(CCoeControl*)'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 107-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 108-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::removeControl(CCoeControl*)'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 109-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 110-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::resetControls()'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 111-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 112-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::handleBeforeDestruction()'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 113-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 114-->
+  <marker_info file="^EMPTY^" line_number="0" message="Mycontainer.cpp: multiple definition of `CMyContainer::isDestructing() const'" severity="2" variable_name="^EMPTY^" external_path_string="Mycontainer.cpp:" />
+  <!--Error Marker at index 115-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:Mycontainer.cpp: first defined here" severity="2" variable_name="^EMPTY^" external_path_string="../../../../../Symbian/9.1/S60_3rd_MR/EPOC32/BUILD/Carb13rc2/Workspace-P2G-3/Punch2Go-S60-3/Punch2Go/CS60-3/P2GDATACLASSES/GCCE/UREL/MyContainer.o:Mycontainer.cpp:" />
+  <!--Error Marker at index 116-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x118): multiple definition of `typeinfo for CMyContainer'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 117-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x118): first defined here" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 118-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x108): multiple definition of `typeinfo name for CMyContainer'" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 119-->
+  <marker_info file="^EMPTY^" line_number="0" message="..\..\..\..\..\Symbian\9.1\S60_3rd_MR\EPOC32\BUILD\Carb13rc2\Workspace-P2G-3\Punch2Go-S60-3\Punch2Go\CS60-3\P2GDATACLASSES\GCCE\UREL\MyContainer.o:(.rodata+0x108): first defined here" severity="2" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+</root>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/gnu_as.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,2 @@
+/Symbian/Carbide/workspace/test/src/Foo.s: Assembler messages:
+/Symbian/Carbide/workspace/test/src/Foo.s:13: Warning: ignoring redefinition of register alias 'WIDTH'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/gnu_as.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,5 @@
+<root>
+<!--Error Marker at index 0-->
+<marker_info external_path_string="/Symbian/Carbide/workspace/test/src/Foo.s" file="^EMPTY^" line_number="13" message="/Symbian/Carbide/workspace/test/src/Foo.s ignoring redefinition of register alias 'WIDTH'" severity="1" variable_name="^EMPTY^"/>
+</root>
+
--- a/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/makmake.errors.regression.1.xml	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/makmake.errors.regression.1.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -1,18 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <root>
-<!--Error Marker at index 0-->
-<marker_info external_path_string="/APPS/Nokia/DDB21Nightly/workspace/ListBox/group/LISTBOX.MMP" file="^EMPTY^" line_number="2" message="Unrecognised Keyword &quot;TARGE&quot;[\APPS\Nokia\DDB21Nightly\workspace\ListBox\group\LISTBOX.MMP]" severity="1" variable_name="^EMPTY^"/>
-<!--Error Marker at index 1-->
-<marker_info external_path_string="^EMPTY^" file="^EMPTY^" line_number="-1" message="ERROR: No Target specified" severity="3" variable_name="^EMPTY^"/>
-<!--Error Marker at index 2-->
-<marker_info external_path_string="/APPS/Nokia/DDB21Nightly/workspace/ListBox/group/LISTBOX.MMP" file="^EMPTY^" line_number="11" message="SOURCEPATH &quot;\APPS\Nokia\DDB21Nightly\workspace\ListBox\datx\&quot; not found[\APPS\Nokia\DDB21Nightly\workspace\ListBox\group\LISTBOX.MMP]" severity="1" variable_name="^EMPTY^"/>
-<!--Error Marker at index 3-->
-<marker_info external_path_string="/APPS/Nokia/DDB21Nightly/workspace/ListBox/group/LISTBOX.MMP" file="^EMPTY^" line_number="6" message="Stack size doesn't fit expected number format[\APPS\Nokia\DDB21Nightly\workspace\ListBox\group\LISTBOX.MMP]" severity="3" variable_name="^EMPTY^"/>
-<!--Error Marker at index 4-->
-<marker_info external_path_string="/APPS/Nokia/DDB21Nightly/workspace/ListBox/group/LISTBOX.MMP" file="^EMPTY^" line_number="42" message="BITMAP color depth &quot;listboxlistbox.cpp&quot; - unexpected format[\APPS\Nokia\DDB21Nightly\workspace\ListBox\group\LISTBOX.MMP]" severity="3" variable_name="^EMPTY^"/>
-<!--Error Marker at index 5-->
-<marker_info external_path_string="^EMPTY^" file="^EMPTY^" line_number="-1" message="ERROR: No Sources specified" severity="3" variable_name="^EMPTY^"/>
-<!--Error Marker at index 6-->
-<marker_info external_path_string="^EMPTY^" file="^EMPTY^" line_number="-1" message="ERROR: No Sources specified" severity="3" variable_name="^EMPTY^"/>
-<!--Error Marker at index 7-->
-<marker_info external_path_string="X:/SWATI_Symbian_Tools/Trace/TraceCore/group2/BLD.INF" file="^EMPTY^" line_number="59" message="#error test[X:\SWATI_Symbian_Tools\Trace\TraceCore\group2\BLD.INF]" severity="3" variable_name="^EMPTY^"/>
+  <!--Error Marker at index 0-->
+  <marker_info file="^EMPTY^" line_number="2" message="Unrecognised Keyword &quot;TARGE&quot;[\APPS\Nokia\DDB21Nightly\workspace\ListBox\group\LISTBOX.MMP]" severity="1" variable_name="^EMPTY^" external_path_string="/APPS/Nokia/DDB21Nightly/workspace/ListBox/group/LISTBOX.MMP" />
+  <!--Error Marker at index 1-->
+  <marker_info file="^EMPTY^" line_number="-1" message="ERROR: No Target specified" severity="3" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 2-->
+  <marker_info file="^EMPTY^" line_number="11" message="SOURCEPATH &quot;\APPS\Nokia\DDB21Nightly\workspace\ListBox\datx\&quot; not found[\APPS\Nokia\DDB21Nightly\workspace\ListBox\group\LISTBOX.MMP]" severity="1" variable_name="^EMPTY^" external_path_string="/APPS/Nokia/DDB21Nightly/workspace/ListBox/group/LISTBOX.MMP" />
+  <!--Error Marker at index 3-->
+  <marker_info file="^EMPTY^" line_number="6" message="Stack size doesn't fit expected number format[\APPS\Nokia\DDB21Nightly\workspace\ListBox\group\LISTBOX.MMP]" severity="3" variable_name="^EMPTY^" external_path_string="/APPS/Nokia/DDB21Nightly/workspace/ListBox/group/LISTBOX.MMP" />
+  <!--Error Marker at index 4-->
+  <marker_info file="^EMPTY^" line_number="42" message="BITMAP color depth &quot;listboxlistbox.cpp&quot; - unexpected format[\APPS\Nokia\DDB21Nightly\workspace\ListBox\group\LISTBOX.MMP]" severity="3" variable_name="^EMPTY^" external_path_string="/APPS/Nokia/DDB21Nightly/workspace/ListBox/group/LISTBOX.MMP" />
+  <!--Error Marker at index 5-->
+  <marker_info file="^EMPTY^" line_number="-1" message="ERROR: No Sources specified" severity="3" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 6-->
+  <marker_info file="^EMPTY^" line_number="-1" message="ERROR: No Sources specified" severity="3" variable_name="^EMPTY^" external_path_string="^EMPTY^" />
+  <!--Error Marker at index 7-->
+  <marker_info file="^EMPTY^" line_number="59" message="X:\SWATI_Symbian_Tools\Trace\TraceCore\group2\BLD.INF #error test" severity="2" variable_name="^EMPTY^" external_path_string="X:/SWATI_Symbian_Tools/Trace/TraceCore/group2/BLD.INF" />
 </root>
+
--- a/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/sbsv2.errors.input.txt	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/sbsv2.errors.input.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -39,4 +39,11 @@
 
 make: *** Waiting for unfinished jobs....
 
-</buildlog>
\ No newline at end of file
+</buildlog>
+
+<![CDATA[
++ C:/APPS/rvct22_616/bin/armlink.exe --diag_suppress 6331 --bpabi --reloc --no_scanlib --datacompressor=off --debug --dll --split --rw-base 0x400000 --symver_soname --soname 'helloworld{000a0000}[e800005a].exe' --entry _E32Startup 'P:/epoc32/release/armv5/udeb/eexe.lib(uc_exe_.o)' -o P:/epoc32/release/armv5/udeb/helloworld.exe.sym --symbols --list P:/epoc32/release/armv5/udeb/helloworld.exe.map --via P:/epoc32/build/helloworld/c_34df0185eb73bae4/helloworld_exe/armv5/udeb/helloworld_udeb_objects.via P:/epoc32/release/armv5/udeb/usrt2_2.lib P:/epoc32/release/armv5/lib/euser.dso P:/epoc32/release/armv5/lib/apparc.dso P:/epoc32/release/armv5/lib/cone.dso P:/epoc32/release/armv5/lib/eikcore.dso P:/epoc32/release/armv5/lib/gdi.dso P:/epoc32/release/armv5/lib/drtaeabi.dso P:/epoc32/release/armv5/lib/dfpaeabi.dso P:/epoc32/release/armv5/lib/dfprvct2_2.dso P:/epoc32/release/armv5/lib/drtrvct2_2.dso 'C:/APPS/rvct22_616/lib/armlib/h_t__uf.l(switch8.o)'
+Fatal error: L6002U: Could not open file P:/epoc32/build/helloworld/c_34df0185eb73bae4/helloworld_exe/armv5/udeb/HelloWorld_AppUi.o: No such file or directory
+Not enough information to list image symbols.
+Finished: 1 information, 0 warning, 0 error and 1 fatal error messages.
+]]>
--- a/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/sbsv2.errors.regression.xml	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/sbsv2.errors.regression.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -1,4 +1,6 @@
 <root>
 <!--Error Marker at index 0-->
 <marker_info external_path_string="^EMPTY^" file="^EMPTY^" line_number="-1" message="While Searching for a SPECIFIED DEFFILE: file not found: L:/src/common/generic/app-framework/cone/bwins/CONExu.DEF" severity="1" variable_name="^EMPTY^"/>
+<!--Error Marker at index 1-->
+<marker_info external_path_string="^EMPTY^" file="^EMPTY^" line_number="0" message="Fatal error: L6002U: Could not open file P:/epoc32/build/helloworld/c_34df0185eb73bae4/helloworld_exe/armv5/udeb/HelloWorld_AppUi.o: No such file or directory" severity="3" variable_name="^EMPTY^"/>
 </root>
\ No newline at end of file
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/ProjectPropertiesTest.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/ProjectPropertiesTest.java	Sat Apr 25 12:54:10 2009 -0500
@@ -26,7 +26,9 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.NullProgressMonitor;
 
+import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.project.IBuildArgumentsInfo;
 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectModifier;
@@ -250,6 +252,92 @@
 		assertEquals(false, readSisInfo.isCreateStubFormat());
 	}
 	
+	public void testSBSv1BuildArgsReadWrite(){
+		
+		final String build_ARG = "-testbuild";
+		final String clean_ARG = "-testclean";
+		final String export_ARG = "-testexport";
+		final String final_ARG = "-testfinal";
+		final String freeze_ARG = "-testfreeze";
+		final String library_ARG = "-testlibrary";
+		final String makefile_ARG = "-testmakefile";
+		final String resource_ARG = "-testresource";
+		final String target_ARG = "-testtarget";
+		
+		ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
+		assertNotNull("Ooops, ICarbideProjectInfo is null, something bad happened.", cpi);
+		
+		ICarbideBuildConfiguration defaultConfig = cpi.getDefaultConfiguration();
+		BuildArgumentsInfo argInfoCopyOrig = defaultConfig.getBuildArgumentsInfoCopy();
+		BuildArgumentsInfo argInfoCopyMod = defaultConfig.getBuildArgumentsInfoCopy();
+		
+		// Just sanity check to make sure deprecated methods still exist.
+		IBuildArgumentsInfo testDeprecation = defaultConfig.getBuildArgumentsInfo();
+		String test = testDeprecation.getAbldBuildArgs();
+		
+		
+		// read the arguments
+		argInfoCopyMod.abldBuildArgs   += build_ARG;
+		argInfoCopyMod.abldCleanArgs   += clean_ARG;
+		argInfoCopyMod.abldExportArgs  += export_ARG;
+		argInfoCopyMod.abldFinalArgs   += final_ARG;
+		argInfoCopyMod.abldFreezeArgs  += freeze_ARG;
+		argInfoCopyMod.abldLibraryArgs += library_ARG;
+		argInfoCopyMod.abldMakefileArgs  += makefile_ARG;
+		argInfoCopyMod.abldResourceArgs  += resource_ARG;
+		argInfoCopyMod.abldTargetArgs    += target_ARG;
+		
+		// set the argument
+		defaultConfig.setBuildArgumentsInfo(argInfoCopyMod);
+		
+		// read the args from memory, make sure it's OK
+		BuildArgumentsInfo argInfoCopyVerify = defaultConfig.getBuildArgumentsInfoCopy();
+		assertTrue("Failed to re-read build args", argInfoCopyVerify.abldBuildArgs.contains(build_ARG));
+		assertTrue("Failed to re-read clean args", argInfoCopyVerify.abldCleanArgs.contains(clean_ARG));
+		assertTrue("Failed to re-read export args", argInfoCopyVerify.abldExportArgs.contains(export_ARG));
+		assertTrue("Failed to re-read final args", argInfoCopyVerify.abldFinalArgs.contains(final_ARG));
+		assertTrue("Failed to re-read freeze args", argInfoCopyVerify.abldFreezeArgs.contains(freeze_ARG));
+		assertTrue("Failed to re-read library args", argInfoCopyVerify.abldLibraryArgs.contains(library_ARG));
+		assertTrue("Failed to re-read makefile args", argInfoCopyVerify.abldMakefileArgs.contains(makefile_ARG));
+		assertTrue("Failed to re-read resource args", argInfoCopyVerify.abldResourceArgs.contains(resource_ARG));
+		assertTrue("Failed to re-read target args", argInfoCopyVerify.abldTargetArgs.contains(target_ARG));
+		
+		// now write to files
+		defaultConfig.saveConfiguration(false);
+		
+		// now read again
+		
+		// no work, how to know if it loads from disk....
+		BuildArgumentsInfo argInfoFromDisk = defaultConfig.getBuildArgumentsInfoCopy();
+		
+		// read the args now that were pulled from disk, make sure it's OK
+		assertTrue("Failed to re-read build args", argInfoCopyVerify.abldBuildArgs.contains(build_ARG));
+		assertTrue("Failed to re-read clean args", argInfoCopyVerify.abldCleanArgs.contains(clean_ARG));
+		assertTrue("Failed to re-read export args", argInfoCopyVerify.abldExportArgs.contains(export_ARG));
+		assertTrue("Failed to re-read final args", argInfoCopyVerify.abldFinalArgs.contains(final_ARG));
+		assertTrue("Failed to re-read freeze args", argInfoCopyVerify.abldFreezeArgs.contains(freeze_ARG));
+		assertTrue("Failed to re-read library args", argInfoCopyVerify.abldLibraryArgs.contains(library_ARG));
+		assertTrue("Failed to re-read makefile args", argInfoCopyVerify.abldMakefileArgs.contains(makefile_ARG));
+		assertTrue("Failed to re-read resource args", argInfoCopyVerify.abldResourceArgs.contains(resource_ARG));
+		assertTrue("Failed to re-read target args", argInfoCopyVerify.abldTargetArgs.contains(target_ARG));
+		
+		// Now restore the settings, write to disk and verify
+		defaultConfig.setBuildArgumentsInfo(argInfoCopyOrig);
+		defaultConfig.saveConfiguration(false); // write to disk
+		defaultConfig = cpi.getDefaultConfiguration();
+		argInfoCopyVerify = defaultConfig.getBuildArgumentsInfoCopy();
+		assertFalse("Failed to re-read build args after restore", argInfoCopyVerify.abldBuildArgs.contains(build_ARG));
+		assertFalse("Failed to re-read clean args after restore", argInfoCopyVerify.abldCleanArgs.contains(clean_ARG));
+		assertFalse("Failed to re-read export args after restore", argInfoCopyVerify.abldExportArgs.contains(export_ARG));
+		assertFalse("Failed to re-read final args after restore", argInfoCopyVerify.abldFinalArgs.contains(final_ARG));
+		assertFalse("Failed to re-read freeze args after restore", argInfoCopyVerify.abldFreezeArgs.contains(freeze_ARG));
+		assertFalse("Failed to re-read library args after restore", argInfoCopyVerify.abldLibraryArgs.contains(library_ARG));
+		assertFalse("Failed to re-read makefile args after restore", argInfoCopyVerify.abldMakefileArgs.contains(makefile_ARG));
+		assertFalse("Failed to re-read resource args after restore", argInfoCopyVerify.abldResourceArgs.contains(resource_ARG));
+		assertFalse("Failed to re-read target args after restore", argInfoCopyVerify.abldTargetArgs.contains(target_ARG));
+
+		}
+	
 	public void testChangesNotApplied() {
 		ICarbideProjectModifier cpm = CarbideBuilderPlugin.getBuildManager().getProjectModifier(project);
 		cpm.writeProjectSetting(ICarbideProjectInfo.PROJECT_RELATIVE_INFFILE_PROPS_KEY, "test");
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/AllTests.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/AllTests.java	Sat Apr 25 12:54:10 2009 -0500
@@ -27,6 +27,9 @@
 		//$JUnit-BEGIN$
 		suite.addTestSuite(TestRVCTErrorParser.class);
 		suite.addTestSuite(TestMakmakeErrorParser.class);
+		suite.addTestSuite(TestSBSv2ErrorParser.class);
+		suite.addTestSuite(TestGcceErrorParser.class);
+		suite.addTestSuite(TestMakeErrorParser.class);
 		//$JUnit-END$
 		return suite;
 	}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/CarbideErrorParserTestHarness.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/CarbideErrorParserTestHarness.java	Sat Apr 25 12:54:10 2009 -0500
@@ -27,37 +27,32 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintStream;
-import java.io.StringWriter;
 import java.util.ArrayList;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
+import java.util.List;
 
 import junit.framework.Assert;
 
 import org.eclipse.cdt.core.ProblemMarkerInfo;
+import org.eclipse.cdt.core.model.ICModelMarker;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.w3c.dom.Comment;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
+import org.jdom.Attribute;
+import org.jdom.Comment;
+import org.jdom.DefaultJDOMFactory;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.filter.ElementFilter;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.Format;
+import org.jdom.output.XMLOutputter;
 
 import com.nokia.carbide.cdt.builder.builder.CarbideCommandLauncher;
+import com.nokia.carbide.cdt.builder.test.TestPlugin;
+import com.nokia.cpp.internal.api.utils.core.FileUtils;
 
 public class CarbideErrorParserTestHarness extends CarbideCommandLauncher {
 	static final String EMPTY = "^EMPTY^";
@@ -72,6 +67,7 @@
 	IProject project;
 	ArrayList<ProblemMarkerInfo> ideProblemMarkerInfoList;
 	ArrayList<ProblemMarkerInfo> xmlFilePromblemMarkerInfoList;
+	boolean debug = false;
 	
 	public CarbideErrorParserTestHarness(IProject project, 
 			  IProgressMonitor monitor, 
@@ -117,9 +113,15 @@
 		// pick out the stdout stream directly, where CDT error parser sniff
 		// for error messages from build console
 		try {
+			stdoutStream.getProject().deleteMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE); // clear UI list before we start
+			stdoutStream.clearScratchBuffer();	// some error parser do multiple lines
+			consoleOutput += "\n";	// force the input file to flush all lines
 			stdoutStream.write(consoleOutput.getBytes());
+			stdoutStream.flush();
 		} catch (IOException e) {
 			Assert.fail();
+		} catch (CoreException e) {
+			Assert.fail();
 		}
 	}
 	
@@ -174,6 +176,16 @@
 		readControlXML(xmlInputStream);
 		
 		if (ideProblemMarkerInfoList.size() != xmlFilePromblemMarkerInfoList.size()) {
+			if (debug) {
+				java.io.File file;
+				try {
+					file = FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/currentOutput.xml");
+					writeRegressionXMLFile(new java.io.PrintStream(file));
+				} catch (IOException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+			}
 			Assert.fail("IDE contains " + ideProblemMarkerInfoList.size() + " markers and Control file contains " + xmlFilePromblemMarkerInfoList.size());
 			return false;
 		}
@@ -252,18 +264,20 @@
 	// read control case from a XML file and setup internal list
 	public void readControlXML(InputStream xmlInputStream) {
 		try {
-			DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
-	        DocumentBuilder docBuilder;
-			docBuilder = dbfac.newDocumentBuilder();
-	        Document doc = docBuilder.parse(xmlInputStream);
-	        doc.getDocumentElement().normalize();
+	        SAXBuilder docBuilder = new SAXBuilder();
+	        Document doc = docBuilder.build(xmlInputStream);
 
-	        NodeList markerNodeList = doc.getElementsByTagName(MARKER_INFO);
-	        int markerNodeListSize = markerNodeList.getLength();
+	        Element root = doc.getRootElement();
+	        ElementFilter elementFilter = new ElementFilter(MARKER_INFO);
+
+	        List<?> allMarkerInfo = root.getContent(elementFilter);
 	        
 	        xmlFilePromblemMarkerInfoList.clear();
 	        
-	        for (int i = 0; i < markerNodeListSize; i++) {
+	        int markerInfoListSize = allMarkerInfo.size();
+	        
+	        for (int i = 0; i < markerInfoListSize; i++) {
+	        	Object info = allMarkerInfo.get(i);
 	        	IResource file = null;
 	        	int lineNumber;
 	        	String description;
@@ -271,31 +285,29 @@
 	        	String variableName;
 	        	IPath externalPath;
 	        	
-	        	Node markerNode = markerNodeList.item(i);
-		        NamedNodeMap attributes = markerNode.getAttributes();
+	        	Assert.assertTrue(info instanceof Element);
+	        	Element markerInfo = (Element)info;
 		        
-		        Node locationNode = attributes.getNamedItem(LINE_NUMBER);
-		        lineNumber = Integer.parseInt(locationNode.getNodeValue());
+		        Attribute locationNode = markerInfo.getAttribute(LINE_NUMBER);
+		        lineNumber = Integer.parseInt(locationNode.getValue());
 
-		        Node messageNode = attributes.getNamedItem(MESSAGE);
-		        description = messageNode.getNodeValue();
+		        Attribute messageNode = markerInfo.getAttribute(MESSAGE);
+		        description = messageNode.getValue();
 		        
-		        Node severityNode = attributes.getNamedItem(SEVERITY);
-		        severity = Integer.parseInt(severityNode.getNodeValue());
+		        Attribute severityNode = markerInfo.getAttribute(SEVERITY);
+		        severity = Integer.parseInt(severityNode.getValue());
 
-		        Node variableNameNode = attributes.getNamedItem(VARIABLE_NAME);
-		        variableName = variableNameNode.getNodeValue();
+		        Attribute variableNameNode = markerInfo.getAttribute(VARIABLE_NAME);
+		        variableName = variableNameNode.getValue();
 		        
-		        Node externalPathStringNode = attributes.getNamedItem(EXTERNAL_PATH_STRING);
-		        externalPath = new Path(externalPathStringNode.getNodeValue());		        
+		        Attribute externalPathStringNode = markerInfo.getAttribute(EXTERNAL_PATH_STRING);
+		        externalPath = new org.eclipse.core.runtime.Path(externalPathStringNode.getValue());		        
 
 	        	ProblemMarkerInfo details = new ProblemMarkerInfo(file, lineNumber, description, severity, variableName, externalPath);
 	        	xmlFilePromblemMarkerInfoList.add(details);
 
 	        }
-		} catch (ParserConfigurationException e) {
-			Assert.fail();
-		} catch (SAXException e) {
+		} catch (JDOMException e) {
 			Assert.fail();
 		} catch (IOException e) {
 			Assert.fail();
@@ -312,29 +324,22 @@
 	 */
 	public void writeRegressionXMLFile(PrintStream printStream) {		
 		try {
-			
-			// prepare XML tree
-	        DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
-	        DocumentBuilder docBuilder;
-
-			docBuilder = dbfac.newDocumentBuilder();
-	        Document doc = docBuilder.newDocument();
-
-	        Element root = doc.createElement("root");
-	        doc.appendChild(root);
+	        DefaultJDOMFactory jdomFactory = new DefaultJDOMFactory();
+	        Document jdomdoc = jdomFactory.document(jdomFactory.element("root"));
+	        Element root = jdomdoc.getRootElement();
 	        
 	        int index = 0;
-
-			for (ProblemMarkerInfo marker : ideProblemMarkerInfoList)
-			{
-		        Element child = doc.createElement(MARKER_INFO);
-		        Comment comment = doc.createComment("Error Marker at index " + index);
-		        ++index;
-
+	        for (ProblemMarkerInfo marker : ideProblemMarkerInfoList)
+	        {
+	        	Element child = jdomFactory.element(MARKER_INFO);
+	        	Comment comment = jdomFactory.comment("Error Marker at index " + index);
+	        	++index;
+	        	
 		        /* CarbideCommandLauncher.addMarker() does not set file
 		        file = marker.getAttribute(IMarker.LOCATION, 0);
 				child.setAttribute(LOCATION, new Integer(file).toString()); 
 		         */
+	        	
 		        child.setAttribute(FILE, EMPTY); // file
 				child.setAttribute(LINE_NUMBER, new Integer(marker.lineNumber).toString());
 				String description;
@@ -360,34 +365,21 @@
 				}
 				child.setAttribute(EXTERNAL_PATH_STRING, externalPathString);
 				
-				root.appendChild(comment);
-		        root.appendChild(child);
-			}
+				root.addContent(comment);
+				root.addContent(child);
+	        }
 
-	        // print
-	        TransformerFactory transfac = TransformerFactory.newInstance();
-	        Transformer trans = transfac.newTransformer();
-	        trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-	        trans.setOutputProperty(OutputKeys.INDENT, "yes");
-
-	        // create string from xml tree
-	        StringWriter sw = new StringWriter();
-	        StreamResult result = new StreamResult(sw);
-	        DOMSource source = new DOMSource(doc);
-	        trans.transform(source, result);
-	        String xmlString = sw.toString();
+			// drop JAXP for JDOM
+			XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
+			outputter.output(jdomdoc, printStream);
 
 	        // print xml
-	        printStream.println(xmlString);
 	        printStream.flush();
 	        printStream.close();
         
-		} catch (ParserConfigurationException e) {
-			Assert.fail();
-		} catch (TransformerConfigurationException e) {
-			Assert.fail();
-		} catch (TransformerException e) {
-			Assert.fail();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
 		}
 
 	}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/ErrorParserRegressionGenerator.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/ErrorParserRegressionGenerator.java	Sat Apr 25 12:54:10 2009 -0500
@@ -21,23 +21,30 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import junit.framework.TestCase;
-
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.NullProgressMonitor;
 
+import com.nokia.carbide.automation.utils.UITestCase;
 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
 import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
 import com.nokia.carbide.cdt.builder.test.TestPlugin;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
 import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
 import com.nokia.cpp.internal.api.utils.core.FileUtils;
 
-public class ErrorParserRegressionGenerator extends TestCase {
+public class ErrorParserRegressionGenerator extends UITestCase {
+	public ErrorParserRegressionGenerator(String name) {
+		super(name);
+		// TODO Auto-generated constructor stub
+	}
+
 	private static final String PROJECT_NAME = "TestErrorParser";
+	// Platform matters, set this before you build
+	private static final String PLATFORM_STRING = ISymbianBuildContext.EMULATOR_PLATFORM;
 
 	CarbideErrorParserTestHarness harness;
 	private IProject project;
@@ -46,11 +53,24 @@
 		super.setUp();
 		project = ProjectCorePlugin.createProject(PROJECT_NAME, null);
 		
+		// look for first SDK with the platform
+		List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
 		// You need to set the proper default configuration so the correct set of error parsers is called
-		ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDKList().get(0);
-		ISymbianBuildContext context = new SymbianBuildContext(sdk, ISymbianBuildContext.ARMV5_PLATFORM, ISymbianBuildContext.DEBUG_TARGET);
-		List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
-		contextList.add(context);
+		List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
+		for (ISymbianSDK currSDK : sdkList){
+			List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+			for (ISymbianBuildContext context : contexts) {
+				if (context.getPlatformString().equals(PLATFORM_STRING)) {
+					contextList.add(context);
+					break;
+				}
+			}
+			if (contextList.size() > 0) {
+				break;
+			}
+		}
+
+		assertTrue(contextList.size() > 0);		// this means you don't have any SDK installe with the said platform
 		
 //		ProjectCorePlugin.postProjectCreatedActions(project, "group/bld.inf", 
 //				TestPlugin.getUsableBuildConfigs(), new ArrayList<String>(), 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestGcceErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,138 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+package com.nokia.carbide.cdt.builder.test.errorParsers;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import com.nokia.carbide.automation.utils.UITestCase;
+import com.nokia.carbide.automation.utils.debugger.DebuggerTestCaseParameters;
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cdt.builder.test.TestPlugin;
+import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.FileUtils;
+
+public class TestGcceErrorParser extends UITestCase implements DebuggerTestCaseParameters {
+
+	public TestGcceErrorParser(String name) {
+		super(name);
+		// TODO Auto-generated constructor stub
+	}
+
+	private static final String PROJECT_NAME = "TestGcceErrorParser";
+	private static final String PROJECT_PATH = "group/bld.inf";
+	
+	CarbideErrorParserTestHarness harness;
+	private IProject project;
+	
+	protected void setUp() throws Exception {
+		super.setUp();
+		project = ProjectCorePlugin.createProject(PROJECT_NAME, null);
+		List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
+		
+		// You need to set the proper default configuration so the correct set of error parsers is called
+		List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
+		for (ISymbianSDK currSDK : sdkList){
+			List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+			for (ISymbianBuildContext context : contexts) {
+				if (context.getPlatformString().equals(ISymbianBuildContext.GCCE_PLATFORM)) {
+					contextList.add(context);
+					break;
+				}
+			}
+			if (contextList.size() > 0) {
+				break;
+			}
+		}
+		
+		assertTrue(contextList.size() > 0);		// if this fail, you don't have any SDK installed supporting GCCE
+		
+		ProjectCorePlugin.postProjectCreatedActions(project, PROJECT_PATH, 
+				contextList, new ArrayList<String>(), 
+				"Debug MMP", null, new NullProgressMonitor());
+		
+		ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
+		ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
+		harness = new CarbideErrorParserTestHarness(project, 
+												new NullProgressMonitor(),
+												CarbideCPPBuilder.getParserIdArray(buildConfig.getErrorParserId()), 
+												cpi.getINFWorkingDirectory());
+	}
+	
+	protected void tearDown() throws Exception {
+		project.delete(true, null);
+		super.tearDown();
+	}
+	
+	/**
+	 * Test for assembler errors/warnings
+	 */
+	/*
+	public void testGnuAsMessages() {
+		//argument 1 is console output you get from the tool
+		//argument 2 is control XML with the marker data
+		try {
+			harness.parseStringAndTestAgainstXML(FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/errorpatterns/gnu_as.input.txt"), 
+												FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/errorpatterns/gnu_as.regression.xml"));
+		} catch (IOException e) {
+			fail();
+		}
+	}
+	*/
+	
+	/*
+	 * Test for AbstractGCCErrorParser
+	 */
+	public void testAbstractGCCErrorParser() {
+		//argument 1 is console output you get from the tool
+		//argument 2 is control XML with the marker data
+		try {
+			harness.parseStringAndTestAgainstXML(FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/errorpatterns/abstractgcce.input.txt"), 
+												FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/errorpatterns/abstractgcce.regression.xml"));
+		} catch (IOException e) {
+			fail();
+		}
+	}
+
+	/**
+	 * Regress Bugzilla issues by entries
+	 */
+	public void testBugzillaRegression() {
+		final String reportID[] = {"2969", "4541", "5618", "5824", "6417"};
+		//argument 1 is console output you get from the tool
+		//argument 2 is control XML with the marker data
+		try {
+			for (int i = 0; i < reportID.length; i++) {
+				harness.parseStringAndTestAgainstXML(FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/errorpatterns/bugzilla/" + reportID[i] +".gcce.input.txt"), 
+						FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/errorpatterns/bugzilla/" + reportID[i] +".gcce.regression.xml"));
+			}
+		} catch (IOException e) {
+			fail();
+		}
+	}
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestMakeErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,107 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+package com.nokia.carbide.cdt.builder.test.errorParsers;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import com.nokia.carbide.automation.utils.UITestCase;
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cdt.builder.test.TestPlugin;
+import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.FileUtils;
+
+public class TestMakeErrorParser extends UITestCase {
+
+	public TestMakeErrorParser(String name) {
+		super(name);
+		// TODO Auto-generated constructor stub
+	}
+
+	CarbideErrorParserTestHarness harness;
+	private IProject project;
+	
+	private static final String PROJECT_NAME = "TestGcceErrorParser";
+	private static final String PROJECT_PATH = "group/bld.inf";
+	
+	protected void setUp() throws Exception {
+		super.setUp();
+		project = ProjectCorePlugin.createProject(PROJECT_NAME, null);
+		List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
+		
+		// You need to set the proper default configuration so the correct set of error parsers is called
+		List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
+		for (ISymbianSDK currSDK : sdkList){
+			List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+			for (ISymbianBuildContext context : contexts) {
+				if (context.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+					contextList.add(context);
+					break;
+				}
+			}
+			if (contextList.size() > 0) {
+				break;
+			}
+		}
+		
+		assertTrue(contextList.size() > 0);		// if this fail, you don't have any SDK installed supporting GCCE
+		
+		ProjectCorePlugin.postProjectCreatedActions(project, PROJECT_PATH, 
+				contextList, new ArrayList<String>(), 
+				"Debug MMP", null, new NullProgressMonitor());
+		
+		ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
+		ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
+		harness = new CarbideErrorParserTestHarness(project, 
+												new NullProgressMonitor(),
+												CarbideCPPBuilder.getParserIdArray(buildConfig.getErrorParserId()), 
+												cpi.getINFWorkingDirectory());
+	}
+	
+	protected void tearDown() throws Exception {
+		project.delete(true, null);
+		super.tearDown();
+	}
+	
+	/**
+	 * Regress Bugzilla issues by entries
+	 */
+	public void testBugzillaRegression() {
+		final String reportID[] = {"3201", "3134", "3490", "6415"};
+		//argument 1 is console output you get from the tool
+		//argument 2 is control XML with the marker data
+		try {
+			for (int i = 0; i < reportID.length; i++) {
+				harness.parseStringAndTestAgainstXML(FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/errorpatterns/bugzilla/" + reportID[i] +".winscw.input.txt"), 
+						FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/errorpatterns/bugzilla/" + reportID[i] +".winscw.regression.xml"));
+			}
+		} catch (IOException e) {
+			fail();
+		}
+	}
+
+}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestMakmakeErrorParser.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestMakmakeErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -21,6 +21,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import junit.framework.TestCase;
+
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.NullProgressMonitor;
 
@@ -29,18 +31,15 @@
 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
 import com.nokia.carbide.cdt.builder.test.TestPlugin;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
 import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
 import com.nokia.cpp.internal.api.utils.core.FileUtils;
 
-import junit.framework.TestCase;
-
 public class TestMakmakeErrorParser extends TestCase {
 	private static final String PROJECT_NAME = "TestMakmakeErrorParser";
 	private static final String PROJECT_PATH = "group/bld.inf";
-	private static final String SDK_ID_UPPER_CASE = "S60_3RD_MR";  // ID of the SDK we want to use to create build configurations
-	
 	private static final String TEST_DATA_INPUT_FILE = "data/errorpatterns/makmake.errors.input.1.txt";
 	private static final String CONTROL_DATA_FILE    = "data/errorpatterns/makmake.errors.regression.1.xml";
 	
@@ -50,23 +49,23 @@
 	protected void setUp() throws Exception {
 		super.setUp();
 		project = ProjectCorePlugin.createProject(PROJECT_NAME, null);
+		List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
 		
 		// You need to set the proper default configuration so the correct set of error parsers is called
 		List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
-		ISymbianSDK sdk = null;
 		for (ISymbianSDK currSDK : sdkList){
-			if (currSDK.getUniqueId().toUpperCase().equals(SDK_ID_UPPER_CASE)){
-				sdk = currSDK;
+			List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+			for (ISymbianBuildContext context : contexts) {
+				if (context.getPlatformString().equals(ISymbianBuildContext.ARMV5_PLATFORM)) {
+					contextList.add(context);
+					break;
+				}
+			}
+			if (contextList.size() > 0) {
 				break;
 			}
 		}
 		
-		assertNotNull(sdk);
-		
-		ISymbianBuildContext context = new SymbianBuildContext(sdk, ISymbianBuildContext.ARMV5_PLATFORM, ISymbianBuildContext.DEBUG_TARGET);
-		List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
-		contextList.add(context);
-		
 		// Don't do this... Because it will just default to WINSCW target
 //		ProjectCorePlugin.postProjectCreatedActions(project, "group/bld.inf", 
 //				TestPlugin.getUsableBuildConfigs(), new ArrayList<String>(), 
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestRVCTErrorParser.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestRVCTErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -21,6 +21,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import junit.framework.TestCase;
+
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.NullProgressMonitor;
 
@@ -29,18 +31,15 @@
 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
 import com.nokia.carbide.cdt.builder.test.TestPlugin;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
 import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
 import com.nokia.cpp.internal.api.utils.core.FileUtils;
 
-import junit.framework.TestCase;
-
 public class TestRVCTErrorParser extends TestCase {
 	private static final String PROJECT_NAME = "TestRVCTErrorParser";
 	private static final String PROJECT_PATH = "group/bld.inf";
-	private static final String SDK_ID_UPPER_CASE = "S60_3RD_MR";  // ID of the SDK we want to use to create build configurations
-	
 	private static final String TEST_DATA_INPUT_FILE = "data/errorpatterns/rvct.errors.input.1.txt";
 	private static final String CONTROL_DATA_FILE    = "data/errorpatterns/rvct.errors.regression.1.xml";
 	
@@ -50,22 +49,24 @@
 	protected void setUp() throws Exception {
 		super.setUp();
 		project = ProjectCorePlugin.createProject(PROJECT_NAME, null);
+		List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
 		
 		// You need to set the proper default configuration so the correct set of error parsers is called
 		List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
-		ISymbianSDK sdk = null;
 		for (ISymbianSDK currSDK : sdkList){
-			if (currSDK.getUniqueId().toUpperCase().equals(SDK_ID_UPPER_CASE)){
-				sdk = currSDK;
+			List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+			for (ISymbianBuildContext context : contexts) {
+				if (context.getPlatformString().equals(ISymbianBuildContext.ARMV5_PLATFORM)) {
+					contextList.add(context);
+					break;
+				}
+			}
+			if (contextList.size() > 0) {
 				break;
 			}
 		}
 		
-		assertNotNull(sdk);
-		
-		ISymbianBuildContext context = new SymbianBuildContext(sdk, ISymbianBuildContext.ARMV5_PLATFORM, ISymbianBuildContext.DEBUG_TARGET);
-		List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
-		contextList.add(context);
+		assertTrue(contextList.size() > 0);		// if this fail, you don't have any SDK installed supporting GCCE
 		
 		// Don't do this... Because it will just default to WINSCW target
 //		ProjectCorePlugin.postProjectCreatedActions(project, "group/bld.inf", 
@@ -114,4 +115,22 @@
 			fail();
 		}
 	}
+	
+	/**
+	 * Regress Bugzilla issues by entries
+	 */
+	public void testBugzillaRegression() {
+		final String reportID[] = {"3053"};
+		//argument 1 is console output you get from the tool
+		//argument 2 is control XML with the marker data
+		try {
+			for (int i = 0; i < reportID.length; i++) {
+				harness.parseStringAndTestAgainstXML(FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/errorpatterns/bugzilla/" + reportID[i] +".rvct.input.txt"), 
+						FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/errorpatterns/bugzilla/" + reportID[i] +".rvct.regression.xml"));
+			}
+		} catch (IOException e) {
+			fail();
+		}
+	}
+
 }
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestSBSv2ErrorParser.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestSBSv2ErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -21,6 +21,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import junit.framework.TestCase;
+
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.NullProgressMonitor;
 
@@ -29,18 +31,15 @@
 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
 import com.nokia.carbide.cdt.builder.test.TestPlugin;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
 import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
 import com.nokia.cpp.internal.api.utils.core.FileUtils;
 
-import junit.framework.TestCase;
-
 public class TestSBSv2ErrorParser extends TestCase {
 	private static final String PROJECT_NAME = "TestSBSv2ErrorParser";
 	private static final String PROJECT_PATH = "group/bld.inf";
-	private static final String SDK_ID_UPPER_CASE = "SYMBIANOS_95_200906";  // ID of the SDK we want to use to create build configurations
-	
 	private static final String TEST_DATA_INPUT_FILE = "data/errorpatterns/sbsv2.errors.input.txt";
 	private static final String CONTROL_DATA_FILE    = "data/errorpatterns/sbsv2.errors.regression.xml";
 	
@@ -50,23 +49,23 @@
 	protected void setUp() throws Exception {
 		super.setUp();
 		project = ProjectCorePlugin.createProject(PROJECT_NAME, null);
+		List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
 		
 		// You need to set the proper default configuration so the correct set of error parsers is called
 		List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
-		ISymbianSDK sdk = null;
 		for (ISymbianSDK currSDK : sdkList){
-			if (currSDK.getUniqueId().toUpperCase().equals(SDK_ID_UPPER_CASE)){
-				sdk = currSDK;
+			List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+			for (ISymbianBuildContext context : contexts) {
+				if (context.getPlatformString().equals(ISymbianBuildContext.ARMV5_PLATFORM)) {
+					contextList.add(context);
+					break;
+				}
+			}
+			if (contextList.size() > 0) {
 				break;
 			}
 		}
 		
-		assertNotNull(sdk);
-		
-		ISymbianBuildContext context = new SymbianBuildContext(sdk, ISymbianBuildContext.ARMV5_PLATFORM, ISymbianBuildContext.DEBUG_TARGET);
-		List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
-		contextList.add(context);
-		
 		// Don't do this... Because it will just default to WINSCW target
 //		ProjectCorePlugin.postProjectCreatedActions(project, "group/bld.inf", 
 //				TestPlugin.getUsableBuildConfigs(), new ArrayList<String>(), 
--- a/builder/com.nokia.carbide.cdt.builder/plugin.xml	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/plugin.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -160,11 +160,27 @@
       </errorparser>
     </extension>
     <extension
-         id="GCCEErrorParser"
-         name="GCCE Error Parser"
+         id="GCCEAssemblerErrorParser"
+         name="GCCE Assembler Error Parser"
          point="org.eclipse.cdt.core.ErrorParser">
       <errorparser
-            class="com.nokia.carbide.cdt.internal.builder.error.parsers.GCCEErrorParser">
+            class="com.nokia.carbide.cdt.internal.builder.error.parsers.GCCEAssemblerErrorParser">
+      </errorparser>
+    </extension>
+    <extension
+         id="GCCECompilerErrorParser"
+         name="GCCE Compiler Error Parser"
+         point="org.eclipse.cdt.core.ErrorParser">
+      <errorparser
+            class="com.nokia.carbide.cdt.internal.builder.error.parsers.GCCECompilerErrorParser">
+      </errorparser>
+    </extension>
+    <extension
+         id="GCCELinkerErrorParser"
+         name="GCCE Linker Error Parser"
+         point="org.eclipse.cdt.core.ErrorParser">
+      <errorparser
+            class="com.nokia.carbide.cdt.internal.builder.error.parsers.GCCELinkerErrorParser">
       </errorparser>
     </extension>
     <extension
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/BuildArgumentsInfo.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+package com.nokia.carbide.cdt.builder;
+
+import com.nokia.carbide.cdt.builder.project.IBuildArgumentsInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+
+/*
+ * Wrapper for the build arguments settings in Carbide Build Configuration preferences
+ */
+public class BuildArgumentsInfo implements IBuildArgumentsInfo {
+
+	public static final String BLDMAKEBLDFILESARGSSTORAGE = "BLDMAKEBLDFILESARGSSTORAGE"; //$NON-NLS-1$
+	public static final String BLDMAKECLEANARGSSTORAGE = "BLDMAKECLEANARGSSTORAGE"; //$NON-NLS-1$
+	public static final String ABLDBUILDARGSSTORAGE = "ABLDBUILDARGSSTORAGE"; //$NON-NLS-1$
+	public static final String ABLDEXPORTARGSSTORAGE = "ABLDEXPORTARGSSTORAGE"; //$NON-NLS-1$
+	public static final String ABLDMAKEFILEARGSSTORAGE = "ABLDMAKEFILEARGSSTORAGE"; //$NON-NLS-1$
+	public static final String ABLDLIBRARYARGSSTORAGE = "ABLDLIBRARYARGSSTORAGE"; //$NON-NLS-1$
+	public static final String ABLDRESOURCEARGSSTORAGE = "ABLDRESOURCEARGSSTORAGE"; //$NON-NLS-1$
+	public static final String ABLDTARGETARGSSTORAGE = "ABLDTARGETARGSSTORAGE"; //$NON-NLS-1$
+	public static final String ABLDFINALARGSSTORAGE = "ABLDFINALARGSSTORAGE"; //$NON-NLS-1$
+	public static final String ABLDCLEANARGSSTORAGE = "ABLDCLEANARGSSTORAGE"; //$NON-NLS-1$
+	public static final String ABLDFREEZEARGSSTORAGE = "ABLDFREEZEARGSSTORAGE"; //$NON-NLS-1$
+	
+	
+	public String bldmakeBldFilesArgs;
+	public String bldmakeCleanArgs;
+	public String abldBuildArgs;
+	public String abldExportArgs;
+	public String abldMakefileArgs;
+	public String abldLibraryArgs;
+	public String abldResourceArgs;
+	public String abldTargetArgs;
+	public String abldFinalArgs;
+	public String abldCleanArgs;
+	public String abldFreezeArgs;
+	
+	
+	public BuildArgumentsInfo(ISymbianSDK sdk) {
+
+		this.bldmakeBldFilesArgs = ""; //$NON-NLS-1$
+		this.bldmakeCleanArgs = ""; //$NON-NLS-1$
+		this.abldBuildArgs = ""; //$NON-NLS-1$
+		this.abldExportArgs = ""; //$NON-NLS-1$
+		this.abldMakefileArgs = ""; //$NON-NLS-1$
+		this.abldLibraryArgs = ""; //$NON-NLS-1$
+		this.abldResourceArgs = ""; //$NON-NLS-1$
+		this.abldTargetArgs = ""; //$NON-NLS-1$
+		this.abldFinalArgs = ""; //$NON-NLS-1$
+		this.abldCleanArgs = ""; //$NON-NLS-1$
+		this.abldFreezeArgs = ""; //$NON-NLS-1$
+
+		if (sdk.isEKA2()) {
+			this.abldFreezeArgs = "-r"; //$NON-NLS-1$
+			
+		}
+	}
+
+	public BuildArgumentsInfo(String bldmakeBldFilesArgs, String bldmakeCleanArgs, String abldBuildArgs, String abldExportArgs,
+			String abldMakefileArgs, String abldLibraryArgs, String abldResourceArgs, String abldTargetArgs, String abldFinalArgs,
+			String abldCleanArgs, String abldFreezeArgs) {
+
+		this.bldmakeBldFilesArgs = bldmakeBldFilesArgs;
+		this.bldmakeCleanArgs = bldmakeCleanArgs;
+		this.abldBuildArgs = abldBuildArgs;
+		this.abldExportArgs = abldExportArgs;
+		this.abldMakefileArgs = abldMakefileArgs;
+		this.abldLibraryArgs = abldLibraryArgs;
+		this.abldResourceArgs = abldResourceArgs;
+		this.abldTargetArgs = abldTargetArgs;
+		this.abldFinalArgs = abldFinalArgs;
+		this.abldCleanArgs = abldCleanArgs;
+		this.abldFreezeArgs = abldFreezeArgs;
+	}
+	
+	public BuildArgumentsInfo(BuildArgumentsInfo argInfo) {
+
+		this.bldmakeBldFilesArgs = argInfo.bldmakeBldFilesArgs;
+		this.bldmakeCleanArgs = argInfo.bldmakeCleanArgs;
+		this.abldBuildArgs = argInfo.abldBuildArgs;
+		this.abldExportArgs = argInfo.abldExportArgs;
+		this.abldMakefileArgs = argInfo.abldMakefileArgs;
+		this.abldLibraryArgs = argInfo.abldLibraryArgs;
+		this.abldResourceArgs = argInfo.abldResourceArgs;
+		this.abldTargetArgs = argInfo.abldTargetArgs;
+		this.abldFinalArgs = argInfo.abldFinalArgs;
+		this.abldCleanArgs = argInfo.abldCleanArgs;
+		this.abldFreezeArgs = argInfo.abldFreezeArgs;
+	}
+	
+	public String getBldmakeBldFilesArgs() {
+		return bldmakeBldFilesArgs;
+	}
+
+	public String getBldmakeCleanArgs() {
+		return bldmakeCleanArgs;
+	}
+
+	public String getAbldBuildArgs() {
+		return abldBuildArgs;
+	}
+
+	public String getAbldExportArgs() {
+		return abldExportArgs;
+	}
+
+	public String getAbldMakefileArgs() {
+		return abldMakefileArgs;
+	}
+
+	public String getAbldLibraryArgs() {
+		return abldLibraryArgs;
+	}
+
+	public String getAbldResourceArgs() {
+		return abldResourceArgs;
+	}
+
+	public String getAbldTargetArgs() {
+		return abldTargetArgs;
+	}
+
+	public String getAbldFinalArgs() {
+		return abldFinalArgs;
+	}
+
+	public String getAbldCleanArgs() {
+		return abldCleanArgs;
+	}
+
+	public String getAbldFreezeArgs() {
+		return abldFreezeArgs;
+	}
+	
+}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java	Sat Apr 25 12:54:10 2009 -0500
@@ -910,8 +910,29 @@
 	 * @param calculateComponentLists whether or not to calculate the list of makmake components
 	 * @return false if any makefile generation was necessary but failed, true otherwise
 	 * @since 2.0
+	 * @deprecated Use {@link #generateAbldMakeFileIfNecessary(generateAbldMakefilesIfNecessary(ICarbideBuildConfiguration, CarbideCommandLauncher, boolean, IProgressMonitor)} instead
 	 */
 	public static boolean generateAbldMakefilesIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, boolean calculateComponentLists) {
+		return generateAbldMakefilesIfNecessary(config, launcher, calculateComponentLists, new NullProgressMonitor());
+	}
+
+	/**
+	 * Generates the abld makefiles if necessary.
+	 * Loops through the mmp files to be built for the given build configuration and generates the makefile
+	 * for the mmp if:
+	 * 	 1) the makefile for the mmp does not exist
+	 *   2) if the mmp or any of its includes is newer than the makefile
+	 *   3) the makefile does not have the necessary Carbide changes
+	 *   
+	 *   The command used will be 'abld [test] makefile platform mmpname'
+	 * @param config the build configuration context
+	 * @param launcher the Carbide launcher
+	 * @param calculateComponentLists whether or not to calculate the list of makmake components
+	 * @param progress monitor to allow user to cancel
+	 * @return false if any makefile generation was necessary but failed, true otherwise
+	 * @since 2.0
+	 */
+	public static boolean generateAbldMakefilesIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, boolean calculateComponentLists, IProgressMonitor progress) {
 
 		if (calculateComponentLists) {
 			calculateComponentLists(config, launcher);
@@ -919,20 +940,20 @@
 
 		// generate the makefiles if necessary
 		for (IPath path : normalMakMakePaths) {
-			if (!generateAbldMakefileIfNecessary(config, launcher, path, false)) {
+			if (!generateAbldMakefileIfNecessary(config, launcher, path, false, progress)) {
 				return false;
 			}
 		}
 		
 		for (IPath path : testMakMakePaths) {
-			if (!generateAbldMakefileIfNecessary(config, launcher, path, true)) {
+			if (!generateAbldMakefileIfNecessary(config, launcher, path, true, progress)) {
 				return false;
 			}
 		}
 
 		return true;
 	}
-
+	
 	/**
 	 * Generates the abld makefile if necessary.
 	 * Generates the makefile for the given mmp file if:
@@ -947,8 +968,8 @@
 	 * @param isTest true for test components, false otherwise
 	 * @return false if any makefile generation was necessary but failed, true otherwise
 	 */
-	protected static boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest) {
-		return getBuilder(config.getCarbideProject().getProject()).generateAbldMakefileIfNecessary(config, launcher, componentPath, isTest);
+	protected static boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest, IProgressMonitor progress) {
+		return getBuilder(config.getCarbideProject().getProject()).generateAbldMakefileIfNecessary(config, launcher, componentPath, isTest, progress);
 	}
 	
 /**
@@ -970,7 +991,7 @@
 		        "com.nokia.carbide.cdt.builder.SBSv2ErrorParser",
 		        "com.nokia.carbide.cdt.builder.CarbideMakeErrorParser",
 		        "com.nokia.carbide.cdt.builder.RCOMPErrorParser",
-		        "com.nokia.carbide.cdt.builder.GCCErrorParser",
+		        "org.eclipse.cdt.core.GCCErrorParser",				// for cpp message from RCOMP
 		        "com.nokia.carbide.cdt.builder.MWLDErrorParser",
 		        "com.nokia.carbide.cdt.builder.MWCCErrorParser",
 		        "com.nokia.carbide.cdt.builder.MakeDefErrorParser"
@@ -987,6 +1008,7 @@
 			        "com.nokia.carbide.cdt.builder.RVCTLinkerErrorParser",
 			        "com.nokia.carbide.cdt.builder.MakeDefErrorParser",
 			        "com.nokia.carbide.cdt.builder.RCOMPErrorParser",
+			        "org.eclipse.cdt.core.GCCErrorParser",				// for cpp message from RCOMP
 			        "com.nokia.carbide.cdt.builder.Elf2E32ErrorParser"
 			        };
 			break;
@@ -997,7 +1019,9 @@
 			        "com.nokia.carbide.cdt.builder.SBSv2ErrorParser",
 			        "com.nokia.carbide.cdt.builder.CarbideMakeErrorParser",
 			        "com.nokia.carbide.cdt.builder.RCOMPErrorParser",
-			        "com.nokia.carbide.cdt.builder.GCCEErrorParser",
+			        "com.nokia.carbide.cdt.builder.GCCECompilerErrorParser",		// also handles cpp message from RCOMP
+			        "com.nokia.carbide.cdt.builder.GCCEAssemblerErrorParser",
+			        "com.nokia.carbide.cdt.builder.GCCELinkerErrorParser",
 			        "com.nokia.carbide.cdt.builder.MakeDefErrorParser",
 			        "com.nokia.carbide.cdt.builder.Elf2E32ErrorParser"
 			        };
@@ -1047,7 +1071,7 @@
 			        "com.nokia.carbide.cdt.builder.RVCTCompilerErrorParser",
 			        "com.nokia.carbide.cdt.builder.RVCTLinkerErrorParser",
 			        "com.nokia.carbide.cdt.builder.RCOMPErrorParser",
-			        "com.nokia.carbide.cdt.builder.GCCEErrorParser",
+			        "org.eclipse.cdt.core.GCCErrorParser",				// for cpp message from RCOMP
 			        "com.nokia.carbide.cdt.builder.MWLDErrorParser",
 			        "com.nokia.carbide.cdt.builder.MakeDefErrorParser",
 			        "com.nokia.carbide.cdt.builder.Elf2E32ErrorParser",
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/IBuildArgumentsInfo.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/IBuildArgumentsInfo.java	Sat Apr 25 12:54:10 2009 -0500
@@ -18,7 +18,11 @@
 
 /**
  * IBuildArgumentsInfo represents one instance of configuration data for the Arguments tab.
+ * This interface only applies for the Symbian 'abld' build system (SBSv1)
  * @see ICarbideBuildConfiguration
+ * 
+ * @deprecated use BuildArgumentsInfo directly
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface IBuildArgumentsInfo {
 	
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideBuildConfiguration.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideBuildConfiguration.java	Sat Apr 25 12:54:10 2009 -0500
@@ -18,12 +18,14 @@
 
 import java.util.List;
 
+import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
 
 /**
  * An ICarbideBuildConfiguration interface represents on buildable target for a project. A single
  * Carbide.c++ project (ICarbideProjectInfo) contains 1 to N ICarbideBuildConfigation objects.
  *
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface ICarbideBuildConfiguration extends ISymbianBuildContext {
 
@@ -65,10 +67,27 @@
 	List<ISISBuilderInfo> getSISBuilderInfoList();
 	
 	/**
-	 * Get the build arguments info.  Contains pref settings from the Arguments tab.
+	 * Get the (abld)build arguments info.  Contains pref settings from the Arguments tab.
+	 * This only applies when building with SBSv1 (bldmake, abld)
+	 * @return IBuildArgumentsInfo instance, never null
+	 * 
+	 * @deprecated use 
+	 */
+	IBuildArgumentsInfo getBuildArgumentsInfo();
+	
+	/**
+	 * Get the (abld)build arguments info.  Contains pref settings from the Arguments tab.
+	 * This only applies when building with SBSv1 (bldmake, abld)
+	 * @return A copy of BuildArgumentsInfo instance, never null
+	 */
+	BuildArgumentsInfo getBuildArgumentsInfoCopy();
+	
+	/**
+	 * Set the build arguments info for SBSv2 build arguments. This only sets values in memory, does
+	 * not write settings to disk. See 
 	 * @return IBuildArgumentsInfo instance, never null
 	 */
-	IBuildArgumentsInfo getBuildArgumentsInfo();
+	void setBuildArgumentsInfo(BuildArgumentsInfo bldArgInfo);
 	
 	/**
 	 * Get the parent Carbide project of this configuration.
@@ -104,5 +123,10 @@
 	 * @return
 	 */
 	IROMBuilderInfo getROMBuildInfo();
-
+	
+	/**
+	 * Compares two configurations to see if their display names are equivalent.
+	 */
+	boolean equals(Object obj);
+	
 }
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/CarbideConfigurationDataProvider.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/CarbideConfigurationDataProvider.java	Sat Apr 25 12:54:10 2009 -0500
@@ -40,13 +40,13 @@
 import org.eclipse.core.runtime.jobs.ISchedulingRule;
 import org.eclipse.core.runtime.jobs.Job;
 
+import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectModifier;
 import com.nokia.carbide.cdt.builder.project.IEnvironmentVariable;
 import com.nokia.carbide.cdt.builder.project.IEnvironmentVarsInfo;
-import com.nokia.carbide.cdt.internal.builder.BuildArgumentsInfo;
 import com.nokia.carbide.cdt.internal.builder.BuildConfigurationData;
 import com.nokia.carbide.cdt.internal.builder.CarbideBuildConfiguration;
 import com.nokia.carbide.cdt.internal.builder.CarbideProjectInfo;
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java	Sat Apr 25 12:54:10 2009 -0500
@@ -32,6 +32,7 @@
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
 
+import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
 import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
 import com.nokia.carbide.cdt.builder.project.IBuildArgumentsInfo;
@@ -91,7 +92,7 @@
 				} else if (se.getName().equals(ENV_VAR_DATA_ID)) {
 					envVarsInfo.loadFromStorage(se);
 				} else if (se.getName().equals(ARGUMENTS_DATA_ID)) {
-					buildArgumentsInfo.loadFromStorage(se);
+					loadBuildArgsFromStorage(se);
 				} else if (se.getName().equals(ROM_BUILDER_DATA_ID)) {
 					romBuilderInfo.loadFromStorage(se);
 				}
@@ -112,11 +113,114 @@
 			}
 			
 			envVarsInfo.saveToStorage(rootStorage.createChild(ENV_VAR_DATA_ID));
-			buildArgumentsInfo.saveToStorage(rootStorage.createChild(ARGUMENTS_DATA_ID));
+			saveBuildArgsToStorage(rootStorage.createChild(ARGUMENTS_DATA_ID));
 			romBuilderInfo.saveToStorage(rootStorage.createChild(ROM_BUILDER_DATA_ID));
 		}
 	}
+	
+	private void loadBuildArgsFromStorage(ICStorageElement rootStorage) {
+		String value = rootStorage.getAttribute(BuildArgumentsInfo.BLDMAKEBLDFILESARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.bldmakeBldFilesArgs = value;
+		}
+		
+		value = rootStorage.getAttribute(BuildArgumentsInfo.BLDMAKECLEANARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.bldmakeCleanArgs = value;
+		}
 
+		value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDBUILDARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.abldBuildArgs = value;
+		}
+
+		value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDEXPORTARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.abldExportArgs = value;
+		}
+
+		value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDMAKEFILEARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.abldMakefileArgs = value;
+		}
+
+		value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDLIBRARYARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.abldLibraryArgs = value;
+		}
+
+		value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDRESOURCEARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.abldResourceArgs = value;
+		}
+
+		value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDTARGETARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.abldTargetArgs = value;
+		}
+
+		value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDFINALARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.abldFinalArgs = value;
+		}
+
+		value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDCLEANARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.abldCleanArgs = value;
+		}
+
+		value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDFREEZEARGSSTORAGE);
+		if (value != null) {
+			buildArgumentsInfo.abldFreezeArgs = value;
+		}
+	}
+	
+	public void saveBuildArgsToStorage(ICStorageElement rootStorage) {
+		if (buildArgumentsInfo.bldmakeBldFilesArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.BLDMAKEBLDFILESARGSSTORAGE, buildArgumentsInfo.bldmakeBldFilesArgs);
+		}
+
+		if (buildArgumentsInfo.bldmakeCleanArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.BLDMAKECLEANARGSSTORAGE, buildArgumentsInfo.bldmakeCleanArgs);
+		}
+
+		if (buildArgumentsInfo.abldBuildArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.ABLDBUILDARGSSTORAGE, buildArgumentsInfo.abldBuildArgs);
+		}
+
+		if (buildArgumentsInfo.abldExportArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.ABLDEXPORTARGSSTORAGE, buildArgumentsInfo.abldExportArgs);
+		}
+
+		if (buildArgumentsInfo.abldMakefileArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.ABLDMAKEFILEARGSSTORAGE, buildArgumentsInfo.abldMakefileArgs);
+		}
+
+		if (buildArgumentsInfo.abldLibraryArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.ABLDLIBRARYARGSSTORAGE, buildArgumentsInfo.abldLibraryArgs);
+		}
+
+		if (buildArgumentsInfo.abldResourceArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.ABLDRESOURCEARGSSTORAGE, buildArgumentsInfo.abldResourceArgs);
+		}
+
+		if (buildArgumentsInfo.abldTargetArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.ABLDTARGETARGSSTORAGE, buildArgumentsInfo.abldTargetArgs);
+		}
+
+		if (buildArgumentsInfo.abldFinalArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.ABLDFINALARGSSTORAGE, buildArgumentsInfo.abldFinalArgs);
+		}
+
+		if (buildArgumentsInfo.abldCleanArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.ABLDCLEANARGSSTORAGE, buildArgumentsInfo.abldCleanArgs);
+		}
+
+		if (buildArgumentsInfo.abldFreezeArgs.trim().length() > 0) {
+			rootStorage.setAttribute(BuildArgumentsInfo.ABLDFREEZEARGSSTORAGE, buildArgumentsInfo.abldFreezeArgs);
+		}
+	}
+	
 	public ICarbideProjectInfo getCarbideProject() {
 		// we need to get the project info from the build manager to ensure we
 		// have the correct object.
@@ -166,10 +270,6 @@
 		}
 	}
 	
-	@Override
-	/**
-	 * Compares two configurations to see if their display names are equivalent
-	 */
 	public boolean equals(Object obj) {
 		if (obj instanceof ICarbideBuildConfiguration || obj instanceof ISymbianBuildContext){
 			ISymbianBuildContext context = (ISymbianBuildContext)obj;
@@ -260,13 +360,15 @@
 	}
 
 	public IBuildArgumentsInfo getBuildArgumentsInfo() {
-		return buildArgumentsInfo;
+		return (IBuildArgumentsInfo)buildArgumentsInfo;
 	}
 	
-	public void setBuildArgumentsInfo(IBuildArgumentsInfo buildArgumentsInfo) {
-		if (buildArgumentsInfo instanceof BuildArgumentsInfo) {
-			this.buildArgumentsInfo = (BuildArgumentsInfo)buildArgumentsInfo;
-		}
+	public BuildArgumentsInfo getBuildArgumentsInfoCopy() {
+		return new BuildArgumentsInfo(buildArgumentsInfo);
+	}
+	
+	public void setBuildArgumentsInfo(BuildArgumentsInfo buildArgumentsInfo) {
+		this.buildArgumentsInfo = buildArgumentsInfo;
 	}
 
 	public IROMBuilderInfo getROMBuildInfo() {
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv1Builder.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv1Builder.java	Sat Apr 25 12:54:10 2009 -0500
@@ -189,7 +189,7 @@
 			}
 			
 			// run abld makefile platform for each component to be built if needed
-			if (!generateAbldMakefileIfNecessary(buildConfig, launcher, componentPath, isTest)) {
+			if (!generateAbldMakefileIfNecessary(buildConfig, launcher, componentPath, isTest, progress)) {
 				return false;
 			}
 
@@ -337,7 +337,7 @@
 		progress.setTaskName("Cleaning " + componentName);
 
 		// run abld makefile platform for each component to be built if needed
-		if (!generateAbldMakefileIfNecessary(buildConfig, launcher, componentPath, isTest)) {
+		if (!generateAbldMakefileIfNecessary(buildConfig, launcher, componentPath, isTest, progress)) {
 			return false;
 		}
 
@@ -390,7 +390,7 @@
 		String componentName = componentPath.removeFileExtension().lastSegment();
 		
 		// run abld makefile platform for each component to be built if needed
-		if (!generateAbldMakefileIfNecessary(buildConfig, launcher, componentPath, isTest)) {
+		if (!generateAbldMakefileIfNecessary(buildConfig, launcher, componentPath, isTest, monitor)) {
 			return false;
 		}
 
@@ -483,7 +483,7 @@
 			return;
 		}
 
-		if (!generateAbldMakefileIfNecessary(buildConfig, launcher, fullMMPPath, isTest)) {
+		if (!generateAbldMakefileIfNecessary(buildConfig, launcher, fullMMPPath, isTest, monitor)) {
 			return;
 		}
 
@@ -936,7 +936,7 @@
 		}
 		
 		// run abld makefile platform for each component to be built if needed
-		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false)) {
+		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false, progress)) {
 			return false;
 		}
 
@@ -1251,7 +1251,7 @@
 		}
 		
 		// run abld makefile platform for each component to be built if needed
-		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false)) {
+		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false, progress)) {
 			return false;
 		}
 
@@ -1477,7 +1477,7 @@
 			return;
 		}
 		
-		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false)) {
+		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false, progress)) {
 			return;
 		}
 		
@@ -1575,7 +1575,7 @@
 			return;
 		}
 
-		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false)) {
+		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false, progress)) {
 			return;
 		}
 		
@@ -1679,7 +1679,7 @@
 			return;
 		}
 		
-		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false)) {
+		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false, progress)) {
 			return;
 		}
 		
@@ -1748,7 +1748,7 @@
 			return;
 		}
 
-		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false)) {
+		if (!CarbideCPPBuilder.generateAbldMakefilesIfNecessary(buildConfig, launcher, false, progress)) {
 			return;
 		}
 		
@@ -2200,6 +2200,11 @@
 	}
 	
 	public boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest) {
+		return generateAbldMakefileIfNecessary(config, launcher, componentPath, isTest, new NullProgressMonitor()); 
+	}
+
+	
+	public boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest, IProgressMonitor progress) {
 
 		// generate the makefile if necessary
 		if (needsAbldMakefileGeneration(config, componentPath)) {
@@ -2249,7 +2254,7 @@
 			// now make our changes to the generated makefile
 			if (areWeManagingTheMakeFiles) {
 				try {
-					updateMakefile(config, componentPath);
+					updateMakefile(config, componentPath, progress);
 				} catch (CoreException e) {
 					CarbideBuilderPlugin.log(e);
 					e.printStackTrace();
@@ -2434,12 +2439,16 @@
 		return makefilePath.toFile();
 	}
 	
-	protected void updateMakefile(ICarbideBuildConfiguration config, IPath componentPath) throws CoreException {
+	protected void updateMakefile(ICarbideBuildConfiguration config, IPath componentPath, IProgressMonitor progress) throws CoreException {
 		// ignore extension makefiles.
 		if (isExtensionMakefile(componentPath)) {
 			return;
 		}
 		
+		if (progress.isCanceled()) {
+			return;
+		}
+		
 		File makefile = getMakefileForMMP(config, componentPath);
 		if (!makefile.exists()) {
 			throw new CoreException(new Status(IStatus.ERROR, CarbideBuilderPlugin.PLUGIN_ID, 0, "Makefile " + makefile.getAbsolutePath() + " doesn't exist.", null)); //$NON-NLS-1$
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv2Builder.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv2Builder.java	Sat Apr 25 12:54:10 2009 -0500
@@ -450,6 +450,10 @@
 		}
 	}
 
+	public boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest, IProgressMonitor progress) {
+		return true;
+	}
+	
 	public boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest) {
 		return true;
 	}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo2.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo2.java	Sat Apr 25 12:54:10 2009 -0500
@@ -300,7 +300,10 @@
 		if (System.getenv(EPOCROOT) == null) {
 			String epocRootStr = epocRoot.toOSString();
 			if (epocRootStr.indexOf(":") == 1) {
-				epocRootStr = epocRootStr.substring(2);
+				// only strip the drive for SBSv1
+				if (!CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(projectTracker.getProject())) {
+					epocRootStr = epocRootStr.substring(2);
+				}
 			}
 			
 			returnEnvArray = addToArray(returnEnvArray, EPOCROOT + EQUALS + epocRootStr);
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ICarbideBuilder.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ICarbideBuilder.java	Sat Apr 25 12:54:10 2009 -0500
@@ -58,8 +58,12 @@
 	public String [] getResolvedEnvVars(ICarbideBuildConfiguration config);
 
 	public boolean needsBldmakeMakefileGeneration(ICarbideBuildConfiguration config);
+	
+	@Deprecated
+	public boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest);
+	
+	public boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest, IProgressMonitor progress);
 
-	public boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest);
 	
 	public IPath getMakefileDirectory(ICarbideBuildConfiguration config);
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/AbstractGCCEErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+* Handles GCCE specific error before invoking CDT error parser
+* 
+*/
+package com.nokia.carbide.cdt.internal.builder.error.parsers;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.core.ErrorParserManager;
+import org.eclipse.cdt.core.IMarkerGenerator;
+import org.eclipse.cdt.internal.errorparsers.AbstractErrorParser;
+import org.eclipse.cdt.internal.errorparsers.ErrorPattern;
+
+/*
+ * AbstractErrorParser/ErrorPattern are going to public API in CDT 5.1
+ */
+abstract public class AbstractGCCEErrorParser extends AbstractErrorParser {
+	private String toolNameString;
+	private static final ErrorPattern[] patterns = {
+		/*
+		 *	int groupFileName,
+		 *	int groupLineNum,
+		 *	int groupDesc,
+		 *	int groupVarName,
+		 *	int severity
+		 */
+			// arm-none-symbianelf-g++: \test\test.cpp: No such file or directory
+			new ErrorPattern("(.*):\\s*(.*:)\\s*(.*(?:[Nn]o such file:\\s*)?[Nn]o such file or directory)", 2, 0, 3, 0, IMarkerGenerator.SEVERITY_ERROR_RESOURCE),	//$NON-NLS-1$
+			// arm-none-symbianelf-g++: no input files
+			new ErrorPattern("(.*):\\s*(.*[Nn]o input files)", 0, 0, 2, 0, IMarkerGenerator.SEVERITY_ERROR_RESOURCE),	//$NON-NLS-1$
+			//arm-none-symbianelf-g++: warning: `-x c++' after last input file has no effect
+			//arm-none-symbianelf-g++: error: some message
+			new ErrorPattern("(.*):\\s*(.*[(?:[Ww]arning)(?:[Ee]rror)]):\\s*(.*)", 0, 0, 3, 0, IMarkerGenerator.SEVERITY_INFO) {	//$NON-NLS-1$
+
+				@Override
+				public int getSeverity(Matcher matcher) {
+					String warningGroup = matcher.group(2);
+					if (warningGroup != null && warningGroup.indexOf("arning") >= 0) //$NON-NLS-1$
+						return IMarkerGenerator.SEVERITY_WARNING;
+					
+					return IMarkerGenerator.SEVERITY_ERROR_RESOURCE;
+				}
+
+			}
+	};
+	
+	protected AbstractGCCEErrorParser(String toolNameString) {
+		super(patterns);
+		this.toolNameString = toolNameString;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.cdt.internal.errorparsers.AbstractErrorParser#processLine(java.lang.String, org.eclipse.cdt.core.ErrorParserManager)
+	 * 
+	 * Only pick up message that matches the tool name pattern
+	 * 
+	 */
+	public boolean processLine(String line, ErrorParserManager eoParser) {
+		if (line.startsWith(toolNameString)) {
+			return super.processLine(line, eoParser);
+		}
+		return false;
+	}
+}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/CarbideBaseErrorParser.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/CarbideBaseErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -172,7 +172,7 @@
 	 * sets iIFile variable if possible
 	 * 
 	 * @param errorParserManager
-	 *            Errro parser manager to query
+	 *            Error parser manager to query
 	 */
 	protected void setFile(ErrorParserManager errorParserManager) {
 		// if no filename, just return
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/CarbideMakeErrorParser.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/CarbideMakeErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -50,6 +50,7 @@
 		if (matcher.matches()) {
 			setDescription(matcher.group(1));
 			String msg = " - possibly too many arguments.  If there are a lot of source files in a library, try breaking those out into multiple libraries.";
+			msgLineNumber = -1;
 			eoParser.generateMarker(rsrc, msgLineNumber, line + msg, msgSeverity, null);
 			return true;
 		}
@@ -108,7 +109,7 @@
 		
 		if (line.contains(rvctNotInstalled)){
 			// create a specific error message when rvct is not installed since the build tools don't
-			this.msgDescription = "RVCT not isntalled or 'armcc' is not on PATH. Please check that your environment for the RVCT compiler is correct.";
+			this.msgDescription = "RVCT not installed or 'armcc' is not on PATH. Please check that your environment for the RVCT compiler is correct.";
 			this.msgLineNumber = -1;
 			this.msgSeverity = IMarkerGenerator.SEVERITY_ERROR_BUILD;
 			eoParser.generateMarker(rsrc, msgLineNumber, msgDescription, msgSeverity, null);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/GCCEAssemblerErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+* Handles GCCE specific error before invoking CDT GNU assembler error parser
+* 
+*/
+package com.nokia.carbide.cdt.internal.builder.error.parsers;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ErrorParserManager;
+import org.eclipse.cdt.core.IErrorParser;
+import org.eclipse.cdt.core.IMarkerGenerator;
+
+public class GCCEAssemblerErrorParser extends AbstractGCCEErrorParser {
+	static String parsersID = "org.eclipse.cdt.core.GASErrorParser";
+	static IErrorParser asErrorParser = CCorePlugin.getDefault().getErrorParser(parsersID)[0];
+	
+	public GCCEAssemblerErrorParser() {
+		super("arm-none-symbianelf-as");		//$NON-NLS-1$
+	}
+	
+	public boolean processLine(String line, ErrorParserManager eoParser) {
+		String lineLC = line.toLowerCase();
+		// check if the tool is installed.  if not then give add a user friendly error to the problems view.
+		if (lineLC.startsWith("'arm-none-symbianelf-as.exe' is not recognized")) {
+			eoParser.generateMarker(eoParser.getProject(), 0, "GCCE not found on the PATH.  Please check your GCCE installation.", IMarkerGenerator.SEVERITY_ERROR_BUILD, null);
+			return true;
+		}
+	
+		if (asErrorParser.processLine(line, eoParser)) {
+			return true;
+		}
+		
+		// pick up where CDT failed to pick up
+		// consider porting to CDT later
+		if (super.processLine(line, eoParser)) {
+			return true;
+		}
+		
+		return false;
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/GCCECompilerErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+* Handles GCCE specific error before invoking CDT GCC error parser
+* 
+*/
+package com.nokia.carbide.cdt.internal.builder.error.parsers;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ErrorParserManager;
+import org.eclipse.cdt.core.IErrorParser;
+import org.eclipse.cdt.core.IMarkerGenerator;
+
+public class GCCECompilerErrorParser extends AbstractGCCEErrorParser {
+
+	public GCCECompilerErrorParser() {
+		super("arm-none-symbianelf-g++");		//$NON-NLS-1$
+	}
+
+	static String parsersID = "org.eclipse.cdt.core.GCCErrorParser";
+	static IErrorParser gccErrorParser = CCorePlugin.getDefault().getErrorParser(parsersID)[0];
+	
+	public boolean processLine(String line, ErrorParserManager eoParser) {
+		String lineLC = line.toLowerCase();
+		
+		// check if the tool is installed.  if not then give add a user friendly error to the problems view.
+		if (lineLC.startsWith("'arm-none-symbianelf-g++.exe' is not recognized")) {
+			eoParser.generateMarker(eoParser.getProject(), 0, "GCCE not found on the PATH.  Please check your GCCE installation.", IMarkerGenerator.SEVERITY_ERROR_BUILD, null);
+			return true;
+		}
+	
+		if (gccErrorParser.processLine(line, eoParser)) {
+			return true;
+		}
+		
+		// pick up where CDT failed to pick up
+		// consider porting to CDT later
+		if (super.processLine(line, eoParser)) {
+			return true;
+		}
+		
+		return false;
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/GCCELinkerErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* 
+* Handles GCCE specific error before invoking CDT GNU linker error parser
+* 
+*/
+package com.nokia.carbide.cdt.internal.builder.error.parsers;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ErrorParserManager;
+import org.eclipse.cdt.core.IErrorParser;
+import org.eclipse.cdt.core.IMarkerGenerator;
+
+public class GCCELinkerErrorParser extends AbstractGCCEErrorParser {
+	static String TOOLNAME = "arm-none-symbianelf-ld";
+	static String parsersID = "org.eclipse.cdt.core.GLDErrorParser";
+	static IErrorParser ldErrorParser = CCorePlugin.getDefault().getErrorParser(parsersID)[0];
+	
+	private static final Pattern rodataErrorPattern = Pattern.compile("(.*)\\(\\.rodata\\+.*\\): (.*)"); //$NON-NLS-1$;
+	private static final Pattern errorPattern = Pattern.compile(TOOLNAME + "(\\.exe)?:\\s*(.*)");	//$NON-NLS-1$;
+	
+	public GCCELinkerErrorParser() {
+		super(TOOLNAME);
+	}
+	
+	public boolean processLine(String line, ErrorParserManager eoParser) {
+		String lineLC = line.toLowerCase();
+		Matcher ldMatcher;
+		
+		// check if the tool is installed.  if not then give add a user friendly error to the problems view.
+		if (lineLC.startsWith("'arm-none-symbianelf-ld.exe' is not recognized")) {
+			eoParser.generateMarker(eoParser.getProject(), 0, "GCCE not found on the PATH.  Please check your GCCE installation.", IMarkerGenerator.SEVERITY_ERROR_BUILD, null);
+			return true;
+		}
+		
+		if (ldErrorParser.processLine(line, eoParser)) {
+			return true;
+		}
+
+		// pick up where CDT failed to pick up
+		// consider porting to CDT later
+		if (super.processLine(line, eoParser)) {
+			return true;
+		}
+		
+		ldMatcher = rodataErrorPattern.matcher(line);
+		if (ldMatcher.matches()) {
+			eoParser.generateMarker(eoParser.getProject(), 0, line, IMarkerGenerator.SEVERITY_ERROR_RESOURCE, null);
+			return true;			
+		}
+		
+		ldMatcher = errorPattern.matcher(line);
+		if (ldMatcher.matches()) {
+			eoParser.generateMarker(eoParser.getProject(), 0, ldMatcher.group(2), IMarkerGenerator.SEVERITY_ERROR_RESOURCE, null);
+			return true;
+		}
+
+		return false;
+	}
+
+}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/RCOMPErrorParser.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/RCOMPErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -22,83 +22,10 @@
 
 import org.eclipse.cdt.core.ErrorParserManager;
 import org.eclipse.cdt.core.IMarkerGenerator;
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
 
 public class RCOMPErrorParser extends CarbideBaseErrorParser {
 
-	private Pattern cppFileLineWarningPattern;
-	private Pattern cppFileLinePattern;
-	private Pattern cppFileLineInfoPattern;
-	
-	public RCOMPErrorParser() {
-		// match file, line, possible column, and warning
-		cppFileLineWarningPattern = Pattern.compile("(.+):(\\d+):(?:(\\d+:)?)\\s+warning:\\s+(.*)"); //$NON-NLS-1$
-		// match file, line, possible column, and error
-		cppFileLinePattern = Pattern.compile("(.+):(\\d+):(?:(\\d+:)?)\\s+(.*)"); //$NON-NLS-1$
-//		 match file, line, possible column, and info
-		cppFileLineInfoPattern = Pattern.compile("(.+):(\\d+):(?:(\\d+:)?)\\s+note:(.*)"); //$NON-NLS-1$
-	}
-
-	private boolean processPreprocessorLine(String line, ErrorParserManager errorParserManager) {
-		// Known patterns:
-		//
-		// (a)
-		// %s:%d: warning: %s
-		//
-		// (b)
-		// %s:%d:%d: warning: %s
-		//
-		// (c)
-		// %s:%d: %s
-		//
-		// (d)
-		// %s:%d:%d: %s
-		//
-		// (e)
-		// * cpp failed
-
-		initialise();
-
-		Matcher cppMatcher = cppFileLineWarningPattern.matcher(line);
-		if (cppMatcher.matches()) {
-			msgFileName = cppMatcher.group(1);
-			msgLineNumber = Integer.parseInt(cppMatcher.group(2));
-			msgDescription = cppMatcher.group(4);
-			setFile(errorParserManager);
-			errorParserManager.generateExternalMarker(msgIFile, msgLineNumber,	msgDescription, IMarkerGenerator.SEVERITY_WARNING, null, externalFilePath);
-			return true;
-		}
-
-		cppMatcher = cppFileLineInfoPattern.matcher(line);
-		if (cppMatcher.matches()) {
-			msgFileName = cppMatcher.group(1);
-			msgLineNumber = Integer.parseInt(cppMatcher.group(2));
-			msgDescription = cppMatcher.group(4);
-			setFile(errorParserManager);
-			errorParserManager.generateExternalMarker(msgIFile, msgLineNumber, msgDescription, IMarkerGenerator.SEVERITY_INFO, null, externalFilePath);
-			return true;
-		}
-		
-		cppMatcher = cppFileLinePattern.matcher(line);
-		if (cppMatcher.matches()) {
-			msgFileName = cppMatcher.group(1);
-			msgLineNumber = Integer.parseInt(cppMatcher.group(2));
-			msgDescription = cppMatcher.group(4);
-			setFile(errorParserManager);
-			errorParserManager.generateExternalMarker(msgIFile, msgLineNumber, msgDescription, IMarkerGenerator.SEVERITY_ERROR_BUILD, null, externalFilePath);
-			return true;
-		}
-
-		if (line.startsWith("* cpp failed") || line.startsWith("* BMCONV failed") 
-			|| line.startsWith("* mifconv.exe failed") || line.startsWith("* epocaif.pl failed") 
-			|| line.toUpperCase().startsWith("FAILED TO UPDATE FILE") ) {
-			errorParserManager.generateExternalMarker(null, -1, line, IStatus.ERROR, null, externalFilePath);
-			return true;
-		}
-
-		return false;
-	}
 	public boolean processLine(String line, ErrorParserManager errorParserManager) {
 		// Known patterns.
 		// (a)
@@ -111,11 +38,11 @@
 		// filename(lineno) : Error: (ErrorNumber) iDescription
 		//
 		// (d)
-		// cannot open %s for writing (where %s is the asbolute path to the .rsc
+		// cannot open %s for writing (where %s is the absolute path to the .rsc
 		// file)
 		//
 		// (e)
-		// Failed to write UIDs to %s (where %s is the asbolute path to the .rsc
+		// Failed to write UIDs to %s (where %s is the absolute path to the .rsc
 		// file)
 		//
 		// (f)
@@ -124,34 +51,51 @@
 		// (g)
 		// ERROR: %s (where %s could be anything really)
 		//
-		// (h) C Pre-Processor
-		// Filename:lineNumber: iDescription
+		// (h) C Pre-Processor failing
+		// * cpp failed
+		//
+		// (i)
+		// Failed to open %s
 		//
-		// (i) C Pre-Processor failing
-		// * cpp failed
+		// (j)
+		// RCOMP failed with code %d
+		//
+		
+		// Warning pattern
+		// (a)
+		// atof may have failed for %s
 		
 		initialise();
 		
-		if (processPreprocessorLine(line, errorParserManager))
-			return true;
-		
+		// some error
 		HashSet<String> linePrefixes = new HashSet<String>();
 		linePrefixes.add("cannot open "); //$NON-NLS-1$
 		linePrefixes.add("Failed to write UIDs to "); //$NON-NLS-1$
 		linePrefixes.add("* RCOMP failed -"); //$NON-NLS-1$
 		linePrefixes.add("ERROR: "); //$NON-NLS-1$
 		linePrefixes.add("* cpp failed"); //$NON-NLS-1$
+		linePrefixes.add("Failed to open "); //$NON-NLS-1$
+		linePrefixes.add("RCOMP failed with code "); //$NON-NLS-1$
 
 		if (checkForLineBeginnings(line, linePrefixes.toArray(new String[linePrefixes.size()]))) {
 			errorParserManager.generateMarker(null, -1, line, msgSeverity, null);
 			return true;
 		}
+		
+		// some warning
+		HashSet<String> warningLinePrefixes = new HashSet<String>();
+		warningLinePrefixes.add("atof may have failed for "); //$NON-NLS-1$
+		
+		if (checkForLineBeginnings(line, warningLinePrefixes.toArray(new String[warningLinePrefixes.size()]))) {
+			errorParserManager.generateMarker(null, -1, line, IMarkerGenerator.SEVERITY_WARNING, null);
+			return true;
+		}
 
 		// check for MBM build failure.  This string is part of the help text spewed out
 		// for an invalid command line.  Same in Symbian 7.0s and 9.2, so assumed static.
 		if (line.indexOf("epocmbm [-h headerfile]") >= 0) { //$NON-NLS-1$
 			errorParserManager.generateMarker(null, -1,
-					"epocmbm build failed (perhaps due to an empty image list or invalid color format specification): please check the Console",
+					"epocmbm build failed (perhaps due to an empty image list or invalid color format specification): please check the Console", //$NON-NLS-1$
 					IMarkerGenerator.SEVERITY_ERROR_BUILD, null);
 			return true;
 		}
@@ -163,7 +107,7 @@
 		if (!setFileNameAndLineNumber(line) && !setDetailsFromCppOutput(line)) {
 			return false;	
 		}
-		String[] extensionsToExclude = {".pkg", ".def", ".defi"}; //$NON-NLS-1$ //$NON-NLS-2$ 
+		String[] extensionsToExclude = {".pkg", ".def", ".defi", ".asm", ".c" ,".c++", ".cc", ".cia", ".cpp", ".cxx", "h", ".hh", ".hpp", ".hxx", ".s"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ //$NON-NLS-11$ //$NON-NLS-12$ //$NON-NLS-13$ //$NON-NLS-14$ //$NON-NLS-15$ 
 		if (hasExcludedExtension(extensionsToExclude)) {
 			return false;
 		}
@@ -208,7 +152,7 @@
 			// Remove the warning.
 			msgDescription = msgDescription.substring("warning".length()).trim(); //$NON-NLS-1$
 			msgSeverity = IMarkerGenerator.SEVERITY_WARNING;
-		} else if (msgDescription.matches("(?i)error.*")) {
+		} else if (msgDescription.matches("(?i)error.*")) { //$NON-NLS-1$
 			// Remove the error.
 			msgDescription = msgDescription.substring("error".length()).trim(); //$NON-NLS-1$
 		}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/RVCTCompilerErrorParser.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/RVCTCompilerErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
@@ -39,6 +39,7 @@
 		// e.g. "no source": Error:  #5: cannot open source input file "\CarbideB18_workspace\BlackFlag\group\SRC\dbg_debug_menu.cpp": No such file or directory
 		if (aLine.contains("No such file or directory")){
 			aErrorParserManager.generateMarker(aErrorParserManager.getProject(), 0, aLine, IMarkerGenerator.SEVERITY_ERROR_BUILD, null);
+			return true;
 		}
 		
 		
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/ArgumentsTabComposite.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/ArgumentsTabComposite.java	Sat Apr 25 12:54:10 2009 -0500
@@ -25,9 +25,9 @@
 import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.swt.widgets.Text;
 
+import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
 import com.nokia.carbide.cdt.builder.project.IBuildArgumentsInfo;
 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
-import com.nokia.carbide.cdt.internal.builder.BuildArgumentsInfo;
 import com.nokia.carbide.cdt.internal.builder.CarbideBuildConfiguration;
 import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
 
--- a/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/ProjectCommandHandler.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/ProjectCommandHandler.java	Sat Apr 25 12:54:10 2009 -0500
@@ -27,6 +27,7 @@
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -177,7 +178,9 @@
 						for (final ICarbideBuildConfiguration currConfig : buildConfigList) {
 							launcher.setErrorParserManager(cpi.getINFWorkingDirectory(), CarbideCPPBuilder.getParserIdArray(currConfig.getErrorParserId()));
 							
-
+							if (monitor.isCanceled()) {
+								return new Status(IStatus.CANCEL, "Carbide.c++ builder utils plugin", IStatus.CANCEL, "Build Cancelled", null); 
+							}
 							// kick off a build for each configuration...
 							CarbideCPPBuilder.invokeBuild(currConfig, launcher, subMonitor.newChild(1), false);
 							
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/background.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/background.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -12,7 +12,7 @@
 <p>Carbide.c++ is built on the <a href="http://www.eclipse.org">Eclipse</a> platform. The Eclipse components used are:</p>
 <ul>
 <li>Eclipse 3.4</li>
-<li>A slightly modified version of CDT 5.0.0</li>
+<li>A slightly modified version of CDT 5.0.1</li>
 <li>EMF 2.4.1</li>
 <li>GEF 3.4.1</li>
 </ul>
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/env_setup.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/env_setup.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -16,26 +16,25 @@
 <p>This section will describe how to set up a basic Eclipse development environment 
 to develop a plugin against the Carbide.c++ development environment.</p>
 
-<h3><a name="download" id="download"></a>Download the Eclipse 3.4 SDK</h3>
-<p>Carbide.c++  is developed against the Eclipse 3.4 release build. You can download the build 
-<a href="http://www.eclipse.org/downloads/">here</a>. Carbide.c++ is only tested and supported on the Windows platform.</p>
-<p>You can extract the Eclipse platform anywhere you like.</p>
-<p class="note"><strong>NOTE</strong> When you launch eclipse, choose a workspace location without spaces. This will help to prevent build issues later on with Symbian SDKs.</p>
-<h3><a name="setup" id="setup"></a>Set-up the Target Platform</h3>
+<h3><a name="download" id="download"></a>Download the Carbide.c++ Development Kit (CDK) </h3>
+<p>Carbide.c++  is developed against the Eclipse 3.4 release build which includes the Java Development Tools (JDT) and Plug-in Development Environment (PDE). You will need these items as well as the Carbide.c++/CDT source code to develop Eclipse/Carbide.c++ plug-ins. If you want to install the CDK you will need to run the Software Updates under the Help menu to update your installation to include the CDK. </p>
+<p>For more information on running the Software Updater please see the page <a href="PLUGINS_ROOT/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_updating.htm">Updating Carbide.c++</a>. </p>
+<h3><a name="setup" id="setup"></a>Importing source projects </h3>
 
-<p>Once you have your Eclipse environment extracted and launched, you can set up your <strong>Target Platform</strong> to have your fresh installation reference all the Carbide.c++/CDT/Eclipse plugins.</p>
-<p>The Eclipse Target Platform feature allows you to compile and run against a different Eclipse installation than the
-one you're using for development. In this case you'll be targeting the Carbide.c++ installation. The <b>Target Platform</b> is a workspace-wide setting, so you may want to dedicate a separate workspace for your Carbide.c++ plugin development. </p>
-
+<p>Once you have your Carbide environment updated to include the CDK, you can create new Eclipse plug-in projects and debug the Carbide.c++ sources. How to create eclipse plug-ins is beyond the scope of this demonstration. If you want to debug any of the Carbide.c++ or Ecilpse platform source follow these steps to verify your CDK isntallation: </p>
 <ol>
-  <li>Choose <strong>Window</strong> &gt; <strong>Preferences</strong> &gt; <strong>Plug-in Development</strong> &gt; <strong>Target Platform</strong>.</li>
-  <li>Browse for the <strong>Location</strong> of your Carbide.c++ installation. This is the location that contains the <span class="style1">Carbide.c++.exe</span> and <span class="style1">plugins</span> folder. When you have chosen the new location eclipse will load the plugins found in Carbide.c++ installation you will work against. Your Target Platform preference should look something like this:<br />
-    <br />
-  <img src="../img/target_platform.JPG" width="740" height="584" /></li>
-  <li>Select <strong>OK</strong>.</li>
+  <li>Switch to the <strong>Plug-in Development</strong> perspective. </li>
+  <li>Select the <strong>Plug-ins</strong> view. </li>
+  <li>Select the binary plug-in you want view the source of. Don't select the *source feature.</li>
+  <li>Right-click on the plug-in you want to import and select <strong>Import As &gt; Source Project</strong>. For example, the <span class="style1">com.nokia.carbide.cpp.leavescan</span> plug-in as shown below.<br>
+    <br>
+  <img src="../img/import_source_project.jpg" width="706" height="459">  </li>
+  <li>Now you can return to the <strong>Package Explorer</strong> view and navigate the source files for the imported plug-in. It should look like a normal plug-in project:<br>
+    <br>
+  <img src="../img/source_plugin.jpg" width="361" height="392"><br>
+  <br>
+  You can now <a href="launchconfig.htm">create a launch configuration</a> and debug Carbide. </li>
 </ol>
-<p>You are now ready to import or create new projects into your Eclipse workspace.</p>
- 
 <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
 </div>
 </body>
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/gettingStarted.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/gettingStarted.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -13,8 +13,8 @@
 <ul>
   <li><a href="background.htm">Background information</a></li>
   <li><a href="env_setup.htm">Setting up your development environment</a></li>
-  <li><a href="sdk_help.htm">Installing the Carbide.c++ Plug-in SDK help</a></li>
-  <li><a href="import_examples.htm">Importing the SDK example and leavescan plug-ins</a></li>
+  <li><a href="sdk_help.htm">Viewing the Carbide.c++ Plug-in SDK help</a></li>
+  <li><a href="import_examples.htm">Importing the SDK example plug-in</a></li>
   <li><a href="launchconfig.htm">Debugging a Carbide.c++ plug-in</a></li>
 </ul>
 <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div></div>
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/import_examples.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/import_examples.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -12,43 +12,22 @@
 </head>
 <body bgcolor="#FFFFFF">
 
-<h2><a name="import" id="import"></a>Importing the SDK example and leavescan plug-ins</h2>
-<p>There are two example plugins you can import and examine as examples of Carbide.c++ API usage.</p>
+<h2><a name="import" id="import"></a>Importing the SDK Example </h2>
+<p>You can import any of the plug-ins in Carbide.c++ and examine the source code. However, the SDK provides a plug-in you can import and examine as an example of Carbide.c++ API usage.</p>
 <ul>
-<li>The Examples plugin (<span class="code">com.nokia.carbide.cpp.sdk.examples</span>) is part of the Carbide.c++ Plug-in SDK. It
+<li>The Examples plugin (<span class="code">com.nokia.carbide.cpp.sdk.examples</span>) is part of the Carbide.c++ Development Kit (CDK). It
 provides examples of installing items in the Carbide menu, creating new projects programatically, and accessing
 project and Symbian build information. See <a href="#showExamplesMenu">below</a> for instructions on how to enable the example menu
 commands inside carbide. </li>
-<li>The leavescan plugin (com.nokia.carbide.cpp.leavescan) is part of the Carbide.c++ product installation with source code included.
-The source code can help give you a basic understanding of how to access basic project configuration 
-settings from the Carbide.c++ APIs.</li>
 </ul>
-<p>You can import these plugins into your workspace and view/debug all the source to get a better understanding of the 
-Carbide.c++ APIs in a functional plugin.</p>
+<p>You can import this and other plugins into your workspace and view/debug all the source to get a better understanding of the 
+Carbide.c++ APIs in a functional plugin. Plesae see the page on <a href="env_setup.htm">setting up your development environment</a> for information on how to import a source project. </p>
 <p class="note"><strong>Note</strong> that the example plugins were built with JRE1.5, you will likely receive errors with JRE1.6. Select Window &gt; Preferences &gt; Java &gt; Installed JREs to add currently installed JREs and select the JRE to use.</p>
-<ol>
-  <li>Choose <b>File &gt; Import</b></li>
-  <li> Choose<strong> Plug-in Development</strong> &gt; <strong>Plug-ins and Fragments</strong> from the <strong>Import</strong> wizard page.<br />
-    <br />
-  <img src="../img/Import_wizard_page.JPG" width="470" height="550"/> <br /> 
-  </li>
-  <li>On the Import Plug-ins and Fragments pages you select  import options. In the <strong>Import As</strong> group, select <strong>Projects with source folders</strong>. 
-  In addition, note that <strong>The target platform (as specified in the Preferences)</strong> 
-  checkbox should be enabled. This should be the path you specified previously in the Target Preferences.<br />
-    <br />
-  <img src="../img/plugins_and_frags_wizard.JPG" width="575" height="525"/> <br /> 
-  </li>
-  <li> Finally, select the plugins you want to import. Here you select the <code class="code">com.nokia.carbide.cpp.leavescan</code> and 
-  <code class="code">com.nokia.carbide.cpp.sdk.examples</code> plugins.<br />
-    <br />
-  <img src="../img/plugin_selection_wizard.JPG" width="663" height="554"/> <br />
-  </li>
-  <li>When you are done importing you should have new plugins in your workspace and be able to view the 
-  sources for both plugin projects. Your workspace should look something like this:<br />
-    <br />
-  <img src="../img/dev_ide_complete.JPG" width="1024" height="757"/></li>
-</ol>
- <h3>Adding a Carbide menu</h3>
+<p class="note">When you are done importing you should have new plugins in your workspace and be able to view the 
+      sources for both plugin projects. Your workspace should look something like this:<br />
+  <br />
+  <img src="../img/dev_ide_complete.JPG" width="1024" height="757"/></p>
+<h3>Adding a Carbide menu</h3>
  <p>The menu items contributed by the Examples plugin are not visible by default in the Carbide.c++ program. To show the missing menu, follow these steps:</p>
 <ol>
  <li>In Carbide.c++ (not in your Eclipse Java development SDK) choose <b>Window &gt; Customize Perspective...</b></li>
@@ -57,7 +36,7 @@
    <br/>
  <img src="../img/show_examples_menu.jpg" width="711" height="501"/></li>
 </ol>
- <p>Click OK, and you should now see the Carbide menu in the menu bar.</p>
+ <p>Click OK, and you should now see the Carbide menu in the menu bar. You can now examine the source code and run it in the debugger. See <a href="launchconfig.htm">debugging a debugging a Carbide.c++ plug-in</a> for information on setting up a plug-in debug session. </p>
    <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div></div>
 </body>
 </html>
\ No newline at end of file
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/launchconfig.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/launchconfig.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -4,18 +4,26 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Debugging a Carbide.c++ plug-in</title>
 <link rel="StyleSheet" href="../../book.css" type="text/css"/>
+<style type="text/css">
+<!--
+.style1 {font-family: "Courier New", Courier, mono}
+-->
+</style>
 </head>
 <body bgcolor="#FFFFFF">
 <h2>Debugging a Carbide.c++ plug-in</h2>
 <p>In order to launch Carbide.c++ in debug mode you need to create an Eclipse runtime debug configuration. Follow these steps.</p>
 <ol>
   <li> Click the <b>Debug</b> icon (<img src="../img/btn_debug.png" width="17" height="16" align="absmiddle">) in the task bar or right click on a project and choose<strong> Debug As</strong> &gt;<strong> Open Debug Dialog...</strong> You should see the Eclipse launch configuration dialog. </li>
-  <li>Choose <b>Eclipse Application</b> and then click on the <b>New</b> button. A new configuration is created. You should be able to take the default settings which should look like this:<br />
+  <li>Choose <b>Eclipse Application</b> and then click on the <b>New</b> button. A new configuration is created. You should be able to take the default settings which should look like this: <br />
     <br />
-  <img src="../img/launch_config.JPG" width="799" height="573" /> <br />
+    <img src="../img/launch_config.jpg" width="881" height="638"> <br />
 </li>
-  <li>Click <strong>Debug</strong> and you should have a fully functional debug environment around Carbide.c++.<br /> 
-  </li>
+  <li>Click <strong>Debug</strong> and the Carbide.c++ project will launch another instance under debug control. You can set breakpoints in any of the plug-ins you have imported or any sources in the stack crawl during a debug session. <br>
+    <br>
+    <br>
+    <strong>TIP</strong>: Under the Arguments Tab, be sure to add theses VM Arguments for memory management: <span class="style1">-Xms40m -Xmx1024m<br />
+  </span> </li>
 </ol>
 <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div></div>
 </body>
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/sdk_help.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/gettingStarted/sdk_help.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -7,64 +7,17 @@
 </head>
 <body bgcolor="#FFFFFF">
 
-<h2>Installing the Carbide.c++ Plug-in SDK help</h2>
+<h2>  Carbide.c++ Plug-in SDK help</h2>
 
 <p>If you're just getting started with creating a Carbide.c++ plug-in you're probably looking
-at this help documentation from within Carbide.c++. But if you are setting up your development
-environment as described in <a href="env_setup.htm">Setting up your development environment</a>
-you will find it much more useful to have the help available from within your plug-in development
-environment.</p>
-
-<p>The following steps will show you how to install the latest version of the Carbide.c++
-Plugin SDK into your plug-in development environment. If your network requires a proxy to 
-access external Internet sites then follow the first two steps. Otherwise skip to step 3.</p>
-<ol>
-<li>From the menu bar choose <strong>Window > Preferences</strong>.<br/><br/>
-<img src="../img/preferences_command.jpg" alt="" width="820" height="665" /><br/>
-</li>
-<li>Expand the General group and select Network Connections. Select <strong>Manual proxy configuration</strong> and enter your proxy information.<br/>
-  <br/>
-<img src="../img/proxy_setup.jpg" alt="" width="632" height="544" /><br/>
-<br/>
-</li>
-<li>From the menu bar choose <strong>Help &gt; Software Updates &gt; Find and Install...</strong><br/>
-  <br/>
-<img src="../img/find_install.jpg" alt="" width="820" height="665" /><br/>
-<br/>
-</li>
-<li>Select "Search for new features to install" and click Next.<br/>
+at this help documentation from within Carbide.c++. Make sure you first follow the steps to import the Carbide Development Kit (CDK) as described in <a href="env_setup.htm">Setting up your development environment</a>. The CDK contains all the non-internal APIs for you to browse for your convenience. The same documentation appears in the javadoc comments in the source code.<br/>
   <br/>
-<img src="../img/new_features.jpg" alt="" width="600" height="322" /><br/>
-<br/>
-</li>
-<li>On the Update sites to visit page, you will need to add the Carbide.c++ update site. Press the
-"New Remote Site.." button.<br/><br/>
-<img src="../img/before_new_site.jpg" alt="" width="600" height="451" /><br/>
-<br/>
-</li>
-<li>Fill in the update site information (<span class="code">http://tools.ext.nokia.com/updates/</span>) with the latest major release version (<span class="code">carbide13</span>) and press OK.<br/>
-  <br/>
-<img src="../img/new_site_dialog.jpg" alt="" width="356" height="154" /><br/>
-<br/>
-</li>
-<li>The new site should now appear in the list of update sites. Press the Finish button.<br/><br/>
-<img src="../img/after_new_site.jpg" alt="" width="600" height="451" /><br/>
-<br/>
-</li>
-<li>Eclipse will connect to the Carbide.c++ update site and display the available updates. The
-specific list may differ from the screenshot below, but the Carbide.c++ SDK item should
-be present. Select it and press Next and proceed through the rest of the installation.<br/>
-<br/>
-<img src="../img/select_sdk_feature.jpg" alt="" width="600" height="523" /><br/>
-<br/>
-</li>
-<li>The SDK is now installed. You can <a href="import_examples.htm">import</a> the latest version of the
-Examples plugin. The SDK help is under the "Carbide.c++ Plug-in Developer Guide" entry in the Eclipse online 
+   The SDK help is under the "Carbide.c++ Plug-in Developer Guide" entry in the Eclipse online 
 help.<br/>
 <br/>
-<img src="../img/help_api_ref.jpg" alt="" width="939" height="697" /><br/>
-<br/></li>
-</ol>
+<img src="../img/help_api_ref.jpg" width="878" height="630"><br/>
+<br/>
+</p>
 
 <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
 </div></body>
Binary file carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/img/help_api_ref.jpg has changed
Binary file carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/img/import_source_project.jpg has changed
Binary file carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/img/launch_config.jpg has changed
Binary file carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/img/source_plugin.jpg has changed
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -53,6 +53,15 @@
   enums in, mark them @Deprecated, and add the correct ones, since this would violate uniqueness in the EMMPLanguage#values() 
   array.)</li>
 </ul>
+
+<p>Since Carbide 2.0.4</p>
+<ul>
+  <li>Added setter methods for SBSv1 (abld) arguments in <em> com.nokia.carbide.cdt.builder.project.IBuildArgumentsInfo</em>.</li>
+</ul>
+<ul>
+  <li>Added <em> com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration#setBuildArgumentsInfo(IBuildArgumentsInfo bldArgInfo)</em>.</li>
+</ul>
+
 <h3>Deprecated APIs</h3>
 <p>The following Carbide APIs have been deprecated and should not be used anymore.  Please see the JavaDoc for these classes and methods for more information.</p>
 <p>Since Carbide 1.2.0</p>
@@ -82,6 +91,14 @@
 <ul>
   <li>None </li>
 </ul>
+
+<p>Since Carbide 2.1</p>
+<ul>
+  <li><i>com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder.generateAbldMakefileIfNecessary(ICarbideBuildConfiguration
+config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest)
+   </i></li>
+</ul>
+
 <h3>Removed APIs</h3>
 <p>The following Carbide APIs have been removed and are no longer available to plug-ins.</p>
 <p>Since Carbide 1.2.0</p>
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/extension-points/com_nokia_carbide_templatewizard_wizardTemplate.html	Sat Apr 25 12:50:39 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/extension-points/com_nokia_carbide_templatewizard_wizardTemplate.html	Sat Apr 25 12:54:10 2009 -0500
@@ -1,65 +1,62 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Wizard Template</title>
-<style type="text/css">@import url("PLUGINS_ROOT/org.eclipse.cdt.doc.isv/book.css");</style>
-<style type="text/css">@import url("PLUGINS_ROOT/org.eclipse.cdt.doc.isv/schema.css");</style>
-</HEAD>
-<BODY>
-<H1 style="text-align:center">Wizard Template</H1>
-<p></p>
-<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>com.nokia.carbide.templatewizard.wizardTemplate<p></p>
-<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>Carbide.c++ 1.2
-<p></p>
-
-<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>The wizard template extension point registers a template with the Carbide.c++ template wizard. Templates may create projects or classes.
-
-See the the documentation under Tasks > Creating Wizard Templates for more information.<p></p>
-<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
-<p></p>
-<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.template">template</a>+)&gt;</p>
-<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
-<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
-<p></p>
-<ul class="ConfigMarkupAttlistDesc">
-</ul>
-<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.template">template</a> EMPTY&gt;</p>
-<p class="code SchemaDtd">&lt;!ATTLIST template</p>
-<p class="code SchemaDtdAttlist">templateId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">location&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">wizardId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">groupLabel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">filterArguments&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">image&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">extraPagesProvider&nbsp;CDATA #IMPLIED&gt;</p>
-<p></p>
-<p class="ConfigMarkupElementDesc">
-The template element registers a single template with the template wizard.</p>
-<br>
-<ul class="ConfigMarkupAttlistDesc">
-<li><b>templateId</b> - The unique id for this template</li>
-<li><b>location</b> - The plugin-relative path to the template xml file</li>
-<li><b>wizardId</b> - The id of the wizard in which this template is used</li>
-<li><b>groupLabel</b> - The group label under which this template will appear in the template choice page of the appropriate template wizard</li>
-<li><b>filterArguments</b> - The optional wizard-specific data available for the IFilter implementing a filter checkbox, optionally shown in some template wizards</li>
-<li><b>image</b> - The optional plugin-relative location of a 16x16 pixel image file to use when showing this template in the choose template wizard page</li>
-<li><b>extraPagesProvider</b> - An optional provider of extra wizard pages</li>
-</ul>
-<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6><pre class="Example"><span class="code SchemaTag">
-&lt;extension point=</span><span class="code SchemaCstring">&quot;com.nokia.carbide.templatewizard.wizardTemplate&quot;</span><span class="code SchemaTag">&gt;
-  &lt;template
-   templateId=</span><span class="code SchemaCstring">&quot;com.nokia.cdt.templates.s60.controlapplication&quot;</span><span class="code SchemaTag">
-   location=</span><span class="code SchemaCstring">&quot;templates/projecttemplates/S60-ControlApplication/template.xml&quot;</span><span class="code SchemaTag">
-   wizardId=</span><span class="code SchemaCstring">&quot;com.nokia.carbide.cpp.project.ui.wizards.NewSymbianOSCppProjectWizard&quot;</span><span class="code SchemaTag"> 
-   groupLabel=</span><span class="code SchemaCstring">&quot;S60&quot;</span><span class="code SchemaTag">
-   filterArguments=</span><span class="code SchemaCstring">&quot;S60:1.2;2.0-2.9&quot;</span><span class="code SchemaTag">
-   image=</span><span class="code SchemaCstring">&quot;icons/icon_S60.png&quot;</span><span class="code SchemaTag">
-  /&gt;
-&lt;/extension&gt;
-</span></pre>
-<p></p>
-
-<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>This extension point registers an XML template. Implementation is not required.
-<p></p>
-
-<br>
-<p class="note SchemaCopyright">
-(C) Copyright 2007 Nokia Corporation.
-
-</p>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Wizard Template</title>
+<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Wizard Template</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>com.nokia.carbide.templatewizard.wizardTemplate<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>Carbide.c++ 1.2
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>The wizard template extension point registers a template with the Carbide.c++ template wizard. Templates may create projects or classes.
+
+See the the documentation under Tasks > Creating Wizard Templates for more information.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.template">template</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.template">template</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST template</p>
+<p class="code SchemaDtdAttlist">templateId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">location&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">wizardId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">groupLabel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">filterArguments&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">image&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">extraPagesProvider&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+The template element registers a single template with the template wizard.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>templateId</b> - The unique id for this template</li>
+<li><b>location</b> - The plugin-relative path to the template xml file</li>
+<li><b>wizardId</b> - The id of the wizard in which this template is used</li>
+<li><b>groupLabel</b> - The group label under which this template will appear in the template choice page of the appropriate template wizard</li>
+<li><b>filterArguments</b> - The optional wizard-specific data available for the IFilter implementing a filter checkbox, optionally shown in some template wizards</li>
+<li><b>image</b> - The optional plugin-relative location of a 16x16 pixel image file to use when showing this template in the choose template wizard page</li>
+<li><b>extraPagesProvider</b> - An optional provider of extra wizard pages</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6><pre class="Example"><span class="code SchemaTag">
+</span><span class="code">&lt;extension point=&quot;com.nokia.carbide.templatewizard.wizardTemplate&quot;&gt;
+  &lt;template
+   templateId=&quot;com.nokia.cdt.templates.s60.controlapplication&quot;
+   location=&quot;templates/projecttemplates/S60-ControlApplication/template.xml&quot;
+   wizardId=&quot;com.nokia.carbide.cpp.project.ui.wizards.NewSymbianOSCppProjectWizard&quot; 
+   groupLabel=&quot;S60&quot;
+   filterArguments=&quot;S60:1.2;2.0-2.9&quot;
+   image=&quot;icons/icon_S60.png&quot;
+  /&gt;
+&lt;/extension&gt;
+</span></pre>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>This extension point registers an XML template. Implementation is not required.
+<p></p>
+
+<br>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>
+License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+</BODY>
+</HTML>
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/extension-points/templatewizard_wizardTemplate.html	Sat Apr 25 12:50:39 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/extension-points/templatewizard_wizardTemplate.html	Sat Apr 25 12:54:10 2009 -0500
@@ -1,65 +1,66 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Wizard Template</title>
-<!-- <style>@import url("PLUGINS_ROOT/org.eclipse.cdt.doc.isv/book.css");</style>
-<style>@import url("PLUGINS_ROOT/org.eclipse.cdt.doc.isv/schema.css");</style> -->
-<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
-</HEAD>
-<BODY>
-<H1>Wizard Template</H1>
-<p></p>
-<h5 class=CaptionFigColumn id=header>Identifier:</h5>
-<p>com.nokia.carbide.templatewizard.wizardTemplate</p>
-<h5 class=CaptionFigColumn id=header>Since: </h5>
-Carbide.c++ 1.2
-
-<h5 class=CaptionFigColumn id=header>Description: </h5>
-The wizard template extension point registers a template with the Carbide.c++ template wizard. Templates may create projects or classes.
-
-Refer to the documentation under Tasks > Creating Wizard Templates for more information.
-<h5 class=CaptionFigColumn id=header>Configuration Markup:</h5>
-<p class=code id=dtd>&lt;!ELEMENT extension (template+)&gt;</p>
-<p class=code id=dtd>&lt;!ATTLIST extension</p>
-<p class=code id=dtdAttlist>point&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
-<br>
-<p class=code id=dtd>&lt;!ELEMENT template EMPTY&gt;</p>
-<p class=code id=dtd>&lt;!ATTLIST template</p>
-<p class=code id=dtdAttlist>templateId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>location&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>wizardId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>groupLabel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>filterArguments&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>image&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>extraPagesProvider&nbsp;CDATA #IMPLIED&gt;</p>
-<p></p>
-<p class=ConfigMarkup id=elementDesc>
-The template element registers a single template with the template wizard.</p>
-<br>
-<ul class=ConfigMarkup id=attlistDesc>
-<li><b>templateId</b> - The unique id for this template</li>
-<li><b>location</b> - The plugin-relative path to the template xml file</li>
-<li><b>wizardId</b> - The id of the wizard in which this template is used</li>
-<li><b>groupLabel</b> - The group label under which this template will appear in the template choice page of the appropriate template wizard</li>
-<li><b>filterArguments</b> - The optional wizard-specific data available for the IFilter implementing a filter checkbox, optionally shown in some template wizards</li>
-<li><b>image</b> - The optional plugin-relative location of a 16x16 pixel image file to use when showing this template in the choose template wizard page</li>
-<li><b>extraPagesProvider</b> - An optional provider of extra wizard pages</li>
-</ul>
-<br>
-<h5 class=CaptionFigColumn id=header>Examples:</h5>
-<pre><p class=code id=tag>&lt;extension point=&quot;com.nokia.carbide.templatewizard.wizardTemplate&quot;&gt;<p class=code id=tag>&lt;template
-   templateId=&quot;com.nokia.cdt.templates.s60.controlapplication&quot;<br>   location=&quot;templates/projecttemplates/S60-ControlApplication/template.xml&quot;
-   wizardId=&quot;com.nokia.carbide.cpp.project.ui.wizards.NewSymbianOSCppProjectWizard&quot;
-   groupLabel=&quot;S60&quot;
-   filterArguments=&quot;S60:1.2;2.0-2.9&quot;
-   image=&quot;icons/icon_S60.png&quot;
-  /&gt;
-<p class=code id=tag>&lt;/extension&gt;</p></pre>
-<h5 class=CaptionFigColumn id=header>API Information: </h5>
-No API implementation is required to provide a basic template. Templates requiring custom processing in code may implement <code class="code">com.nokia.carbide.templatewizard.process.IProcess</code>
-<p></p>
-
-<h5 class=CaptionFigColumn id=header>Supplied Implementation:</h5>
-<p>This extension point registers an XML template. Implementation is not required.</p>
-<h5>Related Information</h5>
-<p><a href="../../tasks/CreatingWizardTemplates.htm">Creating Wizard Templates</a><br>
-</p>
-<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-<p>
-
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Wizard Template</title>
+<!-- <style>@import url("PLUGINS_ROOT/org.eclipse.cdt.doc.isv/book.css");</style>
+<style>@import url("PLUGINS_ROOT/org.eclipse.cdt.doc.isv/schema.css");</style> -->
+<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
+</HEAD>
+<BODY>
+<H1>Wizard Template</H1>
+<p></p>
+<h5 class=CaptionFigColumn id=header>Identifier:</h5>
+<p class="code">com.nokia.carbide.templatewizard.wizardTemplate</p>
+<h5 class=CaptionFigColumn id=header>Since: </h5>
+Carbide.c++ 1.2
+
+<h5 class=CaptionFigColumn id=header>Description: </h5>
+The wizard template extension point registers a template with the Carbide.c++ template wizard. Templates may create projects or classes.
+
+Refer to the documentation under Tasks > Creating Wizard Templates for more information.
+<h5 class=CaptionFigColumn id=header>Configuration Markup:</h5>
+<p class=code id=dtd>&lt;!ELEMENT extension (template+)&gt;</p>
+<p class=code id=dtd>&lt;!ATTLIST extension</p>
+<p class=code id=dtdAttlist>point&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<br>
+<p class=code id=dtd>&lt;!ELEMENT template EMPTY&gt;</p>
+<p class=code id=dtd>&lt;!ATTLIST template</p>
+<p class=code id=dtdAttlist>templateId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>location&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>wizardId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>groupLabel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>filterArguments&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>image&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>extraPagesProvider&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class=ConfigMarkup id=elementDesc>
+The template element registers a single template with the template wizard.</p>
+<br>
+<ul class=ConfigMarkup id=attlistDesc>
+<li><b>templateId</b> - The unique id for this template</li>
+<li><b>location</b> - The plugin-relative path to the template xml file</li>
+<li><b>wizardId</b> - The id of the wizard in which this template is used</li>
+<li><b>groupLabel</b> - The group label under which this template will appear in the template choice page of the appropriate template wizard</li>
+<li><b>filterArguments</b> - The optional wizard-specific data available for the IFilter implementing a filter checkbox, optionally shown in some template wizards</li>
+<li><b>image</b> - The optional plugin-relative location of a 16x16 pixel image file to use when showing this template in the choose template wizard page</li>
+<li><b>extraPagesProvider</b> - An optional provider of extra wizard pages</li>
+</ul>
+<br>
+<h5 class=CaptionFigColumn id=header>Examples:</h5>
+<pre><p class=code id=tag>&lt;extension point=&quot;com.nokia.carbide.templatewizard.wizardTemplate&quot;&gt;<p class=code id=tag>&lt;!-- Register application template for Yadda Yadda company --&gt;
+&lt;template
+   templateId=&quot;com.yadda.templates.application&quot;<br>   location=&quot;templates/projecttemplates/Yadda-Application/template.xml&quot;
+   wizardId=&quot;com.yaddayadda.wizards.NewYaddaProjectWizard&quot;
+   groupLabel=&quot;YaddaYadda&quot;
+   filterArguments=&quot;Yadda:1.2;2.0-4.0&quot;
+   image=&quot;icons/icon_yadda_yadda.png&quot;
+  /&gt;
+<p class=code id=tag>&lt;/extension&gt;</p></pre>
+<h5 class=CaptionFigColumn id=header>API Information: </h5>
+No API implementation is required to provide a basic template. Templates requiring custom processing in code may implement <code class="code">com.nokia.carbide.templatewizard.process.IProcess</code>
+<p></p>
+
+<h5 class=CaptionFigColumn id=header>Supplied Implementation:</h5>
+<p>This extension point registers an XML template. Implementation is not required.</p>
+<h5>Related Information</h5>
+<p><a href="../../tasks/CreatingWizardTemplates.htm">Creating Wizard Templates</a><br>
+</p>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+<p>
+
+</BODY>
+</HTML>
--- a/connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/interfaces/AbstractConnectedService.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/interfaces/AbstractConnectedService.java	Sat Apr 25 12:54:10 2009 -0500
@@ -32,7 +32,7 @@
 
 public abstract class AbstractConnectedService implements IConnectedService {
 	
-	protected final static int TIMEOUT = 2000;
+	public final static int TIMEOUT = 2000;
 	
 	public static class ConnectionFailException extends Exception {
 		public ConnectionFailException(String string) {
@@ -122,6 +122,7 @@
 	protected IRunnableContext runnableContext;
 	protected Status currentStatus;
 	protected Tester tester;
+	protected boolean manualTesting;
 
 	public AbstractConnectedService(IService service, AbstractSynchronizedConnection connection) {
 		this.service = service;
@@ -173,7 +174,7 @@
 	}
 
 	public void testStatus() {
-		if (!isEnabled())
+		if (!(isEnabled() || manualTesting))
 			return;
 			
 		final TestResult result[] = { null };
@@ -196,12 +197,16 @@
 			result[0] = runTestStatus(new NullProgressMonitor());
 		}
 		
-		if (!isEnabled()) // could be waiting for response past when service testing was disabled
+		if (!(isEnabled() || manualTesting)) // could be waiting for response past when service testing was disabled
 			return;
 		if (result[0].shortDescription != null && result[0].longDescription != null) {
 			currentStatus.setEStatus(result[0].estatus, result[0].shortDescription, result[0].longDescription);
 		}
 	}
+	
+	public void setManualTesting() {
+		manualTesting = true;
+	}
 
 	public boolean isEnabled() {
 		return tester != null;
--- a/connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/settings/ui/ConnectionSettingsPage.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/settings/ui/ConnectionSettingsPage.java	Sat Apr 25 12:54:10 2009 -0500
@@ -23,6 +23,7 @@
 import com.nokia.carbide.remoteconnections.interfaces.*;
 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus;
 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatusChangedListener;
+import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus.EStatus;
 import com.nokia.carbide.remoteconnections.interfaces.IConnectionFactory.IValidationErrorReporter;
 import com.nokia.carbide.remoteconnections.interfaces.IRemoteAgentInstallerProvider.IRemoteAgentInstaller;
 import com.nokia.carbide.remoteconnections.interfaces.IRemoteAgentInstallerProvider.IRemoteAgentInstaller.IPackageContents;
@@ -55,6 +56,23 @@
 import java.util.List;
 
 public class ConnectionSettingsPage extends WizardPage {
+	
+	public final class Tester extends Thread {
+		@Override
+		public void run() {
+			((AbstractConnectedService) connectedService).setManualTesting();
+			for (int i = 0; i < 3 && connectedService != null; i++) {
+				connectedService.testStatus();
+				try {
+					if (i < 2)
+						sleep(AbstractConnectedService.TIMEOUT);
+				} catch (InterruptedException e) {
+					break;
+				}
+			}
+			resetServiceTesting(false);
+		}
+	}
 
 	private final static TreeNode LOADING_CONTENT_TREENODE = 
 		new TreeNode(Messages.getString("ConnectionSettingsPage.GettingDataMessage")); //$NON-NLS-1$
@@ -78,8 +96,9 @@
 	private IConnectionFactory connectionFactory;
 	private IConnection connection;
 	private IService service;
-	private IConnectedService connectedService;
+	private volatile IConnectedService connectedService;
 	private IStatusChangedListener statusListener;
+	private Tester tester;
 	private SashForm installerSashForm;
 	private TreeViewer installerTreeViewer;
 	private Text installerInfoText;
@@ -201,7 +220,7 @@
 				IService curService = (IService) selection.getFirstElement();
 				if (!curService.equals(service)) {
 					service = curService;
-					resetServiceTesting();
+					resetServiceTesting(true);
 				}
 			}
 		});
@@ -230,7 +249,7 @@
 			public void widgetSelected(SelectionEvent e) {
 				if (isTesting) {
 					serviceTestButton.setText(Messages.getString("ConnectionSettingsPage.StartServiceTestButtonLabel")); //$NON-NLS-1$
-					resetServiceTesting();
+					resetServiceTesting(true);
 				}
 				else {
 					serviceTestButton.setText(Messages.getString("ConnectionSettingsPage.StopServiceTestButtonLabel")); //$NON-NLS-1$
@@ -443,7 +462,7 @@
 			}
 			servicesListViewer.getList().addFocusListener(new FocusAdapter() {
 				public void focusGained(FocusEvent e) {
-					resetServiceTesting();
+					resetServiceTesting(true);
 				}
 			});
 			
@@ -505,7 +524,7 @@
 				}
 				deviceOSComboViewer.getCombo().addFocusListener(new FocusAdapter() {
 					public void focusGained(FocusEvent e) {
-						resetServiceTesting();
+						resetServiceTesting(true);
 					}
 				});
 			}
@@ -568,13 +587,16 @@
 						public void run() {
 							if (!statusText.isDisposed())
 								statusText.setText(status.getLongDescription());
+							if (status.getEStatus().equals(EStatus.UP))
+								resetServiceTesting(false);
 						}
 					});
 				}
 			});
 			if (connectedService instanceof AbstractConnectedService)
 				((AbstractConnectedService) connectedService).setRunnableContext(getContainer());
-			connectedService.setEnabled(true);
+			tester = new Tester();
+			tester.start();
 			isTesting = true;
 		}
 	}
@@ -764,16 +786,25 @@
 		}
 	}
 	
-	private void resetServiceTesting() {
+	private void resetServiceTesting(final boolean resetAll) {
 		isTesting = false;
 		if (service == null)
 			return;
-		serviceTestInfo.setText(service.getAdditionalServiceInfo());
-		agentTestTabComposite.layout(true, true);
-		statusText.setText(STATUS_NOT_TESTED);
-		disposeConnectedService();
-		String buttonLabel = Messages.getString("ConnectionSettingsPage.StartServiceTestButtonLabel"); //$NON-NLS-1$
-		serviceTestButton.setText(buttonLabel);
+		// may be called from a test thread
+		Display.getDefault().syncExec(new Runnable() {
+			public void run() {
+				if (resetAll) {
+					statusText.setText(STATUS_NOT_TESTED);
+					serviceTestInfo.setText(service.getAdditionalServiceInfo());
+					agentTestTabComposite.layout(true, true);
+				}
+				disposeConnectedService();
+				if (!serviceTestButton.isDisposed()) {
+					String buttonLabel = Messages.getString("ConnectionSettingsPage.StartServiceTestButtonLabel"); //$NON-NLS-1$
+					serviceTestButton.setText(buttonLabel);
+				}
+			}
+		});
 	}
 
 }
--- a/connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/view/ConnectionsView.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/view/ConnectionsView.java	Sat Apr 25 12:54:10 2009 -0500
@@ -26,6 +26,7 @@
 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus.EStatus;
 import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionsManagerListener;
 import com.nokia.carbide.remoteconnections.settings.ui.SettingsWizard;
+import com.nokia.cpp.internal.api.utils.core.TextUtils;
 
 import org.eclipse.jface.action.*;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -81,7 +82,7 @@
 	private static final Image CONNECTION_IMG = CONNECTION_IMGDESC.createImage();
 	private static final Color COLOR_RED = new Color(Display.getDefault(), 192, 0, 0);
 	private static final Color COLOR_GREEN = new Color(Display.getDefault(), 0, 128, 0);
-	private static final Color COLOR_YELLOW = new Color(Display.getDefault(), 192, 192, 0);
+	private static final Color COLOR_ELECTRIC = new Color(Display.getDefault(), 0, 0, 255);
 	private static final Color COLOR_GREY = new Color(Display.getDefault(), 96, 96, 96);
 	private static final String NEW_ACTION = "ConnectionsView.new"; //$NON-NLS-1$
 	private static final String EDIT_ACTION = "ConnectionsView.edit"; //$NON-NLS-1$
@@ -114,7 +115,7 @@
 						Display.getDefault().asyncExec(new Runnable() {
 							public void run() {
 								if (!isDisposed) {
-									viewer.refresh(treeNode, true);
+									viewer.refresh(true);
 									packColumns();
 								}
 							}
@@ -180,8 +181,12 @@
 		public Image getImage(Object obj) {
 			TreeNode node = (TreeNode) obj;
 			Object value = node.getValue();
-			if (value instanceof IConnection)
+			if (value instanceof IConnection) {
+				if (isConnectionInUse((IConnection) value)) {
+					return STATUS_INUSE_IMG;
+				}
 				return CONNECTION_IMG;
+			}
 			else if (value instanceof IConnectedService) {
 				EStatus status = ((IConnectedService) value).getStatus().getEStatus();
 				switch (status) {
@@ -190,13 +195,26 @@
 				case UP:
 					return STATUS_AVAIL_IMG;
 				case IN_USE:
-					return STATUS_INUSE_IMG;
+					return CONNECTION_IMG;
 				case UNKNOWN:
 					return STATUS_UNK_IMG;
 				}
 			}
 			return null;
 		}
+
+		private boolean isConnectionInUse(IConnection connection) {
+			Collection<IConnectedService> connectedServices = 
+				RemoteConnectionsActivator.getConnectionsManager().getConnectedServices(connection);
+			// if any service is in-use, then connection is in-use
+			for (IConnectedService connectedService : connectedServices) {
+				IStatus status = connectedService.getStatus();
+				if (status.getEStatus().equals(EStatus.IN_USE))
+					return true;
+			}
+			
+			return false;
+		}
 	}
 	
 	private class StatusLabelProvider extends ColumnLabelProvider {
@@ -206,8 +224,28 @@
 			Object value = node.getValue();
 			if (value instanceof IConnectedService) {
 				IStatus status = ((IConnectedService) value).getStatus();
-				return status.getShortDescription();
+				if (!status.getEStatus().equals(EStatus.IN_USE)) // if in-use, we show it in the connection row
+					return status.getShortDescription();
+			}
+			else if (value instanceof IConnection) {
+				IStatus status = getFirstInUseStatus((IConnection) value);
+				if (status != null)
+					return status.getShortDescription();
 			}
+				
+			return null;
+		}
+
+		private IStatus getFirstInUseStatus(IConnection connection) {
+			Collection<IConnectedService> connectedServices = 
+				RemoteConnectionsActivator.getConnectionsManager().getConnectedServices(connection);
+			// if any service is in-use, then connection is in-use
+			for (IConnectedService connectedService : connectedServices) {
+				IStatus status = connectedService.getStatus();
+				if (status.getEStatus().equals(EStatus.IN_USE))
+					return status;
+			}
+			
 			return null;
 		}
 
@@ -222,16 +260,37 @@
 					return COLOR_RED;
 				case UP:
 					return COLOR_GREEN;
-				case IN_USE:
-					return COLOR_YELLOW;
 				case UNKNOWN:
 					return COLOR_GREY;
 				}
 			}
+			else if (value instanceof IConnection) // only showing in-use for connections
+				return COLOR_ELECTRIC;
+			
 			return null;
 		}
 	}
 	
+	public class DescriptionLabelProvider extends ColumnLabelProvider {
+		
+		@Override
+		public String getText(Object obj) {
+			TreeNode node = (TreeNode) obj;
+			Object value = node.getValue();
+			if (value instanceof IConnectedService) {
+				IStatus status = ((IConnectedService) value).getStatus();
+				if (!status.getEStatus().equals(EStatus.IN_USE)) { // if in-use, we show it in the connection row
+					String longDescription = status.getLongDescription();
+					if (longDescription != null)
+						longDescription = TextUtils.canonicalizeNewlines(longDescription, " ");
+					return longDescription;
+				}
+			}
+			
+			return null;
+		}
+	}
+
 	private class TypeLabelProvider extends ColumnLabelProvider {
 		
 		public String getText(Object obj) {
@@ -319,6 +378,10 @@
 		statusColumn.setLabelProvider(new StatusLabelProvider());
 		statusColumn.getColumn().setText(Messages.getString("ConnectionsView.StatusColumnHeader")); //$NON-NLS-1$
 		
+		TreeViewerColumn descriptionColumn = new TreeViewerColumn(viewer, SWT.LEFT);
+		descriptionColumn.setLabelProvider(new DescriptionLabelProvider());
+		descriptionColumn.getColumn().setText("Description");
+		
 		viewer.setContentProvider(new TreeNodeContentProvider());
 		viewer.setInput(loadConnections());
 		viewer.expandAll();
--- a/connectivity/com.nokia.tcf.test/src/com/nokia/tcf/test/TestOSTTRKNoFormat.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.tcf.test/src/com/nokia/tcf/test/TestOSTTRKNoFormat.java	Sat Apr 25 12:54:10 2009 -0500
@@ -38,13 +38,17 @@
  */
 public class TestOSTTRKNoFormat extends TestCase {
 
+	private boolean startServer = true; // use false when doing Junit plugin test - use true when doing non-plugin junit test
+
 	public void testOstTRK() {
 		// for non-plugin junit test
 		TCAPIConnection api2 = new TCAPIConnection();
-		api2.nativeStartServer();
+		if (startServer) {
+			api2.nativeStartServer();
+		}
 
 		// connection
-		ITCVirtualSerialConnection conn = (ITCVirtualSerialConnection)TCFClassFactory.createITCVirtualSerialConnection("COM19");
+		ITCVirtualSerialConnection conn = (ITCVirtualSerialConnection)TCFClassFactory.createITCVirtualSerialConnection("COM27");
 		// set OST decoding for this connection
 		conn.setDecodeFormat("ost");
 		
@@ -188,7 +192,9 @@
 			}
 		}
 		// for non-plugin junit test
-		api2.nativeStopServer();
+		if (startServer) {
+			api2.nativeStopServer();
+		}
 	}
 
 }
--- a/connectivity/com.nokia.tcf.test/src/com/nokia/tcf/test/TestOSTVersionRequest.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.tcf.test/src/com/nokia/tcf/test/TestOSTVersionRequest.java	Sat Apr 25 12:54:10 2009 -0500
@@ -21,7 +21,6 @@
 import org.eclipse.core.runtime.IStatus;
 
 import com.nokia.tcf.api.ITCAPIConnection;
-import com.nokia.tcf.api.ITCConnection;
 import com.nokia.tcf.api.ITCMessage;
 import com.nokia.tcf.api.ITCMessageIds;
 import com.nokia.tcf.api.ITCMessageInputStream;
@@ -37,13 +36,17 @@
  */
 public class TestOSTVersionRequest extends TestCase {
 
+	private boolean startServer = true; // use false when doing Junit plugin test - use true when doing non-plugin junit test
+
 	public void testOSTVersionRequest() {
 		// for non-plugin junit test
 		TCAPIConnection api2 = new TCAPIConnection();
-		api2.nativeStartServer();
+		if (startServer) {
+			api2.nativeStartServer();
+		}
 
 		// connection
-		ITCVirtualSerialConnection conn = (ITCVirtualSerialConnection)TCFClassFactory.createITCVirtualSerialConnection("COM25");
+		ITCVirtualSerialConnection conn = (ITCVirtualSerialConnection)TCFClassFactory.createITCVirtualSerialConnection("COM27");
 		// set OST decoding for this connection
 		conn.setDecodeFormat("ost");
 		
@@ -135,6 +138,8 @@
 			}
 		}
 		// for non-plugin junit test
-		api2.nativeStopServer();
+		if (startServer) {
+			api2.nativeStopServer();
+		}
 	}
 }
--- a/connectivity/com.nokia.tcf.test/src/com/nokia/tcf/test/TestOstTRK.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.tcf.test/src/com/nokia/tcf/test/TestOstTRK.java	Sat Apr 25 12:54:10 2009 -0500
@@ -31,13 +31,17 @@
  */
 public class TestOstTRK extends TestCase {
 
+	private boolean startServer = true; // use false when doing Junit plugin test - use true when doing non-plugin junit test
+	
 	public void testOstTRK() {
 		// for non-plugin junit test
 		TCAPIConnection api2 = new TCAPIConnection();
-		api2.nativeStartServer();
+		if (startServer) {
+			api2.nativeStartServer();
+		}
 
 		// connection
-		ITCVirtualSerialConnection conn = (ITCVirtualSerialConnection)TCFClassFactory.createITCVirtualSerialConnection("COM25");
+		ITCVirtualSerialConnection conn = (ITCVirtualSerialConnection)TCFClassFactory.createITCVirtualSerialConnection("COM27");
 		// set OST decoding for this connection
 		conn.setDecodeFormat("ost");
 		
@@ -180,8 +184,10 @@
 				api.disconnect();
 			}
 		}
-		// for non-plugin junit test
-		api2.nativeStopServer();
+		if (startServer) {
+			// for non-plugin junit test
+			api2.nativeStopServer();
+		}
 		
 	}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf.test/src/com/nokia/tcf/test/TestServerStartStop.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+package com.nokia.tcf.test;
+
+import com.nokia.tcf.impl.TCAPIConnection;
+
+import junit.framework.TestCase;
+
+public class TestServerStartStop extends TestCase {
+
+	public void testServerStartStop() {
+		// for non-plugin junit test
+		TCAPIConnection api2 = new TCAPIConnection();
+		api2.nativeStartServer();
+		
+		// for non-plugin junit test
+		api2.nativeStopServer();
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Headers/ErrorMonitorData.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __ERRRORMONITORDATA_H__
+#define __ERRRORMONITORDATA_H__
+
+#include "shareddata.h"
+#include "mutex.h"
+
+// Error memory written by Server for 1 client
+#define MAX_ERRORS			200
+typedef struct tagErrorEntry
+{
+	BOOL osErrorUsed;
+	LONG tcfError;
+	DWORD osError;
+} *pErrorEntry, ErrorEntry;
+typedef struct tagErrorData
+{
+	int first;			// first error in queue
+	int next;			// last error in queue
+	int numberErrors;	// number of errors in queue
+	ErrorEntry errors[MAX_ERRORS];
+} *pErrorData, ErrorData;
+
+
+// base name (each client has different name)
+#define ERRORMONITORDATA_MAP_BASENAME	"TCFErrorMonitorData"
+#define ERRORMONITORDATA_MAP_SIZE		(sizeof(ErrorData))
+
+// mutex to restrict access (each client has different name)
+#define ERRORMONITORDATA_MUTEX_BASENAME		"TCFErrorMonitorMutex"
+#define ERRORMONITORDATA_MUTEX_TIMEOUT		(60000L)
+
+class CErrorMonitorData : public CSharedData
+{
+public:
+	BOOL Init();
+};
+
+class CErrorMonitor
+{
+public:
+	CErrorMonitor();
+	CErrorMonitor(long inClientID);
+	~CErrorMonitor();
+
+	BOOL CreateData();
+	BOOL IsThisClient(long inClientID) { return (inClientID == m_ClientID); }
+	long GetClientId() { return m_ClientID; }
+
+	BOOL PutError(LONG tcfError, BOOL osErrorUsed=FALSE, DWORD osError=0);
+	BOOL GetError(LONG* tcfError, BOOL* osErrorUsed=NULL, DWORD* osError=NULL);
+	void ResetErrorQueue(pErrorData pData) { pData->first = pData->next = pData->numberErrors = 0; }
+	BOOL IsErrorQueueEmpty(pErrorData pData) { return (pData->numberErrors <= 0); }
+	BOOL IsErrorQueueFull(pErrorData pData) { return (pData->numberErrors >= MAX_ERRORS); }
+
+private:
+	pErrorData GetDataPtr() { return (pErrorData)m_Data.GetDataPtr(); }
+
+	BOOL WaitForAccess() { return m_Mutex.Wait(); };
+	BOOL ReleaseAccess() { return m_Mutex.Release(); };
+
+	long m_ClientID;
+	CErrorMonitorData m_Data;
+	Mutex m_Mutex;
+};
+#endif// __ERRRORMONITORDATA_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Headers/InputStream.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,166 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __INPUTSTREAM_H__
+#define __INPUTSTREAM_H__
+
+#ifdef TCF_CLIENT
+#include <jni.h>
+#endif
+
+#include "shareddata.h"
+#include "mutex.h"
+#include "TCDebugLog.h"
+#include "ServerClient.h"
+
+#define USE_CIRCULAR_BUFFER
+//
+//  Input Stream - one per client
+//
+
+//----------------------------------
+// Input Stream Mutex
+//----------------------------------
+// Mutex name is basename + clientID
+#define INPUTSTREAMDATA_MUTEX_BASENAME		"TCFInputStreamDataMutex"
+#define INPUTSTREAMDATA_MUTEX_TIMEOUT		(60000L)
+
+//----------------------------------
+// Input Stream Buffer
+//----------------------------------
+typedef BYTE *pInputStreamData;
+// Mapping name is basename + clientID
+#define INPUTSTREAMDATA_MAP_BASENAME	"TCFInputStreamData"
+class CInputStreamData : public CSharedData
+{
+public:
+	BOOL Init();
+};
+
+#ifdef USE_CIRCULAR_BUFFER
+//----------------------------------
+// Input Stream Buffer & File Information
+//----------------------------------
+typedef struct tagInputStreamInfo
+{
+	DWORD numberMessages;			// total messages (buffer and file)
+	DWORD numberBytes;				// total bytes (buffer and file)
+	DWORD numberMessagesInFile;		// number of messages in file
+	DWORD numberBytesInFile;		// number of bytes in file
+	DWORD bufferRead;				// where to read from buffer
+	DWORD bufferPeek;				// where to peek some data from buffer
+	DWORD bufferWrite;				// where to write to buffer
+	DWORD bufferSize;				// current size of buffer
+	DWORD bufferCapacity;			// total capacity of buffer
+} *pInputStreamInfo, InputStreamInfo;
+#else
+//----------------------------------
+// Input Stream Buffer & File Information
+//----------------------------------
+typedef struct tagInputStreamInfo
+{
+	DWORD numberMessages;			// total messages (buffer and file)
+	DWORD numberBytes;				// total bytes (buffer and file)
+	DWORD numberMessagesInFile;		// number of messages in file
+	DWORD numberBytesInFile;		// number of bytes in file
+} *pInputStreamInfo, InputStreamInfo;
+#endif
+// Mapping name is basename + clientID
+#define INPUTSTREAMINFO_MAP_BASENAME	"TCFInputStreamInfo"
+#define INPUTSTREAMINFO_MAP_SIZE		(sizeof(InputStreamInfo))
+
+class CInputStreamInfo : public CSharedData
+{
+public:
+	BOOL Init();
+};
+
+//----------------------------------
+// Input Stream Overflow Files
+//----------------------------------
+#define INPUTSTREAMOVERFLOW_FILE_SIZE		(20*1024*1024L)
+
+typedef BYTE* pInputStreamFile;
+
+// Mapping name is basename + clientID
+#define INPUTSTREAMOVERFLOW_MAP_BASENAME	"TCFInputStreamOverflowFile"
+class CInputStreamFile : public CSharedData
+{
+public:
+	void SetClientId(long id);
+	BOOL Open(DWORD dwSize, CHAR *filePath);
+	BOOL Init();
+	Close();
+
+	long m_ClientID;
+	HANDLE m_hFile; // handle from CreateFile
+};
+
+//----------------------------------
+// Input Stream class
+//----------------------------------
+class CInputStream
+{
+public:
+	CInputStream();
+	CInputStream(CHAR* pOverflowPath, DWORD inBufferSize, BOOL inOverFlowToFile, long inClientID);
+	~CInputStream();
+
+	BOOL CreateStream();
+	long AddMessage(DWORD inLength, BYTE* inMessage);
+	LONG GetNumberMessages();
+
+	DWORD GetNextMessage(DWORD inLength, BYTE* outMessage);
+	DWORD GetNextMessageSize();
+	void GetMessageSizes(long inNumberMessages, DWORD* outMessageSizes);
+	void GetTotalMessageSize(long inNumberMessages, DWORD& outTotalSize);
+	BOOL IsThisClient(long inClientID) { return (inClientID == m_ClientID); }
+	long GetClientId() { return m_ClientID; }
+#ifdef TCF_CLIENT
+	DWORD GetMessages(JNIEnv* env, long inNumberMessages, long inNumberMaxBytes, long& outNumberBytesRead, long& outNumberMessagesRead, jbyteArray outMessageData);
+#endif
+	void UnLockStream() { ReleaseAccess(); }
+
+#ifdef USE_CIRCULAR_BUFFER
+	void DoReadBuffer(pInputStreamInfo pInfo, BYTE* pBuffer, BYTE* outData, DWORD inLength);
+	void DoWriteBuffer(pInputStreamInfo pInfo, BYTE* pBuffer, BYTE* inData, DWORD inLength);
+	void IncrementReadPosition(pInputStreamInfo pInfo, DWORD inLength);
+	void IncrementWritePosition(pInputStreamInfo pInfo, DWORD inLength);
+	void DoPeekBuffer(pInputStreamInfo pInfo, BYTE* pBuffer, BYTE* outData, DWORD inLength);
+	void IncrementPeekPosition(pInputStreamInfo pInfo, DWORD inLength);
+#endif
+
+private:
+	pInputStreamData GetDataPtr() { return (pInputStreamData)m_Data.GetDataPtr(); }
+	pInputStreamInfo GetInfoPtr() { return (pInputStreamInfo)m_Info.GetDataPtr(); }
+	pInputStreamFile GetFilePtr() { if (m_File == NULL) return NULL; else return (pInputStreamFile)m_File->GetDataPtr(); }
+
+	BOOL WaitForAccess() { if (m_StreamLocked) return TRUE; else { m_StreamLocked = TRUE; return m_Mutex.Wait();} };
+	BOOL ReleaseAccess() { if (m_StreamLocked) { m_StreamLocked = FALSE; return m_Mutex.Release();} else return TRUE; };
+
+	long m_ClientID;
+	Mutex m_Mutex;
+	CInputStreamData m_Data;
+	CInputStreamInfo m_Info;
+	DWORD m_BufferSize;
+	DWORD m_FileSize;
+	CHAR m_OverFlowBaseName[MAX_FILEPATH];
+	BOOL m_OverFlowToFile;
+	CInputStreamFile* m_File;
+	BOOL m_StreamLocked;
+};
+
+#endif __INPUTSTREAM_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Headers/PSerialCommPref.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,103 @@
+/*
+ *  PSerialCommPref.h 
+ *
+ *  Copyright 2002 metrowerks inc.  All rights reserved.
+ *
+ */
+
+#ifndef __PSERIALCOMMPREF_H__
+#define __PSERIALCOMMPREF_H__
+
+//#include "DEPrefTypes.h"
+
+enum menu_port
+{
+	PortCOM1=0,
+	PortCOM2=1,
+	PortCOM3=2,
+	PortCOM4=3,
+	PortCOM5=4,
+	PortCOM6=5,
+	PortCOM7=6,
+	PortCOM8=7,
+	PortCOM9=8
+};
+
+enum menu_rate
+{
+	Baud300=0,
+	Baud1200=1,
+	Baud2400=2,
+	Baud4800=3,
+	Baud9600=4,
+	Baud19200=5,
+	Baud38400=6,
+	Baud57600=7,
+	Baud115200=8,
+	Baud230400=9
+};
+
+enum menu_databits
+{
+	DataBits4=0,
+	DataBits5=1,
+	DataBits6=2,
+	DataBits7=3,
+	DataBits8=4
+};
+
+enum menu_stopbits
+{
+	StopBits1=0,
+	StopBits15=1,
+	StopBits2=2
+};
+
+enum menu_parity
+{
+	ParNone=0,
+	ParOdd=1,
+	ParEven=2
+};
+
+enum menu_flowcontrol
+{
+	FlowNone=0,
+	FlowHardware=1,
+	FlowSoftware=2
+};
+
+#if (0)
+#define PSerialCommPrefPanelDisplayName	"Serial"
+
+// --- DEPREF --- 
+// Comment line above is required by deprefs.pl tool, which this header is run 
+// through as part of the DE builds (standalone debugger engine). There are 
+// various restrictions and requirements that tool imposes on this header, so 
+// if you change anything past here, please run this header through deprefs.pl
+// and ensure no errors result.
+
+#define PSerialCommPrefPanelName	"Serial Communications"
+
+#define PSERIALCOMMPREFVERSION		2
+
+typedef struct PSerialCommPref {
+	short version;
+	
+	// serial 1
+	signed char	port;
+	signed char	rate;
+	signed char	databits;
+	signed char	stopbits;
+	signed char	parity;
+	signed char	flowcontrol;
+	BOOLCHAR	logdata;
+//#if (HOSTOS == SOLARIS) || (HOSTOS == LINUX)
+//	unsigned char	pad1[3];
+// 	char			dynamicPort[256];
+//#endif
+
+} PSerialCommPref, **PSerialCommPrefHandle;
+#endif
+
+#endif	// __PSERIALCOMMPREF_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Headers/ServerClient.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,326 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __SERVERCLIENT_H__
+#define __SERVERCLIENT_H__
+
+#include "shareddata.h"
+#include "mutex.h"
+
+#define MAX_IPADDRESS_SIZE (20)
+#define MAX_PORT_SIZE	(6)
+typedef struct tagTcpConnectData 
+{
+	char ipAddress[MAX_IPADDRESS_SIZE];
+	char ipPort[MAX_PORT_SIZE];
+} *pTcpConnectData, TcpConnectData;
+
+enum eFlowControl
+{
+	eFlowControlNone,
+	eFlowControlHW,
+	eFlowControlSW,
+};
+enum eStopBits
+{
+	eStopBits1,
+	eStopBits15,
+	eStopBits2,
+};
+enum eParity
+{
+	eParityNone,
+	eParityOdd,
+	eParityEven,
+};
+
+#define MAX_COMPORT_SIZE	(20)
+typedef struct tagRealSerialConnectData
+{
+	eFlowControl flowControl;
+	eStopBits stopBits;
+	eParity parity;
+	DWORD baudRate;
+	DWORD dataBits;
+	char comPort[MAX_COMPORT_SIZE];
+} *pRealSerialConnectData, RealSerialConnectData;
+
+typedef struct tagVirtualSerialConnectData
+{
+	char comPort[MAX_COMPORT_SIZE];
+} *pVirtualSerialConnectData, VirtualSerialConnectData;
+
+#define MAX_USBDEVICE_SIZE	(100)
+typedef struct tagUSBConnectData
+{
+	// TODO
+	char device[MAX_USBDEVICE_SIZE];
+} *pUSBConnectData, USBConnectData;
+
+#define MAX_NUMBER_OPTIONS	(20)
+#define MAX_DECODE_FORMAT	(16)
+#define MAX_CONNECTION_TYPE	(16)
+
+// per connection settings
+typedef struct tagConnectData 
+{
+	DWORD retryInterval;				// retry interval option
+	DWORD retryTimeout;					// retry timeout option
+	DWORD traceBoxChannel;					// added TraceBox information
+	char  decodeFormat[MAX_DECODE_FORMAT];	// decode format (e.g. "ost") option
+	char connectType[MAX_CONNECTION_TYPE];	// connection type (e.g. "tcp") 
+	TcpConnectData tcpSettings;			// TCP/IP settings
+	RealSerialConnectData realSerialSettings;	// real serial
+	VirtualSerialConnectData virtualSerialSettings;	// virtual serial
+	USBConnectData usbSettings;			// real USB
+
+} *pConnectData, ConnectData;
+
+// per client options - done at connect time
+typedef struct tagClientOptions
+{
+	DWORD unWrapFormat;					// message unwrapping option (PN or OST)
+	DWORD ostVersion;					// which OST version to use on sendmessage (unused in native)
+
+} *pClientOptions, ClientOptions;
+
+// per client options - done on opening stream
+enum eMessageDestination
+{
+	eDestinationInputStream = 0,		// input stream
+	eDestinationFile,					// message file
+};
+#define MAX_FILEPATH (2048L)
+typedef struct tagDestinationOptions
+{
+	eMessageDestination destination;	// eMessageDestination
+	DWORD streamSize;					// input stream size
+	BOOL overFlowToFile;				// overflow stream to file option
+	CHAR destinationFile[MAX_FILEPATH];	// stream overflow file or message file
+
+} *pDestinationOptions, DestinationOptions;
+
+enum eServerCommand
+{
+	eCmdNone = 0,						// no command to process
+	eCmdConnect,							// connect (connectSettings clientOptions *clientId)
+	eCmdDisconnect,						// disconnect (clientId)
+	eCmdGetClientStatus,					// getclientstatus (clientId *clientStatus)
+	eCmdGetConnectionStatus,				// getconnstatus
+	eCmdSetMessageIds,						// setmessageIds (clientId number messageIds)
+	eCmdGetNumberVersions,					// getnumberversions (clientId *number)
+	eCmdGetVersion,						// getversion (clientId index *version)
+	eCmdGetNumberConnections,				// getnumberconnections (*number)
+	eCmdGetConnectionType,					// getconnectiontype (index *connectionSettings.connectType)
+	eCmdGetConnection,						// getconnection (index *connectionSettings)
+	eCmdGetNumberClients,					// getnumclients (*number)
+	eCmdOpenStream,							// openstream (clientId destinationoptions)
+	eCmdCloseStream,						// closestream (clientId)
+	eCmdStart,								// start (clientId)
+	eCmdStop,								// stop (clientId)
+	eCmdSendMessage,						// sendmessage (clientId number message)
+	eCmdTestClientConnection,				// testconnection (clientId)
+	eCmdTestConnection,					// testconnection (connectSettings)
+	eCmdExit,								// tell server to exit its main command thread
+	eCmdOpenMessageFile,					// openfile (clientId destinationoptions)
+	eCmdCloseMessageFile,					// closefile (clientId)
+	eCmdClearMessageFile,					// clearfile (clientId)
+
+};
+
+enum eServerResponse
+{
+	eRspNone = 0,						// no response generated
+	eRspOK,								// response with no errors
+	eRspError,							// error response: error
+	eRspExitted,						// server has exitted
+};
+
+enum eClientStatus
+{
+	eStarted,							// message processing started
+	eStopped,							// message processing stopped
+	eUnknownClient,						// client not found
+};
+
+enum eConnectionStatus
+{
+	eConnected,							// connection is OK
+	eDisconnected,						// disconnected
+	eRetryInProgress,					// inside retry interval (connected)
+	eRetryTimedOut,						// retry timedout (disconnected)
+};
+
+// ----------- Command/Response Data -------------------
+#define MAX_VERSION_STRING		(80)
+#define MAX_MESSAGEIDS			(256)
+typedef struct tagServerCommandData
+{
+	eServerCommand command;				// command type
+	eServerResponse response;			// response type
+	eClientStatus clientStatus;			// client status
+	eConnectionStatus connectionStatus;	// connection status
+	long error;							// response error
+	unsigned long osError;				// error from the OS if applicable
+	long clientId;						// clientID for command/response
+	long index;							// eGetVersion command/eGetConnection command
+	long number;						// length or other number value (see commands)
+	char version[MAX_VERSION_STRING];	// eGetVersion response
+	ConnectData connectSettings;		// eConnect command/eGetConnection response
+	ClientOptions clientOptions;		// per client options
+	DestinationOptions destinationOptions;		// input stream or message file options
+	long numClients;					// eGetNumberClients response
+	long numConnections;				// eGetNumberConnections response
+	long encodeOption;					// eSendMessage - what to do with protocol headers
+	BYTE protocolVersion;				// eSendMessage - OST version byte if OST protocol
+	BOOL useMyId;						// eSendMessage
+	BYTE myId;							// eSendMessage
+	BYTE messageIds[MAX_MESSAGEIDS];	// eSetMessageIds command
+
+} *pServerCommandData, ServerCommandData;
+
+#define SERVERCOMMANDDATA_MAP_SIZE	(sizeof(ServerCommandData))
+#define SERVERCOMMANDDATA_MAP_NAME	"TCFServerCommandData"
+
+#define SERVERCOMMANDDATA_MUTEX_NAME	"TCFServerCommandDataMutex"
+//#define SERVERCOMMANDDATA_MUTEX_TIMEOUT	(60000L)
+#define SERVERCOMMANDDATA_MUTEX_TIMEOUT	(1000L)
+
+class CServerCommandData : public CSharedData
+{
+public:
+	BOOL Init() { 	if (IsCreator()) \
+	{\
+		pServerCommandData pData = (pServerCommandData)GetDataPtr();\
+		pData->command = eCmdNone;\
+		pData->response = eRspNone;\
+		pData->clientStatus = eStopped;\
+		pData->connectionStatus = eDisconnected;\
+		pData->clientId = -1;\
+		pData->index = 0;\
+		pData->number = 0;\
+		pData->version[0] = 0;\
+		pData->numClients = 0;\
+		pData->numConnections = 0;\
+		memset(&pData->messageIds, 0, MAX_MESSAGEIDS);\
+	}\
+	return TRUE; }
+};
+// ----------- Command/Response Data -------------------
+
+// ----------- Send Message Data -------------------
+#define MAX_SENDMESSAGE			(64*1024L+12)
+typedef struct tagServerMessageData
+{
+	long length;
+	BYTE message[MAX_SENDMESSAGE];	// eSendMessage command
+} *pServerMessageData, ServerMessageData;
+
+#define SERVERMESSAGEDATA_MAP_SIZE	(sizeof(ServerMessageData))
+#define SERVERMESSAGEDATA_MAP_NAME	"TCFServerMessageData"
+
+class CServerMessageData : public CSharedData
+{
+public:
+	BOOL Init() { if (IsCreator()) \
+	{\
+		pServerMessageData pData = (pServerMessageData)GetDataPtr();\
+		memset(&pData->message, 0, MAX_SENDMESSAGE);\
+		pData->length = 0;\
+	}\
+	return TRUE; }
+};
+// ----------- Send Message Data -------------------
+
+// ----------- Server Process Data -------------------
+typedef struct tagServerProcessData
+{
+	long numRefs;						// reference count (first creates server process/last destroys server process)
+	PROCESS_INFORMATION serverProcess;	// Server process information
+} *pServerProcessData, ServerProcessData;
+
+#define SERVERPROCESSDATA_MAP_SIZE	(sizeof(ServerProcessData))
+#define SERVERPROCESSDATA_MAP_NAME	"TCFServerProcessData"
+
+class CServerProcessData : public CSharedData
+{
+public:
+	BOOL Init() { if (IsCreator()) \
+	{\
+		pServerProcessData pData = (pServerProcessData)GetDataPtr();\
+		pData->numRefs = 0;\
+		memset(&pData->serverProcess, 0, sizeof(pData->serverProcess));\
+		pData->serverProcess.hProcess = NULL;\
+	}\
+	return TRUE; }
+};
+// ----------- Server Process Data -------------------
+
+
+// Main server command/response class
+#define SERVERPIPE_MUTEX_NAME	"TCFServerPipeMutex"
+#define SERVERPIPE_MUTEX_TIMEOUT	(60000L)
+
+// Server command/response events
+#define SERVER_COMMAND_READY_EVENTNAME	"TCFServerCommandReadyEvent"
+#define SERVER_RESPONSE_READY_EVENTNAME	"TCFServerResponseReadyEvent"
+#define SERVER_CMDRSP_EVENT_TIMEOUT	60000L
+
+class CServerCommand
+{
+public:
+	CServerCommand();
+	~CServerCommand();
+
+	// Client methods
+	BOOL SendCommand(pServerCommandData pCmd, DWORD msgLength=0, BYTE* message=NULL);
+	BOOL GetResponse(pServerCommandData pRsp);
+
+	// Server methods
+	BOOL GetCommand(pServerCommandData pCmd, pServerMessageData pMsg);
+	BOOL SendResponse(pServerCommandData pRsp);
+
+	BOOL WaitforServerPipeAccess() { return m_ServerPipeMutex.Wait(); }
+	BOOL ReleaseServerPipeAccess() { return m_ServerPipeMutex.Release(); }
+
+	pServerProcessData GetProcessPtr() { return (pServerProcessData)m_ServerProcessData.GetDataPtr(); }
+
+private:
+	pServerCommandData GetDataPtr() { return (pServerCommandData)m_ServerCommandData.GetDataPtr(); }
+	pServerMessageData GetMsgPtr() { return (pServerMessageData)m_ServerMessageData.GetDataPtr(); }
+
+private:
+	// Server Commands/Responses
+	BOOL WaitForServerCommandAccess() { return m_ServerCommandMutex.Wait(); };
+	BOOL ReleaseServerCommandAccess() { return m_ServerCommandMutex.Release(); };
+//	BOOL WaitForServerCommandAccess() { return TRUE; };
+//	BOOL ReleaseServerCommandAccess() { return TRUE; };
+	CServerCommandData m_ServerCommandData;
+	CServerMessageData m_ServerMessageData;
+	CServerProcessData m_ServerProcessData;
+
+	Mutex m_ServerCommandMutex;
+	Mutex m_ServerPipeMutex;
+
+	// client
+	void SetCommandReady();
+	// server
+	void SetResponseReady();
+	HANDLE m_hServerCommandReadyEvent;
+	HANDLE m_hServerResponseReadyEvent;
+};
+
+#endif// __SERVERCLIENT_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Headers/TCConstants.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __TCCONSTANTS_H__
+#define __TCCONSTANTS_H__
+
+#include <stdio.h>
+
+// com.nokia.tcf.api.ITCConnection.java
+#define DEFAULT_COMM_ERROR_RETRY_INTERVAL 1i64
+#define DEFAULT_COMM_ERROR_RETRY_TIMEOUT 300i64
+
+// com.nokia.tcf.api.ITCMessageOptions.java
+
+#define DESTINATION_INPUTSTREAM 0i64
+#define DESTINATION_CLIENTFILE 1i64
+#define DEFAULT_DESTINATION 0i64
+#define DEFAULT_INPUTSTREAM_OVERFLOW 1i64
+#define UNWRAP_LEAVE_HEADERS 0i64
+#define UNWRAP_DELETE_HEADERS 1i64
+#define DEFAULT_UNWRAP_OPTION 0i64
+#define ENCODE_NO_FORMAT 0i64
+#define ENCODE_FORMAT 1i64
+#define ENCODE_TRK_FORMAT 2i64
+#define DEFAULT_ENCODE_FORMAT 0i64
+#define DEFAULT_OST_VERSION 1L
+
+#endif //__TCCONSTANTS_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Headers/TCDebugLog.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __TCDEBUGLOG_H__
+#define __TCDEBUGLOG_H__
+#include <stdio.h>
+#include <share.h>
+#include "mutex.h"
+
+
+#define LOG_BASENAME	"c:\\TCDebugLog"
+#define LOG_MUTEX_BASENAME	"TCDebugLogMutex"
+#define LOG_MUTEX_TIMEOUT	(60000L)
+
+class TCDebugLog
+{
+public:
+	TCDebugLog();
+	TCDebugLog(char* baseName, DWORD id);
+	TCDebugLog(char* baseName, DWORD id, DWORD timeout);
+	~TCDebugLog();
+
+	void log(char* msg);
+
+//private:
+//	BOOL WaitForAccess() { return m_Mutex.Wait(); };
+//	BOOL ReleaseAccess() { return m_Mutex.Release(); };
+	BOOL WaitForAccess();
+	BOOL ReleaseAccess();
+
+	void logTime();
+	Mutex m_Mutex;
+	FILE* m_fLog;
+	char m_FileName[80];
+
+};
+#endif //__TCDEBUGLOG_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Headers/TCErrorConstants.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __TCERRORCONSTANTS_H__
+#define __TCERRORCONSTANTS_H__
+
+#include <stdio.h>
+
+// these must match com.nokia.tcf.api.TCErrorContants.java
+
+	#define TCAPI_ERR_NONE								0	// no error
+	#define TCAPI_ERR_CANNOT_OPEN						1	// cannot open port
+	#define TCAPI_ERR_ALREADY_OPEN						2	// port already open
+	#define TCAPI_ERR_INVALID_HANDLE					3	// invalid handle
+	#define TCAPI_ERR_TIMEOUT							4	// timeout on port
+	#define TCAPI_ERR_FILE_IS_OPEN						5	// a file is already open
+	#define TCAPI_ERR_FILE_DOES_NOT_EXIST				6	// file does not exist
+	#define TCAPI_ERR_NO_FILE							7	// no file is open
+	#define TCAPI_ERR_ROUTING_STOPPED					8	// routing is stopped
+	#define TCAPI_ERR_ROUTING_IN_PROGRESS				9	// routing in progress
+	#define TCAPI_ERR_WRITING_FILE						10	// could not write to file
+	#define TCAPI_ERR_NO_MESSAGESIDS_REGISTERED			11	// no message Ids are registered
+	#define TCAPI_ERR_MEDIA_NOT_OPEN					12	// handle indicates openMedia not called
+	#define TCAPI_ERR_MEDIA_NOT_SUPPORTED				13	// media type is not supported yet
+	#define TCAPI_ERR_UNKNOWN_MEDIA_TYPE				14	// media not known
+	#define TCAPI_ERR_MISSING_MEDIA_DATA				15	// media type known, but missing data
+	#define TCAPI_ERR_INVALID_MEDIA_DATA				16	// media type known, but has invalid prefs
+	#define TCAPI_ERR_WHILE_CONFIGURING_MEDIA			17	// media type known, but couldn't be configured
+	#define TCAPI_ERR_CANNOT_FIND_ROUTER				18	// cannot find TCFServer.exe
+	#define TCAPI_ERR_CANNOT_CREATE_ROUTER_PROCESS		19	// found " but error returned on CreateProcess
+	#define TCAPI_ERR_MEDIA_IS_BUSY						20	// used for Trace bpx when someone else is connected
+	#define TCAPI_ERR_PROTOCOL_NOT_SUPPORTED_BY_MEDIA	21	// TraceBox does not support protocol
+	#define TCAPI_ERR_FEATURE_NOT_IMPLEMENTED			22	// API feature not implemented yet
+	#define TCAPI_ERR_COMM_ERROR						23	// error while polling/reading COMM port
+	#define TCAPI_ERR_COMM_TIMEOUT						24	// comm error retry timeout
+	#define TCAPI_ERR_COMM_MULTIPLE_OPEN				25	// there are multiple connections open - cannot attach
+	#define TCAPI_ERR_NO_COMM_OPEN						26	// there are no connections open - cannot attach
+	#define TCAPI_ERR_ALREADY_CONNECTED					27	// this client is already connected to some target
+	#define TCAPI_ERR_INVALID_DECODE_FORMAT				28	// invalid decode format (PN or OST is required)
+	#define TCAPI_ERR_INVALID_RETRY_PERIODS				29	// invalid retry timeout or interval
+	#define TCAPI_ERR_INVALID_STREAM_OVERFLOW_OPTION	30	// invalid option for overflowing input stream
+	#define TCAPI_ERR_INVALID_ENCODE_FORMAT				31	// invalid trace encoding format option
+	#define TCAPI_ERR_INVALID_MESSAGE_UNWRAP_OPTION		32	// invalid trace message unwrapping option
+	#define TCAPI_ERR_INVALID_STREAM_BUFFER_SIZE		33	// input stream buffer size is restricted (> 0 currently)
+	#define TCAPI_ERR_MISSING_MESSAGE_OPTIONS			34	// messages options (ITCMessageOptions) not specified
+	#define TCAPI_ERR_MISSING_CONNECTION_SPEC			35	// missing ITCConnection specification
+	#define TCAPI_ERR_MISSING_MESSAGE					36 	// ITCMessage is missing on send Message
+	#define TCAPI_ERR_MESSAGE_OPTIONS_CONFLICT			37	// ITCMessage message options conflict with client's options
+	#define TCAPI_ERR_MESSAGEID_MAXIMUM					38	// ITCMessageIds number > 256 (probably duplicates)
+	#define TCAPI_ERR_INPUTSTREAM_FILECREATE			39	// cannot create overflow file
+	#define TCAPI_ERR_INPUTSTREAM_CLOSED				40	// operation not allowed - input stream is closed
+	#define TCAPI_ERR_PLATFORM_CONFIG					41	// Platform configuration not found
+	#define TCAPI_ERR_ERRLISTENER_NULL					42	// error listener cannot be null (add)
+	#define TCAPI_ERR_COMM_RETRY_IN_PROGRESS			43	// comm retry in progress
+	#define TCAPI_INFO_COMM_RECONNECTED					44	// reconnected during retry
+	#define TCAPI_ERR_COMM_INVALID_BAUDRATE				45	// Real Serial parameter checking
+	#define TCAPI_ERR_COMM_INVALID_DATABITS				46	// Real Serial parameter checking
+	#define TCAPI_ERR_COMM_INVALID_PARITY				47	// Real Serial parameter checking
+	#define TCAPI_ERR_COMM_INVALID_STOPBITS				48	// Real Serial parameter checking
+	#define TCAPI_ERR_COMM_INVALID_FLOWCONTROL			49	// Real Serial parameter checking
+	#define TCAPI_ERR_COMM_SERVER_RESPONSE_TIMEOUT		50	// TCFServer response timed out
+	#define TCAPI_ERR_INPUTSTREAM_BUFFER_OVERFLOW_MISSED_MSGS	51	// buffer overflowed (no overflow file) - msgs missed
+	#define TCAPI_INFO_INPUTSTREAM_BUFFER_OVERFLOW_TO_FILE	52	// buffer overflowed (overflow file in use)
+	#define TCAPI_ERR_INPUTSTREAM_FILE_OVERFLOW_MISSED_MSGS	53	// file overflowed - msgs missed
+	#define TCAPI_ERR_FILE_SPEC_MISSING					54	// Message file not specified
+	#define TCAPI_ERR_CREATE_FILE						55	// Message file could not be created
+	#define TCAPI_INFO_TRACEBOX_MEMORY_WARNING			56	// TRACEBOX buffer is close to overflowing
+	#define TCAPI_ERR_TRACEBOX_MEMORY_IS_CLOSED			57	// TRACEBOX buffer overflowed and is now closed
+	#define TCAPI_INFO_TRACEBOX_MEMORY_IS_NORMAL		58	// TRACEBOX buffer overflowed and is now closed
+	#define TCAPI_ERR_TRACEBOX_DATA_CORRUPTED			59	// TRACEBOX received corrupted trace data from phone
+	#define TCAPI_ERR_TRACEBOX_PROTOCOL_MEMORY_OVERFLOW	60	// TRACEBOX protocol processing buffer overflowed - fatal
+
+#endif //__TCERRORCONSTANTS_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Headers/mutex.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __MUTEX_H__
+#define __MUTEX_H__
+
+class Mutex
+{
+public:
+	Mutex();
+	~Mutex();
+
+	BOOL Open(CHAR* mutexName, DWORD waitTimeout);
+	void Close();
+	BOOL Wait();
+	BOOL Release();
+
+private:
+#ifdef WIN32
+	HANDLE m_hMutex;
+#else
+#error non WIN32
+#endif
+
+	DWORD m_waitTimeout;
+	BOOL m_mutexOpen;
+};
+#endif __MUTEX_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Headers/shareddata.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __SHAREDDATA_H__
+#define __SHAREDDATA_H__
+
+class CSharedData
+{
+public:
+	CSharedData();
+	~CSharedData();
+
+	BOOL Open(DWORD dwSize, CHAR *sharedName);
+	BOOL Open(HANDLE hFile, DWORD dwSize, CHAR *sharedName);
+	Close();
+	virtual BOOL Init();
+	LPVOID GetDataPtr();
+	BOOL IsCreator();
+
+private:
+	HANDLE m_hSharedData;
+	LPVOID m_lpDataPtr;		// pointer to mapped data
+	BOOL m_fCreator;		// am i the creator?
+};
+
+#endif // __SHAREDDATA_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Source/ErrorMonitorData.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,300 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "stdafx.h"
+#include "ErrorMonitorData.h"
+#include "TCErrorConstants.h"
+#include <stdio.h>
+#include <sys/stat.h>
+
+#ifdef TCF_CLIENT
+#include "..\..\TCFClient\ClientManager.h"
+extern CClientManager* gManager;
+#endif
+
+#ifdef TCF_SERVER
+#include "..\..\TCFServer\ServerManager.h"
+extern CServerManager* gManager;
+#endif
+
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+#endif
+
+//#define LOG_PERFORMANCE
+#ifdef LOG_PERFORMANCE
+# ifdef TCF_CLIENT
+static char* perfFileName="c:\\tcf\\clienterrorperf.txt";
+# else
+static char* perfFileName="c:\\tcf\\servererrorperf.txt";
+# endif
+static FILE *fpLog = NULL;
+static int numLogged=0;
+static void logPerf(char* msg);
+static void openPerf();
+static void closePerf();
+#define OPENPERF() openPerf()
+#define LOGPERF(s) logPerf(s)
+#define CLOSEPERF() closePerf()
+#else
+#define OPENPERF()
+#define LOGPERF(s)
+#define CLOSEPERF()
+#endif
+
+//#define LOG_ERRORMONITOR
+#if defined(LOG_ERRORMONITOR) && defined(_DEBUG)
+extern char TCDebugMsg[];
+#define TCDEBUGOPEN() if (gDoLogging) gManager->m_DebugLog->WaitForAccess();
+#define TCDEBUGLOGS(s) if (gDoLogging) sprintf(TCDebugMsg,"%s", s); if (gDoLogging) gManager->m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) sprintf(TCDebugMsg, s, a1); if (gDoLogging) gManager->m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) sprintf(TCDebugMsg, s, a1, a2); if (gDoLogging) gManager->m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) sprintf(TCDebugMsg, s, a1, a2, a3); if (gDoLogging) gManager->m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGCLOSE() if (gDoLogging) gManager->m_DebugLog->ReleaseAccess();
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+CErrorMonitor::CErrorMonitor()
+{
+}
+CErrorMonitor::CErrorMonitor(long inClientID)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CErrorMonitor::CErrorMonitor clientId = %d this = %x\n", inClientID, this);
+
+	m_ClientID = inClientID;
+
+	TCDEBUGLOGS("CErrorMonitor::CErrorMonitor done\n");
+	TCDEBUGCLOSE();
+
+	OPENPERF();
+}
+CErrorMonitor::~CErrorMonitor()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CErrorMonitor::~CErrorMonitor clientId = %d this = %x\n", m_ClientID, this);
+
+	m_Data.Close();
+	m_Mutex.Close();
+
+	TCDEBUGLOGS("CErrorMonitor::~CErrorMonitor done\n");
+	TCDEBUGCLOSE();
+
+	CLOSEPERF();
+}
+
+BOOL CErrorMonitor::CreateData()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CErrorMonitor::CreateData clientId = %d this = %x\n", m_ClientID, this);
+
+	// create shared data location
+	char toString[30];
+	sprintf(toString, "%s%04.4ld",ERRORMONITORDATA_MAP_BASENAME, m_ClientID);
+	m_Data.Open(ERRORMONITORDATA_MAP_SIZE, toString);
+	m_Data.Init();
+
+	sprintf(toString, "%s%04.4ld",ERRORMONITORDATA_MUTEX_BASENAME, m_ClientID);
+
+	m_Mutex.Open(toString, ERRORMONITORDATA_MUTEX_TIMEOUT);
+
+	TCDEBUGLOGS("CErrorMonitor::CreateData done\n");
+	TCDEBUGCLOSE();
+
+	return TRUE;
+}
+
+BOOL CErrorMonitor::GetError(LONG* tcfError, BOOL* osErrorUsed, DWORD* osError)
+{
+	TCDEBUGOPEN();
+//	TCDEBUGLOGA2("CErrorMonitor::GetError clientId = %d this = %x\n", m_ClientID, this);
+	BOOL found = FALSE;
+
+	WaitForAccess();
+
+	pErrorData pData = GetDataPtr();
+
+#if (0)
+	if (pData->errorOccurred)
+	{
+		TCDEBUGLOGA3("CErrorMonitor::GetError tcfError = %d osErrorUsed = %d osError = %d\n", 
+			pData->tcfError, pData->osErrorUsed, pData->osError);
+
+		found = TRUE;
+		*tcfError = pData->tcfError;
+		*osErrorUsed = pData->osErrorUsed;
+		*osError = pData->osError;
+
+		pData->errorOccurred = FALSE;
+	}
+#endif
+#ifdef LOG_PERFORMANCE
+	char msg[100];
+	sprintf(msg, "GetError numErrors=%d\n", pData->numberErrors);
+	LOGPERF(msg);
+#endif
+	if (!IsErrorQueueEmpty(pData))
+	{
+		LOGPERF("GetError\n");
+		found = TRUE;
+		*tcfError = pData->errors[pData->first].tcfError;
+		*osErrorUsed = pData->errors[pData->first].osErrorUsed;
+		*osError = pData->errors[pData->first].osError;
+		TCDEBUGLOGA3("CErrorMonitor::GetError tcfError = %d osErrorUsed = %d osError = %d\n", 
+			*tcfError, *osErrorUsed, *osError);
+		pData->numberErrors--;
+		if (pData->numberErrors <= 0)
+		{
+			ResetErrorQueue(pData);
+		}
+		else
+		{
+			pData->first++;
+			if (pData->first >= MAX_ERRORS)
+				pData->first = 0;
+		}
+	}
+#ifdef LOG_PERFORMANCE
+//	char msg[100];
+	sprintf(msg, "GetError numErrors=%d tcfError=%d\n", pData->numberErrors, *tcfError);
+	LOGPERF(msg);
+#endif
+	ReleaseAccess();
+
+//	TCDEBUGLOGS("CErrorMonitor::GetError done\n");
+	TCDEBUGCLOSE();
+	return found;
+}
+
+BOOL CErrorMonitor::PutError(LONG tcfError, BOOL osErrorUsed, DWORD osError)
+{
+	TCDEBUGOPEN();
+//	TCDEBUGLOGA2("CErrorMonitor::PutError clientId = %d this = %x\n", m_ClientID, this);
+
+	BOOL done = FALSE;
+
+	WaitForAccess();
+
+	pErrorData pData = GetDataPtr();
+	if (pData == NULL)
+		return done;
+#if (0)
+	if (!pData->errorOccurred)
+	{
+		done = TRUE;
+		pData->tcfError = tcfError;
+		pData->osErrorUsed = osErrorUsed;
+		pData->osError = osError;
+
+//		TCDEBUGLOGA3("CErrorMonitor::PutError tcfError = %d osErrorUsed = %d osError = %d\n", 
+//			pData->tcfError, pData->osErrorUsed, pData->osError);
+
+		pData->errorOccurred = TRUE;
+	}
+#endif
+#ifdef LOG_PERFORMANCE
+	char msg[100];
+	sprintf(msg, "PutError numErrors=%d tcfError=%d\n", pData->numberErrors, tcfError);
+	LOGPERF(msg);
+#endif
+	if (!IsErrorQueueFull(pData))
+	{
+		LOGPERF("PutError\n");
+		TCDEBUGLOGA3("CErrorMonitor::PutError tcfError = %d osErrorUsed = %d osError = %d\n", 
+			tcfError, osErrorUsed, osError);
+		done = TRUE;
+		pData->errors[pData->next].tcfError = tcfError;
+		pData->errors[pData->next].osErrorUsed = osErrorUsed;
+		pData->errors[pData->next].osError = osError;
+		pData->numberErrors++;
+		pData->next++;
+		if (pData->next >= MAX_ERRORS)
+			pData->next = 0;
+	}
+#ifdef LOG_PERFORMANCE
+//	char msg[100];
+	sprintf(msg, "PutError numErrors=%d\n", pData->numberErrors);
+	LOGPERF(msg);
+#endif
+	ReleaseAccess();
+
+//	TCDEBUGLOGS("CErrorMonitor::GetError done\n");
+	TCDEBUGCLOSE();
+	return done;
+}
+
+BOOL CErrorMonitorData::Init()
+{
+	if (IsCreator())
+	{
+		pErrorData pData = (pErrorData)GetDataPtr();
+//		pData->errorOccurred = FALSE;
+//		pData->osErrorUsed = FALSE;
+//		pData->osError = 0;
+//		pData->tcfError = TCAPI_ERR_NONE;
+		pData->first = pData->next = pData->numberErrors = 0;
+	}
+	return TRUE;
+}
+#ifdef LOG_PERFORMANCE
+static void logPerf(char* msg)
+{
+	if (fpLog)
+	{
+		SYSTEMTIME sTime;
+		GetLocalTime(&sTime);
+		fprintf(fpLog, 
+			"%02.2d%02.2d-%02.2d:%02.2d:%02.2d.%03.3d: %s",
+			sTime.wDay, sTime.wMonth, sTime.wHour, sTime.wMinute, sTime.wSecond, sTime.wMilliseconds,
+			msg);
+
+		numLogged++;
+		if ((numLogged % 1000) == 0)
+			fflush(fpLog);
+	}
+}
+static void openPerf()
+{
+	struct _stat buf;
+	char* dirname = "c:\\tcf";
+	int result = _stat(dirname, &buf);
+	if (result == 0) // exists
+	{
+		if (fpLog == NULL)
+			fpLog = _fsopen(perfFileName, "at", _SH_DENYNO);
+	}
+	else
+	{
+		fpLog = NULL;
+	}
+}
+static void closePerf()
+{
+	if (fpLog)
+	{
+		fflush(fpLog);
+		fclose(fpLog);
+	}
+	fpLog = NULL;
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Source/InputStream.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,1044 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "stdafx.h"
+#include "InputStream.h"
+#include <stdio.h>
+#include <sys/stat.h>
+
+#ifdef TCF_CLIENT
+#include "..\..\TCFClient\ClientManager.h"
+extern CClientManager* gManager;
+#endif
+#ifdef TCF_SERVER
+#include "..\..\TCFServer\ServerManager.h"
+extern CServerManager* gManager;
+//#define LOG_PERFORMANCE
+#endif
+
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+#endif
+
+// for performance - independent of debug logging
+//#define LOG_PERFORMANCE
+#ifdef LOG_PERFORMANCE
+# ifdef TCF_CLIENT
+static char* perfFileName="c:\\tcf\\clientperf.txt";
+# else
+static char* perfFileName="c:\\tcf\\serverperf.txt";
+# endif
+static FILE *fpLog = NULL;
+static int numLogged=0;
+static void logPerf(char* msg);
+static void openPerf();
+static void closePerf();
+#define OPENPERF() openPerf()
+#define LOGPERF(s) logPerf(s)
+#define CLOSEPERF() closePerf()
+#else
+#define OPENPERF()
+#define LOGPERF(s)
+#define CLOSEPERF()
+#endif
+
+//#define LOG_INPUTSTREAM
+#if defined(LOG_INPUTSTREAM) && defined(_DEBUG)
+extern char TCDebugMsg[];
+#define TCDEBUGOPEN() if (gDoLogging) { gManager->m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(TCDebugMsg,"%s", s); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(TCDebugMsg, s, a1); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2, a3); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { gManager->m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+CInputStream::CInputStream()
+{
+}
+
+CInputStream::CInputStream(CHAR* pOverflowPath, DWORD inBufferSize, BOOL inOverFlowToFile, long inClientID)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CInputStream::CInputStream clientId = %d this = %x\n", inClientID, this);
+
+	m_ClientID = inClientID;
+	m_BufferSize = inBufferSize;
+	m_FileSize = INPUTSTREAMOVERFLOW_FILE_SIZE;
+//	m_FileSize = 2*1024L;				for testing only
+
+	if (pOverflowPath == NULL)
+	{
+		m_OverFlowBaseName[0] = NULL;
+		m_OverFlowToFile = FALSE;
+	}
+	else
+	{
+		strncpy(m_OverFlowBaseName, pOverflowPath, MAX_FILEPATH);
+		m_OverFlowToFile = inOverFlowToFile;
+	}
+
+	m_File = NULL;
+
+	m_StreamLocked = FALSE;
+
+	TCDEBUGLOGS("CInputStream::CInputStream done\n");
+	TCDEBUGCLOSE();
+}
+
+CInputStream::~CInputStream()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CInputStream::~CInputStream clientId = %d this = %x\n", m_ClientID, this);
+
+	m_Mutex.Close();
+	m_Data.Close();
+	m_Info.Close();
+
+	if (m_File != NULL)
+	{
+		m_File->Close();
+		delete m_File;
+	}
+
+	TCDEBUGLOGS("CInputStream::~CInputStream done\n");
+	TCDEBUGCLOSE();
+
+	CLOSEPERF();
+}
+
+BOOL CInputStream::CreateStream()
+{
+	BOOL ok = TRUE;
+#if (0)
+#ifdef _DEBUGLOG
+	#ifdef TCF_CLIENT
+		m_DebugLog = new TCDebugLog("TCF_ClientStreamLog", m_ClientID);
+	#else
+		m_DebugLog = new TCDebugLog("TCF_ServerStreamLog", m_ClientID);
+	#endif
+#else
+	m_DebugLog = NULL;
+#endif
+#endif
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CInputStream::CreateStream clientId = %d this = %x\n", m_ClientID, this);
+
+	char toString[30];
+	sprintf(toString, "%s%04.4d", INPUTSTREAMDATA_MAP_BASENAME, m_ClientID);
+
+	TCDEBUGLOGA1("CInputStream::CreateStream dataname = %s\n", toString);
+
+	m_Data.Open(m_BufferSize, toString);
+	m_Data.Init();
+
+	sprintf(toString, "%s%04.4d", INPUTSTREAMDATA_MUTEX_BASENAME, m_ClientID);
+	TCDEBUGLOGA1("CInputStream::CreateStream mutexname = %s\n", toString);
+
+	m_Mutex.Open(toString, INPUTSTREAMDATA_MUTEX_TIMEOUT);
+
+	sprintf(toString, "%s%04.4d", INPUTSTREAMINFO_MAP_BASENAME, m_ClientID);
+	TCDEBUGLOGA1("CInputStream::CreateStream infoname = %s\n", toString);
+
+	m_Info.Open(INPUTSTREAMINFO_MAP_SIZE, toString);
+	m_Info.Init();
+#ifdef USE_CIRCULAR_BUFFER
+	GetInfoPtr()->bufferCapacity = m_BufferSize;
+#endif
+
+	// overflow file?
+	if (m_OverFlowToFile)
+	{
+		m_File = new CInputStreamFile();
+		m_File->SetClientId(m_ClientID);
+		if (!m_File->Open(m_FileSize, m_OverFlowBaseName))
+		{
+			delete m_File;
+			m_File = NULL;
+			ok = FALSE;
+		}
+	}
+	TCDEBUGLOGS("CInputStream::CreateStream done\n");
+	TCDEBUGCLOSE();
+
+	OPENPERF();
+
+	return ok;
+}
+#ifdef USE_CIRCULAR_BUFFER
+void CInputStream::DoReadBuffer(pInputStreamInfo pInfo, BYTE* pBuffer, BYTE* outData, DWORD inLength)
+{
+	DWORD lenToEnd = pInfo->bufferCapacity - pInfo->bufferRead;
+	if (lenToEnd > inLength)
+		lenToEnd = inLength;
+
+	if (lenToEnd > 0)
+		memcpy(outData, &pBuffer[pInfo->bufferRead], lenToEnd);
+
+	DWORD lenRemaining = inLength - lenToEnd;
+	if (lenRemaining > 0)
+		memcpy(&outData[lenToEnd], &pBuffer[0], lenRemaining);
+
+	pInfo->bufferSize -= inLength;
+
+	IncrementReadPosition(pInfo, inLength);
+}
+void CInputStream::DoWriteBuffer(pInputStreamInfo pInfo, BYTE* pBuffer, BYTE* inData, DWORD inLength)
+{
+	DWORD lenToEnd = pInfo->bufferCapacity - pInfo->bufferWrite;
+	if (lenToEnd > inLength)
+		lenToEnd = inLength;
+	memcpy(&pBuffer[pInfo->bufferWrite], inData, lenToEnd);
+	DWORD lenRemaining = inLength - lenToEnd;
+	if (lenRemaining > 0)
+		memcpy(&pBuffer[0], (const void*)&inData[lenToEnd], lenRemaining);
+
+	pInfo->bufferSize += inLength;
+
+	IncrementWritePosition(pInfo, inLength);
+}
+void CInputStream::IncrementReadPosition(pInputStreamInfo pInfo, DWORD inLength)
+{
+	DWORD lenToEnd = pInfo->bufferCapacity - pInfo->bufferRead;
+	if (inLength <= lenToEnd)
+		pInfo->bufferRead += inLength;
+	else
+		pInfo->bufferRead = inLength - lenToEnd;
+}
+void CInputStream::IncrementWritePosition(pInputStreamInfo pInfo, DWORD inLength)
+{
+	DWORD lenToEnd = pInfo->bufferCapacity - pInfo->bufferWrite;
+	if (inLength <= lenToEnd)
+		pInfo->bufferWrite += inLength;
+	else
+		pInfo->bufferWrite = inLength - lenToEnd;
+}
+void CInputStream::DoPeekBuffer(pInputStreamInfo pInfo, BYTE* pBuffer, BYTE* outData, DWORD inLength)
+{
+	DWORD lenToEnd = pInfo->bufferCapacity - pInfo->bufferPeek;
+	if (lenToEnd > inLength)
+		lenToEnd = inLength;
+
+	if (lenToEnd > 0)
+		memcpy(outData, &pBuffer[pInfo->bufferPeek], lenToEnd);
+
+	DWORD lenRemaining = inLength - lenToEnd;
+	if (lenRemaining > 0)
+		memcpy(&outData[lenToEnd], &pBuffer[0], lenRemaining);
+}
+void CInputStream::IncrementPeekPosition(pInputStreamInfo pInfo, DWORD inLength)
+{
+	DWORD lenToEnd = pInfo->bufferCapacity - pInfo->bufferPeek;
+	if (inLength <= lenToEnd)
+		pInfo->bufferPeek += inLength;
+	else
+		pInfo->bufferPeek = inLength - lenToEnd;
+}
+long CInputStream::AddMessage(DWORD inLength, BYTE* inMessage)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA3("CInputStream::AddMessage clientId = %d inLength = %d this = %x\n", m_ClientID, inLength, this);
+
+	long err = TCAPI_ERR_NONE;
+
+	BOOL done = FALSE;
+	if (inLength == 0 || inMessage == NULL)
+		return TCAPI_ERR_NONE;
+
+	BOOL gotIt = WaitForAccess(); // will lock on first access only
+
+	pInputStreamInfo pInfo = GetInfoPtr();
+	pInputStreamData pData = GetDataPtr();
+	pInputStreamFile pFile = GetFilePtr();
+
+	long nfile = pInfo->numberBytesInFile;						// number bytes in file
+	long nbuffer = pInfo->numberBytes - pInfo->numberBytesInFile;	// number bytes in buffer
+
+	TCDEBUGLOGA2("CInputStream::AddMessage numberMessages      =%d numberBytes      =%d\n",pInfo->numberMessages, pInfo->numberBytes);
+
+	DWORD nWriteSize = pInfo->bufferCapacity - pInfo->bufferSize;
+	if (nWriteSize > (inLength+sizeof(DWORD)))
+	{
+		DoWriteBuffer(pInfo, pData, (BYTE*)&inLength, sizeof(DWORD));
+		DoWriteBuffer(pInfo, pData, inMessage, inLength);
+		pInfo->numberBytes += inLength + sizeof(DWORD);
+		pInfo->numberMessages++;
+		done = TRUE;
+	}
+	else
+	{
+		// not enough room
+		// we just lost a message
+		TCDEBUGLOGS("CInputStream::AddMessage buffer overflowed and no file - msg lost\n");
+		LOGPERF("AddMessage buffer overflowed\n");
+		err = TCAPI_ERR_INPUTSTREAM_BUFFER_OVERFLOW_MISSED_MSGS;
+	}
+
+	TCDEBUGLOGA2("CInputStream::AddMessage numberMessages      =%d numberBytes      =%d\n",pInfo->numberMessages, pInfo->numberBytes);
+
+#ifdef LOG_PERFORMANCE
+	char msg[200];
+	sprintf(msg, "AddMessage numMsgs = %d numByts = %d\n", pInfo->numberMessages, pInfo->numberBytes);
+	LOGPERF(msg);
+#endif
+//	ReleaseAccess(); // server will unlock all streams once the buffer is processed if any added
+
+	TCDEBUGLOGA1("CInputStream::AddMessage err=%d\n", err);
+	TCDEBUGCLOSE();
+
+	return err;
+}
+// now only used still by the C++ api
+DWORD CInputStream::GetNextMessage(DWORD inLength, BYTE* outMessage)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA3("CInputStream::GetNextMessage clientId = %d inLength = %d this = %x\n", m_ClientID, inLength, this);
+
+	DWORD outMsgLen = 0;
+
+	BOOL gotIt = WaitForAccess();
+	if (gotIt)
+	{
+		DWORD dwMsgSize = 0;
+
+		pInputStreamInfo pInfo = GetInfoPtr();
+		pInputStreamData pData = GetDataPtr();
+		pInputStreamFile pFile = GetFilePtr();
+
+		TCDEBUGLOGA2("CInputStream::GetNextMessage numberMessages      =%d numberBytes      =%d\n",pInfo->numberMessages, pInfo->numberBytes);
+
+		if (pInfo->numberBytes > 0)
+		{
+			DoReadBuffer(pInfo, pData, (BYTE*)&dwMsgSize, sizeof(DWORD));
+			if (inLength > dwMsgSize)
+				inLength = dwMsgSize;
+
+			DoReadBuffer(pInfo, pData, outMessage, inLength);
+			outMsgLen = inLength;
+			pInfo->numberMessages--;
+			pInfo->numberBytes = pInfo->numberBytes - dwMsgSize - sizeof(DWORD);
+		}
+
+		TCDEBUGLOGA2("CInputStream::GetNextMessage numberMessages      =%d numberBytes      =%d\n",pInfo->numberMessages, pInfo->numberBytes);
+
+		ReleaseAccess();
+	}
+
+#ifdef LOG_PERFORMANCE
+//	char msg[200];
+//	sprintf(msg, "GetNextMessage.outMsgLen = %d\n", outMsgLen);
+//	LOGPERF(msg);
+	LOGPERF("GetNextMessage\n");
+#endif
+
+	TCDEBUGLOGS("CInputStream::GetNextMessage done\n");
+	TCDEBUGCLOSE();
+
+	return outMsgLen;
+}
+
+DWORD CInputStream::GetNextMessageSize()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CInputStream::GetNextMessageSize clientId = %d this = %x\n", m_ClientID, this);
+
+	DWORD length = 0;
+
+	BOOL gotIt = WaitForAccess();
+	if (gotIt)
+	{
+
+		pInputStreamInfo pInfo = GetInfoPtr();
+		pInputStreamData pData = GetDataPtr();
+
+		if (pInfo->numberMessages > 0)
+		{
+			pInfo->bufferPeek = pInfo->bufferRead;
+			DoPeekBuffer(pInfo, pData, (BYTE*)&length, sizeof(DWORD));
+		}
+
+		ReleaseAccess();
+	}
+
+	TCDEBUGLOGA1("CInputStream::GetNextMessageSize length = %d\n", length);
+	TCDEBUGCLOSE();
+
+#ifdef LOG_PERFORMANCE
+//	char msg[200];
+//	sprintf(msg, "GetNextMessageSize.length = %d\n", length);
+//	LOGPERF(msg);
+	LOGPERF("GetNextMessageSize\n");
+#endif
+	return length;
+}
+void CInputStream::GetMessageSizes(long inNumberMessages, DWORD* outMessageSizes)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA3("CInputStream::GetMessageSizes clientId = %d this = %x inNum = %d\n", m_ClientID, this, inNumberMessages);
+
+	BOOL gotIt = WaitForAccess();
+	if (gotIt)
+	{
+
+		pInputStreamData pData = GetDataPtr();
+		pInputStreamFile pFile = GetFilePtr();
+		pInputStreamInfo pInfo = GetInfoPtr();
+
+		DWORD numberToGet = inNumberMessages;
+		if (numberToGet > pInfo->numberMessages) numberToGet = pInfo->numberMessages;
+
+		if (numberToGet > 0)
+		{
+			pInfo->bufferPeek = pInfo->bufferRead;
+			for (DWORD i = 0; i < numberToGet; i++)
+			{
+				DWORD len = 0;
+				DoPeekBuffer(pInfo, pData, (BYTE*)&len, sizeof(DWORD));
+				outMessageSizes[i] = len;
+				IncrementPeekPosition(pInfo, len+sizeof(DWORD));
+			}
+		}
+
+		ReleaseAccess();
+	}
+
+	TCDEBUGLOGS("CInputStream::GetMessageSizes done\n");
+	TCDEBUGCLOSE();
+	LOGPERF("GetMessageSizes\n");
+}
+
+#ifdef TCF_CLIENT
+DWORD CInputStream::GetMessages(JNIEnv* env, long inNumberMessages, long inNumberMaxBytes, long& outNumberBytesRead, long& outNumberMessagesRead, jbyteArray outMessageData)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CInputStream::GetMessages inNumberMaxBytes = %d inNumberMessages = %d\n", inNumberMaxBytes, inNumberMessages);
+
+	DWORD dwMsgSize = 0;
+	outNumberBytesRead = outNumberMessagesRead = 0;
+
+	BOOL gotIt = WaitForAccess();
+	if (gotIt)
+	{
+
+		pInputStreamInfo pInfo = GetInfoPtr();
+		pInputStreamData pData = GetDataPtr();
+
+		if (pInfo->numberMessages > 0)
+		{
+			if (inNumberMessages == 0 || (inNumberMessages > pInfo->numberMessages))
+				inNumberMessages = pInfo->numberMessages;
+			for (long i = 0; i < inNumberMessages; i++)
+			{
+				pInfo->bufferPeek = pInfo->bufferRead;
+				DoPeekBuffer(pInfo, pData, (BYTE*)&dwMsgSize, sizeof(DWORD));
+
+				if ((outNumberBytesRead + dwMsgSize) > inNumberMaxBytes)
+					break;
+
+				IncrementReadPosition(pInfo, sizeof(DWORD));
+				pInfo->numberBytes -= sizeof(DWORD);
+
+				DWORD lenToEnd = pInfo->bufferCapacity - pInfo->bufferRead;
+				if (lenToEnd > dwMsgSize)
+					lenToEnd = dwMsgSize;
+
+				if (lenToEnd > 0)
+					env->SetByteArrayRegion(outMessageData, outNumberBytesRead, lenToEnd, (jbyte*)&pData[pInfo->bufferRead]);
+
+				DWORD lenRemaining = dwMsgSize - lenToEnd;
+				if (lenRemaining > 0)
+					env->SetByteArrayRegion(outMessageData, outNumberBytesRead+lenToEnd, lenRemaining, (jbyte*)&pData[0]);
+
+				pInfo->bufferSize -= dwMsgSize;
+
+				IncrementReadPosition(pInfo, dwMsgSize);
+
+				outNumberBytesRead += dwMsgSize;
+				outNumberMessagesRead++;
+				pInfo->numberBytes -= dwMsgSize;
+				pInfo->numberMessages--;	
+
+				if ((i % 500) == 0)
+					Sleep(1);
+			}
+		}
+		if (pInfo->numberBytes == 0)
+		{
+			pInfo->bufferRead = pInfo->bufferWrite = 0;
+		}
+		ReleaseAccess();
+	}
+
+#ifdef LOG_PERFORMANCE
+	char msg[200];
+	sprintf(msg, "GetMessages numMsgs = %d numByts = %d\n", outNumberMessagesRead, outNumberBytesRead);
+	LOGPERF(msg);
+#endif
+
+	TCDEBUGLOGA2("CInputStream::GetMessages outNumberBytesRead = %d outNumberMessagesRead = %d\n", outNumberBytesRead, outNumberMessagesRead);
+	TCDEBUGCLOSE();
+	return outNumberMessagesRead;
+}
+#endif // TCF_CLIENT
+
+void CInputStream::GetTotalMessageSize(long inNumberMessages, DWORD& outTotalSize)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA3("CInputStream::GetTotalMessageSize clientId = %d this = %x inNum = %d\n", m_ClientID, this, inNumberMessages);
+
+	outTotalSize = 0;
+	BOOL gotIt = WaitForAccess();
+	if (gotIt)
+	{
+
+		DWORD len = 0;
+
+		pInputStreamData pData = GetDataPtr();
+		pInputStreamFile pFile = GetFilePtr();
+		pInputStreamInfo pInfo = GetInfoPtr();
+
+		DWORD numberToGet = inNumberMessages;
+		if (numberToGet > pInfo->numberMessages) numberToGet = pInfo->numberMessages;
+
+		if (numberToGet > 0)
+		{
+			TCDEBUGLOGA1("CInputStream::GetTotalMessageSize numberToGet = %d\n", numberToGet);
+			pInfo->bufferPeek = pInfo->bufferRead;
+			for (DWORD i = 0; i < numberToGet; i++)
+			{
+				DoPeekBuffer(pInfo, pData, (BYTE*)&len, sizeof(DWORD));
+				outTotalSize += len;
+				IncrementPeekPosition(pInfo, len+sizeof(DWORD));
+			}
+		}
+
+
+		ReleaseAccess();
+	}
+
+#ifdef LOG_PERFORMANCE
+//	char msg[200];
+//	sprintf(msg, "GetTotalMessageSize.outTotalSize = %d\n", outTotalSize);
+	LOGPERF("GetTotalMessageSize\n");
+#endif
+	TCDEBUGLOGA1("CInputStream::GetTotalMessageSize done = %d\n", outTotalSize);
+	TCDEBUGCLOSE();
+
+}
+
+#else // !USE_CIRCULAR_BUFFER
+
+long CInputStream::AddMessage(DWORD inLength, BYTE* inMessage)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA3("CInputStream::AddMessage clientId = %d inLength = %d this = %x\n", m_ClientID, inLength, this);
+
+	long err = TCAPI_ERR_NONE;
+
+	BOOL done = FALSE;
+	if (inLength == 0 || inMessage == NULL)
+		return TCAPI_ERR_NONE;
+
+	WaitForAccess();
+
+	pInputStreamInfo pInfo = GetInfoPtr();
+	pInputStreamData pData = GetDataPtr();
+	pInputStreamFile pFile = GetFilePtr();
+
+	long nfile = pInfo->numberBytesInFile;						// number bytes in file
+	long nbuffer = pInfo->numberBytes - pInfo->numberBytesInFile;	// number bytes in buffer
+
+	TCDEBUGLOGA2("CInputStream::AddMessage numberMessages      =%d numberBytes      =%d\n",pInfo->numberMessages, pInfo->numberBytes);
+	TCDEBUGLOGA2("CInputStream::AddMessage numberMessagesInBuff=%d numberBytesInBuff=%d\n",pInfo->numberMessages-pInfo->numberMessagesInFile, pInfo->numberBytes-pInfo->numberBytesInFile);
+	TCDEBUGLOGA2("CInputStream::AddMessage numberMessagesInFile=%d numberBytesInFile=%d\n",pInfo->numberMessagesInFile, pInfo->numberBytesInFile);
+
+	if (nfile > 0)
+	{
+		// we've already overflowed
+		//  and we are using an overflow file
+		//  so attempt to put message there
+		if ((nfile + inLength + sizeof(DWORD)) <= m_FileSize)
+		{
+			// room to put msg into file
+			BYTE* ptr = pFile;
+			ptr += nfile;
+			*(DWORD*)ptr = inLength;
+			ptr += sizeof(DWORD);
+			memcpy(ptr, inMessage, inLength);
+			pInfo->numberMessages++;
+			pInfo->numberMessagesInFile++;
+			pInfo->numberBytes += inLength + sizeof(DWORD);
+			pInfo->numberBytesInFile += inLength + sizeof(DWORD);
+			done = TRUE;
+		}
+		else
+		{
+			// we just lost a message
+			TCDEBUGLOGS("CInputStream::AddMessage file overflowed - msg lost\n");
+			err = TCAPI_ERR_INPUTSTREAM_FILE_OVERFLOW_MISSED_MSGS;
+		}
+	}
+	else // number of bytes in file == 0 ==> either not overflowed or not using file
+	{
+		// attempt to put message into buffer
+		if ((nbuffer + inLength + sizeof(DWORD)) <= m_BufferSize)
+		{
+			// room to put msg into buffer
+			BYTE* ptr = pData;
+			ptr += nbuffer;
+			*(DWORD*)ptr = inLength;
+			ptr += sizeof(DWORD);
+			memcpy(ptr, inMessage, inLength);
+			pInfo->numberMessages++;
+			pInfo->numberBytes += inLength + sizeof(DWORD);
+			done = TRUE;
+		}
+		else
+		{
+			// overflow to file?
+			if (m_File != NULL)
+			{
+				// room to put msg into file
+				BYTE* ptr = pFile;
+				ptr += nfile;
+				*(DWORD*)ptr = inLength;
+				ptr += sizeof(DWORD);
+				memcpy(ptr, inMessage, inLength);
+				pInfo->numberMessages++;
+				pInfo->numberMessagesInFile++;
+				pInfo->numberBytes += inLength + sizeof(DWORD);
+				pInfo->numberBytesInFile += inLength + sizeof(DWORD);
+				done = TRUE;
+				TCDEBUGLOGS("CInputStream::AddMessage buffer overflowed to file\n");
+				LOGPERF("AddMessage buffer overflowed\n");
+				err = TCAPI_INFO_INPUTSTREAM_BUFFER_OVERFLOW_TO_FILE;
+			}
+			else
+			{
+				// we just lost a message
+				TCDEBUGLOGS("CInputStream::AddMessage buffer overflowed and no file - msg lost\n");
+				err = TCAPI_ERR_INPUTSTREAM_BUFFER_OVERFLOW_MISSED_MSGS;
+			}
+		}
+	}
+	TCDEBUGLOGA2("CInputStream::AddMessage numberMessages      =%d numberBytes      =%d\n",pInfo->numberMessages, pInfo->numberBytes);
+	TCDEBUGLOGA2("CInputStream::AddMessage numberMessagesInBuff=%d numberBytesInBuff=%d\n",pInfo->numberMessages-pInfo->numberMessagesInFile, pInfo->numberBytes-pInfo->numberBytesInFile);
+	TCDEBUGLOGA2("CInputStream::AddMessage numberMessagesInFile=%d numberBytesInFile=%d\n",pInfo->numberMessagesInFile, pInfo->numberBytesInFile);
+
+	LOGPERF("AddMessage\n");
+
+	ReleaseAccess();
+
+	TCDEBUGLOGA1("CInputStream::AddMessage err=%d\n", err);
+	TCDEBUGCLOSE();
+
+	return err;
+}
+DWORD CInputStream::GetNextMessage(DWORD inLength, BYTE* outMessage)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA3("CInputStream::GetNextMessage clientId = %d inLength = %d this = %x\n", m_ClientID, inLength, this);
+
+	BYTE* ptr, *ptrStart;
+	DWORD outMsgLen = 0;
+
+	WaitForAccess();
+
+	DWORD dwMsgSize = 0;
+
+	pInputStreamInfo pInfo = GetInfoPtr();
+	pInputStreamData pData = GetDataPtr();
+	pInputStreamFile pFile = GetFilePtr();
+
+	ptr = ptrStart = pData;
+	TCDEBUGLOGA2("CInputStream::GetNextMessage numberMessages      =%d numberBytes      =%d\n",pInfo->numberMessages, pInfo->numberBytes);
+	TCDEBUGLOGA2("CInputStream::GetNextMessage numberMessagesInBuff=%d numberBytesInBuff=%d\n",pInfo->numberMessages-pInfo->numberMessagesInFile, pInfo->numberBytes-pInfo->numberBytesInFile);
+	TCDEBUGLOGA2("CInputStream::GetNextMessage numberMessagesInFile=%d numberBytesInFile=%d\n",pInfo->numberMessagesInFile, pInfo->numberBytesInFile);
+
+	if (pInfo->numberBytes > 0)
+	{
+		// get 1 msg from buffer
+		dwMsgSize = *(DWORD*)pData;
+		TCDEBUGLOGA1("CInputStream::GetNextMessage 1st msg in buffer = %d\n", dwMsgSize);
+		ptr += sizeof(DWORD);
+		if (inLength > dwMsgSize)
+			inLength = dwMsgSize;
+
+		memcpy(outMessage, ptr, inLength);
+		outMsgLen = inLength;
+		ptr += dwMsgSize;
+
+		// move up rest of buffer msgs to beginning of buffer
+		long moveLen = m_BufferSize - dwMsgSize - sizeof(DWORD);
+//		memcpy(ptrStart, ptr, moveLen);
+		TCDEBUGLOGA1("CInputStream::GetNextMessage move bytes up in buffer = %d\n", moveLen);
+		
+		// adjust totals
+		pInfo->numberMessages--;
+		pInfo->numberBytes = pInfo->numberBytes - dwMsgSize - sizeof(DWORD);
+		
+		// move next file message up to buffer
+		if (m_File != NULL)
+		{
+			// using file
+			if (pInfo->numberBytesInFile > 0)
+			{
+				// messages exist in file
+				dwMsgSize = *(DWORD*)pFile;
+				TCDEBUGLOGA1("CInputStream::GetNextMessage 1st msg in file   = %d\n", dwMsgSize);
+				long nbuffer = pInfo->numberBytes - pInfo->numberBytesInFile; // number bytes in buffer
+				if ((nbuffer + dwMsgSize + sizeof(DWORD)) <= m_BufferSize)
+				{
+					// room in buffer - move to buffer
+					ptrStart = &pData[nbuffer];
+					moveLen = dwMsgSize + sizeof(DWORD);
+					memcpy(ptrStart, pFile, moveLen);
+					TCDEBUGLOGA1("CInputStream::GetNextMessage move from file to buffer = %d\n", moveLen);
+					LOGPERF("GetNextMessage move from file to buffer\n");
+
+					// adjust file totals
+					pInfo->numberMessagesInFile--;
+					pInfo->numberBytesInFile = pInfo->numberBytesInFile - moveLen;
+
+					// move msgs in file up
+					if (pInfo->numberMessagesInFile > 0)
+					{
+						ptr = &pFile[moveLen];	// new end
+						moveLen = pInfo->numberBytesInFile;
+						memcpy(pFile, ptr, moveLen);
+						TCDEBUGLOGA1("CInputStream::GetNextMessage move bytes up in file = %d\n", moveLen);
+					}
+				}
+				else
+				{
+					// no room in buffer for next file msg - leave it there
+					TCDEBUGLOGS("CInputStream::GetNextMessage no room in buffer for message in file - leave it there\n");
+				}
+			}
+		}
+	}
+
+	TCDEBUGLOGA2("CInputStream::GetNextMessage numberMessages      =%d numberBytes      =%d\n",pInfo->numberMessages, pInfo->numberBytes);
+	TCDEBUGLOGA2("CInputStream::GetNextMessage numberMessagesInBuff=%d numberBytesInBuff=%d\n",pInfo->numberMessages-pInfo->numberMessagesInFile, pInfo->numberBytes-pInfo->numberBytesInFile);
+	TCDEBUGLOGA2("CInputStream::GetNextMessage numberMessagesInFile=%d numberBytesInFile=%d\n",pInfo->numberMessagesInFile, pInfo->numberBytesInFile);
+
+	LOGPERF("GetNextMessage\n");
+
+	ReleaseAccess();
+
+	TCDEBUGLOGS("CInputStream::GetNextMessage done\n");
+	TCDEBUGCLOSE();
+
+	return outMsgLen;
+}
+DWORD CInputStream::GetNextMessageSize()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CInputStream::GetNextMessageSize clientId = %d this = %x\n", m_ClientID, this);
+
+	DWORD length = 0;
+
+	WaitForAccess();
+
+	pInputStreamInfo pInfo = GetInfoPtr();
+	pInputStreamData pData = GetDataPtr();
+
+	if (pInfo->numberMessages > 0)
+	{
+		BYTE* ptr = pData;
+		length = *(DWORD*)ptr;
+	}
+
+	ReleaseAccess();
+
+	TCDEBUGLOGA1("CInputStream::GetNextMessageSize length = %d\n", length);
+	TCDEBUGCLOSE();
+
+	LOGPERF("GetNextMessageSize\n");
+	return length;
+}
+void CInputStream::GetMessageSizes(long inNumberMessages, DWORD* outMessageSizes)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA3("CInputStream::GetMessageSizes clientId = %d this = %x inNum = %d\n", m_ClientID, this, inNumberMessages);
+
+	WaitForAccess();
+	pInputStreamData pData = GetDataPtr();
+	pInputStreamFile pFile = GetFilePtr();
+	pInputStreamInfo pInfo = GetInfoPtr();
+
+	long ntotal = pInfo->numberMessages;			// number of total messages (buffer + file)
+	long nfile = pInfo->numberMessagesInFile;		// number of file messages
+	long nbuffer = ntotal - nfile;				// number of buffer messages
+	long nreadtotal = min(ntotal, inNumberMessages);	// number of total messages to read
+	long nreadbuffer = min(nbuffer, nreadtotal);		// number of buffer messages to read
+	long nreadfile = nreadtotal - nreadbuffer;			// number of file messages to read
+	TCDEBUGLOGA3("CInputStream::GetMessageSizes ntotal=%d nfile=%d nbuffer=%d\n", ntotal, nfile, nbuffer);
+	TCDEBUGLOGA3("CInputStream::GetMessageSizes nreadtotal=%d nreadfile=%d nreadbuffer=%d\n", nreadtotal, nreadfile, nreadbuffer);
+
+
+	if (nreadtotal > 0)
+	{
+		if (nreadbuffer > 0)
+		{
+			BYTE* ptr = pData;
+			DWORD prevSize = 0;
+			for (long i = 0; i < nreadbuffer; i++)
+			{
+				DWORD len = *(DWORD*)&ptr[prevSize];
+				outMessageSizes[i] = len;
+				prevSize += len + sizeof(DWORD);
+			}
+		}
+		if (nreadfile > 0)
+		{
+			BYTE* ptr = pFile;
+			DWORD prevSize = 0;
+			for (long i = 0; i < nreadfile; i++)
+			{
+				DWORD len = *(DWORD*)&ptr[prevSize];
+				outMessageSizes[nreadbuffer+i] = len;
+				prevSize += len + sizeof(DWORD);
+			}
+		}
+	}
+
+
+	ReleaseAccess();
+
+	TCDEBUGLOGS("CInputStream::GetMessageSizes done\n");
+	TCDEBUGCLOSE();
+	LOGPERF("GetMessageSizes\n");
+}
+
+void CInputStream::GetTotalMessageSize(long inNumberMessages, DWORD& outTotalSize)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA3("CInputStream::GetTotalMessageSize clientId = %d this = %x inNum = %d\n", m_ClientID, this, inNumberMessages);
+
+	WaitForAccess();
+	pInputStreamData pData = GetDataPtr();
+	pInputStreamFile pFile = GetFilePtr();
+	pInputStreamInfo pInfo = GetInfoPtr();
+
+	long ntotal = pInfo->numberMessages;			// number of total messages (buffer + file)
+	long nfile = pInfo->numberMessagesInFile;		// number of file messages
+	long nbuffer = ntotal - nfile;				// number of buffer messages
+	long nreadtotal = min(ntotal, inNumberMessages);	// number of total messages to read
+	long nreadbuffer = min(nbuffer, nreadtotal);		// number of buffer messages to read
+	long nreadfile = nreadtotal - nreadbuffer;			// number of file messages to read
+	TCDEBUGLOGA3("CInputStream::GetTotalMessageSize ntotal=%d nfile=%d nbuffer=%d\n", ntotal, nfile, nbuffer);
+	TCDEBUGLOGA3("CInputStream::GetTotalMessageSize nreadtotal=%d nreadfile=%d nreadbuffer=%d\n", nreadtotal, nreadfile, nreadbuffer);
+
+	outTotalSize = 0;
+
+	if (nreadtotal > 0)
+	{
+		if (nreadbuffer > 0)
+		{
+			BYTE* ptr = pData;
+			DWORD prevSize = 0;
+			for (long i = 0; i < nreadbuffer; i++)
+			{
+				DWORD len = *(DWORD*)&ptr[prevSize];
+				outTotalSize += len;
+				prevSize += len + sizeof(DWORD);
+			}
+		}
+		if (nreadfile > 0)
+		{
+			BYTE* ptr = pFile;
+			DWORD prevSize = 0;
+			for (long i = 0; i < nreadfile; i++)
+			{
+				DWORD len = *(DWORD*)&ptr[prevSize];
+				outTotalSize += len;
+				prevSize += len + sizeof(DWORD);
+			}
+		}
+	}
+
+
+	ReleaseAccess();
+
+	TCDEBUGLOGS("CInputStream::GetTotalMessageSize done\n");
+	TCDEBUGCLOSE();
+	LOGPERF("GetTotalMessageSize\n");
+}
+#endif // USE_CIRCULAR_BUFFER
+
+LONG CInputStream::GetNumberMessages()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CInputStream::GetNumberMessages clientId = %d this = %x\n", m_ClientID, this);
+
+	LONG number = 0;
+
+	WaitForAccess();
+
+	pInputStreamInfo pInfo = GetInfoPtr();
+
+	number = pInfo->numberMessages;
+
+	ReleaseAccess();
+
+	TCDEBUGLOGA1("CInputStream::GetNumberMessages number = %d\n", number);
+	TCDEBUGCLOSE();
+
+	LOGPERF("GetNumberMessages\n");
+	return number;
+}
+
+
+
+BOOL CInputStreamData::Init()
+{
+	if (IsCreator())
+	{
+	}
+	return TRUE;
+}
+BOOL CInputStreamInfo::Init()
+{
+	if (IsCreator())
+	{
+		pInputStreamInfo pInfo = (pInputStreamInfo)GetDataPtr();
+		pInfo->numberBytes = 0;
+		pInfo->numberMessages = 0;
+		pInfo->numberBytesInFile = 0;
+		pInfo->numberMessagesInFile = 0;
+#ifdef USE_CIRCULAR_BUFFER
+		pInfo->bufferRead = 0;				// where to read from buffer
+		pInfo->bufferPeek = 0;				// where to peek some data from buffer
+		pInfo->bufferWrite = 0;				// where to write to buffer
+		pInfo->bufferSize = 0;				// current size of buffer
+		pInfo->bufferCapacity = 0;			// total capacity of buffer
+#endif
+	}
+	return TRUE;
+}
+
+// real file on disk (ie, not tied to swap file)
+void CInputStreamFile::SetClientId(long clientId)
+{
+	m_ClientID = clientId;
+}
+BOOL CInputStreamFile::Open(DWORD dwSize, CHAR* filePath)
+{
+	BOOL fOk = FALSE;
+
+	// first process (clients) will create and map file
+	// second process (server) will get an error on create, but will go ahead and map
+	m_hFile = CreateFile(
+		filePath, 
+		GENERIC_READ|GENERIC_WRITE, 
+		FILE_SHARE_READ|FILE_SHARE_WRITE,
+		0,
+		CREATE_ALWAYS, 
+		FILE_ATTRIBUTE_NORMAL|FILE_FLAG_DELETE_ON_CLOSE,
+		0);
+
+	char mapname[80];
+	sprintf(mapname, "%s%d", INPUTSTREAMOVERFLOW_MAP_BASENAME, m_ClientID);
+	if (m_hFile != INVALID_HANDLE_VALUE)
+	{
+		// we got a good handle (we might have gotten an error, but create was successful)
+		// create a mapping to this file
+		fOk = CSharedData::Open(m_hFile, dwSize, mapname);
+		TCDEBUGOPEN();
+		TCDEBUGLOGS("CInputStreamFile::Open CreateFile successful\n");
+		TCDEBUGCLOSE();
+	}
+	else
+	{
+		// this causes the open to do an OpenFileMapping instead of a CreateFileMapping (file handle not needed in former)
+		fOk = CSharedData::Open(INVALID_HANDLE_VALUE, dwSize, mapname);
+		TCDEBUGOPEN();
+		TCDEBUGLOGS("CInputStreamFile::Open CreateFile failed\n");
+		TCDEBUGCLOSE();
+	}
+
+	return fOk;
+}
+
+CInputStreamFile::Close()
+{
+	// close all mapping handles
+	CSharedData::Close();
+	
+	// close file
+	if (m_hFile != INVALID_HANDLE_VALUE)
+	{
+		CloseHandle(m_hFile);
+		m_hFile = INVALID_HANDLE_VALUE;
+	}
+}
+
+BOOL CInputStreamFile::Init()
+{
+	return TRUE;
+}
+
+#ifdef LOG_PERFORMANCE
+static void logPerf(char* msg)
+{
+	if (fpLog)
+	{
+		SYSTEMTIME sTime;
+		GetLocalTime(&sTime);
+		fprintf(fpLog, 
+			"%02.2d%02.2d-%02.2d:%02.2d:%02.2d.%03.3d: %s",
+			sTime.wDay, sTime.wMonth, sTime.wHour, sTime.wMinute, sTime.wSecond, sTime.wMilliseconds,
+			msg);
+
+		numLogged++;
+		if ((numLogged % 1000) == 0)
+			fflush(fpLog);
+	}
+}
+static void openPerf()
+{
+	struct _stat buf;
+	char* dirname = "c:\\tcf";
+	int result = _stat(dirname, &buf);
+	if (result == 0) // exists
+	{
+		if (fpLog == NULL)
+			fpLog = _fsopen(perfFileName, "at", _SH_DENYNO);
+	}
+	else
+	{
+		fpLog = NULL;
+	}
+}
+static void closePerf()
+{
+	if (fpLog)
+	{
+		fflush(fpLog);
+		fclose(fpLog);
+	}
+	fpLog = NULL;
+}
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Source/ServerClient.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,241 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "stdafx.h"
+#include "ServerClient.h"
+#include "TCErrorConstants.h"
+#include <time.h>
+
+#ifdef TCF_CLIENT
+#include "..\..\TCFClient\ClientManager.h"
+extern CClientManager* gManager;
+#endif
+#ifdef TCF_SERVER
+#include "..\..\TCFServer\ServerManager.h"
+extern CServerManager* gManager;
+#endif
+
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+#endif
+
+//#define LOG_SERVERCLIENT
+#if defined(LOG_SERVERCLIENT) && defined(_DEBUG)
+extern BOOL gDoLogging;
+extern char TCDebugMsg[];
+#define TCDEBUGOPEN() if (gDoLogging) { gManager->m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(TCDebugMsg,"%s", s); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(TCDebugMsg, s, a1); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2, a3); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { gManager->m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+CServerCommand::CServerCommand()
+{
+	// Server commands/responses
+	m_ServerCommandMutex.Open(SERVERCOMMANDDATA_MUTEX_NAME, SERVERCOMMANDDATA_MUTEX_TIMEOUT);
+	m_ServerCommandData.Open(SERVERCOMMANDDATA_MAP_SIZE, SERVERCOMMANDDATA_MAP_NAME);
+	m_ServerCommandData.Init();
+	m_ServerMessageData.Open(SERVERMESSAGEDATA_MAP_SIZE, SERVERMESSAGEDATA_MAP_NAME);
+	m_ServerMessageData.Init();
+
+	m_ServerProcessData.Open(SERVERPROCESSDATA_MAP_SIZE, SERVERPROCESSDATA_MAP_NAME);
+	m_ServerProcessData.Init();
+
+	// General server access
+	m_ServerPipeMutex.Open(SERVERPIPE_MUTEX_NAME, SERVERPIPE_MUTEX_TIMEOUT);
+
+	// command/response events
+	m_hServerCommandReadyEvent = ::CreateEvent(NULL, FALSE, FALSE, SERVER_COMMAND_READY_EVENTNAME);
+	m_hServerResponseReadyEvent = ::CreateEvent(NULL, FALSE, FALSE, SERVER_RESPONSE_READY_EVENTNAME);
+}
+
+CServerCommand::~CServerCommand()
+{
+	m_ServerCommandMutex.Close(); 
+	m_ServerCommandData.Close();
+	m_ServerMessageData.Close();
+
+	m_ServerProcessData.Close();
+
+	m_ServerPipeMutex.Close();
+
+	::CloseHandle(m_hServerCommandReadyEvent);
+	::CloseHandle(m_hServerResponseReadyEvent);
+
+}
+
+// Client methods
+BOOL CServerCommand::SendCommand(pServerCommandData pCmd, DWORD msgLength, BYTE* message)
+{
+	BOOL sent = FALSE;
+
+//	if (pCmd == NULL) return sent;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CServerCommand::SendCommand\n");
+	TCDEBUGCLOSE();
+
+	WaitForServerCommandAccess();
+	
+	pServerCommandData pData1 = GetDataPtr();
+
+	if (pCmd->command != eCmdNone)
+	{
+		memcpy(pData1, pCmd, sizeof(ServerCommandData));
+		if (msgLength > 0 && message != NULL)
+		{
+			pServerMessageData pData2 = GetMsgPtr();
+			pData2->length = msgLength;
+			if (msgLength > 0)
+				memcpy(pData2->message, message, msgLength);
+		}
+		pData1->response = eRspNone; // setup for response
+		sent = TRUE;
+		::SetEvent(m_hServerCommandReadyEvent);
+	}
+
+	ReleaseServerCommandAccess();
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CServerCommand::SendCommand done\n");
+	TCDEBUGCLOSE();
+
+	return sent;
+}
+
+BOOL CServerCommand::GetResponse(pServerCommandData pRsp)
+{
+	BOOL found = FALSE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CServerCommand::GetResponse\n");
+	TCDEBUGCLOSE();
+
+	if (::WaitForSingleObject(m_hServerResponseReadyEvent, SERVER_CMDRSP_EVENT_TIMEOUT) == WAIT_OBJECT_0)
+	{
+		WaitForServerCommandAccess();
+		pServerCommandData pData = GetDataPtr();
+		if (pData->response != eRspNone)
+		{
+			// response is ready when command is cleared
+			memcpy(pRsp, pData, sizeof(ServerCommandData));
+			found = TRUE;
+		}
+		ReleaseServerCommandAccess();
+	}
+	else
+	{
+		TCDEBUGLOGS("CServerCommand::GetResponse timeout\n");
+		pRsp->response = eRspError;
+		pRsp->error = TCAPI_ERR_COMM_SERVER_RESPONSE_TIMEOUT;
+	}
+#if (0)
+
+	BOOL timeoutoccurred = FALSE;
+	pServerCommandData pData = GetDataPtr();
+	time_t ctime = time(NULL);
+	time_t timeout = ctime + 60; // wait 60 seconds only
+
+//	if (pRsp == NULL) return found;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGA2("CServerCommand::GetResponse time = %d timeout = %d\n", ctime, timeout);
+	TCDEBUGCLOSE();
+
+	while(!found && !timeoutoccurred)
+	{
+		WaitForServerCommandAccess();
+		if (pData->response != eRspNone)
+		{
+			// response is ready when command is cleared
+			memcpy(pRsp, pData, sizeof(ServerCommandData));
+			found = TRUE;
+		}
+		else
+		{
+			time_t ctime = time(NULL);
+			if (ctime >= timeout)
+			{
+				TCDEBUGLOGS("CServerCommand::GetResponse timeout\n");
+				pRsp->response = eRspError;
+				pRsp->error = TCAPI_ERR_COMM_SERVER_RESPONSE_TIMEOUT;
+				timeoutoccurred = TRUE;
+			}
+		}
+		ReleaseServerCommandAccess();
+		Sleep(1);
+	}
+#endif
+	TCDEBUGOPEN();
+	TCDEBUGLOGA1("CServerCommand::GetResponse waiting for response found=%d\n", found);
+	TCDEBUGCLOSE();
+
+	return found;
+}
+// Server methods
+BOOL CServerCommand::GetCommand(pServerCommandData pCmd, pServerMessageData pMsg)
+{
+	BOOL found = FALSE;
+
+	if (::WaitForSingleObject(m_hServerCommandReadyEvent, SERVER_CMDRSP_EVENT_TIMEOUT) == WAIT_OBJECT_0)
+	{
+		pServerCommandData pData1 = GetDataPtr();
+
+		WaitForServerCommandAccess();
+		if (pData1->command != eCmdNone)
+		{
+			memcpy(pCmd, pData1, sizeof(ServerCommandData));
+			if (pMsg)
+			{
+				pServerMessageData pData2 = GetMsgPtr();
+				pMsg->length = pData2->length;
+				memcpy(pMsg->message, pData2->message, pData2->length);
+			}
+			found = TRUE;
+		}
+		ReleaseServerCommandAccess();
+	}
+
+	return found;
+}
+
+BOOL CServerCommand::SendResponse(pServerCommandData pRsp)
+{
+	BOOL sent = FALSE;
+	pServerCommandData pData = GetDataPtr();
+
+	WaitForServerCommandAccess();
+	if (pRsp->response != eRspNone)
+	{
+		memcpy(pData, pRsp, sizeof(ServerCommandData));
+		pData->command = eCmdNone; // setup for next command
+		sent = TRUE;
+		::SetEvent(m_hServerResponseReadyEvent);
+	}
+
+	ReleaseServerCommandAccess();
+
+	return sent;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Source/TCDebugLog.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,142 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "stdafx.h"
+#include "TCDebugLog.h"
+
+TCDebugLog::TCDebugLog()
+{
+	m_fLog = NULL;
+}
+
+TCDebugLog::TCDebugLog(char* baseName, DWORD pid)
+{
+	m_fLog = NULL;
+	char name[30];
+	sprintf(name, "%sMutex%d", baseName, pid);
+	m_Mutex.Open(name, LOG_MUTEX_TIMEOUT);
+
+	sprintf(m_FileName, "c:\\tcf\\%s%d.txt", baseName, pid);
+	m_fLog = _fsopen(m_FileName, "at", _SH_DENYNO);
+}
+
+TCDebugLog::TCDebugLog(char* baseName, DWORD pid, DWORD timeout)
+{
+	m_fLog = NULL;
+	char name[30];
+	sprintf(name, "%sMutex%d", baseName, pid);
+	m_Mutex.Open(name, timeout);
+
+	sprintf(m_FileName, "c:\\tcf\\%s%d.txt", baseName, pid);
+	m_fLog = _fsopen(m_FileName, "at", _SH_DENYNO);
+
+#ifdef _DEBUG
+	FILE* f = fopen("c:\\tcf\\tcdebuglog.txt", "at");
+	fprintf(f, "name=%s m_FileName=%s\n", name, m_FileName);
+	fclose(f);
+#endif
+}
+TCDebugLog::~TCDebugLog()
+{
+	if (m_fLog) 
+	{
+		fflush(m_fLog);
+		fclose(m_fLog);
+		m_fLog = NULL;
+	}
+	m_Mutex.Close();
+}
+
+void TCDebugLog::log(char* msg)
+{
+//	WaitForAccess();
+
+	if (m_fLog)
+	{
+		SYSTEMTIME sTime;
+		GetLocalTime(&sTime);
+		fprintf(m_fLog, 
+			"%02.2d%02.2d-%02.2d:%02.2d:%02.2d.%03.3d: %s",
+			sTime.wDay, sTime.wMonth, sTime.wHour, sTime.wMinute, sTime.wSecond, sTime.wMilliseconds,
+			msg);
+		fflush(m_fLog);
+	}
+//	ReleaseAccess();
+}
+/*
+void TCDebugLog::log(char* msg, argType type1, void* arg1)
+{
+	switch(type1)
+	{
+	case eCHAR:
+		char t = *(char*)arg1;
+		break;
+	}
+}
+
+void TCDebugLog::log(char* msg, argType type1, void* arg1, argType type2, void* arg2)
+{
+}
+void TCDebugLog::log(char* msg, argType type1, void* arg1, argType type2, void* arg2, argType type3, void* arg3)
+{
+}
+*/
+void TCDebugLog::logTime()
+{
+	SYSTEMTIME sTime;
+	GetLocalTime(&sTime);
+	fprintf(m_fLog, "%02.2d%02.2d-%02.2d:%02.2d:%02.2d.%03.3d: ", sTime.wDay, sTime.wMonth, sTime.wHour, sTime.wMinute, sTime.wSecond, sTime.wMilliseconds);
+}
+#ifdef TCF_SERVER
+//#define _LOG_DEBUG_MUTEX
+#else
+#endif
+BOOL TCDebugLog::WaitForAccess()
+{
+#ifdef _LOG_DEBUG_MUTEX
+	BOOL ok = m_Mutex.Wait();
+	if (ok == FALSE)
+	{
+		log("TCDebugLog::WaitForAccess failed\n");
+	}
+	else
+	{
+		log("TCDebugLog::WaitForAccess OK\n");
+	}
+	return ok;
+#else
+	return m_Mutex.Wait();
+#endif
+}
+
+BOOL TCDebugLog::ReleaseAccess()
+{
+#ifdef _LOG_DEBUG_MUTEX
+	BOOL ok = m_Mutex.Release();
+	if (ok == FALSE)
+	{
+		log("TCDebugLog::ReleaseAccess failed\n");
+	}
+	else
+	{
+		log("TCDebugLog::ReleaseAccess OK\n");
+	}
+	return ok;
+#else
+	return m_Mutex.Release();
+#endif
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Source/mutex.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "stdafx.h"
+#include "mutex.h"
+
+Mutex::Mutex()
+{
+	m_hMutex = NULL;
+	m_waitTimeout = 0L;
+	m_mutexOpen = FALSE;
+}
+Mutex::~Mutex()
+{
+	Close();
+}
+
+BOOL Mutex::Open(CHAR *mutexName, DWORD waitTimeout)
+{
+#ifdef WIN32
+	m_hMutex = ::CreateMutex(NULL, FALSE, mutexName);
+#else
+#error non Win32
+#endif
+	if (m_hMutex == NULL) 
+		m_mutexOpen = FALSE;
+	else
+	{
+		m_mutexOpen = TRUE;
+		m_waitTimeout = waitTimeout;
+	}
+
+	return m_mutexOpen;
+}
+void Mutex::Close()
+{
+	if (m_mutexOpen)
+	{
+#ifdef WIN32
+		::ReleaseMutex(m_hMutex);
+		::CloseHandle(m_hMutex);
+#else
+#error non WIN32
+#endif
+		m_hMutex = NULL;
+		m_mutexOpen = FALSE;
+	}
+}
+BOOL Mutex::Wait()
+{
+#ifdef WIN32
+	DWORD dwWaitResult = ::WaitForSingleObject(m_hMutex, m_waitTimeout); 
+	if (dwWaitResult == WAIT_OBJECT_0)
+	{
+		return TRUE;
+	}
+	return FALSE;
+#else
+#error non WIN32
+#endif
+}
+BOOL Mutex::Release()
+{
+	BOOL ret = FALSE;
+#ifdef WIN32
+	ret = ::ReleaseMutex(m_hMutex);
+#else
+#error non WIN32
+#endif
+
+	return ret;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/Common/Source/shareddata.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,141 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "stdafx.h"
+#include "shareddata.h"
+
+CSharedData::CSharedData()
+{
+	m_fCreator = FALSE;
+	m_hSharedData = NULL;
+	m_lpDataPtr = NULL;
+
+}
+CSharedData::~CSharedData()
+{
+	Close();
+}
+
+// open map backed by OS paging file
+BOOL
+CSharedData::Open(DWORD dwSize, CHAR* name)
+{
+	BOOL fOK = FALSE;
+	m_hSharedData = m_lpDataPtr = NULL;
+
+	m_hSharedData = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, dwSize, name);
+
+	m_fCreator = (GetLastError() != ERROR_ALREADY_EXISTS);
+	if (!m_fCreator)
+	{
+		// not creator, re-open using Open
+		CloseHandle(m_hSharedData);
+		m_hSharedData = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, name);
+
+	}
+	if (m_hSharedData)
+	{
+		m_lpDataPtr = MapViewOfFile(m_hSharedData, FILE_MAP_ALL_ACCESS, 0, 0, 0);
+		if (m_lpDataPtr == NULL)
+		{
+			CloseHandle(this->m_hSharedData);
+			m_hSharedData = NULL;
+		}
+		else
+			fOK = TRUE;
+	}
+	return fOK;
+}
+
+// open map backed by a real file handle
+BOOL
+CSharedData::Open(HANDLE hFile, DWORD dwSize, CHAR* name)
+{
+	BOOL fOK = FALSE;
+
+	m_hSharedData = m_lpDataPtr = NULL;
+
+	// if hFile is invalid do not create mapping - go directly to open mapping by name
+	if (hFile == INVALID_HANDLE_VALUE)
+	{
+		m_hSharedData = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, name);
+		m_fCreator = FALSE;
+	}
+	else
+	{
+		m_hSharedData = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, dwSize, name);
+		if (m_hSharedData == NULL) // failed
+		{
+		}
+		else
+		{
+			// succeeded
+			m_fCreator = (GetLastError() != ERROR_ALREADY_EXISTS);
+			if (!m_fCreator)
+			{
+				// not creator, re-open using Open
+				CloseHandle(m_hSharedData);
+				m_hSharedData = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, name);
+			}
+		}
+
+	}
+	if (m_hSharedData)
+	{
+		m_lpDataPtr = MapViewOfFile(m_hSharedData, FILE_MAP_ALL_ACCESS, 0, 0, 0);
+		if (m_lpDataPtr == NULL)
+		{
+			CloseHandle(m_hSharedData);
+			m_hSharedData = NULL;
+		}
+		else
+			fOK = TRUE;
+	}
+	return fOK;
+}
+CSharedData::Close()
+{
+	BOOL fIgnore = FALSE;
+
+	if (m_lpDataPtr != NULL)
+	{
+		fIgnore = UnmapViewOfFile(m_lpDataPtr);
+		m_lpDataPtr = NULL;
+	}
+
+	if (m_hSharedData != NULL)
+	{
+		fIgnore = CloseHandle(m_hSharedData);
+		m_hSharedData = NULL;
+	}
+}
+BOOL CSharedData::Init()
+{
+	// intended to be overridden
+	return TRUE;
+}
+
+LPVOID CSharedData::GetDataPtr()
+{
+	return m_lpDataPtr;
+}
+
+BOOL CSharedData::IsCreator()
+{
+	return m_fCreator;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/ClientManager.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,836 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// ClientManager.cpp: implementation of the CClientManager class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "ClientManager.h"
+#include "TCErrorConstants.h"
+#include "resource.h"
+#include <stdio.h>
+
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+extern char TCDebugMsg[100];
+#define TCDEBUGOPEN() if (gDoLogging) m_DebugLog->WaitForAccess();
+#define TCDEBUGLOGS(s) if (gDoLogging) sprintf(TCDebugMsg,"%s", s); if (gDoLogging) m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) sprintf(TCDebugMsg, s, a1); if (gDoLogging) m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) sprintf(TCDebugMsg, s, a1, a2); if (gDoLogging) m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) sprintf(TCDebugMsg, s, a1, a2, a3); if (gDoLogging) m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGCLOSE() if (gDoLogging) m_DebugLog->ReleaseAccess();
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+#ifdef _DEBUG
+static char* GetErrorText(DWORD inError);
+#endif
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+CClientManager::CClientManager()
+{
+	m_Server = NULL;
+	m_StreamList = NULL;
+	m_ErrorMonitorList = NULL;
+	m_DebugLog = NULL;
+	m_DllLocation = NULL;
+	m_hServer = NULL;
+	m_hServerThread = NULL;
+	m_Version[0] = NULL;
+	m_ServerLockFile = NULL;
+	m_ServerExeFile = NULL;
+}
+CClientManager::CClientManager(HINSTANCE hinstDLL)
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+		m_DebugLog = new TCDebugLog("TCF_ClientLog", ::GetCurrentProcessId());
+	else
+		m_DebugLog = NULL;
+
+#else
+	m_DebugLog = NULL;
+#endif
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CClientManager::CClientManager\n");
+
+	m_Server = new CServerCommand();
+
+	// lock server access (it might be running)
+	m_Server->WaitforServerPipeAccess();
+
+	m_StreamList = new InputStreamList();
+	m_StreamList->clear();
+
+	m_ErrorMonitorList = new ErrorMonitorList();
+	m_ErrorMonitorList->clear();
+
+	m_DllLocation = new char[MAX_DLLPATHNAME];
+	::GetModuleFileName(hinstDLL, m_DllLocation, MAX_DLLPATHNAME);
+
+	char exeDirectory[MAX_DLLPATHNAME] = {0};
+	strncpy(exeDirectory, m_DllLocation, MAX_DLLPATHNAME);
+	size_t len = strlen(exeDirectory);
+	// remove file
+	for (int i = len-1; i > 0; i--)
+	{
+		if (exeDirectory[i] == PATH_DELIMITER)
+			break;
+	}
+	exeDirectory[i] = NULL;
+
+	m_ServerExeFile = new char[MAX_DLLPATHNAME];
+	sprintf(m_ServerExeFile, "\"%s%c%s\"", exeDirectory, PATH_DELIMITER, SERVER_PROCESS_NAME);
+
+	m_ServerLockFile = new char[MAX_DLLPATHNAME];
+	sprintf(m_ServerLockFile, "%s%c%s", exeDirectory, PATH_DELIMITER, SERVER_LOCKFILE_NAME);
+
+	char name[100];
+	sprintf(name, "%s%ld", ERRORMONITORLIST_MUTEX_BASENAME, ::GetCurrentProcessId());
+	m_ErrorMonitorListMutex.Open(name, ERRORMONITORLIST_MUTEX_TIMEOUT);
+
+	sprintf(name, "%s%ld", INPUTSTREAMLIST_MUTEX_BASENAME, ::GetCurrentProcessId());
+	m_StreamListMutex.Open(name, INPUTSTREAMLIST_MUTEX_TIMEOUT);
+
+	m_hServer = NULL;
+	m_hServerThread = NULL;
+
+	// release server access
+	m_Server->ReleaseServerPipeAccess();
+	int ret = ::LoadString(hinstDLL, IDS_VERSION, m_Version, MAX_VERSION_STRING);
+
+	TCDEBUGCLOSE();
+}
+
+CClientManager::~CClientManager()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CClientManager::~CClientManager\n");
+	pServerProcessData pData = m_Server->GetProcessPtr();
+
+	if (m_Server)
+	{
+		delete m_Server;
+		m_Server = NULL;
+	}
+
+	WaitForStreamListAccess();
+	TCDEBUGLOGA1("CClientManager::~CClientManager: erasing stream list size=%d\n", InputStreamListSize());
+	if (m_StreamList)
+	{
+		InputStreamList::iterator iter;
+		for (iter = m_StreamList->begin(); iter != m_StreamList->end(); iter++)
+		{
+			TCDEBUGLOGS("CClientManager::~CClientManager: erasing stream list next 1\n");
+//			m_StreamList->erase(iter);
+			delete *iter;
+//			TCDEBUGLOGS("CClientManager::~CClientManager: erasing stream list next 2\n");
+		}
+		m_StreamList->clear();
+		TCDEBUGLOGS("CClientManager::~CClientManager: erasing stream list done 1\n");
+		delete m_StreamList;
+		TCDEBUGLOGS("CClientManager::~CClientManager: erasing stream list done 2\n");
+	}
+	ReleaseStreamListAccess();
+	m_StreamListMutex.Close();
+
+	WaitForErrorMonitorListAccess();
+	TCDEBUGLOGA1("CClientManager::~CClientManager: erasing monitor list size=%d\n", ErrorMonitorListSize());
+	if (m_ErrorMonitorList)
+	{
+		ErrorMonitorList::iterator iter;
+		for (iter = m_ErrorMonitorList->begin(); iter != m_ErrorMonitorList->end(); iter++)
+		{
+			TCDEBUGLOGS("CClientManager::~CClientManager: erasing monitor list next 1\n");
+//			m_ErrorMonitorList->erase(iter);
+			delete *iter;
+//			TCDEBUGLOGS("CClientManager::~CClientManager: erasing monitor list next 1\n");
+		}
+		m_ErrorMonitorList->clear();
+		TCDEBUGLOGS("CClientManager::~CClientManager: erasing monitor list done 1\n");
+		delete m_ErrorMonitorList;
+		TCDEBUGLOGS("CClientManager::~CClientManager: erasing monitor list done 2\n");
+	}
+	ReleaseErrorMonitorListAccess();
+	m_ErrorMonitorListMutex.Close();
+
+	if (m_DllLocation)
+	{
+		delete[] m_DllLocation;
+		m_DllLocation = NULL;
+	}
+
+	if (m_ServerLockFile)
+	{
+		delete[] m_ServerLockFile;
+		m_ServerLockFile = NULL;
+	}
+
+	if (m_ServerExeFile)
+	{
+		delete[] m_ServerExeFile;
+		m_ServerExeFile = NULL;
+	}
+	TCDEBUGLOGS("CClientManager::~CClientManager: closing log\n");
+	TCDEBUGCLOSE();
+	if (m_DebugLog)
+	{
+		delete m_DebugLog;
+		m_DebugLog = NULL;
+	}
+}
+CErrorMonitor*
+CClientManager::FindErrorMonitor(long inClientId)
+{
+	CErrorMonitor* errorMonitor = NULL;
+	ErrorMonitorList::iterator iter;
+
+	for (iter = m_ErrorMonitorList->begin(); iter != m_ErrorMonitorList->end(); iter++)
+	{
+		if ((*iter)->IsThisClient(inClientId))
+		{
+			errorMonitor = *iter;
+			break;
+		}
+	}
+	return errorMonitor;
+}
+long CClientManager::ErrorMonitorListSize()
+{
+	long size = m_ErrorMonitorList->size();
+
+	return size;
+}
+void CClientManager::AddErrorMonitor(CErrorMonitor* monitor)
+{
+	m_ErrorMonitorList->push_back(monitor);
+}
+void CClientManager::RemoveErrorMonitor(CErrorMonitor* monitor)
+{
+	ErrorMonitorList::iterator iter;
+
+	for (iter = m_ErrorMonitorList->begin(); iter != m_ErrorMonitorList->end(); iter++)
+	{
+		if ((*iter)->IsThisClient(monitor->GetClientId()))
+		{
+			m_ErrorMonitorList->erase(iter);
+			break;
+		}
+	}
+}
+
+CInputStream*
+CClientManager::FindInputStream(long inClientId)
+{
+	CInputStream* inputStream = NULL;
+	InputStreamList::iterator iter;
+
+	for (iter = m_StreamList->begin(); iter != m_StreamList->end(); iter++)
+	{
+		if ((*iter)->IsThisClient(inClientId))
+//		if ((*iter).IsThisClient(inClientId))
+		{
+			inputStream = *iter;
+//			inputStream = iter;
+			break;
+		}
+	}
+	return inputStream;
+}
+long CClientManager::InputStreamListSize()
+{
+	long size = m_StreamList->size();
+
+	return size;
+}
+void CClientManager::AddInputStream(CInputStream* stream)
+{
+	m_StreamList->push_back(stream);
+//	m_StreamList->push_back(*stream);
+
+}
+void CClientManager::RemoveInputStream(CInputStream* stream)
+{
+	InputStreamList::iterator iter;
+
+	for (iter = m_StreamList->begin(); iter != m_StreamList->end(); iter++)
+	{
+		if ((*iter)->IsThisClient(stream->GetClientId()))
+//		if ((*iter).IsThisClient(stream->GetClientId()))
+		{
+			m_StreamList->erase(iter);
+			break;
+		}
+	}
+}
+
+BOOL CClientManager::StartServer(pServerProcessData pData)
+{
+	TCDEBUGLOGA1("CClientManager::StartServer numRefs = %d\n",pData->numRefs);
+
+	BOOL serverStarted = FALSE;
+	// server is ref counted
+	// refcount = 0 => server is not running
+	// refcount > 0 => server already started by some other process
+	if (pData->numRefs == 0)
+	{
+		// server not running
+		// get exe location
+		char exeLocation[MAX_DLLPATHNAME] = {0};
+		strncpy(exeLocation, m_DllLocation, MAX_DLLPATHNAME);
+		size_t len = strlen(exeLocation);
+		// remove file
+		for (int i = len-1; i > 0; i--)
+		{
+			if (exeLocation[i] == PATH_DELIMITER)
+				break;
+		}
+		exeLocation[i] = NULL;
+		char quotedLocation[MAX_DLLPATHNAME] = {0};
+		sprintf(quotedLocation, "\"%s%c%s\"", exeLocation, PATH_DELIMITER, SERVER_PROCESS_NAME);
+
+		TCDEBUGLOGA1("  exeLocation=%s\n", quotedLocation);
+
+		// create process
+		STARTUPINFO si;
+		memset(&si,0,sizeof(si));
+		si.cb = sizeof(si);
+		memset(&pData->serverProcess, 0, sizeof(pData->serverProcess));
+		pData->serverProcess.hProcess = NULL;
+		if (!::CreateProcess(
+			NULL,			// module location
+			quotedLocation,	// command line
+			NULL,			// process attributes
+			NULL,			// thread attributes
+			FALSE,			// inherit our handles
+			CREATE_NO_WINDOW,	// no window
+			NULL,			// use our environment
+			NULL,			// user our current directory
+			&si,			// startup info
+			&pData->serverProcess)) // process info
+		{
+			// TODO: error creating process
+		}
+		else
+		{
+			// we are the creator so save handles for later
+			m_hServer = pData->serverProcess.hProcess;
+			m_hServerThread = pData->serverProcess.hThread;
+			// add a refcount
+			pData->numRefs++;
+			serverStarted = TRUE;
+		}
+	}
+	else
+	{
+		// already running
+		// add a refcount and open our process handle to it
+		pData->numRefs++;
+		m_hServer = ::OpenProcess(0, FALSE, pData->serverProcess.dwProcessId);
+		serverStarted = TRUE;
+	}
+	TCDEBUGLOGA1("CClientManager::StartServer serverStarted=%d\n", serverStarted);
+	return serverStarted;
+}
+
+BOOL CClientManager::StopServer(pServerProcessData pData)
+{
+	TCDEBUGLOGS("CClientManager::StopServer\n");
+
+	BOOL serverStopped = FALSE;
+
+	if (pData->serverProcess.hProcess == NULL || pData->numRefs <= 0)
+	{
+		serverStopped = TRUE;
+	}
+	else
+	{
+		TCDEBUGLOGA1(" numRefs = %d\n",pData->numRefs); 
+
+		// substract ref count
+		pData->numRefs--;
+		// if refcount == 0 then really stop the server process
+		if (pData->numRefs <= 0)
+		{
+			// last client process is closing
+			// tell server to exit
+			ServerCommandData cmdrsp;
+			cmdrsp.command = eCmdExit;
+		TCDEBUGLOGS(" SendCommand eCmdExit\n");
+			m_Server->SendCommand(&cmdrsp);
+		TCDEBUGLOGS(" GetResponse eExit\n");
+			m_Server->GetResponse(&cmdrsp);
+			// wait for process to exit
+		TCDEBUGLOGS(" WaitForSingleObject start\n");
+			WaitForSingleObject(m_hServer, 10000L /*INFINITE*/);
+		TCDEBUGLOGS(" WaitForSingleObject found\n");
+
+			if (m_hServer != NULL)
+				CloseHandle(m_hServer);
+
+			if (m_hServerThread != NULL)
+				CloseHandle(m_hServerThread);
+		}
+		else
+		{
+			// just close our handle to server process
+			if (m_hServer != NULL)
+				CloseHandle(m_hServer);
+
+			if (m_hServerThread != NULL)
+				CloseHandle(m_hServerThread);
+		}
+	}
+
+	TCDEBUGLOGS("CClientManager::StopServer end\n");
+	return TRUE;
+}
+long CClientManager::StartServer()
+{
+	long ret = TCAPI_ERR_NONE;
+	pServerProcessData pData = m_Server->GetProcessPtr();
+
+	TCDEBUGLOGA3("CClientManager::StartServer this = %x m_hServer = %x numRefs = %d\n", this, m_hServer, pData->numRefs);
+//	TCDEBUGLOGA1("  mgrRefs = %d\n", m_MgrServerRef);
+
+	BOOL serverStarted = FALSE;
+	// server is ref counted
+	// refcount = 0 => server is not running
+	// refcount > 0 => server already started by some other process
+
+	// terminate the TCFServer if it is already running
+	TerminateServerThroughLockFile(pData);
+
+	if (pData->numRefs == 0)
+	{
+		// server not running
+		TCDEBUGLOGA1("  TCFServer exe =%s\n", m_ServerExeFile);
+		TCDEBUGLOGA1("  TCFServer lock=%s\n", m_ServerLockFile);
+
+
+		// create process
+		STARTUPINFO si;
+		memset(&si,0,sizeof(si));
+		si.cb = sizeof(si);
+		memset(&pData->serverProcess, 0, sizeof(pData->serverProcess));
+		pData->serverProcess.hProcess = NULL;
+		if (!::CreateProcess(
+			NULL,			// module location
+			m_ServerExeFile,	// command line
+			NULL,			// process attributes
+			NULL,			// thread attributes
+			FALSE,			// inherit our handles
+			CREATE_NO_WINDOW,	// no window
+			NULL,			// use our environment
+			NULL,			// user our current directory
+			&si,			// startup info
+			&pData->serverProcess)) // process info
+		{
+			// TODO: error creating process
+		}
+		else
+		{
+			// we are the creator so save handles for later
+			m_hServer = pData->serverProcess.hProcess;
+			m_hServerThread = pData->serverProcess.hThread;
+			// add a refcount
+			pData->numRefs++;
+			serverStarted = TRUE;
+			TCDEBUGLOGA3("CClientManager::StartServer created m_hServer = %x processId = %d numRefs = %d\n", m_hServer, pData->serverProcess.dwProcessId, pData->numRefs);
+
+			// create lock file and save process ID
+			TCDEBUGLOGS("CClientManager::StartServer CreateLockFile\n");
+			CreateLockFile(pData->serverProcess.dwProcessId);
+		}
+	}
+	else
+	{
+		// already running
+		// add a refcount and open our process handle to it only if we haven't opened it already
+		pData->numRefs++;
+		if (m_hServer == NULL)
+			m_hServer = ::OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, FALSE, pData->serverProcess.dwProcessId);
+		if (m_hServer == 0)
+		{
+			TCDEBUGLOGA1("CClientManager::StartServer opened m_hServer null error=%d\n", ::GetLastError());
+		}
+		m_hServerThread = NULL;		// only creator gets real thread handle
+		serverStarted = TRUE;
+		TCDEBUGLOGA3("CClientManager::StartServer opened m_hServer = %x processId = %d numRefs = %d\n", m_hServer, pData->serverProcess.dwProcessId, pData->numRefs);
+		// save our process id to lock file
+		AppendToLockFile(pData->serverProcess.dwProcessId);
+	}
+	if (serverStarted)
+		m_ServerRunning = TRUE;
+
+	TCDEBUGLOGA1("CClientManager::StartServer end numRefs = %d\n", pData->numRefs);
+	return ret;
+}
+
+long CClientManager::StopServer()
+{
+	long ret = TCAPI_ERR_NONE;
+	pServerProcessData pData = m_Server->GetProcessPtr();
+
+	TCDEBUGLOGA3("CClientManager::StopServer this = %x m_hServer = %x numRefs = %d\n", this, m_hServer, pData->numRefs);
+
+	BOOL serverStopped = FALSE;
+
+	if (pData->serverProcess.hProcess == NULL || pData->numRefs <= 0)
+	{
+		TCDEBUGLOGS("CClientManager::StopServer hProcess NULL or numRefs <= 0\n");
+		serverStopped = TRUE;
+	}
+#if (0)
+	else if (m_hServer == NULL)
+	{
+		// we've already closed our handle to server
+		// don't close it again
+		TCDEBUGLOGS("CClientManager::StopServer m_hServer null\n");
+	}
+#endif
+	else
+	{
+		// substract ref count
+		pData->numRefs--;
+		if (pData->numRefs < 0) pData->numRefs = 0;
+		// if refcount == 0 then really stop the server process
+		if (pData->numRefs == 0)
+		{
+			// last client process is closing
+			// tell server to exit
+			ServerCommandData cmdrsp;
+			cmdrsp.command = eCmdExit;
+			
+			TCDEBUGLOGS(" SendCommand eCmdExit\n");
+			m_Server->SendCommand(&cmdrsp);
+			TCDEBUGLOGS(" GetResponse eExit\n");
+			m_Server->GetResponse(&cmdrsp);
+			
+			// wait for process to exit
+			TCDEBUGLOGS(" WaitForSingleObject start\n");
+			DWORD waitErr = ::WaitForSingleObject(m_hServer, 10000L /*INFINITE*/);
+			TCDEBUGLOGA1("CClientManager::StopServer WaitForSingleObject = %d\n", waitErr);
+
+			// now close our handle to server process
+			if (m_hServer != NULL)
+			{
+				CloseHandle(m_hServer);
+				m_hServer = NULL;
+			}
+
+			if (m_hServerThread != NULL)
+			{
+				CloseHandle(m_hServerThread);
+				m_hServerThread = NULL;
+			}
+			serverStopped = TRUE;
+
+			// delete lock file
+			TCDEBUGLOGS("CClientManager::StopServer DeleteLockFile\n");
+			DeleteLockFile();
+		}
+		else
+		{
+			// just close our handle to server process
+
+			if (m_hServer != NULL)
+			{
+				CloseHandle(m_hServer);
+				m_hServer = NULL;
+			}
+
+			if (m_hServerThread != NULL)
+			{
+				CloseHandle(m_hServerThread);
+				m_hServerThread = NULL;
+			}
+			DeleteFromLockFile(pData->serverProcess.dwProcessId);
+		}
+	}
+	if (serverStopped)
+		m_ServerRunning = FALSE;
+
+	TCDEBUGLOGA1("CClientManager::StopServer end numRefs = %d\n", pData->numRefs);
+	return ret;
+}
+
+BOOL CClientManager::IsServerRunning()
+{
+	pServerProcessData pData = m_Server->GetProcessPtr();
+	if (pData->serverProcess.hProcess != NULL)
+		return TRUE;
+	else
+		return FALSE;
+
+}
+
+void CClientManager::CreateLockFile(DWORD processId)
+{
+	if (m_ServerLockFile != NULL)
+	{
+		FILE* f = fopen(m_ServerLockFile, "wt");
+		TCDEBUGLOGA1("CClientManager::CreateLockFile f=%x\n", f);
+
+		if (f)
+		{
+			DWORD callingProcessId = ::GetCurrentProcessId();
+			TCDEBUGLOGA2("CClientManager::CreateLockFile callingProcessId=%d processId=%d\n", callingProcessId, processId);
+			fprintf(f, "%ld %ld\n", callingProcessId, processId);
+			fclose(f);
+		}
+		else
+		{
+			DWORD err = ::GetLastError();
+			TCDEBUGLOGA2("CClientManager::CreateLockFile fopenErr=%d:%s\n", err, GetErrorText(err));
+		}
+	}
+}
+void CClientManager::AppendToLockFile(DWORD processId)
+{
+	if (m_ServerLockFile != NULL)
+	{
+		FILE* f = fopen(m_ServerLockFile, "at");
+		TCDEBUGLOGA1("CClientManager::AppendToLockFile f=%x\n", f);
+
+		if (f)
+		{
+			DWORD callingProcessId = ::GetCurrentProcessId();
+			TCDEBUGLOGA2("CClientManager::AppendToLockFile callingProcessId=%d processId=%d\n", callingProcessId, processId);
+			fprintf(f, "%ld %ld\n", callingProcessId, processId);
+			fclose(f);
+		}
+		else
+		{
+			DWORD err = ::GetLastError();
+			TCDEBUGLOGA2("CClientManager::AppendToLockFile fopenErr=%d:%s\n", err, GetErrorText(err));
+		}
+	}
+}
+void CClientManager::DeleteLockFile()
+{
+	if (m_ServerLockFile != NULL)
+	{
+		TCDEBUGLOGS("CClientManager::DeleteLockFile\n");
+		::remove(m_ServerLockFile);
+	}
+}
+
+void CClientManager::DeleteFromLockFile(DWORD serverProcessId)
+{
+	DWORD callingId[10];
+	DWORD serverId[10];
+	int numIds = 0;
+
+	DWORD ourProcessId = ::GetCurrentProcessId();
+
+	if (m_ServerLockFile != NULL)
+	{
+		DWORD attr = ::GetFileAttributes(m_ServerLockFile);
+		TCDEBUGLOGA1("CClientManager::DeleteFromLockFile attr=%x\n", attr);
+
+		if (attr != 0xffffffff) // error
+		{
+			// file exists
+			// read the process Ids from it 
+
+			FILE *f = fopen(m_ServerLockFile, "rt");
+			TCDEBUGLOGA1("CClientManager::DeleteFromLockFile f=%x\n", f);
+			if (f)
+			{
+				BOOL done = FALSE;
+				while (!done)
+				{
+					DWORD cId = 0xffffffff;
+					DWORD sId = 0xffffffff;
+					int n = fscanf(f, "%ld %ld\n", &cId, &sId);
+					if (n == 2)
+					{
+						TCDEBUGLOGA3("CClientManager::DeleteFromLockFile numIds=%d sId=%d pId=%d\n", numIds, cId, sId);
+						if (cId != ourProcessId || sId != serverProcessId)
+						{
+							callingId[numIds] = cId;
+							serverId[numIds] = sId;
+							numIds++;
+							if (numIds > 9)
+								done = TRUE;
+						}
+					}
+					else
+					{
+						done = TRUE;
+					}
+				}
+				fclose(f);
+			}
+
+			// now rewrite lock file without us
+			::remove(m_ServerLockFile);
+			if (numIds > 0)
+			{
+				f = fopen(m_ServerLockFile, "wt");
+				if (f)
+				{
+					for (int i = 0; i < numIds; i++)
+					{
+						fprintf(f, "%ld %ld\n", callingId[i], serverId[i]);
+					}
+					fclose(f);
+				}
+			}
+		}
+	}
+}
+
+// Currently assumes there is only ONE TCFServer, but multiple client processes (that use that server)
+// we should not have more than a few Carbide processes connecting to the same TCFServer
+void CClientManager::TerminateServerThroughLockFile(pServerProcessData pData)
+{
+	DWORD callingId[10];
+	DWORD serverId[10];
+	BOOL liveCaller[10];
+	int numIds = 0;
+	if (m_ServerLockFile != NULL)
+	{
+		DWORD attr = ::GetFileAttributes(m_ServerLockFile);
+		TCDEBUGLOGA1("CClientManager::TerminateServerThroughLockFile attr=%x\n", attr);
+
+		if (attr != 0xffffffff) // error
+		{
+			// file exists
+			// read the process Ids from it 
+
+			FILE *f = fopen(m_ServerLockFile, "rt");
+			TCDEBUGLOGA1("CClientManager::TerminateServerThroughLockFile f=%x\n", f);
+			if (f)
+			{
+				BOOL done = FALSE;
+				while (!done)
+				{
+					DWORD cId = 0xffffffff;
+					DWORD sId = 0xffffffff;
+					int n = fscanf(f, "%ld %ld\n", &cId, &sId);
+					if (n == 2)
+					{
+						TCDEBUGLOGA3("CClientManager::TerminateServerThroughLockFile n=%d sId=%d pId=%d\n", n, cId, sId);
+						callingId[numIds] = cId;
+						serverId[numIds] = sId;
+						numIds++;
+						if (numIds > 9)
+							done = TRUE;
+					}
+					else
+					{
+						done = TRUE;
+					}
+				}
+				fclose(f);
+
+				int numDeadCallers = 0;
+				for (int i = 0; i < numIds; i++)
+				{
+					HANDLE h = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, callingId[i]);
+					if (h)
+					{
+						// calling process is still alive
+						liveCaller[i] = TRUE;
+						::CloseHandle(h);
+						TCDEBUGLOGA1("CClientManager::TerminateServerThroughLockFile %d alive\n", callingId[i]);
+					}
+					else
+					{
+						liveCaller[i] = FALSE;
+						numDeadCallers++;
+						DWORD err = ::GetLastError();
+						TCDEBUGLOGA3("CClientManager::TerminateServerThroughLockFile %d dead err=%d:%s\n", callingId[i], err, GetErrorText(err));
+					}
+				}
+				if (numDeadCallers == numIds)
+				{
+					// terminate the TCFServer, and delete lock file
+					pData->numRefs = 0;
+					::remove(m_ServerLockFile);
+					HANDLE h = ::OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, FALSE, serverId[0]);
+					if (h)
+					{
+						BOOL ret = ::TerminateProcess(h, -1);
+						if (ret == 0)
+						{
+							DWORD err = ::GetLastError();
+							TCDEBUGLOGA2("CClientManager::TerminateServerThroughLockFile TerminateProcess=%d:%s\n", err, GetErrorText(err));
+						}
+						::CloseHandle(h);
+					}
+				}
+				else
+				{
+					// leave TCFServer running, recreate lock file and save live callers
+					::remove(m_ServerLockFile);
+					f = fopen(m_ServerLockFile, "wt");
+					if (f)
+					{
+						for (int i = 0; i < numIds; i++)
+						{
+							if (liveCaller[i])
+							{
+								fprintf(f, "%ld %ld\n", callingId[i], serverId[i]);
+							}
+						}
+						fclose(f);
+					}
+					pData->numRefs -= numDeadCallers;
+					if (pData->numRefs < 0) pData->numRefs = 0;
+				}
+			}
+			else
+			{
+				// error opening lock file
+				DWORD err = ::GetLastError();
+				TCDEBUGLOGA2("CClientManager::TerminateServerThroughLockFile fopenErr=%d:%s\n", err, GetErrorText(err));
+			}
+		}
+	}
+}
+#ifdef _DEBUG
+static char* GetErrorText(DWORD inError)
+{
+	static char msg[256];
+	FormatMessage(
+		FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+		NULL,
+		inError,
+		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+		(LPTSTR) &msg,
+		sizeof(msg) - 1,
+		NULL);
+
+	return msg;
+}
+#else
+static char* GetErrorText(DWORD inError)
+{
+	return NULL;
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/ClientManager.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,106 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// ClientManager.h: interface for the CClientManager class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_CLIENTMANAGER_H__D8CD8281_5D57_43E9_922D_9532DC8669C4__INCLUDED_)
+#define AFX_CLIENTMANAGER_H__D8CD8281_5D57_43E9_922D_9532DC8669C4__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+#include <vector>
+#include <list>
+#include "ServerClient.h"
+#include "InputStream.h"
+#include "ErrorMonitorData.h"
+#include "TCErrorConstants.h"
+#include "TCDebugLog.h"
+
+typedef std::vector<CInputStream*> InputStreamList;
+typedef std::vector<CErrorMonitor*> ErrorMonitorList;
+//typedef std::vector<CInputStream> InputStreamList;
+
+#define ERRORMONITORLIST_MUTEX_BASENAME		"TCFErrorMonitorList"
+#define ERRORMONITORLIST_MUTEX_TIMEOUT		(60000L)
+#define INPUTSTREAMLIST_MUTEX_BASENAME		"TCFInputStreamList"
+#define INPUTSTREAMLIST_MUTEX_TIMEOUT		(60000L)
+
+#ifdef WIN32
+#define SERVER_PROCESS_NAME		"TCFServer.exe"
+#define SERVER_LOCKFILE_NAME	"TCFServer.lock"
+#define PATH_DELIMITER			'\\'
+#else
+#error not WIN32
+#endif
+
+#define MAX_DLLPATHNAME (2048)
+
+class CClientManager  
+{
+public:
+	CClientManager();
+	CClientManager(HINSTANCE hinstDLL);
+	virtual ~CClientManager();
+
+	// starting/stopping server
+	BOOL StartServer(pServerProcessData pData);
+	BOOL StopServer(pServerProcessData pData);
+	long StartServer();
+	long StopServer();
+	BOOL IsServerRunning(); // { return m_ServerRunning; }
+	BOOL m_ServerRunning;
+	void TerminateServerThroughLockFile(pServerProcessData pData);
+	void CreateLockFile(DWORD processId);
+	void AppendToLockFile(DWORD processId);
+	void DeleteLockFile();
+	void DeleteFromLockFile(DWORD processId);
+
+	// input stream
+	CInputStream* FindInputStream(long inClientId);
+	long InputStreamListSize();
+	void RemoveInputStream(CInputStream* inputStream);
+	void AddInputStream(CInputStream* stream);
+	BOOL WaitForStreamListAccess() { return m_StreamListMutex.Wait(); }
+	BOOL ReleaseStreamListAccess() { return m_StreamListMutex.Release(); }
+	Mutex m_StreamListMutex;
+
+	// error monitors
+	CErrorMonitor* FindErrorMonitor(long inClientId);
+	long ErrorMonitorListSize();
+	void RemoveErrorMonitor(CErrorMonitor* errorMonitor);
+	void AddErrorMonitor(CErrorMonitor* monitor);
+	BOOL WaitForErrorMonitorListAccess() { return m_ErrorMonitorListMutex.Wait(); }
+	BOOL ReleaseErrorMonitorListAccess() { return m_ErrorMonitorListMutex.Release(); }
+	Mutex m_ErrorMonitorListMutex;
+
+	CServerCommand* m_Server;
+	TCDebugLog* m_DebugLog;
+	InputStreamList* m_StreamList;
+	ErrorMonitorList* m_ErrorMonitorList;
+	char* m_DllLocation;
+	HANDLE m_hServer;			// our handle to the server process (per process)
+	HANDLE m_hServerThread;		// handle to server main thread (creator process only)
+	char m_Version[MAX_VERSION_STRING]; // our version string
+
+	char* m_ServerLockFile; // TCFServer lock file name at the DLL location
+	char* m_ServerExeFile;	// TCFServer exe
+
+};
+
+#endif // !defined(AFX_CLIENTMANAGER_H__D8CD8281_5D57_43E9_922D_9532DC8669C4__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/ReadMe.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,41 @@
+========================================================================
+       DYNAMIC LINK LIBRARY : TCFClient
+========================================================================
+
+
+AppWizard has created this TCFClient DLL for you.  
+
+This file contains a summary of what you will find in each of the files that
+make up your TCFClient application.
+
+TCFClient.dsp
+    This file (the project file) contains information at the project level and
+    is used to build a single project or subproject. Other users can share the
+    project (.dsp) file, but they should export the makefiles locally.
+
+TCFClient.cpp
+    This is the main DLL source file.
+
+	When created, this DLL does not export any symbols. As a result, it 
+	will not produce a .lib file when it is built. If you wish this project
+	to be a project dependency of some other project, you will either need to 
+	add code to export some symbols from the DLL so that an export library 
+	will be produced, or you can check the "doesn't produce lib" checkbox in 
+	the Linker settings page for this project. 
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named TCFClient.pch and a precompiled types file named StdAfx.obj.
+
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+
+/////////////////////////////////////////////////////////////////////////////
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/StdAfx.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.cpp : source file that includes just the standard includes
+//	TCFClient.pch will be the pre-compiled header
+//	stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/StdAfx.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__EED2AD88_9849_4B81_852F_D207E6D97FE2__INCLUDED_)
+#define AFX_STDAFX_H__EED2AD88_9849_4B81_852F_D207E6D97FE2__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#define TCF_CLIENT
+
+// Insert your headers here
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+
+
+#include <windows.h>
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__EED2AD88_9849_4B81_852F_D207E6D97FE2__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/TCAPIConnectionJni.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,1639 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "stdafx.h"
+#include "TCAPIConnectionJni.h"
+#include "TCConstants.h"
+#include "TCErrorConstants.h"
+#include "ClientManager.h"
+#include "ServerClient.h"
+#include "TCDebugLog.h"
+#include "InputStream.h"
+#include "ErrorMonitorData.h"
+#include <list>
+#include <vector>
+
+extern CClientManager* gManager;
+
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+char TCDebugMsg[100];
+#define TCDEBUGOPEN() if (gDoLogging) { gManager->m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(TCDebugMsg,"%s", s); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(TCDebugMsg, s, a1); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2, a3); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { gManager->m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+#ifdef _DEBUG
+FILE* fLog1 = NULL;
+FILE* fLog2 = NULL;
+static void OpenLogFile1(char* filename);
+static void CloseLogFile1();
+static void OpenLogFile2(char* filename);
+static void CloseLogFile2();
+#define OPENLOGf1(f) OpenLogFile1(f)
+#define CLOSELOG1() CloseLogFile1()
+#define OPENLOGf2(f) OpenLogFile2(f)
+#define CLOSELOG2() CloseLogFile2()
+#else
+#define OPENLOGf1(f)
+#define CLOSELOG1()
+#endif
+
+static void ConvertRealSerialSettingsToHost(char* pBaud, char* pDataBits, char* pParity, char* pStopBits, char* pFlowControl, pRealSerialConnectData pData);
+static void ConvertRealSerialSettingsToServer(const char* pBaud, const char* pDataBits, const char* pParity, const char* pStopBits, const char* pFlowControl, pRealSerialConnectData pData);
+static const char* GetErrorText(unsigned long error);
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeConnect
+ * Signature: (Ljava/lang/String;[J[Ljava/lang/String;[JLjava/lang/String;[J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeConnect
+  (JNIEnv *env, jobject pThis, jstring inType, jlongArray inOptions, jobjectArray inSettings, jlongArray inMessageOptions, jstring inFilePath, jlongArray outClientId)
+ {
+ 	// inOptions are connection options
+ 	// inMessageOptions are client's message options
+	// inFilePath will be null if message destination is not DESTINATION_CLIENTFILE 
+	long ret = TCAPI_ERR_NONE;
+	unsigned long osError = 0;
+	long clientId;
+
+	TCDEBUGOPEN();
+
+	TCDEBUGLOGS("nativeConnect\n");
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	{
+		jboolean isCopy = false;
+		// options per connection
+		jlong* pOptions = env->GetLongArrayElements(inOptions, &isCopy);
+		DWORD retryInterval = (DWORD)pOptions[0];
+		DWORD retryTimeout = (DWORD)pOptions[1];
+
+
+
+		env->ReleaseLongArrayElements(inOptions, pOptions, 0);
+
+		pOptions = env->GetLongArrayElements(inMessageOptions, &isCopy);
+
+		// options per client
+		long unWrapFormat = pOptions[0];
+		long ostVersion = pOptions[1];
+		env->ReleaseLongArrayElements(inMessageOptions, pOptions, 0);
+
+
+		TCDEBUGLOGA2(" retryInterval=%d, retryTimeout=%d\n", retryInterval, retryTimeout);
+
+		TCDEBUGLOGA3(" unWrapFormat=%d, ostVersion=%d destination=%s\n", unWrapFormat, ostVersion, ((inFilePath == NULL) ? "stream" : "file"));
+
+		char* pType = (char*)env->GetStringUTFChars(inType, &isCopy);
+		TCDEBUGLOGA1("  pType = %s\n", pType);
+
+		if (strcmp(pType, "musti") == 0 || strcmp(pType, "platsim") == 0) 
+		{
+			jstring addString = (jstring)env->GetObjectArrayElement(inSettings, 0);
+			jstring portString = (jstring)env->GetObjectArrayElement(inSettings, 1);
+			jstring chanString = (jstring)env->GetObjectArrayElement(inSettings, 2);
+			jstring decodeString = (jstring)env->GetObjectArrayElement(inSettings, 3);
+
+			const char* pAddress = env->GetStringUTFChars(addString, NULL);
+			const char* pPort = env->GetStringUTFChars(portString, NULL);
+			const char* pChan = env->GetStringUTFChars(chanString, NULL);
+			const char* pDecode = env->GetStringUTFChars(decodeString, NULL);
+
+			TCDEBUGLOGA2(" TCP: ipAddress=%s, ipPort=%s\n", pAddress, pPort);
+			TCDEBUGLOGA2(" TCP: channel=%s, decode=%s\n", pChan, pDecode);
+
+			ServerCommandData cmd;
+			cmd.command = eCmdConnect;
+			strncpy(cmd.connectSettings.connectType, pType, MAX_CONNECTION_TYPE);
+			strncpy(cmd.connectSettings.tcpSettings.ipAddress, pAddress, MAX_IPADDRESS_SIZE);
+			strncpy(cmd.connectSettings.tcpSettings.ipPort, pPort, MAX_PORT_SIZE);
+
+			cmd.connectSettings.retryInterval = retryInterval;
+			cmd.connectSettings.retryTimeout = retryTimeout;
+			strncpy(cmd.connectSettings.decodeFormat, pDecode, MAX_DECODE_FORMAT);
+
+			if (pChan != NULL)
+			{
+				if (strcmp(pChan, "1") == 0)
+				{
+					cmd.connectSettings.traceBoxChannel = 1;
+				}
+				else
+				{
+					cmd.connectSettings.traceBoxChannel = 2;
+				}
+			}
+			else
+			{
+				cmd.connectSettings.traceBoxChannel = 2;
+			}
+
+
+			cmd.clientOptions.unWrapFormat = unWrapFormat;
+			cmd.clientOptions.ostVersion = ostVersion;
+
+			gManager->m_Server->SendCommand(&cmd);
+			gManager->m_Server->GetResponse(&cmd);
+
+			if (cmd.response == eRspError)
+			{
+				TCDEBUGLOGA1("  from server: ret = %d\n", cmd.error);
+				ret = cmd.error;
+				osError = cmd.osError;
+			}
+			else
+			{
+				TCDEBUGLOGA1("  from server: id = %d\n", cmd.clientId);
+				clientId = cmd.clientId;
+
+				gManager->WaitForErrorMonitorListAccess();
+				TCDEBUGLOGS(" TODO: create error monitor storage if server connected\n");
+				CErrorMonitor* monitor = new CErrorMonitor(clientId);
+				if (monitor != NULL)
+				{
+					monitor->CreateData();
+					gManager->AddErrorMonitor(monitor);
+				}
+
+				gManager->ReleaseErrorMonitorListAccess();
+
+				TCDEBUGLOGA1(" clientId=%d\n", clientId);
+				jlong jClientId = clientId;
+				env->SetLongArrayRegion(outClientId, 0, 1, &jClientId);
+
+			}
+			env->ReleaseStringUTFChars(addString, pAddress);
+			env->ReleaseStringUTFChars(portString, pPort);
+			env->ReleaseStringUTFChars(chanString, pChan);
+			env->ReleaseStringUTFChars(decodeString, pDecode);
+		}
+		else if (strcmp(pType, "tcp") == 0)
+		{
+			jstring addString = (jstring)env->GetObjectArrayElement(inSettings, 0);
+			jstring portString = (jstring)env->GetObjectArrayElement(inSettings, 1);
+			jstring decodeString = (jstring)env->GetObjectArrayElement(inSettings, 2);
+
+			const char* pAddress = env->GetStringUTFChars(addString, NULL);
+			const char* pPort = env->GetStringUTFChars(portString, NULL);
+			const char* pDecode = env->GetStringUTFChars(decodeString, NULL);
+
+			TCDEBUGLOGA3(" TCP: ipAddress=%s, ipPort=%s decode=%s\n", pAddress, pPort, pDecode);
+
+			ServerCommandData cmd;
+			cmd.command = eCmdConnect;
+			strncpy(cmd.connectSettings.connectType, pType, MAX_CONNECTION_TYPE);
+			strncpy(cmd.connectSettings.tcpSettings.ipAddress, pAddress, MAX_IPADDRESS_SIZE);
+			strncpy(cmd.connectSettings.tcpSettings.ipPort, pPort, MAX_PORT_SIZE);
+
+			cmd.connectSettings.retryInterval = retryInterval;
+			cmd.connectSettings.retryTimeout = retryTimeout;
+			strncpy(cmd.connectSettings.decodeFormat, pDecode, MAX_DECODE_FORMAT);
+			cmd.clientOptions.unWrapFormat = unWrapFormat;
+			cmd.clientOptions.ostVersion = ostVersion;
+
+			gManager->m_Server->SendCommand(&cmd);
+			gManager->m_Server->GetResponse(&cmd);
+
+			if (cmd.response == eRspError)
+			{
+				TCDEBUGLOGA1("  from server: ret = %d\n", cmd.error);
+				ret = cmd.error;
+				osError = cmd.osError;
+			}
+			else
+			{
+				TCDEBUGLOGA1("  from server: id = %d\n", cmd.clientId);
+				clientId = cmd.clientId;
+
+				gManager->WaitForErrorMonitorListAccess();
+				TCDEBUGLOGS(" TODO: create error monitor storage if server connected\n");
+				CErrorMonitor* monitor = new CErrorMonitor(clientId);
+				if (monitor != NULL)
+				{
+					monitor->CreateData();
+					gManager->AddErrorMonitor(monitor);
+				}
+
+				gManager->ReleaseErrorMonitorListAccess();
+
+				TCDEBUGLOGA1(" clientId=%d\n", clientId);
+				jlong jClientId = clientId;
+				env->SetLongArrayRegion(outClientId, 0, 1, &jClientId);
+
+			}
+			env->ReleaseStringUTFChars(addString, pAddress);
+			env->ReleaseStringUTFChars(portString, pPort);
+			env->ReleaseStringUTFChars(decodeString, pDecode);
+		}
+		else if (strcmp(pType, "virtualserial") == 0)
+		{
+			jstring portString = (jstring)env->GetObjectArrayElement(inSettings, 0);
+			const char* pPort = env->GetStringUTFChars(portString, NULL);
+			jstring decodeString = (jstring)env->GetObjectArrayElement(inSettings, 1);
+			const char* pDecode = env->GetStringUTFChars(decodeString, NULL);
+
+			TCDEBUGLOGA2(" vserial: pPort=%s decode=%s\n", pPort, pDecode);
+
+			ServerCommandData cmd;
+			cmd.command = eCmdConnect;
+			strncpy(cmd.connectSettings.connectType, pType, MAX_CONNECTION_TYPE); 
+			strncpy(cmd.connectSettings.virtualSerialSettings.comPort, pPort, MAX_COMPORT_SIZE);
+
+			cmd.connectSettings.retryInterval = retryInterval;
+			cmd.connectSettings.retryTimeout = retryTimeout;
+			strncpy(cmd.connectSettings.decodeFormat, pDecode, MAX_DECODE_FORMAT);
+			cmd.clientOptions.unWrapFormat = unWrapFormat;
+			cmd.clientOptions.ostVersion = ostVersion;
+
+			gManager->m_Server->SendCommand(&cmd);
+			gManager->m_Server->GetResponse(&cmd);
+
+			if (cmd.response == eRspError)
+			{
+				TCDEBUGLOGA1("  from server: ret = %d\n", cmd.error);
+				ret = cmd.error;
+				osError = cmd.osError;
+			}
+			else
+			{
+				TCDEBUGLOGA1("  from server: id = %d\n", cmd.clientId);
+				clientId = cmd.clientId;
+
+				gManager->WaitForErrorMonitorListAccess();
+				CErrorMonitor* monitor = new CErrorMonitor(clientId);
+				if (monitor != NULL)
+				{
+					monitor->CreateData();
+					gManager->AddErrorMonitor(monitor);
+				}
+
+				gManager->ReleaseErrorMonitorListAccess();
+
+				TCDEBUGLOGA1(" clientId=%d\n", clientId);
+				jlong jClientId = clientId;
+				env->SetLongArrayRegion(outClientId, 0, 1, &jClientId);
+			}
+			env->ReleaseStringUTFChars(portString, pPort);
+			env->ReleaseStringUTFChars(decodeString, pDecode);
+		}
+		else if (strcmp(pType, "serial") == 0)
+		{
+			jstring portString = (jstring)env->GetObjectArrayElement(inSettings, 0);
+			const char* pPort = env->GetStringUTFChars(portString, NULL);
+
+			jstring baudString = (jstring)env->GetObjectArrayElement(inSettings, 1);
+			const char* pBaud = env->GetStringUTFChars(baudString, NULL);
+			
+			jstring dataBitsString = (jstring)env->GetObjectArrayElement(inSettings, 2);
+			const char* pDataBits = env->GetStringUTFChars(dataBitsString, NULL);
+			
+			jstring parityString = (jstring)env->GetObjectArrayElement(inSettings, 3);
+			const char* pParity = env->GetStringUTFChars(parityString, NULL);
+			
+			jstring stopBitsString = (jstring)env->GetObjectArrayElement(inSettings, 4);
+			const char* pStopBits = env->GetStringUTFChars(stopBitsString, NULL);
+			
+			jstring flowControlString = (jstring)env->GetObjectArrayElement(inSettings, 5);
+			const char* pFlowControl = env->GetStringUTFChars(flowControlString, NULL);
+
+			jstring decodeString = (jstring)env->GetObjectArrayElement(inSettings, 6);
+			const char* pDecode = env->GetStringUTFChars(decodeString, NULL);
+
+			TCDEBUGLOGA3(" real serial: pPort=%s pBaud=%s pDataBits=%s\n", pPort, pBaud, pDataBits);
+
+			ServerCommandData cmd;
+			cmd.command = eCmdConnect;
+			strncpy(cmd.connectSettings.connectType, pType, MAX_CONNECTION_TYPE); 
+			strncpy(cmd.connectSettings.realSerialSettings.comPort, pPort, MAX_COMPORT_SIZE);
+			ConvertRealSerialSettingsToServer(pBaud, pDataBits, pParity, pStopBits, pFlowControl, &cmd.connectSettings.realSerialSettings);
+
+			cmd.connectSettings.retryInterval = retryInterval;
+			cmd.connectSettings.retryTimeout = retryTimeout;
+			strncpy(cmd.connectSettings.decodeFormat, pDecode, MAX_DECODE_FORMAT);
+			cmd.clientOptions.unWrapFormat = unWrapFormat;
+			cmd.clientOptions.ostVersion = ostVersion;
+
+			gManager->m_Server->SendCommand(&cmd);
+			gManager->m_Server->GetResponse(&cmd);
+
+			if (cmd.response == eRspError)
+			{
+				TCDEBUGLOGA1("  from server: ret = %d\n", cmd.error);
+				ret = cmd.error;
+				osError = cmd.osError;
+			}
+			else
+			{
+				TCDEBUGLOGA1("  from server: id = %d\n", cmd.clientId);
+				clientId = cmd.clientId;
+
+				gManager->WaitForErrorMonitorListAccess();
+				CErrorMonitor* monitor = new CErrorMonitor(clientId);
+				if (monitor != NULL)
+				{
+					monitor->CreateData();
+					gManager->AddErrorMonitor(monitor);
+				}
+
+				gManager->ReleaseErrorMonitorListAccess();
+
+				TCDEBUGLOGA1(" clientId=%d\n", clientId);
+				jlong jClientId = clientId;
+				env->SetLongArrayRegion(outClientId, 0, 1, &jClientId);
+			}
+			env->ReleaseStringUTFChars(portString, pPort);
+			env->ReleaseStringUTFChars(baudString, pBaud);
+			env->ReleaseStringUTFChars(dataBitsString, pDataBits);
+			env->ReleaseStringUTFChars(parityString, pParity);
+			env->ReleaseStringUTFChars(stopBitsString, pStopBits);
+			env->ReleaseStringUTFChars(flowControlString, pFlowControl);
+			env->ReleaseStringUTFChars(decodeString, pDecode);
+		}
+		else
+		{
+			TCDEBUGLOGS(" TCAPI_ERR_MEDIA_NOT_SUPPORTED\n");
+			ret = TCAPI_ERR_MEDIA_NOT_SUPPORTED;
+		}
+
+		env->ReleaseStringUTFChars(inType, pType);
+
+		
+		// handle message destinations
+		//  input stream is done by java on open input stream not here
+		//  message file is done here
+		if (ret == TCAPI_ERR_NONE)
+		{
+			long destination = DESTINATION_INPUTSTREAM;
+			char* pMessageFile = NULL;
+			if (inFilePath != NULL)
+			{
+				destination = DESTINATION_CLIENTFILE;
+				jboolean isCopy=FALSE;
+				pMessageFile = (char*)env->GetStringUTFChars(inFilePath, &isCopy);
+
+				// send to TCFServer
+				ServerCommandData cmd;
+				cmd.command = eCmdOpenMessageFile;
+				cmd.clientId = clientId;
+				cmd.destinationOptions.destination = eDestinationFile;
+				strncpy(cmd.destinationOptions.destinationFile, pMessageFile, MAX_FILEPATH);
+				gManager->m_Server->SendCommand(&cmd);
+				gManager->m_Server->GetResponse(&cmd);
+
+				env->ReleaseStringUTFChars(inFilePath, pMessageFile);
+			}
+		}
+	}
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA3("nativeConnect return ret=%d, osError=%d : %s\n", ret, osError, GetErrorText(osError));
+
+	TCDEBUGCLOSE();
+
+	if (ret != TCAPI_ERR_NONE && osError > 0)
+	{
+		jclass clazz = env->FindClass("Ljava/lang/Exception;");
+		env->ThrowNew(clazz, GetErrorText(osError));
+	}
+
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeDisconnect
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeDisconnect
+  (JNIEnv *env, jobject pThis, jlong inClientId)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeDisconnect\n");
+
+	if (gManager->m_Server == NULL)
+	{
+		TCDEBUGLOGS(" TCAPI_ERR_INVALID_HANDLE - gServer NULL\n");
+		ret = TCAPI_ERR_INVALID_HANDLE;
+	}
+	else if (inClientId <= 0)
+	{
+		TCDEBUGLOGS(" TCAPI_ERR_INVALID_HANDLE - inClientId <= 0\n");
+		ret = TCAPI_ERR_INVALID_HANDLE;
+	}
+	else
+	{
+		gManager->m_Server->WaitforServerPipeAccess();
+
+		BOOL found = FALSE;
+		long id = inClientId;
+
+		TCDEBUGLOGA1(" look for clientId=%d\n", id);
+
+		TCDEBUGLOGS(" TODO: tell server to disconnect this client\n");
+		ServerCommandData cmdrsp;
+		pServerCommandData pCmdrsp = &cmdrsp;
+		pCmdrsp->command = eCmdDisconnect;
+		pCmdrsp->clientId = id;
+
+		gManager->m_Server->SendCommand(pCmdrsp);
+		gManager->m_Server->GetResponse(pCmdrsp);
+		if (pCmdrsp->response == eRspError)
+		{
+			ret = pCmdrsp->error;
+		}
+
+		{
+			gManager->WaitForErrorMonitorListAccess();
+			TCDEBUGLOGS(" TODO: destroy error monitor for this client\n");
+			CErrorMonitor *monitor = gManager->FindErrorMonitor(id);
+			if (monitor != NULL)
+			{
+				gManager->RemoveErrorMonitor(monitor);
+				delete monitor;
+			}
+			gManager->ReleaseErrorMonitorListAccess();
+		}
+		gManager->m_Server->ReleaseServerPipeAccess();
+	}
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetNumberConnections
+ * Signature: ([J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetNumberConnections
+  (JNIEnv *env, jobject pThis, jlongArray outNumber)
+{
+	long ret = TCAPI_ERR_NONE;
+	long number = 0;
+
+	TCDEBUGOPEN();
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	TCDEBUGLOGS("nativeGetNumberConnections\n");
+	ServerCommandData cmdrsp;
+	pServerCommandData pCmdrsp = &cmdrsp;
+	pCmdrsp->command = eCmdGetNumberConnections;
+
+	BOOL sent = gManager->m_Server->SendCommand(pCmdrsp);
+
+	BOOL recd = gManager->m_Server->GetResponse(pCmdrsp);
+	if (pCmdrsp->response == eRspError)
+	{
+		ret = pCmdrsp->error;
+	}
+	else
+	{
+		number = pCmdrsp->numConnections;
+
+		jlong jNumber = number;
+		env->SetLongArrayRegion(outNumber, 0, 1, &jNumber);
+
+		TCDEBUGLOGA1(" number=%d\n", number);
+	}
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetTypeOfConnection
+ * Signature: (J[Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetTypeOfConnection
+  (JNIEnv *env, jobject pThis, jlong inIndex, jobjectArray outType)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	TCDEBUGOPEN();
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	TCDEBUGLOGS("nativeGetTypeOfConnection\n");
+	ServerCommandData cmdrsp;
+	pServerCommandData pCmdrsp = &cmdrsp;
+	pCmdrsp->command = eCmdGetConnectionType;
+	pCmdrsp->index = inIndex;
+
+	BOOL sent = gManager->m_Server->SendCommand(pCmdrsp);
+
+	BOOL recd = gManager->m_Server->GetResponse(pCmdrsp);
+	if (pCmdrsp->response == eRspError)
+	{
+		ret = pCmdrsp->error;
+	}
+	else
+	{
+		env->SetObjectArrayElement(outType, 0, env->NewStringUTF(pCmdrsp->connectSettings.connectType));
+	}
+
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+
+	return ret;
+}
+
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetConnectionSettings
+ * Signature: (J[Ljava/lang/String;[J[Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetConnectionSettings
+  (JNIEnv *env, jobject pThis, jlong inIndex, jobjectArray outType, jlongArray outOptions, jobjectArray outSettings)
+{
+	long ret = TCAPI_ERR_FEATURE_NOT_IMPLEMENTED;
+
+	TCDEBUGOPEN();
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	TCDEBUGLOGS("nativeGetConnectionSettings\n");
+	ServerCommandData cmdrsp;
+	pServerCommandData pCmdrsp = &cmdrsp;
+	pCmdrsp->command = eCmdGetConnection;
+	pCmdrsp->index = inIndex;
+
+	BOOL sent = gManager->m_Server->SendCommand(pCmdrsp);
+
+	BOOL recd = gManager->m_Server->GetResponse(pCmdrsp);
+	if (pCmdrsp->response == eRspError)
+	{
+		ret = pCmdrsp->error;
+	}
+	else
+	{
+		env->SetObjectArrayElement(outType, 0, env->NewStringUTF(pCmdrsp->connectSettings.connectType));
+		if (strcmp(pCmdrsp->connectSettings.connectType, "musti") == 0 || strcmp(pCmdrsp->connectSettings.connectType, "platsim") == 0)
+		{
+			env->SetObjectArrayElement(outSettings, 0, env->NewStringUTF(pCmdrsp->connectSettings.tcpSettings.ipAddress));
+			env->SetObjectArrayElement(outSettings, 1, env->NewStringUTF(pCmdrsp->connectSettings.tcpSettings.ipPort));
+			char *pChan = NULL;
+			if (pCmdrsp->connectSettings.traceBoxChannel == 1)
+				pChan = "1";
+			else
+				pChan = "2";
+			env->SetObjectArrayElement(outSettings, 2, env->NewStringUTF(pChan));
+			env->SetObjectArrayElement(outSettings, 3, env->NewStringUTF(pCmdrsp->connectSettings.decodeFormat));
+		}
+		else if (strcmp(pCmdrsp->connectSettings.connectType, "tcp") == 0)
+		{
+			env->SetObjectArrayElement(outSettings, 0, env->NewStringUTF(pCmdrsp->connectSettings.tcpSettings.ipAddress));
+			env->SetObjectArrayElement(outSettings, 1, env->NewStringUTF(pCmdrsp->connectSettings.tcpSettings.ipPort));
+			env->SetObjectArrayElement(outSettings, 2, env->NewStringUTF(pCmdrsp->connectSettings.decodeFormat));
+		}
+		else if (strcmp(pCmdrsp->connectSettings.connectType, "virtualserial") == 0)
+		{
+			env->SetObjectArrayElement(outSettings, 0, env->NewStringUTF(pCmdrsp->connectSettings.virtualSerialSettings.comPort));
+			env->SetObjectArrayElement(outSettings, 1, env->NewStringUTF(pCmdrsp->connectSettings.decodeFormat));
+		}
+		else if (strcmp(pCmdrsp->connectSettings.connectType, "serial") == 0)
+		{
+			env->SetObjectArrayElement(outSettings, 0, env->NewStringUTF(pCmdrsp->connectSettings.realSerialSettings.comPort));
+
+			char baud[10], databits[10], parity[10], stopbits[10], flowcontrol[15];
+			ConvertRealSerialSettingsToHost(baud, databits, parity, stopbits, flowcontrol, &pCmdrsp->connectSettings.realSerialSettings);
+			env->SetObjectArrayElement(outSettings, 1, env->NewStringUTF(baud));
+			env->SetObjectArrayElement(outSettings, 2, env->NewStringUTF(databits));
+			env->SetObjectArrayElement(outSettings, 3, env->NewStringUTF(parity));
+			env->SetObjectArrayElement(outSettings, 4, env->NewStringUTF(stopbits));
+			env->SetObjectArrayElement(outSettings, 5, env->NewStringUTF(flowcontrol));
+			env->SetObjectArrayElement(outSettings, 6, env->NewStringUTF(pCmdrsp->connectSettings.decodeFormat));
+		}
+		else if (strcmp(pCmdrsp->connectSettings.connectType, "usb") == 0)
+		{
+			env->SetObjectArrayElement(outSettings, 0, env->NewStringUTF(pCmdrsp->connectSettings.usbSettings.device));
+		}
+		jlong jRetryInterval = pCmdrsp->connectSettings.retryInterval;
+		env->SetLongArrayRegion(outOptions, 0, 1, &jRetryInterval);
+		jlong jRetryTimeout = pCmdrsp->connectSettings.retryTimeout;
+		env->SetLongArrayRegion(outOptions, 1, 1, &jRetryTimeout);
+	}
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativePollError
+ * Signature: (J[I[Z[J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativePollError
+  (JNIEnv *env, jobject pThis, jlong inClientId, jintArray outErrorCode, 
+	jbooleanArray outHasOSErrorCode, jlongArray outOSErrorCode)
+{
+	jboolean foundError = false;
+	long id = inClientId;
+	LONG tcfError = TCAPI_ERR_NONE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativePollError\n");
+//	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->WaitForErrorMonitorListAccess();
+
+	if (gManager->ErrorMonitorListSize() > 0)
+	{
+//		TCDEBUGLOGA1(" size of gManager->ErrorMonitorListSize=%d\n", gManager->ErrorMonitorListSize());
+
+		CErrorMonitor* errorMonitor = gManager->FindErrorMonitor(id);
+//		TCDEBUGLOGA1(" errorMonitor = %x\n", errorMonitor);
+
+		if (errorMonitor != NULL)
+		{
+//			TCDEBUGLOGS(" found client\n");
+
+			BOOL osErrorUsed = FALSE;
+			DWORD osError = 0;
+			BOOL found = errorMonitor->GetError(&tcfError, &osErrorUsed, &osError);
+			if (found)
+			{
+//				TCDEBUGLOGA1("nativePollError error for client=%d\n", inClientId);
+//				TCDEBUGLOGA3(" found tcfError=%d, osErrorUsed=%d, osError=%d\n",
+//					tcfError, osErrorUsed, osError);
+
+				foundError = true;
+				jint jval = tcfError;
+				env->SetIntArrayRegion(outErrorCode, 0, 1, &jval);
+				jboolean jos = osErrorUsed;
+				env->SetBooleanArrayRegion(outHasOSErrorCode, 0, 1, &jos);
+				jlong jlval = osError;
+				env->SetLongArrayRegion(outOSErrorCode, 0, 1, &jlval);
+
+//				TCDEBUGOPEN();
+//				TCDEBUGLOGS("nativePollError found error\n");
+//				TCDEBUGCLOSE();
+			}
+		}
+	}
+	gManager->ReleaseErrorMonitorListAccess();
+
+	TCDEBUGLOGA2(" return foundError=%d tcfError=%d\n", foundError, tcfError);
+
+	TCDEBUGCLOSE();
+	return foundError;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetNumberVersionEntities
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetNumberVersionEntities
+  (JNIEnv *env, jobject pThis, jlong inClientId)
+{
+	long number = 0;
+	long id = inClientId;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeGetNumberVersionEntities\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	// eCmdGetNumberVersions
+	ServerCommandData cmdrsp;
+	pServerCommandData pCmdrsp = &cmdrsp;
+	pCmdrsp->command = eCmdGetNumberVersions;
+	pCmdrsp->clientId = id;
+
+	BOOL sent = gManager->m_Server->SendCommand(pCmdrsp);
+
+	BOOL recd = gManager->m_Server->GetResponse(pCmdrsp);
+	if (pCmdrsp->response == eRspError)
+	{
+	}
+	else
+	{
+		number = pCmdrsp->number + 1; // + 1 for DLL version
+	}
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" numberVersions = %d\n", number);
+	TCDEBUGCLOSE();
+	return number;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetVersion
+ * Signature: (JJ[Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetVersion
+  (JNIEnv *env, jobject pThis, jlong inClientId, jlong inNumToGet, jobjectArray outVersion)
+{
+	long ret = TCAPI_ERR_NONE;
+	long id = inClientId;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeGetVersion\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	// eCmdGetVersion
+	ServerCommandData cmdrsp;
+	pServerCommandData pCmdrsp = &cmdrsp;
+	pCmdrsp->command = eCmdGetVersion;
+	pCmdrsp->clientId = id;
+
+
+	// index = 0 ==> TCFClient.dll version
+	env->SetObjectArrayElement(outVersion, 0, env->NewStringUTF(gManager->m_Version));
+	long numberGot = 1;
+
+	if (inNumToGet > 0)
+	{
+		// index = 1 ==> TCFServer.exe version
+		pCmdrsp->command = eCmdGetVersion;
+		pCmdrsp->clientId = id;
+		pCmdrsp->index = 1;
+		BOOL sent = gManager->m_Server->SendCommand(pCmdrsp);
+		BOOL recd = gManager->m_Server->GetResponse(pCmdrsp);
+		if (pCmdrsp->response == eRspOK)
+		{
+			env->SetObjectArrayElement(outVersion, 1, env->NewStringUTF(pCmdrsp->version));
+			numberGot++;
+
+			if (inNumToGet > 1)
+			{
+				// index = 2 ==> connection version
+				pCmdrsp->command = eCmdGetVersion;
+				pCmdrsp->clientId = id;
+				pCmdrsp->index = 2;
+				BOOL sent = gManager->m_Server->SendCommand(pCmdrsp);
+				BOOL recd = gManager->m_Server->GetResponse(pCmdrsp);
+				if (pCmdrsp->response == eRspOK)
+				{
+					env->SetObjectArrayElement(outVersion, 2, env->NewStringUTF(pCmdrsp->version));
+					numberGot++;
+				}
+			}
+		}
+	}
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return numberGot=%d\n", numberGot);
+	TCDEBUGCLOSE();
+	return numberGot;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativePollInputStream
+ * Signature: (J[J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativePollInputStream
+  (JNIEnv *env, jobject pThis, jlong inClientId, jlongArray outNumberMessages)
+{
+	long ret = TCAPI_ERR_NONE;
+	long number = 0;
+	long id = inClientId;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativePollInputStream\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	TCDEBUGLOGS(" TODO: get number from client's input stream\n");
+
+	gManager->WaitForStreamListAccess();
+
+	CInputStream* inputStream = gManager->FindInputStream(id);
+
+	if (inputStream != NULL)
+	{
+		TCDEBUGLOGA1(" -- found id inputStream=%x\n", inputStream);
+		number = inputStream->GetNumberMessages();
+	}
+
+	gManager->ReleaseStreamListAccess();
+	jlong jNumber = number;
+	env->SetLongArrayRegion(outNumberMessages, 0, 1, &jNumber);
+
+	TCDEBUGLOGA2(" numberMessages=%d ret=%d\n", number, ret);
+
+	TCDEBUGCLOSE();
+	return ret;
+}
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativePollInputStream2
+ * Signature: (JJ[J[J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativePollInputStream2
+  (JNIEnv *env, jobject pThis, jlong inClientId, jlong inNumberMessagesToPeek, jlongArray outNumberMessagesPeeked, jlongArray outNumberBytesPeeked)
+{
+	long ret = TCAPI_ERR_NONE;
+	long id = inClientId;
+	long numberToGet = inNumberMessagesToPeek;
+	long numberStored = 0;
+	DWORD numberBytes = 0;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativePollInputStream2\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->WaitForStreamListAccess();
+
+	CInputStream* inputStream = gManager->FindInputStream(id);
+
+	if (inputStream != NULL)
+	{
+		TCDEBUGLOGA1(" -- found id inputStream=%x\n", inputStream);
+		numberStored = inputStream->GetNumberMessages();
+
+		if ((numberToGet == 0) || (numberToGet > numberStored))
+		{
+			numberToGet = numberStored;
+		}
+		if (numberToGet > 0)
+		{
+			inputStream->GetTotalMessageSize(numberToGet, numberBytes);
+		}
+	}
+
+	gManager->ReleaseStreamListAccess();
+
+	jlong jNumber = numberToGet;
+	env->SetLongArrayRegion(outNumberMessagesPeeked, 0, 1, &jNumber);
+	jNumber = numberBytes;
+	env->SetLongArrayRegion(outNumberBytesPeeked, 0, 1, &jNumber);
+
+	TCDEBUGLOGA3(" numberMessages=%d numberBytes=%d ret=%d\n", numberToGet, numberBytes, ret);
+
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetInputStreamMessageBytes
+ * Signature: (JJ[J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetInputStreamMessageBytes
+  (JNIEnv *env, jobject pThis, jlong inClientId, jlong inNumberMessages, jlongArray outMessageSizes)
+{
+	long ret = TCAPI_ERR_NONE;
+	long id = inClientId;
+	long numberToGet = inNumberMessages;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeGetInputStreamMessageBytes\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->WaitForStreamListAccess();
+
+	CInputStream* inputStream = gManager->FindInputStream(id);
+
+	if (inputStream != NULL)
+	{
+		TCDEBUGLOGA1(" -- found id inputStream=%x\n", inputStream);
+		DWORD* pSizes = new DWORD[numberToGet];
+		inputStream->GetMessageSizes(numberToGet, pSizes);
+		for (int i = 0; i < numberToGet; i++)
+		{
+			TCDEBUGLOGA2(" -- message size[%d] = %d\n", i, pSizes[i]);
+			jlong jsize = pSizes[i];
+			env->SetLongArrayRegion(outMessageSizes, i, 1, &jsize);
+		}
+		delete[] pSizes;
+	}
+
+	gManager->ReleaseStreamListAccess();
+
+	TCDEBUGLOGA1("nativeGetInputStreamMessageBytes ret=%d\n", ret);
+
+	TCDEBUGCLOSE();
+
+	return ret;
+}
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeReadInputStream
+ * Signature: (JJ[J[JJ[B)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeReadInputStream
+  (JNIEnv *env, jobject pThis, jlong inClientId, jlong inNumberMessages, jlongArray outNumberMessages, jlongArray outNumberBytesRead, jlong inNumberMaxBytes, jbyteArray outMessageData)
+{
+	long ret = TCAPI_ERR_NONE;
+	long id = inClientId;
+	long numberToGet = inNumberMessages;
+	long numberMaxBytes = inNumberMaxBytes;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeReadInputStream start\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->WaitForStreamListAccess();
+
+	CInputStream* inputStream = gManager->FindInputStream(id);
+	if (inputStream != NULL)
+	{
+		long numberBytesRead = 0;
+		long numberMessagesRead = 0;
+#if (0)
+		DWORD mSize = 0;
+		DWORD outOffset = 0;
+		BYTE* pData = new BYTE[64*1024];
+		for (int i = 0; i < numberToGet; i++)
+		{
+			TCDEBUGLOGS("nativeReadInputStream 1\n");
+			mSize = inputStream->GetNextMessageSize();
+			if ((numberBytesRead + mSize) > numberMaxBytes)
+				break;
+			if (mSize != 0)
+			{
+				mSize = inputStream->GetNextMessage(mSize, pData);
+				TCDEBUGLOGA3("outOffset = %d mSize = %d pData[0] = %02.2x\n", outOffset, mSize, pData[0]);
+				jbyte* pByte = (jbyte*)pData;
+				env->SetByteArrayRegion(outMessageData, outOffset, mSize, pByte);
+				outOffset += mSize;
+				numberBytesRead += mSize;
+				numberMessagesRead++;
+
+				if ((i % 500) == 0)
+					Sleep(1);
+			}
+		}
+		delete [] pData;
+#endif
+		numberMessagesRead = inputStream->GetMessages(env, numberToGet, numberMaxBytes, numberBytesRead, numberMessagesRead, outMessageData);
+		jlong jMsgs = numberMessagesRead;
+		env->SetLongArrayRegion(outNumberMessages, 0, 1, &jMsgs);
+		jlong jNum = numberBytesRead;
+		env->SetLongArrayRegion(outNumberBytesRead, 0, 1, &jNum);
+
+		TCDEBUGLOGS("nativeReadInputStream 2\n");
+	}
+
+	gManager->ReleaseStreamListAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeOpenInputStream
+ * Signature: (JLjava/lang/String;JZ)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeOpenInputStream
+  (JNIEnv *env, jobject pThis, jlong inClientId, jstring inFileBaseName, jlong inStreamSize, jboolean inOverflowToFile)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeOpenInputStream\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+	TCDEBUGLOGA1(" inFileBaseName=%x\n", inFileBaseName);
+	TCDEBUGLOGA1(" inStreamSize=%d\n", inStreamSize);
+	TCDEBUGLOGA1(" inOverflowToFile=%d\n", inOverflowToFile);
+
+	gManager->m_Server->WaitforServerPipeAccess();
+	gManager->WaitForStreamListAccess();
+
+	char* pFileName = NULL;
+
+	if (inFileBaseName != NULL)
+	{
+		TCDEBUGLOGS("nativeOpenInputStream GetStringUTFChars on inFileBaseName\n");
+		jboolean isCopy=FALSE;
+		pFileName = (char*)env->GetStringUTFChars(inFileBaseName, &isCopy);
+		TCDEBUGLOGS("nativeOpenInputStream return GetStringUTFChars\n");
+		TCDEBUGLOGA1(" pFileName=%x\n", pFileName);
+//		if (pFileName != NULL)
+//		{
+//			TCDEBUGLOGA1(" pFileName=%s\n", pFileName);
+//		}
+	}
+	else
+	{
+		TCDEBUGLOGS("nativeOpenInputStream inFileBaseName == NULL\n");
+	}
+
+
+	TCDEBUGLOGS("nativeOpenInputStream continue after GetStringUTFChars\n");
+	DWORD streamSize = inStreamSize;
+	TCDEBUGLOGA1(" streamSize=%d\n", streamSize);
+
+	BOOL overflowOption = FALSE;
+	TCDEBUGLOGA1(" overflowOption=%d\n", overflowOption);
+
+	long id = inClientId;
+
+	TCDEBUGLOGA1(" gManager->InputStreamListSize=%d\n", gManager->InputStreamListSize());
+
+	// create stream
+	CInputStream* stream = new CInputStream(pFileName, streamSize, overflowOption, id);
+	stream->CreateStream();
+	gManager->AddInputStream(stream);
+
+	ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+	pCmdrsp->command = eCmdOpenStream;
+	pCmdrsp->clientId = id;
+	pCmdrsp->destinationOptions.destination = eDestinationInputStream;
+	pCmdrsp->destinationOptions.streamSize = streamSize;
+	pCmdrsp->destinationOptions.overFlowToFile = FALSE;
+	if (pFileName != NULL)
+	{
+		strncpy(pCmdrsp->destinationOptions.destinationFile, pFileName, MAX_FILEPATH);
+	}
+	else
+	{
+		pCmdrsp->destinationOptions.destinationFile[0] = NULL;
+	}
+	if (inFileBaseName != NULL)
+	{
+		TCDEBUGLOGS("nativeOpenInputStream ReleaseStringUTFChars on inFileBaseName\n");
+		env->ReleaseStringUTFChars(inFileBaseName, pFileName);
+	}
+
+	gManager->m_Server->SendCommand(pCmdrsp);
+	gManager->m_Server->GetResponse(pCmdrsp);
+
+	if (pCmdrsp->response == eRspError)
+	{
+		ret = pCmdrsp->error;
+	}
+
+	TCDEBUGLOGA1(" gManager->InputStreamListSize=%d\n", gManager->InputStreamListSize());
+
+	gManager->ReleaseStreamListAccess();
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeCloseInputStream
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeCloseInputStream
+  (JNIEnv *env, jobject pThis, jlong inClientId)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeCloseInputStream\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+	
+	gManager->m_Server->WaitforServerPipeAccess();
+	gManager->WaitForStreamListAccess();
+
+	long id = inClientId;
+
+	TCDEBUGLOGA1(" gManager->InputStreamListSize=%d\n", gManager->InputStreamListSize());
+
+	TCDEBUGLOGS(" TODO: tell server to close this stream\n");
+
+	ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+	pCmdrsp->command = eCmdCloseStream;
+	pCmdrsp->clientId = id;
+
+	gManager->m_Server->SendCommand(pCmdrsp);
+	gManager->m_Server->GetResponse(pCmdrsp);
+
+	if (pCmdrsp->response == eRspError)
+	{
+		ret = pCmdrsp->error;
+	}
+
+	CInputStream* inputStream = gManager->FindInputStream(id);
+	if (inputStream != NULL)
+	{
+		TCDEBUGLOGA1(" -- found id inputStream=%x\n", inputStream);
+		gManager->RemoveInputStream(inputStream);
+		delete inputStream;
+	}
+
+	TCDEBUGLOGA1(" gManager->InputStreamListSize=%d\n", gManager->InputStreamListSize());
+	gManager->ReleaseStreamListAccess();
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeSetMessageIds
+ * Signature: (J[B)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeSetMessageIds
+  (JNIEnv *env, jobject pThis, jlong inClientId, jbyteArray inIds)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeSetMessageIds\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+
+	pCmdrsp->command = eCmdSetMessageIds;
+	pCmdrsp->clientId = inClientId;
+	jsize numberIds = env->GetArrayLength(inIds);
+	pCmdrsp->number = numberIds;
+	jboolean isCopy = FALSE;
+	jbyte* bytes = env->GetByteArrayElements(inIds, &isCopy);
+	for (int i = 0; i < numberIds; i++)
+	{
+		pCmdrsp->messageIds[i] = bytes[i];
+		TCDEBUGLOGA1(" -- msgId = 0x%02.2X\n",  pCmdrsp->messageIds[i]);
+	}
+	env->ReleaseByteArrayElements(inIds, bytes, 0);
+	gManager->m_Server->SendCommand(pCmdrsp);
+	gManager->m_Server->GetResponse(pCmdrsp);
+
+	if (pCmdrsp->response == eRspError)
+	{
+		ret = pCmdrsp->error;
+	}
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeClearFile
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeClearFile
+  (JNIEnv *env, jobject pThis, jlong inClientId)
+{
+	long ret = TCAPI_ERR_NONE;
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	long id = inClientId;
+
+	ServerCommandData cmdrsp;
+	pServerCommandData pCmdrsp = &cmdrsp;
+	pCmdrsp->command = eCmdClearMessageFile;
+	pCmdrsp->clientId = id;
+
+	gManager->m_Server->SendCommand(pCmdrsp);
+	gManager->m_Server->GetResponse(pCmdrsp);
+	if (pCmdrsp->response == eRspError)
+	{
+		ret = pCmdrsp->error;
+	}
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeSendMessage
+ * Signature: (J[J[Ljava/lang/String;[B)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeSendMessage
+  (JNIEnv *env, jobject pThis, jlong inClientId, jlongArray inFormattingOptions, jobjectArray inSettings, jbyteArray inMessage)
+{
+	long ret = TCAPI_ERR_NONE;
+	unsigned long osError = 0;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeSendMessage\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	jboolean isCopy = false;
+	// formatting options
+	jlong* pOptions = env->GetLongArrayElements(inFormattingOptions, &isCopy);
+//	long encodeFormat = (long)pOptions[0];	// not used
+	long encodeOption = (long)pOptions[1];	// formatting option for protocol
+	long protocolVersion = (long)pOptions[2];	// OST version byte to use if protocol is OST
+	BYTE myId = (BYTE)(pOptions[3] & 0xff);	// my message ID to use of adding protocol
+	BOOL useMyId = (pOptions[4] == 1) ? TRUE : FALSE;	// use my ID or not
+	env->ReleaseLongArrayElements(inFormattingOptions, pOptions, 0);
+
+	jstring decodeString = (jstring)env->GetObjectArrayElement(inSettings, 0);
+	const char* pDecode = env->GetStringUTFChars(decodeString, NULL); // not used
+	env->ReleaseStringUTFChars(decodeString, pDecode);
+
+	jsize numberBytes = 0;
+	if (inMessage != NULL)
+		numberBytes = env->GetArrayLength(inMessage);
+	long inLength = numberBytes;		// this can be null
+
+	jbyte* inData = NULL;
+	if (inLength > 0)
+		inData = env->GetByteArrayElements(inMessage, &isCopy);
+
+	ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+
+	pCmdrsp->command = eCmdSendMessage;
+	pCmdrsp->clientId = inClientId;
+	pCmdrsp->encodeOption = encodeOption;
+	pCmdrsp->useMyId = useMyId;
+	pCmdrsp->myId = myId;
+	pCmdrsp->protocolVersion = protocolVersion & 0xff;
+
+	// send message to server
+	pCmdrsp->osError = 0;
+	gManager->m_Server->SendCommand(pCmdrsp, inLength, (BYTE*)inData);
+
+	TCDEBUGLOGS(" nativeSendMessage  GetResponse\n");
+
+	// get response from server
+	gManager->m_Server->GetResponse(pCmdrsp);
+
+	if (pCmdrsp->response == eRspError)
+	{
+		ret = pCmdrsp->error;
+		osError = pCmdrsp->osError;
+	}
+	if (inData != NULL)
+		env->ReleaseByteArrayElements(inMessage, inData, 0);
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA3("nativeSendMessage return ret=%d, osError=%d : %s\n", ret, osError, GetErrorText(osError));
+	TCDEBUGCLOSE();
+
+	if (ret == TCAPI_ERR_COMM_ERROR && osError > 0)
+	{
+		jclass clazz = env->FindClass("Ljava/lang/Exception;");
+		env->ThrowNew(clazz, GetErrorText(osError));
+	}
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeStart
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeStart
+  (JNIEnv *env, jobject pThis, jlong inClientId)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeStart\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	TCDEBUGLOGS(" TODO: tell server to start this client\n");
+	ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+
+	pCmdrsp->command = eCmdStart;
+	pCmdrsp->clientId = inClientId;
+
+	gManager->m_Server->SendCommand(pCmdrsp);
+
+	gManager->m_Server->GetResponse(pCmdrsp);
+
+	if (pCmdrsp->response == eRspError)
+	{
+		ret = pCmdrsp->error;
+	}
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeStop
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeStop
+  (JNIEnv *env, jobject pThis, jlong inClientId)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeStop\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	TCDEBUGLOGS(" TODO: tell server to stop this client\n");
+	ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+
+	pCmdrsp->command = eCmdStop;
+	pCmdrsp->clientId = inClientId;
+
+	gManager->m_Server->SendCommand(pCmdrsp);
+
+	gManager->m_Server->GetResponse(pCmdrsp);
+
+	if (pCmdrsp->response == eRspError)
+	{
+		ret = pCmdrsp->error;
+	}
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeTestConnection
+ * Signature: (I[J[Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeTestConnection__I_3J_3Ljava_lang_String_2
+  (JNIEnv *env, jobject pThis, jint inType, jlongArray inOptions, jobjectArray inSettings)
+{
+	long ret = TCAPI_ERR_FEATURE_NOT_IMPLEMENTED;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeTestConnection\n");
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	TCDEBUGLOGS(" TODO: ask server to test this connection\n");
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeTestConnection
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeTestConnection__J
+  (JNIEnv *env, jobject pThis, jlong inClientId)
+{
+	long ret = TCAPI_ERR_FEATURE_NOT_IMPLEMENTED;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeTestConnection\n");
+	TCDEBUGLOGA1(" inClientId=%d\n", inClientId);
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	TCDEBUGLOGS(" TODO: ask server to test this client's connection\n");
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+
+	return ret;
+}
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeStartServer
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeStartServer
+  (JNIEnv *env, jobject pThis)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeStartServer\n");
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	ret = gManager->StartServer();
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+
+	return ret;
+}
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeStopServer
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeStopServer
+  (JNIEnv *env, jobject pThis)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("nativeStopServer\n");
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	ret = gManager->StopServer();
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1(" return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+
+	return ret;
+}
+
+void ConvertRealSerialSettingsToServer(const char* pBaud, const char* pDataBits, const char* pParity, const char* pStopBits, const char* pFlowControl, pRealSerialConnectData pData)
+{
+	// no error checking - all error checking is done at the Java level
+	pData->baudRate = atol(pBaud);
+	pData->dataBits = atol(pDataBits);
+
+	pData->parity = eParityNone;
+	if (strcmp(pParity, "odd") == 0)
+	{
+		pData->parity = eParityOdd;
+	}
+	else if (strcmp(pParity, "even") == 0)
+	{
+		pData->parity = eParityEven;
+	}
+
+	pData->stopBits = eStopBits1;
+	if (strcmp(pStopBits, "1.5") == 0)
+	{
+		pData->stopBits = eStopBits15;
+	}
+	else if (strcmp(pStopBits, "2") == 0)
+	{
+		pData->stopBits = eStopBits2;
+	}
+
+	pData->flowControl = eFlowControlNone;
+	if (strcmp(pFlowControl, "software") == 0)
+	{
+		pData->flowControl = eFlowControlSW;
+	} 
+	else if (strcmp(pFlowControl, "hardware") == 0)
+	{
+		pData->flowControl = eFlowControlHW;
+	}
+}
+void ConvertRealSerialSettingsToHost(char* pBaud, char* pDataBits, char* pParity, char* pStopBits, char* pFlowControl, pRealSerialConnectData pData)
+{
+	sprintf(pBaud, "%ld", pData->baudRate);
+	sprintf(pDataBits, "%ld", pData->dataBits);
+
+	switch (pData->parity)
+	{
+	default:
+	case eParityNone:
+		strcpy(pParity, "none");
+		break;
+	case eParityEven:
+		strcpy(pParity, "even");
+		break;
+	case eParityOdd:
+		strcpy(pParity, "odd");
+		break;
+	}
+
+	switch (pData->stopBits)
+	{
+	default:
+	case eStopBits1:
+		strcpy(pStopBits, "1");
+		break;
+	case eStopBits15:
+		strcpy(pStopBits, "1.5");
+		break;
+	case eStopBits2:
+		strcpy(pStopBits, "2");
+		break;
+	}
+	
+	switch (pData->flowControl)
+	{
+	default:
+	case eFlowControlNone:
+		strcpy(pFlowControl, "none");
+		break;
+	case eFlowControlHW:
+		strcpy(pFlowControl, "hardware");
+		break;
+	case eFlowControlSW:
+		strcpy(pFlowControl, "software");
+		break;
+	}
+}
+
+#ifdef _DEBUG
+void OpenLogFile1(char* filename)
+{
+	if (fLog1 == NULL)
+		fLog1 = _fsopen(filename, "at", _SH_DENYNO);
+}
+
+void CloseLogFile1()
+{
+	if (fLog1 != NULL)
+	{
+		fclose(fLog1);
+		fLog1 = NULL;
+	}
+}
+void OpenLogFile2(char* filename)
+{
+	if (fLog2 == NULL)
+		fLog2 = _fsopen(filename, "at", _SH_DENYNO);
+}
+
+void CloseLogFile2()
+{
+	if (fLog2 != NULL)
+	{
+		fclose(fLog2);
+		fLog2 = NULL;
+	}
+}
+void LogTime(FILE* f)
+{
+	SYSTEMTIME sTime;
+	GetLocalTime(&sTime);
+	if (f)
+		fprintf(f, "%02.2d%02.2d-%02.2d:%02.2d:%02.2d.%03.3d: ", sTime.wDay, sTime.wMonth, sTime.wHour, sTime.wMinute, sTime.wSecond, sTime.wMilliseconds);
+}
+#endif
+
+static const char* GetErrorText(unsigned long error)
+{
+	if (error == ERROR_FILE_NOT_FOUND)
+		return "Could not open the device\n";
+
+	else if (error == ERROR_ACCESS_DENIED)
+		return "The device is currently in use\n";
+
+	static char msg[256];
+	FormatMessage(
+		FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+		NULL,
+		error,
+		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+		(LPTSTR) &msg,
+		sizeof(msg) - 1,
+		NULL);
+
+	return msg;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/TCAPIConnectionJni.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,213 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class com_nokia_tcf_impl_TCAPIConnection */
+
+#ifndef _Included_com_nokia_tcf_impl_TCAPIConnection
+#define _Included_com_nokia_tcf_impl_TCAPIConnection
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeConnect
+ * Signature: (Ljava/lang/String;[J[Ljava/lang/String;[JLjava/lang/String;[J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeConnect
+  (JNIEnv *, jobject, jstring, jlongArray, jobjectArray, jlongArray, jstring, jlongArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeDisconnect
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeDisconnect
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetNumberConnections
+ * Signature: ([J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetNumberConnections
+  (JNIEnv *, jobject, jlongArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetTypeOfConnection
+ * Signature: (J[Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetTypeOfConnection
+  (JNIEnv *, jobject, jlong, jobjectArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetConnectionSettings
+ * Signature: (J[Ljava/lang/String;[J[Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetConnectionSettings
+  (JNIEnv *, jobject, jlong, jobjectArray, jlongArray, jobjectArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativePollError
+ * Signature: (J[I[Z[J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativePollError
+  (JNIEnv *, jobject, jlong, jintArray, jbooleanArray, jlongArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetNumberVersionEntities
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetNumberVersionEntities
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetVersion
+ * Signature: (JJ[Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetVersion
+  (JNIEnv *, jobject, jlong, jlong, jobjectArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativePollInputStream
+ * Signature: (J[J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativePollInputStream
+  (JNIEnv *, jobject, jlong, jlongArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativePollInputStream2
+ * Signature: (JJ[J[J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativePollInputStream2
+  (JNIEnv *, jobject, jlong, jlong, jlongArray, jlongArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeGetInputStreamMessageBytes
+ * Signature: (JJ[J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeGetInputStreamMessageBytes
+  (JNIEnv *, jobject, jlong, jlong, jlongArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeReadInputStream
+ * Signature: (JJ[J[JJ[B)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeReadInputStream
+  (JNIEnv *, jobject, jlong, jlong, jlongArray, jlongArray, jlong, jbyteArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeOpenInputStream
+ * Signature: (JLjava/lang/String;JZ)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeOpenInputStream
+  (JNIEnv *, jobject, jlong, jstring, jlong, jboolean);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeCloseInputStream
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeCloseInputStream
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeClearFile
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeClearFile
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeSendMessage
+ * Signature: (J[J[Ljava/lang/String;[B)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeSendMessage
+  (JNIEnv *, jobject, jlong, jlongArray, jobjectArray, jbyteArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeSetMessageIds
+ * Signature: (J[B)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeSetMessageIds
+  (JNIEnv *, jobject, jlong, jbyteArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeStart
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeStart
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeStop
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeStop
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeTestConnection
+ * Signature: (Ljava/lang/String;[J[Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeTestConnection__Ljava_lang_String_2_3J_3Ljava_lang_String_2
+  (JNIEnv *, jobject, jstring, jlongArray, jobjectArray);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeTestConnection
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeTestConnection__J
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeStartServer
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeStartServer
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     com_nokia_tcf_impl_TCAPIConnection
+ * Method:    nativeStopServer
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_com_nokia_tcf_impl_TCAPIConnection_nativeStopServer
+  (JNIEnv *, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/TCFClient.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,151 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// TCFClient.cpp : Defines the entry point for the DLL application.
+//
+
+#include "stdafx.h"
+#include <stdio.h>
+#include <sys/stat.h>
+#include "ClientManager.h"
+#include "ServerClient.h"
+#include "InputStream.h"
+#include "ErrorMonitorData.h"
+#include "TCDebugLog.h"
+#include <vector>
+
+// process wide data
+CClientManager* gManager;
+#ifdef _DEBUG
+BOOL gDoLogging = FALSE;
+#endif
+
+#ifdef _DEBUG
+static void LogTime(FILE* f);
+#endif
+
+
+BOOL APIENTRY DllMain( HINSTANCE hinstDLL, 
+                       DWORD  fdwReason, 
+                       LPVOID lpReserved
+					 )
+{
+    // Perform actions based on the reason for calling.
+    switch( fdwReason ) 
+    { 
+        case DLL_PROCESS_ATTACH:
+			{
+         // Initialize once for each new process.
+         // Return FALSE to fail DLL load.
+			DWORD currentProcessId = ::GetCurrentProcessId();
+
+			// Create client manager for this process
+#ifdef _DEBUG
+			struct _stat buf;
+			char* dirname = "c:\\tcf";
+			int result = _stat(dirname, &buf);
+			if (result == 0) // exists
+			{
+				gDoLogging = TRUE;
+			}
+			else
+			{
+				gDoLogging = FALSE;
+			}
+
+#endif
+			gManager = new CClientManager(hinstDLL);
+#ifdef _DEBUG
+			if (gDoLogging)
+			{
+				FILE* f = fopen("c:\\tcf\\TCF_DllMainDLL_PROCESS_ATTACH.txt", "at");
+				LogTime(f);
+				fprintf(f,"DLL_PROCESS_ATTACH:\n hinstDLL=%x\n processId=%d\n DllLocation=%s\n DebugLog->m_FileName=%s\n", 
+					hinstDLL, 
+					currentProcessId,
+					gManager->m_DllLocation,
+					gManager->m_DebugLog->m_FileName);
+				fclose(f);
+			}
+#endif
+			}
+            break;
+
+        case DLL_THREAD_ATTACH:
+			{
+         // Do thread-specific initialization.
+			DWORD currentThreadId = ::GetCurrentThreadId();
+#ifdef _DEBUG
+			if (gDoLogging)
+			{
+				FILE* f = fopen("c:\\tcf\\TCF_DllMainDLL_THREAD_ATTACH.txt", "at");
+				LogTime(f);
+				fprintf(f,"DLL_THREAD_ATTACH: hinstDLL=%x currentThreadId=%d\n", hinstDLL, currentThreadId);
+				fclose(f);
+			}
+#endif
+			}
+            break;
+
+        case DLL_THREAD_DETACH:
+			{
+         // Do thread-specific cleanup.
+			DWORD currentThreadId = ::GetCurrentThreadId();
+#ifdef _DEBUG
+			if (gDoLogging)
+			{
+				FILE* f = fopen("c:\\tcf\\TCF_DllMainDLL_THREAD_DETACH.txt", "at");
+				LogTime(f);
+				fprintf(f,"DLL_THREAD_DETTACH: hinstDLL=%x currentThreadId=%d\n", hinstDLL, currentThreadId);
+				fclose(f);
+			}
+#endif
+			}
+            break;
+
+        case DLL_PROCESS_DETACH:
+			{
+         // Perform any necessary cleanup.
+			DWORD currentProcessId = ::GetCurrentProcessId();
+			// delete the client manager for this process
+#ifdef _DEBUG
+			if (gDoLogging)
+			{
+				FILE* f = fopen("c:\\tcf\\TCF_DllMainDLL_PROCESS_DETACH.txt", "at");
+				LogTime(f);
+				fprintf(f,"DLL_PROCESS_DETACH processId=%d\n", currentProcessId);
+				fclose(f);
+			}
+#endif
+			if (gManager)
+			{
+				delete gManager;
+			}
+			}
+            break;
+    }
+    return TRUE;  // Successful DLL_PROCESS_ATTACH.
+}
+#ifdef _DEBUG
+static void LogTime(FILE* f)
+{
+	SYSTEMTIME sTime;
+	GetLocalTime(&sTime);
+	if (f)
+		fprintf(f, "%02.2d%02.2d-%02.2d:%02.2d:%02.2d.%03.3d: ", sTime.wDay, sTime.wMonth, sTime.wHour, sTime.wMinute, sTime.wSecond, sTime.wMilliseconds);
+}
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/TCFClient.dep	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,118 @@
+# Microsoft Developer Studio Generated Dependency File, included by TCFClient.mak
+
+.\ClientManager.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\ClientManager.h"\
+	".\jdk1.5.0_10\include\jni.h"\
+	".\jdk1.5.0_10\include\win32\jni_md.h"\
+	".\resource.h"\
+	
+
+..\Common\Source\ErrorMonitorData.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\ClientManager.h"\
+	".\jdk1.5.0_10\include\jni.h"\
+	".\jdk1.5.0_10\include\win32\jni_md.h"\
+	
+
+..\Common\Source\InputStream.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\ClientManager.h"\
+	".\jdk1.5.0_10\include\jni.h"\
+	".\jdk1.5.0_10\include\win32\jni_md.h"\
+	
+
+..\Common\Source\mutex.cpp : \
+	"..\Common\Headers\mutex.h"\
+	
+
+..\Common\Source\ServerClient.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\ClientManager.h"\
+	".\jdk1.5.0_10\include\jni.h"\
+	".\jdk1.5.0_10\include\win32\jni_md.h"\
+	
+
+..\Common\Source\shareddata.cpp : \
+	"..\Common\Headers\shareddata.h"\
+	
+
+.\StdAfx.cpp : \
+	".\StdAfx.h"\
+	
+
+.\TCAPIConnectionJni.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\ClientManager.h"\
+	".\jdk1.5.0_10\include\jni.h"\
+	".\jdk1.5.0_10\include\win32\jni_md.h"\
+	".\TCAPIConnectionJni.h"\
+	
+
+..\Common\Source\TCDebugLog.cpp : \
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	
+
+.\TCFClient.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\ClientManager.h"\
+	".\jdk1.5.0_10\include\jni.h"\
+	".\jdk1.5.0_10\include\win32\jni_md.h"\
+	
+
+.\TCFCppApi.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\ClientManager.h"\
+	".\jdk1.5.0_10\include\jni.h"\
+	".\jdk1.5.0_10\include\win32\jni_md.h"\
+	".\TCFCppApi.h"\
+	
+
+.\resource.rc : \
+	".\resource.h"\
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/TCFClient.dsp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,229 @@
+# Microsoft Developer Studio Project File - Name="TCFClient" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=TCFClient - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFClient.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFClient.mak" CFG="TCFClient - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFClient - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "TCFClient - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib shlwapi.lib /nologo /dll /map /machine:I386
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+PostBuild_Cmds=copybinaries Release
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
+# SUBTRACT CPP /X
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib shlwapi.lib /nologo /dll /map /debug /machine:I386 /pdbtype:sept
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+PostBuild_Cmds=copybinaries Debug
+# End Special Build Tool
+
+!ENDIF 
+
+# Begin Target
+
+# Name "TCFClient - Win32 Release"
+# Name "TCFClient - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\ClientManager.cpp
+# ADD CPP /Zp2
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\ErrorMonitorData.cpp
+# ADD CPP /Zp2
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\InputStream.cpp
+# ADD CPP /Zp2
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\mutex.cpp
+# ADD CPP /Zp2
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\ServerClient.cpp
+# ADD CPP /Zp2
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\shareddata.cpp
+# ADD CPP /Zp2
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Zp2 /Yc"stdafx.h"
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCAPIConnectionJni.cpp
+# ADD CPP /Zp2
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\TCDebugLog.cpp
+# ADD CPP /Zp2
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFClient.cpp
+# ADD CPP /Zp2
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFCppApi.cpp
+# ADD CPP /Zp2
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\ClientManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\ErrorMonitorData.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\InputStream.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\ServerClient.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\shareddata.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCAPIConnectionJni.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\TCConstants.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\TCDebugLog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\TCErrorConstants.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFCppApi.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\resource.rc
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\ReadMe.txt
+# End Source File
+# End Target
+# End Project
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/TCFClient.mak	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,564 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on TCFClient.dsp
+!IF "$(CFG)" == ""
+CFG=TCFClient - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to TCFClient - Win32 Debug.
+!ENDIF 
+
+!IF "$(CFG)" != "TCFClient - Win32 Release" && "$(CFG)" != "TCFClient - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFClient.mak" CFG="TCFClient - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFClient - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "TCFClient - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFClient.dll"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\ClientManager.obj"
+	-@erase "$(INTDIR)\ErrorMonitorData.obj"
+	-@erase "$(INTDIR)\InputStream.obj"
+	-@erase "$(INTDIR)\mutex.obj"
+	-@erase "$(INTDIR)\resource.res"
+	-@erase "$(INTDIR)\ServerClient.obj"
+	-@erase "$(INTDIR)\shareddata.obj"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\TCAPIConnectionJni.obj"
+	-@erase "$(INTDIR)\TCDebugLog.obj"
+	-@erase "$(INTDIR)\TCFClient.obj"
+	-@erase "$(INTDIR)\TCFClient.pch"
+	-@erase "$(INTDIR)\TCFCppApi.obj"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(OUTDIR)\TCFClient.dll"
+	-@erase "$(OUTDIR)\TCFClient.exp"
+	-@erase "$(OUTDIR)\TCFClient.lib"
+	-@erase "$(OUTDIR)\TCFClient.map"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\resource.res" /d "NDEBUG" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFClient.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib shlwapi.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\TCFClient.pdb" /map:"$(INTDIR)\TCFClient.map" /machine:I386 /out:"$(OUTDIR)\TCFClient.dll" /implib:"$(OUTDIR)\TCFClient.lib" 
+LINK32_OBJS= \
+	"$(INTDIR)\ClientManager.obj" \
+	"$(INTDIR)\ErrorMonitorData.obj" \
+	"$(INTDIR)\InputStream.obj" \
+	"$(INTDIR)\mutex.obj" \
+	"$(INTDIR)\ServerClient.obj" \
+	"$(INTDIR)\shareddata.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCAPIConnectionJni.obj" \
+	"$(INTDIR)\TCDebugLog.obj" \
+	"$(INTDIR)\TCFClient.obj" \
+	"$(INTDIR)\TCFCppApi.obj" \
+	"$(INTDIR)\resource.res"
+
+"$(OUTDIR)\TCFClient.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFClient.dll"
+   copybinaries Release
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFClient.dll" "$(OUTDIR)\TCFClient.bsc"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\ClientManager.obj"
+	-@erase "$(INTDIR)\ClientManager.sbr"
+	-@erase "$(INTDIR)\ErrorMonitorData.obj"
+	-@erase "$(INTDIR)\ErrorMonitorData.sbr"
+	-@erase "$(INTDIR)\InputStream.obj"
+	-@erase "$(INTDIR)\InputStream.sbr"
+	-@erase "$(INTDIR)\mutex.obj"
+	-@erase "$(INTDIR)\mutex.sbr"
+	-@erase "$(INTDIR)\resource.res"
+	-@erase "$(INTDIR)\ServerClient.obj"
+	-@erase "$(INTDIR)\ServerClient.sbr"
+	-@erase "$(INTDIR)\shareddata.obj"
+	-@erase "$(INTDIR)\shareddata.sbr"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\StdAfx.sbr"
+	-@erase "$(INTDIR)\TCAPIConnectionJni.obj"
+	-@erase "$(INTDIR)\TCAPIConnectionJni.sbr"
+	-@erase "$(INTDIR)\TCDebugLog.obj"
+	-@erase "$(INTDIR)\TCDebugLog.sbr"
+	-@erase "$(INTDIR)\TCFClient.obj"
+	-@erase "$(INTDIR)\TCFClient.pch"
+	-@erase "$(INTDIR)\TCFClient.sbr"
+	-@erase "$(INTDIR)\TCFCppApi.obj"
+	-@erase "$(INTDIR)\TCFCppApi.sbr"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(INTDIR)\vc60.pdb"
+	-@erase "$(OUTDIR)\TCFClient.bsc"
+	-@erase "$(OUTDIR)\TCFClient.dll"
+	-@erase "$(OUTDIR)\TCFClient.exp"
+	-@erase "$(OUTDIR)\TCFClient.ilk"
+	-@erase "$(OUTDIR)\TCFClient.lib"
+	-@erase "$(OUTDIR)\TCFClient.map"
+	-@erase "$(OUTDIR)\TCFClient.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\resource.res" /d "_DEBUG" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFClient.bsc" 
+BSC32_SBRS= \
+	"$(INTDIR)\ClientManager.sbr" \
+	"$(INTDIR)\ErrorMonitorData.sbr" \
+	"$(INTDIR)\InputStream.sbr" \
+	"$(INTDIR)\mutex.sbr" \
+	"$(INTDIR)\ServerClient.sbr" \
+	"$(INTDIR)\shareddata.sbr" \
+	"$(INTDIR)\StdAfx.sbr" \
+	"$(INTDIR)\TCAPIConnectionJni.sbr" \
+	"$(INTDIR)\TCDebugLog.sbr" \
+	"$(INTDIR)\TCFClient.sbr" \
+	"$(INTDIR)\TCFCppApi.sbr"
+
+"$(OUTDIR)\TCFClient.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
+    $(BSC32) @<<
+  $(BSC32_FLAGS) $(BSC32_SBRS)
+<<
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib shlwapi.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\TCFClient.pdb" /map:"$(INTDIR)\TCFClient.map" /debug /machine:I386 /out:"$(OUTDIR)\TCFClient.dll" /implib:"$(OUTDIR)\TCFClient.lib" /pdbtype:sept 
+LINK32_OBJS= \
+	"$(INTDIR)\ClientManager.obj" \
+	"$(INTDIR)\ErrorMonitorData.obj" \
+	"$(INTDIR)\InputStream.obj" \
+	"$(INTDIR)\mutex.obj" \
+	"$(INTDIR)\ServerClient.obj" \
+	"$(INTDIR)\shareddata.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCAPIConnectionJni.obj" \
+	"$(INTDIR)\TCDebugLog.obj" \
+	"$(INTDIR)\TCFClient.obj" \
+	"$(INTDIR)\TCFCppApi.obj" \
+	"$(INTDIR)\resource.res"
+
+"$(OUTDIR)\TCFClient.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFClient.dll" "$(OUTDIR)\TCFClient.bsc"
+   copybinaries Debug
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("TCFClient.dep")
+!INCLUDE "TCFClient.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "TCFClient.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "TCFClient - Win32 Release" || "$(CFG)" == "TCFClient - Win32 Debug"
+SOURCE=.\ClientManager.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\ClientManager.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\ClientManager.obj"	"$(INTDIR)\ClientManager.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\ErrorMonitorData.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\ErrorMonitorData.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\ErrorMonitorData.obj"	"$(INTDIR)\ErrorMonitorData.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\InputStream.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\InputStream.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\InputStream.obj"	"$(INTDIR)\InputStream.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\mutex.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\mutex.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\mutex.obj"	"$(INTDIR)\mutex.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\ServerClient.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\ServerClient.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\ServerClient.obj"	"$(INTDIR)\ServerClient.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\shareddata.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\shareddata.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\shareddata.obj"	"$(INTDIR)\shareddata.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=.\StdAfx.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\TCFClient.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\StdAfx.sbr"	"$(INTDIR)\TCFClient.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=.\TCAPIConnectionJni.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\TCAPIConnectionJni.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\TCAPIConnectionJni.obj"	"$(INTDIR)\TCAPIConnectionJni.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\TCDebugLog.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\TCDebugLog.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\TCDebugLog.obj"	"$(INTDIR)\TCDebugLog.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=.\TCFClient.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\TCFClient.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\TCFClient.obj"	"$(INTDIR)\TCFClient.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=.\TCFCppApi.cpp
+
+!IF  "$(CFG)" == "TCFClient - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\TCFCppApi.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFClient - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFClient.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\TCFCppApi.obj"	"$(INTDIR)\TCFCppApi.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFClient.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=.\resource.rc
+
+"$(INTDIR)\resource.res" : $(SOURCE) "$(INTDIR)"
+	$(RSC) $(RSC_PROJ) $(SOURCE)
+
+
+
+!ENDIF 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/TCFClient.plg	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,83 @@
+<html>
+<body>
+<pre>
+<h1>Build Log</h1>
+<h3>
+--------------------Configuration: TCFClient - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating command line "rc.exe /l 0x409 /fo"Debug/resource.res" /d "_DEBUG" "C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\resource.rc"" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP3228.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"Debug/" /Fp"Debug/TCFClient.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\ClientManager.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\ErrorMonitorData.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\InputStream.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\ServerClient.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\shareddata.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\TCAPIConnectionJni.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\TCFClient.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\TCFCppApi.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP3228.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP3229.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"Debug/" /Fp"Debug/TCFClient.pch" /Yc"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP3229.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP322A.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib shlwapi.lib /nologo /dll /incremental:yes /pdb:"Debug/TCFClient.pdb" /map:"Debug/TCFClient.map" /debug /machine:I386 /out:"Debug/TCFClient.dll" /implib:"Debug/TCFClient.lib" /pdbtype:sept 
+.\Debug\ClientManager.obj
+.\Debug\ErrorMonitorData.obj
+.\Debug\InputStream.obj
+.\Debug\mutex.obj
+.\Debug\ServerClient.obj
+.\Debug\shareddata.obj
+.\Debug\StdAfx.obj
+.\Debug\TCAPIConnectionJni.obj
+.\Debug\TCDebugLog.obj
+.\Debug\TCFClient.obj
+.\Debug\TCFCppApi.obj
+.\Debug\resource.res
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP322A.tmp"
+<h3>Output Window</h3>
+Compiling resources...
+Compiling...
+StdAfx.cpp
+Compiling...
+ClientManager.cpp
+ErrorMonitorData.cpp
+InputStream.cpp
+mutex.cpp
+ServerClient.cpp
+shareddata.cpp
+TCAPIConnectionJni.cpp
+TCDebugLog.cpp
+TCFClient.cpp
+TCFCppApi.cpp
+Generating Code...
+Linking...
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP322B.bat" with contents
+[
+@echo off
+copybinaries Debug
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP322B.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFClient.dll - 0 error(s), 0 warning(s)
+</pre>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/TCFCppApi.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,955 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "stdafx.h"
+#include "TCFCppApi.h"
+#include "ServerClient.h"
+#include "ClientManager.h"
+#include "TCConstants.h"
+#include <vector>
+
+extern CClientManager* gManager;
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+extern char TCDebugMsg[100];
+#define TCDEBUGOPEN() if (gDoLogging) { gManager->m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(TCDebugMsg,"%s", s); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(TCDebugMsg, s, a1); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2, a3); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { gManager->m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+// for internal testing with 2.x USB TRK define this
+//#define FOR_2X_USB
+
+// client Ids connected for this C++ process
+static std::vector<long> *pcppClientIds = NULL;
+
+static long CheckClient(long id);
+static long CheckConnection(pTCFCppConnectData inConnection);
+static long CheckRealSerialSettings(pTCFCppConnectData inConnection);
+static long CheckMessageOptions(pTCFCppMessageOptions inMessageOptions);
+static long CheckMessageIds(pTCFCppMessageIds inMessageIds);
+static long CheckMessage(pTCFCppMessage inMessage);
+static void ConvertRealSerialSettingsToServer(pTCFCppConnectData inConnection, pRealSerialConnectData pData); 
+static void ConvertRealSerialSettingsToHost(pTCFCppConnectData inConnection, pRealSerialConnectData pData); 
+
+TCF_EXP long TCF_CALL TCFConnect(pTCFCppConnectData inConnection, pTCFCppMessageOptions inMessageOptions, pTCFCppMessageIds inMessageIds, long* outClientId)
+{
+	long ret = TCAPI_ERR_NONE;
+	ServerCommandData cmdrsp;
+	pServerCommandData pCmdrsp = &cmdrsp;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("TCFConnect\n");
+//	if (!gManager->IsServerRunning())
+//		return TCAPI_ERR_COMM_SERVER_RESPONSE_TIMEOUT;
+
+	gManager->m_Server->WaitforServerPipeAccess();
+
+	ret = CheckConnection(inConnection);
+#ifdef FOR_2X_USB
+	inMessageOptions->unWrapFormat = eTCFCppNone;
+#endif
+	if (ret == TCAPI_ERR_NONE)
+	{
+		ret = CheckMessageOptions(inMessageOptions);
+	}
+
+	if (ret == TCAPI_ERR_NONE)
+	{
+		ret = CheckMessageIds(inMessageIds);
+	}
+
+	if (ret == TCAPI_ERR_NONE)
+	{
+		if (strcmp(inConnection->connectType, "tcp") == 0)
+		{
+			char* pAddress = inConnection->tcpSettings.ipAddress;
+			char* pPort = inConnection->tcpSettings.ipPort;
+
+			pCmdrsp->command = eCmdConnect;
+			strncpy(pCmdrsp->connectSettings.connectType, inConnection->connectType, MAX_CONNECTION_TYPE);
+			strncpy(pCmdrsp->connectSettings.tcpSettings.ipAddress, pAddress, MAX_IPADDRESS_SIZE);
+			strncpy(pCmdrsp->connectSettings.tcpSettings.ipPort, pPort, MAX_PORT_SIZE);
+
+			pCmdrsp->connectSettings.retryInterval = inConnection->retryInterval;
+			pCmdrsp->connectSettings.retryTimeout = inConnection->retryTimeout;
+			strncpy(pCmdrsp->connectSettings.decodeFormat, inConnection->decodeFormat, MAX_DECODE_FORMAT);
+			pCmdrsp->clientOptions.unWrapFormat = inMessageOptions->unWrapFormat;
+			pCmdrsp->clientOptions.ostVersion = inMessageOptions->ostVersion;
+		}
+		else if (strcmp(inConnection->connectType, "virtualserial") == 0)
+		{
+			char* pComPort = inConnection->virtualSerialSettings.comPort;
+
+			pCmdrsp->command = eCmdConnect;
+			strncpy(pCmdrsp->connectSettings.connectType, inConnection->connectType, MAX_CONNECTION_TYPE);
+			strncpy(pCmdrsp->connectSettings.virtualSerialSettings.comPort, pComPort, MAX_COMPORT_SIZE);
+
+			pCmdrsp->connectSettings.retryInterval = inConnection->retryInterval;
+			pCmdrsp->connectSettings.retryTimeout = inConnection->retryTimeout;
+			strncpy(pCmdrsp->connectSettings.decodeFormat, inConnection->decodeFormat, MAX_DECODE_FORMAT);
+			pCmdrsp->clientOptions.unWrapFormat = inMessageOptions->unWrapFormat;
+			pCmdrsp->clientOptions.ostVersion = inMessageOptions->ostVersion;
+		}
+		else if (strcmp(inConnection->connectType, "serial") == 0)
+		{
+			char* pComPort = inConnection->realSerialSettings.comPort;
+
+			pCmdrsp->command = eCmdConnect;
+			strncpy(pCmdrsp->connectSettings.connectType, inConnection->connectType, MAX_CONNECTION_TYPE);
+			strncpy(pCmdrsp->connectSettings.realSerialSettings.comPort, pComPort, MAX_COMPORT_SIZE);
+
+			ConvertRealSerialSettingsToServer(inConnection, &pCmdrsp->connectSettings.realSerialSettings);
+
+			pCmdrsp->connectSettings.retryInterval = inConnection->retryInterval;
+			pCmdrsp->connectSettings.retryTimeout = inConnection->retryTimeout;
+			strncpy(pCmdrsp->connectSettings.decodeFormat, inConnection->decodeFormat, MAX_DECODE_FORMAT);
+			pCmdrsp->clientOptions.unWrapFormat = inMessageOptions->unWrapFormat;
+			pCmdrsp->clientOptions.ostVersion = inMessageOptions->ostVersion;
+		}
+		else
+		{
+			// Add other connections here
+		}
+		// send connect command
+		long id = 0;
+
+		if (ret == TCAPI_ERR_NONE)
+		{
+			gManager->m_Server->SendCommand(pCmdrsp);
+			gManager->m_Server->GetResponse(pCmdrsp);
+			if (pCmdrsp->response == eRspError)
+			{
+				ret = pCmdrsp->error;
+				TCDEBUGLOGA1("TCFConnect eCmdConnect: ret = %d\n", ret);
+			}
+			else
+			{
+				id = pCmdrsp->clientId;
+				TCDEBUGLOGA1("TCFConnect eCmdConnect: id = %d\n", id);
+			}
+		}
+		
+		// send message Ids to capture
+		if (ret == TCAPI_ERR_NONE)
+		{
+			pCmdrsp->command = eCmdSetMessageIds;
+			pCmdrsp->clientId = id;
+			pCmdrsp->number = inMessageIds->numberIds;
+			for (int i = 0; i < inMessageIds->numberIds; i++)
+			{
+				pCmdrsp->messageIds[i] = inMessageIds->messageIds[i];
+			}
+
+			gManager->m_Server->SendCommand(pCmdrsp);
+			gManager->m_Server->GetResponse(pCmdrsp);
+			if (pCmdrsp->response == eRspError)
+			{
+				ret = pCmdrsp->error;
+				TCDEBUGLOGA1("TCFConnect eCmdSetMessageIds: ret = %d\n", ret);
+			}
+			else
+			{
+				TCDEBUGLOGA1("TCFConnect eCmdSetMessageIds: ret = %d\n", ret);
+			}
+		}
+
+		// create input stream overflow temp file
+		// create input stream
+		if (ret == TCAPI_ERR_NONE)
+		{
+//			eTCPCppStreamOverflowOption overflowOption = inMessageOptions->streamOverflowOption;
+//			char* pFileName = inMessageOptions->overflowFile;
+			long streamSize = inMessageOptions->inputStreamSize;
+			CInputStream* stream = new CInputStream(NULL, streamSize, eTCPCppStreamOverflowOff, id);
+			stream->CreateStream();
+			gManager->AddInputStream(stream);
+
+			pCmdrsp->command = eCmdOpenStream;
+			pCmdrsp->clientId = id;
+			// TODO: implement message file in the future?
+			pCmdrsp->destinationOptions.destination = eDestinationInputStream;
+			pCmdrsp->destinationOptions.streamSize = streamSize;
+			pCmdrsp->destinationOptions.overFlowToFile = FALSE;//(overflowOption == eTCPCppStreamOverflowOn);
+//			if (pFileName != NULL)
+//			{
+//				strncpy(pCmdrsp->destinationOptions.destinationFile, pFileName, MAX_INPUTSTREAMPATH);
+//			}
+//			else
+			{
+				pCmdrsp->destinationOptions.destinationFile[0] = NULL;
+			}
+			gManager->m_Server->SendCommand(pCmdrsp);
+			gManager->m_Server->GetResponse(pCmdrsp);
+
+			if (pCmdrsp->response == eRspError)
+			{
+				ret = pCmdrsp->error;
+				TCDEBUGLOGA1("TCFConnect eCmdOpenStream: ret = %d\n", ret);
+			}
+			else
+			{
+				TCDEBUGLOGA1("TCFConnect eCmdOpenStream: ret = %d\n", ret);
+			}
+		}
+
+		// create error monitor
+		if (ret == TCAPI_ERR_NONE)
+		{
+			CErrorMonitor* monitor = new CErrorMonitor(id);
+			if (monitor != NULL)
+			{
+				monitor->CreateData();
+				gManager->AddErrorMonitor(monitor);
+			}
+		}
+
+		// start client capture
+		if (ret == TCAPI_ERR_NONE)
+		{
+			pCmdrsp->command = eCmdStart;
+			pCmdrsp->clientId = id;
+			gManager->m_Server->SendCommand(pCmdrsp);
+			gManager->m_Server->GetResponse(pCmdrsp);
+
+			if (pCmdrsp->response == eRspError)
+			{
+				ret = pCmdrsp->error;
+				TCDEBUGLOGA1("TCFConnect eCmdStart: ret = %d\n", ret);
+			}
+			else
+			{
+				TCDEBUGLOGA1("TCFConnect eCmdStart: ret = %d\n", ret);
+			}
+		}
+
+		if (ret == TCAPI_ERR_NONE)
+		{
+			TCDEBUGLOGA1("TCFConnect pcppClientIds: %x\n", pcppClientIds); 
+			if (pcppClientIds == NULL)
+			{
+				pcppClientIds = new std::vector<long>;
+				pcppClientIds->empty();
+			}
+			pcppClientIds->push_back(id);
+			*outClientId = id;
+			TCDEBUGLOGA1("TCFConnect pcppClientIds: size = %d\n", pcppClientIds->size());
+		}
+	}
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+	TCDEBUGLOGA1("TCFConnect return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+
+TCF_EXP long TCF_CALL TCFDisconnect(long inClientId)
+{
+	long ret = TCAPI_ERR_NONE;
+	ServerCommandData cmdrsp;
+	pServerCommandData pCmdrsp = &cmdrsp;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGA1("TCFDisconnect id=%d\n", inClientId);
+
+	gManager->m_Server->WaitforServerPipeAccess();
+	gManager->WaitForErrorMonitorListAccess();
+	gManager->WaitForStreamListAccess();
+
+	// check client ID
+	ret = CheckClient(inClientId);
+	TCDEBUGLOGA1("TCFDisconnect CheckClient: ret = %d\n", ret);
+	
+	// stop client
+	if (ret == TCAPI_ERR_NONE)
+	{
+		pCmdrsp->clientId = inClientId;
+		pCmdrsp->command = eCmdStop;
+		gManager->m_Server->SendCommand(pCmdrsp);
+		gManager->m_Server->GetResponse(pCmdrsp);
+	}
+
+	// close error monitor
+	TCDEBUGLOGS("TCFDisconnect clear error monitor\n");
+	CErrorMonitor *monitor = gManager->FindErrorMonitor(inClientId);
+	if (monitor != NULL)
+	{
+		gManager->RemoveErrorMonitor(monitor);
+		delete monitor;
+	}
+
+	// close input stream
+	TCDEBUGLOGS("TCFDisconnect remove input stream\n");
+	CInputStream* inputStream = gManager->FindInputStream(inClientId);
+	if (inputStream != NULL)
+	{
+		gManager->RemoveInputStream(inputStream);
+		delete inputStream;
+	}
+
+	// send disconnect
+	TCDEBUGLOGS("TCFDisconnect send disconnect\n");
+	if (ret == TCAPI_ERR_NONE)
+	{
+		pCmdrsp->command = eCmdDisconnect;
+		pCmdrsp->clientId = inClientId;
+
+		gManager->m_Server->SendCommand(pCmdrsp);
+		gManager->m_Server->GetResponse(pCmdrsp);
+		if (pCmdrsp->response == eRspError)
+		{
+			ret = pCmdrsp->error;
+		}
+	}
+	
+	TCDEBUGLOGS("TCFDisconnect clear erase id\n");
+	if (pcppClientIds != NULL && ret == TCAPI_ERR_NONE)
+	{
+		std::vector<long>::iterator idIter;
+		for (idIter = pcppClientIds->begin(); idIter != pcppClientIds->end(); idIter++)
+		{
+			if (*idIter == inClientId)
+			{
+				pcppClientIds->erase(idIter);
+				break;
+			}
+		}
+		if (pcppClientIds->size() == 0)
+		{
+			pcppClientIds->empty();
+			delete pcppClientIds;
+			pcppClientIds = NULL;
+		}
+	}
+
+	gManager->ReleaseStreamListAccess();
+	gManager->ReleaseErrorMonitorListAccess();
+
+	TCDEBUGLOGS("TCFDisconnect stop server\n");
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1("TCFDisconnect return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+TCF_EXP long TCF_CALL TCFGetVersions(long inClientId, long& outNumberVersions, char** outVersions)
+{
+	long ret = TCAPI_ERR_FEATURE_NOT_IMPLEMENTED;
+	outNumberVersions = 0;
+
+	// check client ID
+
+	// get # versions from server
+
+	// get version[i] from server
+
+
+	return ret;
+}
+TCF_EXP long TCF_CALL TCFGetConnections(long& outNumberConnections, pTCFCppConnectData* outConnections)
+{
+	long ret = TCAPI_ERR_FEATURE_NOT_IMPLEMENTED;
+
+	outNumberConnections = 0;
+
+	return ret;
+}
+TCF_EXP long TCF_CALL TCFSendMessage(long inClientId, pTCFCppMessage inMessage, long inLength, BYTE* inData)
+{
+	long ret = TCAPI_ERR_NONE;
+	ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+
+#ifdef FOR_2X_USB
+	inMessage->useMyId = FALSE;
+#endif
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGA1("TCFSendMessage id=%d\n", inClientId);
+
+	// check client ID
+	ret = CheckClient(inClientId);
+	TCDEBUGLOGA1("TCFSendMessage CheckClient: ret=%d\n", ret);
+
+	gManager->m_Server->WaitforServerPipeAccess();
+	// send message to server
+	if (ret == TCAPI_ERR_NONE)
+	{
+		ret = CheckMessage(inMessage);
+		if (ret == TCAPI_ERR_NONE)
+		{
+			pCmdrsp->command = eCmdSendMessage;
+			pCmdrsp->clientId = inClientId;
+			pCmdrsp->encodeOption = (inMessage->encodeFormat == eTCFCppEncodeNone) ? ENCODE_NO_FORMAT : ENCODE_FORMAT;
+			pCmdrsp->useMyId = inMessage->useMyId;
+			pCmdrsp->protocolVersion = inMessage->ostVersion;
+			pCmdrsp->myId = inMessage->myId;
+
+			gManager->m_Server->SendCommand(pCmdrsp, inLength, inData);
+			gManager->m_Server->GetResponse(pCmdrsp);
+
+			if (pCmdrsp->response == eRspError)
+			{
+				ret = pCmdrsp->error;
+				TCDEBUGLOGA1("TCFSendMessage eCmdSendMessage: ret=%d\n", ret);
+			}
+		}
+	}
+
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	TCDEBUGLOGA1("TCFSendMessage return ret=%d\n", ret);
+	TCDEBUGCLOSE();
+	return ret;
+}
+TCF_EXP long TCF_CALL TCFStart(long inClientId)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	// check client Id
+	ret = CheckClient(inClientId);
+	if (ret == TCAPI_ERR_NONE)
+	{
+		gManager->m_Server->WaitforServerPipeAccess();
+
+		ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+
+		pCmdrsp->command = eCmdStart;
+		pCmdrsp->clientId = inClientId;
+
+		gManager->m_Server->SendCommand(pCmdrsp);
+		gManager->m_Server->GetResponse(pCmdrsp);
+
+		if (pCmdrsp->response == eRspError)
+		{
+			ret = pCmdrsp->error;
+		}
+		gManager->m_Server->ReleaseServerPipeAccess();
+
+	}
+
+	return ret;
+}
+
+TCF_EXP long TCF_CALL TCFStop(long inClientId)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	// check client Id
+	ret = CheckClient(inClientId);
+	if (ret == TCAPI_ERR_NONE)
+	{
+		gManager->m_Server->WaitforServerPipeAccess();
+
+		ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+
+		pCmdrsp->command = eCmdStop;
+		pCmdrsp->clientId = inClientId;
+
+		gManager->m_Server->SendCommand(pCmdrsp);
+		gManager->m_Server->GetResponse(pCmdrsp);
+
+		if (pCmdrsp->response == eRspError)
+		{
+			ret = pCmdrsp->error;
+		}
+		gManager->m_Server->ReleaseServerPipeAccess();
+
+	}
+
+	return ret;
+}
+
+TCF_EXP long TCF_CALL TCFSetMessageIds(long inClientId, pTCFCppMessageIds inMessageIds)
+{
+	long ret = TCAPI_ERR_NONE;
+	ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+
+	// check client Id
+	ret = CheckClient(inClientId);
+
+	// check message ids
+	if (ret == TCAPI_ERR_NONE)
+	{
+		ret = CheckMessageIds(inMessageIds);
+	}
+
+	gManager->m_Server->WaitforServerPipeAccess();
+	// check client status
+	if (ret == TCAPI_ERR_NONE)
+	{
+		pCmdrsp->command = eCmdGetClientStatus;
+		pCmdrsp->clientId = inClientId;
+
+		gManager->m_Server->SendCommand(pCmdrsp);
+		gManager->m_Server->GetResponse(pCmdrsp);
+
+		if (pCmdrsp->response == eRspError)
+		{
+			ret = pCmdrsp->error;
+		}
+		else
+		{
+			if (pCmdrsp->clientStatus == eStarted)
+			{
+				ret = TCAPI_ERR_ROUTING_IN_PROGRESS;
+			}
+			else if (pCmdrsp->clientStatus == eUnknownClient)
+			{
+				ret = TCAPI_ERR_MEDIA_NOT_OPEN;
+			}
+		}
+	}
+
+	// set message ids
+	if (ret == TCAPI_ERR_NONE)
+	{
+		pCmdrsp->command = eCmdSetMessageIds;
+		pCmdrsp->clientId = inClientId;
+		pCmdrsp->number = inMessageIds->numberIds;
+		for (int i = 0; i < inMessageIds->numberIds; i++)
+		{
+			pCmdrsp->messageIds[i] = inMessageIds->messageIds[i];
+		}
+		gManager->m_Server->SendCommand(pCmdrsp);
+		gManager->m_Server->GetResponse(pCmdrsp);
+
+		if (pCmdrsp->response == eRspError)
+		{
+			ret = pCmdrsp->error;
+		}
+
+	}
+	gManager->m_Server->ReleaseServerPipeAccess();
+
+	return ret;
+}
+
+TCF_EXP long TCF_CALL TCFPollInputStream(long inClientId, long& outLength)
+{
+	long ret = TCAPI_ERR_NONE;
+	outLength = 0;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGA1("TCFPollInputStream id=%d\n", inClientId);
+
+	gManager->WaitForStreamListAccess();
+
+	// check client ID
+	ret = CheckClient(inClientId);
+	if (ret == TCAPI_ERR_NONE)
+	{
+		// get client's input stream
+		CInputStream* inputStream = gManager->FindInputStream(inClientId);
+
+		if (inputStream != NULL)
+		{
+			outLength = inputStream->GetNextMessageSize();
+		}
+		else
+		{
+			ret = TCAPI_ERR_INPUTSTREAM_CLOSED;
+		}
+	}
+
+	gManager->ReleaseStreamListAccess();
+
+	TCDEBUGLOGA2("TCFPollInputStream return ret=%d outLength=%d\n", ret, outLength);
+	TCDEBUGCLOSE();
+	return ret;
+}
+TCF_EXP long TCF_CALL TCFReadInputStream(long inClientId, pTCFCppMessage outMessage, long& inLength, BYTE* outData)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	if (outData == NULL || inLength <= 0)
+		return ret;
+
+	gManager->WaitForStreamListAccess();
+
+	// check client ID
+	ret = CheckClient(inClientId);
+	if (ret == TCAPI_ERR_NONE)
+	{
+		// get client's input stream
+		CInputStream* inputStream = gManager->FindInputStream(inClientId);
+
+		if (inputStream != NULL)
+		{
+			DWORD length = inputStream->GetNextMessageSize();
+			if (length > inLength) length = inLength;
+			if (length > 0)
+			{
+				inLength = length;
+				inputStream->GetNextMessage(inLength, outData);
+
+			}
+			else
+			{
+				inLength = 0;
+			}
+		}
+		else
+		{
+			ret = TCAPI_ERR_INPUTSTREAM_CLOSED;
+		}
+	}
+
+	gManager->ReleaseStreamListAccess();
+
+	return ret;
+}
+TCF_EXP BOOL TCF_CALL TCFPollError(long inClientId, int* outErrorCode, BOOL* outHasOSErrorCode, long* outOSErrorCode)
+{
+	BOOL foundError = FALSE;
+	gManager->WaitForErrorMonitorListAccess();
+
+	if (gManager->ErrorMonitorListSize() > 0)
+	{
+		CErrorMonitor* errorMonitor = gManager->FindErrorMonitor(inClientId);
+		if (errorMonitor != NULL)
+		{
+			LONG tcfError = TCAPI_ERR_NONE;
+			BOOL osErrorUsed = FALSE;
+			DWORD osError = 0;
+			BOOL found = errorMonitor->GetError(&tcfError, &osErrorUsed, &osError);
+			if (found)
+			{
+				foundError = true;
+				*outErrorCode = (int)tcfError;
+				*outHasOSErrorCode = osErrorUsed;
+				*outOSErrorCode = osError;
+			}
+		}
+	}
+	gManager->ReleaseErrorMonitorListAccess();
+
+	return foundError;
+}
+
+long CheckClient(long id)
+{
+	long ret = TCAPI_ERR_NONE;
+	BOOL found = FALSE;
+
+	if (id <= 0)
+	{
+		ret = TCAPI_ERR_INVALID_HANDLE;
+	}
+	else if (gManager->IsServerRunning() == FALSE)
+	{
+		ret = TCAPI_ERR_MEDIA_NOT_OPEN;
+	}
+	else
+	{
+		if (pcppClientIds == NULL)
+		{
+			ret = TCAPI_ERR_MEDIA_NOT_OPEN;
+		}
+		else
+		{
+			std::vector<long>::iterator idIter;
+			for (idIter = pcppClientIds->begin(); idIter != pcppClientIds->end(); idIter++)
+			{
+				if (*idIter == id)
+				{
+					found = TRUE;
+					break;
+				}
+			}
+			if (!found)
+			{
+				ret = TCAPI_ERR_INVALID_HANDLE;
+			}
+		}
+	}
+
+	return ret;
+}
+long CheckConnection(pTCFCppConnectData inConnection)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	if (inConnection == NULL)
+	{
+		ret = TCAPI_ERR_MISSING_CONNECTION_SPEC;
+	} 
+	else
+	{
+		long retryI = inConnection->retryInterval;
+		long retryT = inConnection->retryTimeout;
+		if (retryI == 0 || retryT == 0 || retryI > retryT)
+			ret = TCAPI_ERR_INVALID_RETRY_PERIODS;
+	}
+	if (ret == TCAPI_ERR_NONE)
+	{
+		if (strcmp(inConnection->connectType, "tcp") == 0)
+		{
+			if (inConnection->tcpSettings.ipAddress == NULL)
+			{
+				ret = TCAPI_ERR_MISSING_MEDIA_DATA;
+			}
+			else if (inConnection->tcpSettings.ipPort == NULL)
+			{
+				ret = TCAPI_ERR_MISSING_MEDIA_DATA;
+			}
+		}
+		else if (strcmp(inConnection->connectType, "virtualserial") == 0)
+		{
+			if (inConnection->virtualSerialSettings.comPort == NULL)
+			{
+				ret = TCAPI_ERR_MISSING_MEDIA_DATA;
+			}
+		}
+		else if (strcmp(inConnection->connectType, "serial") == 0)
+		{
+			ret = CheckRealSerialSettings(inConnection);
+		}
+		else
+		{
+		}
+	}
+
+	return ret;
+}
+
+long CheckRealSerialSettings(pTCFCppConnectData inConnection)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	if (inConnection->realSerialSettings.comPort == NULL)
+	{
+		ret = TCAPI_ERR_MISSING_MEDIA_DATA;
+	}
+	else if (inConnection->realSerialSettings.dataBits < 4 || inConnection->realSerialSettings.dataBits > 8)
+	{
+		ret = TCAPI_ERR_COMM_INVALID_DATABITS;
+	}
+	else if (inConnection->realSerialSettings.baudRate < 110UL || inConnection->realSerialSettings.baudRate > 256000UL)
+	{
+		ret = TCAPI_ERR_MISSING_MEDIA_DATA;
+	}
+	else
+	{
+		switch(inConnection->realSerialSettings.stopBits)
+		{
+		case eTCFCppStopBits1:
+		case eTCFCppStopBits15:
+		case eTCFCppStopBits2:
+			break;
+		default:
+			ret = TCAPI_ERR_COMM_INVALID_STOPBITS;
+			break;
+		}
+
+	}
+	if (ret == TCAPI_ERR_NONE)
+	{
+		switch(inConnection->realSerialSettings.flowControl)
+		{
+		case eTCFCppFlowControlNone:
+		case eTCFCppFlowControlHW:
+		case eTCFCppFlowControlSW:
+			break;
+		default:
+			ret = TCAPI_ERR_COMM_INVALID_FLOWCONTROL;
+			break;
+		}
+	}
+	if (ret == TCAPI_ERR_NONE)
+	{
+		switch(inConnection->realSerialSettings.parity)
+		{
+		case eTCFCppParityNone:
+		case eTCFCppParityOdd:
+		case eTCFCppParityEven:
+			break;
+		default:
+			ret = TCAPI_ERR_COMM_INVALID_PARITY;
+			break;
+ 		}
+	}
+	
+	return ret;
+}
+long CheckMessageOptions(pTCFCppMessageOptions inMessageOptions)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	if (inMessageOptions == NULL)
+	{
+		ret = TCAPI_ERR_MISSING_MESSAGE_OPTIONS;
+	}
+	else
+	{
+		if (ret == TCAPI_ERR_NONE)
+		{
+			if (inMessageOptions->unWrapFormat != eTCFCppNone && 
+				inMessageOptions->unWrapFormat != eTCFCppDeleteHeader)
+			{
+				ret = TCAPI_ERR_INVALID_MESSAGE_UNWRAP_OPTION;
+			}
+		}
+		if (ret == TCAPI_ERR_NONE)
+		{
+			if (inMessageOptions->inputStreamSize <= 0) 
+			{
+				ret = TCAPI_ERR_INVALID_STREAM_BUFFER_SIZE;
+			}
+		}
+	}
+	return ret;
+}
+long CheckMessageIds(pTCFCppMessageIds inMessageIds)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	if (inMessageIds == NULL)
+	{
+		ret = TCAPI_ERR_NO_MESSAGESIDS_REGISTERED;
+	}
+	else if (inMessageIds->numberIds <= 0 || inMessageIds->messageIds == NULL)
+	{
+		ret = TCAPI_ERR_NO_MESSAGESIDS_REGISTERED;
+	}
+	else if (inMessageIds->numberIds > 256)
+	{
+		ret = TCAPI_ERR_MESSAGEID_MAXIMUM;
+	}
+
+	return ret;
+}
+long CheckMessage(pTCFCppMessage inMessage)
+{
+	long ret = TCAPI_ERR_NONE;
+
+	if (inMessage == NULL)
+		return TCAPI_ERR_MISSING_MESSAGE;
+
+	if (inMessage->useMyId)
+	{
+		if ((inMessage->encodeFormat != eTCFCppEncodeNone) && (inMessage->encodeFormat != eTCFCppEncode))
+		{
+			ret = TCAPI_ERR_INVALID_ENCODE_FORMAT;
+		}
+	}
+
+	return ret;
+}
+
+void ConvertRealSerialSettingsToServer(pTCFCppConnectData inConnection, pRealSerialConnectData pData)
+{
+	pData->baudRate = inConnection->realSerialSettings.baudRate;
+	pData->dataBits = inConnection->realSerialSettings.dataBits;
+	switch(inConnection->realSerialSettings.flowControl)
+	{
+	default:
+	case eTCFCppFlowControlNone:
+		pData->flowControl = eFlowControlNone;
+		break;
+	case eTCFCppFlowControlHW:
+		pData->flowControl = eFlowControlHW;
+		break;
+	case eTCFCppFlowControlSW:
+		pData->flowControl = eFlowControlSW;
+		break;
+	}
+	switch(inConnection->realSerialSettings.parity)
+	{
+	default:
+	case eTCFCppParityNone:
+		pData->parity = eParityNone;
+		break;
+	case eTCFCppParityOdd:
+		pData->parity = eParityOdd;
+		break;
+	case eTCFCppParityEven:
+		pData->parity = eParityEven;
+		break;
+	}
+	switch(inConnection->realSerialSettings.stopBits)
+	{
+	default:
+	case eTCFCppStopBits1:
+		pData->stopBits = eStopBits1;
+		break;
+	case eTCFCppStopBits15:
+		pData->stopBits = eStopBits15;
+		break;
+	case eTCFCppStopBits2:
+		pData->stopBits = eStopBits2;
+		break;
+	}
+}
+
+void ConvertRealSerialSettingsToHost(pTCFCppConnectData inConnection, pRealSerialConnectData pData)
+{
+	inConnection->realSerialSettings.baudRate = pData->baudRate;
+	inConnection->realSerialSettings.dataBits = pData->dataBits;
+	switch(pData->flowControl)
+	{
+	default:
+	case eFlowControlNone:
+		inConnection->realSerialSettings.flowControl = eTCFCppFlowControlNone;
+		break;
+	case eFlowControlHW:
+		inConnection->realSerialSettings.flowControl = eTCFCppFlowControlHW;
+		break;
+	case eFlowControlSW:
+		inConnection->realSerialSettings.flowControl = eTCFCppFlowControlSW;
+		break;
+	}
+
+	switch(pData->parity)
+	{
+	default:
+	case eParityNone:
+		inConnection->realSerialSettings.parity = eTCFCppParityNone;
+		break;
+	case eParityEven:
+		inConnection->realSerialSettings.parity = eTCFCppParityEven;
+		break;
+	case eParityOdd:
+		inConnection->realSerialSettings.parity = eTCFCppParityOdd;
+		break;
+	}
+
+	switch(pData->stopBits)
+	{
+	default:
+	case eStopBits1:
+		inConnection->realSerialSettings.stopBits = eTCFCppStopBits1;
+		break;
+	case eStopBits15:
+		inConnection->realSerialSettings.stopBits = eTCFCppStopBits15;
+		break;
+	case eStopBits2:
+		inConnection->realSerialSettings.stopBits = eTCFCppStopBits2;
+		break;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/TCFCppApi.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,202 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __TCFCPPAPI_H__
+#define __TCFCPPAPI_H__
+
+#include "TCErrorConstants.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef TCFCLIENT_EXPORTS
+#define TCF_EXP __declspec(dllexport)
+#else
+#define TCF_EXP __declspec(dllimport)
+#endif
+
+#define TCF_CALL
+
+// TCP/IP
+#define MAX_IPADDRESS_SIZE (20)
+#define MAX_PORT_SIZE	(6)
+typedef struct tagTCFCppTcpConnectData 
+{
+	char ipAddress[MAX_IPADDRESS_SIZE];	// e.g., "127.0.0.1"
+	char ipPort[MAX_PORT_SIZE];		// e.g., "7654"
+} *pTCFCppTcpConnectData, TCFCppTcpConnectData;
+
+// Virtual Serial (BT and USB over Serial port)
+#define MAX_COMPORT_SIZE	(20)
+typedef struct tagTCFCppVirtualSerialConnectData
+{
+	char comPort[MAX_COMPORT_SIZE];		// only COM port required: e.g. COM0
+} *pTCFCppVirtualSerialConnectData, TCFCppVirtualSerialConnectData;
+
+// Real Serial
+enum eTCFCppFlowControl
+{
+	eTCFCppFlowControlNone,
+	eTCFCppFlowControlHW,
+	eTCFCppFlowControlSW,
+};
+enum eTCFCppStopBits
+{
+	eTCFCppStopBits1,
+	eTCFCppStopBits15,
+	eTCFCppStopBits2,
+};
+enum eTCFCppParity
+{
+	eTCFCppParityNone,
+	eTCFCppParityOdd,
+	eTCFCppParityEven,
+};
+
+typedef struct tagTCFCppRealSerialConnectData
+{
+	eTCFCppFlowControl flowControl;
+	eTCFCppStopBits stopBits;
+	eTCFCppParity parity;
+	DWORD baudRate;
+	DWORD dataBits;
+	char comPort[MAX_COMPORT_SIZE];
+} *pTCFCppRealSerialConnectData, TCFCppRealSerialConnectData;
+
+// Real USB
+#define MAX_USBDEVICE_SIZE	(100)
+typedef struct tagTCFCppUSBConnectData
+{
+	char device[MAX_USBDEVICE_SIZE];
+} *pTCFCppUSBConnectData, TCFCppUSBConnectData;
+
+#define MAX_DECODE_FORMAT		(16)
+#define MAX_CONNECTION_TYPE		(16)
+typedef struct tagTCFCppConnectData 
+{
+	long retryInterval;								// retry interval in seconds when port access is lost
+	long retryTimeout;								// retry timeout in seconds when port access is lost
+	long traceBoxChannel;							// Tracebox parameter
+	char decodeFormat[MAX_DECODE_FORMAT];				// protocol decode format on incoming messages
+	char connectType[MAX_CONNECTION_TYPE];					// connection type
+	TCFCppTcpConnectData tcpSettings;				// TCP/IP
+	TCFCppVirtualSerialConnectData virtualSerialSettings;	// Virtual serial
+	TCFCppRealSerialConnectData realSerialSettings;			// Real Serial
+	TCFCppUSBConnectData usbSettings;				// Real USB
+} *pTCFCppConnectData, TCFCppConnectData;
+
+// Various options for this client
+// Incoming message handling
+enum eTCFCppUnWrapFormat
+{
+	eTCFCppNone,									// return whole message (including protocol)
+	eTCFCppDeleteHeader,							// return only message data (excluding headers)
+};
+// Outgoing message encoding options for this client
+enum eTCFCppEncodeFormat
+{
+	eTCFCppEncodeNone,					// leave message as-is
+	eTCFCppEncode,					// encode message using decode format
+};
+// input stream overflow
+enum eTCPCppStreamOverflowOption
+{
+	eTCPCppStreamOverflowOff,			// no overflow to file
+	eTCPCppStreamOverflowOn,			// overflow to file
+};
+#define MAX_INPUTSTREAMPATH (2048L)
+
+typedef struct tagTCFCppMessageOptions
+{
+	long inputStreamSize;							// input stream size
+//	eTCPCppStreamOverflowOption streamOverflowOption;	// stream overflow option
+//	char overflowFile[MAX_INPUTSTREAMPATH];						// overflow file to use
+	eTCFCppUnWrapFormat unWrapFormat;				// message unwrapping option
+	long ostVersion;								// OST version to use for decoding messages
+} *pTCFCppMessageOptions, TCFCppMessageOptions;
+
+#define MAX_VERSION_STRING		(80)
+#define MAX_MESSAGEIDS			(256)
+typedef struct tagTCFCppMessageIds
+{
+	long numberIds;
+	BYTE messageIds[MAX_MESSAGEIDS];
+} *pTCFCppMessageIds, TCFCppMessageIds;
+
+#define MAX_SENDMESSAGE			(64*1024L+12)
+typedef struct tagTCFCppMessage
+{
+	eTCFCppEncodeFormat encodeFormat;	// encode or do not encode protocol using current protocol
+	long ostVersion;						// OST version to use when above and encodeFormat = "ost"
+	BOOL useMyId;							// format for protocol
+	BYTE myId;								// my message ID to use (if useMyId=true)
+} *pTCFCppMessage, TCFCppMessage;
+
+// APIs
+
+TCF_EXP long TCF_CALL TCFConnect(pTCFCppConnectData inConnection, pTCFCppMessageOptions inMessageOptions, pTCFCppMessageIds inMessageIds, long* outClientId);
+TCF_EXP long TCF_CALL TCFDisconnect(long inClientId);
+TCF_EXP long TCF_CALL TCFGetVersions(long inClientId, long& outNumberVersions, char** outVersions);
+TCF_EXP long TCF_CALL TCFGetConnections(long& outNumberConnections, pTCFCppConnectData* outConnections);
+TCF_EXP long TCF_CALL TCFSendMessage(long inClientId, pTCFCppMessage inMessage, long length, BYTE* data);
+TCF_EXP long TCF_CALL TCFStart(long inClientId);
+TCF_EXP long TCF_CALL TCFStop(long inClientId);
+TCF_EXP long TCF_CALL TCFSetMessageIds(long inClientId, pTCFCppMessageIds inMessageIds);
+TCF_EXP long TCF_CALL TCFPollInputStream(long inClientId, long& outLength);
+TCF_EXP long TCF_CALL TCFReadInputStream(long inClientId, pTCFCppMessage outMessage, long& inLength, BYTE* outData);
+TCF_EXP BOOL TCF_CALL TCFPollError(long inClientId, int* outErrorCode, BOOL* outHasOSErrorCode, long* outOSErrorCode);
+
+
+typedef long (*TCFCONNECT)(pTCFCppConnectData inConnection, pTCFCppMessageOptions inMessageOptions, pTCFCppMessageIds inMessageIds, long* outClientId);
+#define TCFCONNECT_FNNAME	"TCFConnect"
+
+typedef long (*TCFDISCONNECT)(long inClientId);
+#define TCFDISCONNECT_FNNAME	"TCFDisconnect"
+
+typedef long (*TCFGETVERIONS)(long inClientId, long& outNumberVersions, char** outVersions);
+#define TCFGETVERIONS_FNNAME	"TCFGetVersions"
+
+typedef long (*TCFGETCONNECTIONS)(long& outNumberConnections, pTCFCppConnectData* outConnections);
+#define TCFGETCONNECTIONS_FNNAME	"TCFGetConnections"
+
+typedef long (*TCFSENDMESSAGE)(long inClientId, pTCFCppMessage inMessage, long length, BYTE* data);
+#define TCFSENDMESSAGE_FNNAME	"TCFSendMessage"
+
+typedef long (*TCFSTART)(long inClientId);
+#define TCFSTART_FNNAME	"TCFStart"
+
+typedef long (*TCFSTOP)(long inClientId);
+#define TCFSTOP_FNNAME	"TCFStop"
+
+typedef long (*TCFSETMESSAGEIDS)(long inClientId, pTCFCppMessageIds inMessageIds);
+#define TCFSETMESSAGEIDS_FNNAME	"TCFSetMessageIds"
+
+typedef long (*TCFPOLLINPUTSTREAM)(long inClientId, long& outLength);
+#define TCFPOLLINPUTSTREAM_FNNAME	"TCFPollInputStream"
+
+typedef long (*TCFREADINPUTSTREAM)(long inClientId, pTCFCppMessage outMessage, long& inLength, BYTE* outData);
+#define TCFREADINPUTSTREAM_FNNAME	"TCFReadInputStream"
+
+typedef long (*TCFPOLLERROR)(long inClientId, int* outErrorCode, BOOL* outHasOSErrorCode, long* outOSErrorCode);
+#define TCFPOLLERROR_FNNAME	"TCFPollError"
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // __TCFCPPAPI_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/copyBinaries.cmd	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,5 @@
+echo off
+echo Copy binaries to ..\..\..\os\win32\x86
+copy /V %1\TCFClient.dll ..\..\..\os\win32\x86
+copy /V %1\TCFClient.map ..\..\..\os\win32\x86
+copy /V %1\TCFClient.lib ..\..\..\os\win32\x86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/copyLib.cmd	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,10 @@
+echo off
+echo Copy binaries to ..\..\..\os\win32\x86
+REM copy /V %1\TCFClient.dll ..\..\..\os\win32\x86 already done by project settings
+copy /V %1\TCFClient.map ..\..\..\os\win32\x86
+copy /V %1\TCFClient.lib ..\..\..\os\win32\x86
+echo Copy binaries to ..\..\..\..\com.nokia.tcf\os\win32\x86
+copy /V ..\..\..\os\win32\x86\TCFClient.dll ..\..\..\..\com.nokia.tcf\os\win32\x86
+copy /V  ..\..\..\os\win32\x86\TCFClient.map ..\..\..\..\com.nokia.tcf\os\win32\x86
+copy /V  ..\..\..\os\win32\x86\TCFClient.lib ..\..\..\..\com.nokia.tcf\os\win32\x86
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/javah_build.cmd	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,5 @@
+REM echo off
+
+REM create API 
+attrib -R TCAPIConnectionJni.h
+javah -classpath ..\..\..\..\com.nokia.tcf\bin -o TCAPIConnectionJni.h -jni com.nokia.tcf.impl.TCAPIConnection
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/jdk1.5.0_10/include/jawt.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,278 @@
+/*
+ * @(#)jawt.h	1.10 03/12/19
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#ifndef _JAVASOFT_JAWT_H_
+#define _JAVASOFT_JAWT_H_
+
+#include "jni.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * AWT native interface (new in JDK 1.3)
+ *
+ * The AWT native interface allows a native C or C++ application a means
+ * by which to access native structures in AWT.  This is to facilitate moving
+ * legacy C and C++ applications to Java and to target the needs of the
+ * community who, at present, wish to do their own native rendering to canvases
+ * for performance reasons.  Standard extensions such as Java3D also require a
+ * means to access the underlying native data structures of AWT.
+ *
+ * There may be future extensions to this API depending on demand.
+ *
+ * A VM does not have to implement this API in order to pass the JCK.
+ * It is recommended, however, that this API is implemented on VMs that support
+ * standard extensions, such as Java3D.
+ *
+ * Since this is a native API, any program which uses it cannot be considered
+ * 100% pure java.
+ */
+
+/*
+ * AWT Native Drawing Surface (JAWT_DrawingSurface).
+ *
+ * For each platform, there is a native drawing surface structure.  This
+ * platform-specific structure can be found in jawt_md.h.  It is recommended
+ * that additional platforms follow the same model.  It is also recommended
+ * that VMs on Win32 and Solaris support the existing structures in jawt_md.h.
+ *
+ *******************
+ * EXAMPLE OF USAGE:
+ *******************
+ *
+ * In Win32, a programmer wishes to access the HWND of a canvas to perform
+ * native rendering into it.  The programmer has declared the paint() method
+ * for their canvas subclass to be native:
+ *
+ *
+ * MyCanvas.java:
+ *
+ * import java.awt.*;
+ *
+ * public class MyCanvas extends Canvas {
+ *
+ *     static {
+ *         System.loadLibrary("mylib");
+ *     }
+ *
+ *     public native void paint(Graphics g);
+ * }
+ *
+ *
+ * myfile.c:
+ *
+ * #include "jawt_md.h"
+ * #include <assert.h>
+ *
+ * JNIEXPORT void JNICALL
+ * Java_MyCanvas_paint(JNIEnv* env, jobject canvas, jobject graphics)
+ * {
+ *     JAWT awt;
+ *     JAWT_DrawingSurface* ds;
+ *     JAWT_DrawingSurfaceInfo* dsi;
+ *     JAWT_Win32DrawingSurfaceInfo* dsi_win;
+ *     jboolean result;
+ *     jint lock;
+ *
+ *     // Get the AWT
+ *     awt.version = JAWT_VERSION_1_3;
+ *     result = JAWT_GetAWT(env, &awt);
+ *     assert(result != JNI_FALSE);
+ *
+ *     // Get the drawing surface
+ *     ds = awt.GetDrawingSurface(env, canvas);
+ *     assert(ds != NULL);
+ *
+ *     // Lock the drawing surface
+ *     lock = ds->Lock(ds);
+ *     assert((lock & JAWT_LOCK_ERROR) == 0);
+ *
+ *     // Get the drawing surface info
+ *     dsi = ds->GetDrawingSurfaceInfo(ds);
+ *
+ *     // Get the platform-specific drawing info
+ *     dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;
+ *
+ *     //////////////////////////////
+ *     // !!! DO PAINTING HERE !!! //
+ *     //////////////////////////////
+ *
+ *     // Free the drawing surface info
+ *     ds->FreeDrawingSurfaceInfo(dsi);
+ *
+ *     // Unlock the drawing surface
+ *     ds->Unlock(ds);
+ *
+ *     // Free the drawing surface
+ *     awt.FreeDrawingSurface(ds);
+ * }
+ *
+ */
+
+/*
+ * JAWT_Rectangle
+ * Structure for a native rectangle.
+ */
+typedef struct jawt_Rectangle {
+    jint x;
+    jint y;
+    jint width;
+    jint height;
+} JAWT_Rectangle;
+
+struct jawt_DrawingSurface;
+
+/*
+ * JAWT_DrawingSurfaceInfo
+ * Structure for containing the underlying drawing information of a component.
+ */
+typedef struct jawt_DrawingSurfaceInfo {
+    /*
+     * Pointer to the platform-specific information.  This can be safely
+     * cast to a JAWT_Win32DrawingSurfaceInfo on Windows or a
+     * JAWT_X11DrawingSurfaceInfo on Solaris.  See jawt_md.h for details.
+     */
+    void* platformInfo;
+    /* Cached pointer to the underlying drawing surface */
+    struct jawt_DrawingSurface* ds;
+    /* Bounding rectangle of the drawing surface */
+    JAWT_Rectangle bounds;
+    /* Number of rectangles in the clip */
+    jint clipSize;
+    /* Clip rectangle array */
+    JAWT_Rectangle* clip;
+} JAWT_DrawingSurfaceInfo;
+
+#define JAWT_LOCK_ERROR                 0x00000001
+#define JAWT_LOCK_CLIP_CHANGED          0x00000002
+#define JAWT_LOCK_BOUNDS_CHANGED        0x00000004
+#define JAWT_LOCK_SURFACE_CHANGED       0x00000008
+
+/*
+ * JAWT_DrawingSurface
+ * Structure for containing the underlying drawing information of a component.
+ * All operations on a JAWT_DrawingSurface MUST be performed from the same
+ * thread as the call to GetDrawingSurface.
+ */
+typedef struct jawt_DrawingSurface {
+    /*
+     * Cached reference to the Java environment of the calling thread.
+     * If Lock(), Unlock(), GetDrawingSurfaceInfo() or
+     * FreeDrawingSurfaceInfo() are called from a different thread,
+     * this data member should be set before calling those functions.
+     */
+    JNIEnv* env;
+    /* Cached reference to the target object */
+    jobject target;
+    /*
+     * Lock the surface of the target component for native rendering.
+     * When finished drawing, the surface must be unlocked with
+     * Unlock().  This function returns a bitmask with one or more of the
+     * following values:
+     *
+     * JAWT_LOCK_ERROR - When an error has occurred and the surface could not
+     * be locked.
+     *
+     * JAWT_LOCK_CLIP_CHANGED - When the clip region has changed.
+     *
+     * JAWT_LOCK_BOUNDS_CHANGED - When the bounds of the surface have changed.
+     *
+     * JAWT_LOCK_SURFACE_CHANGED - When the surface itself has changed
+     */
+    jint (JNICALL *Lock)
+        (struct jawt_DrawingSurface* ds);
+    /*
+     * Get the drawing surface info.
+     * The value returned may be cached, but the values may change if
+     * additional calls to Lock() or Unlock() are made.
+     * Lock() must be called before this can return a valid value.
+     * Returns NULL if an error has occurred.
+     * When finished with the returned value, FreeDrawingSurfaceInfo must be
+     * called.
+     */
+    JAWT_DrawingSurfaceInfo* (JNICALL *GetDrawingSurfaceInfo)
+        (struct jawt_DrawingSurface* ds);
+    /*
+     * Free the drawing surface info.
+     */
+    void (JNICALL *FreeDrawingSurfaceInfo)
+        (JAWT_DrawingSurfaceInfo* dsi);
+    /* 
+     * Unlock the drawing surface of the target component for native rendering.
+     */
+    void (JNICALL *Unlock)
+        (struct jawt_DrawingSurface* ds);
+} JAWT_DrawingSurface;
+
+/*
+ * JAWT
+ * Structure for containing native AWT functions.
+ */
+typedef struct jawt {
+    /*
+     * Version of this structure.  This must always be set before
+     * calling JAWT_GetAWT()
+     */
+    jint version;
+    /*
+     * Return a drawing surface from a target jobject.  This value
+     * may be cached.
+     * Returns NULL if an error has occurred.
+     * Target must be a java.awt.Component (should be a Canvas
+     * or Window for native rendering).
+     * FreeDrawingSurface() must be called when finished with the
+     * returned JAWT_DrawingSurface.
+     */
+    JAWT_DrawingSurface* (JNICALL *GetDrawingSurface)
+        (JNIEnv* env, jobject target);
+    /*
+     * Free the drawing surface allocated in GetDrawingSurface.
+     */
+    void (JNICALL *FreeDrawingSurface)
+        (JAWT_DrawingSurface* ds);
+    /*
+     * Since 1.4
+     * Locks the entire AWT for synchronization purposes
+     */
+    void (JNICALL *Lock)(JNIEnv* env);
+    /*
+     * Since 1.4
+     * Unlocks the entire AWT for synchronization purposes
+     */
+    void (JNICALL *Unlock)(JNIEnv* env);
+    /*
+     * Since 1.4
+     * Returns a reference to a java.awt.Component from a native
+     * platform handle.  On Windows, this corresponds to an HWND;
+     * on Solaris and Linux, this is a Drawable.  For other platforms,
+     * see the appropriate machine-dependent header file for a description.
+     * The reference returned by this function is a local
+     * reference that is only valid in this environment.
+     * This function returns a NULL reference if no component could be
+     * found with matching platform information.
+     */
+    jobject (JNICALL *GetComponent)(JNIEnv* env, void* platformInfo);
+
+} JAWT;
+
+/*
+ * Get the AWT native structure.  This function returns JNI_FALSE if
+ * an error occurs.
+ */
+_JNI_IMPORT_OR_EXPORT_
+jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt);
+
+#define JAWT_VERSION_1_3 0x00010003
+#define JAWT_VERSION_1_4 0x00010004
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !_JAVASOFT_JAWT_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/jdk1.5.0_10/include/jdwpTransport.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,237 @@
+/*
+ * @(#)jdwpTransport.h	1.7 03/12/19
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/*
+ * Java Debug Wire Protocol Transport Service Provider Interface.
+ */
+
+#ifndef JDWPTRANSPORT_H
+#define JDWPTRANSPORT_H
+
+#include "jni.h"
+
+enum {
+    JDWPTRANSPORT_VERSION_1_0 = 0x00010000
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct jdwpTransportNativeInterface_;
+
+struct _jdwpTransportEnv;
+
+#ifdef __cplusplus
+typedef _jdwpTransportEnv jdwpTransportEnv;
+#else
+typedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv;
+#endif /* __cplusplus */
+
+/*
+ * Errors. Universal errors with JVMTI/JVMDI equivalents keep the
+ * values the same.
+ */
+typedef enum {
+    JDWPTRANSPORT_ERROR_NONE = 0,
+    JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT = 103,
+    JDWPTRANSPORT_ERROR_OUT_OF_MEMORY = 110,
+    JDWPTRANSPORT_ERROR_INTERNAL = 113,
+    JDWPTRANSPORT_ERROR_ILLEGAL_STATE = 201,
+    JDWPTRANSPORT_ERROR_IO_ERROR = 202,
+    JDWPTRANSPORT_ERROR_TIMEOUT = 203,
+    JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE = 204
+} jdwpTransportError;
+    
+
+/*
+ * Structure to define capabilities
+ */
+typedef struct {
+    unsigned int can_timeout_attach     :1;
+    unsigned int can_timeout_accept     :1;
+    unsigned int can_timeout_handshake  :1;
+    unsigned int reserved3              :1;
+    unsigned int reserved4              :1;
+    unsigned int reserved5              :1;
+    unsigned int reserved6              :1;
+    unsigned int reserved7              :1;
+    unsigned int reserved8              :1;
+    unsigned int reserved9              :1;
+    unsigned int reserved10             :1;
+    unsigned int reserved11             :1;
+    unsigned int reserved12             :1;
+    unsigned int reserved13             :1;
+    unsigned int reserved14		:1;
+    unsigned int reserved15		:1;
+} JDWPTransportCapabilities;
+
+
+/*
+ * Structures to define packet layout.
+ * 
+ * See: http://java.sun.com/j2se/1.5/docs/guide/jpda/jdwp-spec.html
+ */
+
+enum {
+    JDWPTRANSPORT_FLAGS_NONE	 = 0x0,
+    JDWPTRANSPORT_FLAGS_REPLY	 = 0x80
+};
+
+typedef struct {
+    jint len; 
+    jint id;
+    jbyte flags;
+    jbyte cmdSet;
+    jbyte cmd;
+    jbyte *data;
+} jdwpCmdPacket;
+
+typedef struct {
+    jint len;
+    jint id;
+    jbyte flags;
+    jshort errorCode;
+    jbyte *data;
+} jdwpReplyPacket;
+
+typedef struct {
+    union {
+        jdwpCmdPacket cmd;
+        jdwpReplyPacket reply;
+    } type;
+} jdwpPacket;
+
+/*
+ * JDWP functions called by the transport.
+ */
+typedef struct jdwpTransportCallback {
+    void *(*alloc)(jint numBytes);   /* Call this for all allocations */
+    void (*free)(void *buffer);      /* Call this for all deallocations */
+} jdwpTransportCallback;
+
+typedef jint (JNICALL *jdwpTransport_OnLoad_t)(JavaVM *jvm,
+					       jdwpTransportCallback *callback,
+					       jint version,
+                                      	       jdwpTransportEnv** env);
+
+
+
+/* Function Interface */
+
+struct jdwpTransportNativeInterface_ {
+    /*  1 :  RESERVED */
+    void *reserved1;
+
+    /*	2 : Get Capabilities */
+    jdwpTransportError (JNICALL *GetCapabilities)(jdwpTransportEnv* env,
+	 JDWPTransportCapabilities *capabilities_ptr);
+
+    /*  3 : Attach */
+    jdwpTransportError (JNICALL *Attach)(jdwpTransportEnv* env,
+	const char* address,
+	jlong attach_timeout,
+	jlong handshake_timeout);
+
+    /*  4: StartListening */
+    jdwpTransportError (JNICALL *StartListening)(jdwpTransportEnv* env,
+	const char* address, 
+	char** actual_address);
+
+    /*  5: StopListening */
+    jdwpTransportError (JNICALL *StopListening)(jdwpTransportEnv* env);
+
+    /*  6: Accept */
+    jdwpTransportError (JNICALL *Accept)(jdwpTransportEnv* env,
+	jlong accept_timeout, 
+	jlong handshake_timeout);
+
+    /*  7: IsOpen */
+    jboolean (JNICALL *IsOpen)(jdwpTransportEnv* env);
+
+    /*  8: Close */
+    jdwpTransportError (JNICALL *Close)(jdwpTransportEnv* env);
+
+    /*  9: ReadPacket */
+    jdwpTransportError (JNICALL *ReadPacket)(jdwpTransportEnv* env,
+	jdwpPacket *pkt);
+
+    /*  10: Write Packet */
+    jdwpTransportError (JNICALL *WritePacket)(jdwpTransportEnv* env,
+	const jdwpPacket* pkt);
+
+    /*  11:  GetLastError */
+    jdwpTransportError (JNICALL *GetLastError)(jdwpTransportEnv* env,
+	char** error);
+
+};
+
+
+/*
+ * Use inlined functions so that C++ code can use syntax such as
+ *	env->Attach("mymachine:5000", 10*1000, 0);
+ *
+ * rather than using C's :-
+ *
+ *	(*env)->Attach(env, "mymachine:5000", 10*1000, 0);
+ */
+struct _jdwpTransportEnv {
+    const struct jdwpTransportNativeInterface_ *functions;
+#ifdef __cplusplus
+
+    jdwpTransportError GetCapabilities(JDWPTransportCapabilities *capabilities_ptr) {
+	return functions->GetCapabilities(this, capabilities_ptr);
+    }
+
+    jdwpTransportError Attach(const char* address, jlong attach_timeout,
+        	jlong handshake_timeout) {
+	return functions->Attach(this, address, attach_timeout, handshake_timeout);
+    }
+
+    jdwpTransportError StartListening(const char* address,
+        	char** actual_address) {
+	return functions->StartListening(this, address, actual_address);
+    }
+
+    jdwpTransportError StopListening(void) {
+	return functions->StopListening(this);
+    }
+
+    jdwpTransportError Accept(jlong accept_timeout, jlong handshake_timeout) {
+	return functions->Accept(this, accept_timeout, handshake_timeout);
+    }
+
+    jboolean IsOpen(void) {
+        return functions->IsOpen(this);
+    }
+
+    jdwpTransportError Close(void) {
+        return functions->Close(this);
+    }
+
+    jdwpTransportError ReadPacket(jdwpPacket *pkt) {
+	return functions->ReadPacket(this, pkt);
+    }
+
+    jdwpTransportError WritePacket(const jdwpPacket* pkt) {
+	return functions->WritePacket(this, pkt);
+    }
+
+    jdwpTransportError GetLastError(char** error) {
+	return functions->GetLastError(this, error);
+    }
+
+
+#endif /* __cplusplus */
+};
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* __cplusplus */
+
+#endif /* JDWPTRANSPORT_H */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/jdk1.5.0_10/include/jni.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,1951 @@
+/*
+ * @(#)jni.h	1.56 03/12/19
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/*
+ * We used part of Netscape's Java Runtime Interface (JRI) as the starting
+ * point of our design and implementation.
+ */
+
+/******************************************************************************
+ * Java Runtime Interface
+ * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
+ *****************************************************************************/
+
+#ifndef _JAVASOFT_JNI_H_
+#define _JAVASOFT_JNI_H_
+
+#include <stdio.h>
+#include <stdarg.h>
+
+/* jni_md.h contains the machine-dependent typedefs for jbyte, jint
+   and jlong */
+
+#include "jni_md.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * JNI Types
+ */
+
+#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H
+
+typedef unsigned char	jboolean;
+typedef unsigned short	jchar;
+typedef short		jshort;
+typedef float		jfloat;
+typedef double		jdouble;
+
+typedef jint            jsize;
+
+#ifdef __cplusplus
+
+class _jobject {};
+class _jclass : public _jobject {};
+class _jthrowable : public _jobject {};
+class _jstring : public _jobject {};
+class _jarray : public _jobject {};
+class _jbooleanArray : public _jarray {};
+class _jbyteArray : public _jarray {};
+class _jcharArray : public _jarray {};
+class _jshortArray : public _jarray {};
+class _jintArray : public _jarray {};
+class _jlongArray : public _jarray {};
+class _jfloatArray : public _jarray {};
+class _jdoubleArray : public _jarray {};
+class _jobjectArray : public _jarray {};
+
+typedef _jobject *jobject;
+typedef _jclass *jclass;
+typedef _jthrowable *jthrowable;
+typedef _jstring *jstring;
+typedef _jarray *jarray;
+typedef _jbooleanArray *jbooleanArray;
+typedef _jbyteArray *jbyteArray;
+typedef _jcharArray *jcharArray;
+typedef _jshortArray *jshortArray;
+typedef _jintArray *jintArray;
+typedef _jlongArray *jlongArray;
+typedef _jfloatArray *jfloatArray;
+typedef _jdoubleArray *jdoubleArray;
+typedef _jobjectArray *jobjectArray;
+
+#else
+
+struct _jobject;
+
+typedef struct _jobject *jobject;
+typedef jobject jclass;
+typedef jobject jthrowable;
+typedef jobject jstring;
+typedef jobject jarray;
+typedef jarray jbooleanArray;
+typedef jarray jbyteArray;
+typedef jarray jcharArray;
+typedef jarray jshortArray;
+typedef jarray jintArray;
+typedef jarray jlongArray;
+typedef jarray jfloatArray;
+typedef jarray jdoubleArray;
+typedef jarray jobjectArray;
+
+#endif
+
+typedef jobject jweak;
+
+typedef union jvalue {
+    jboolean z;
+    jbyte    b;
+    jchar    c;
+    jshort   s;
+    jint     i;
+    jlong    j;
+    jfloat   f;
+    jdouble  d;
+    jobject  l;
+} jvalue;
+
+struct _jfieldID;
+typedef struct _jfieldID *jfieldID;
+
+struct _jmethodID;
+typedef struct _jmethodID *jmethodID;
+
+#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */
+
+/*
+ * jboolean constants
+ */
+
+#define JNI_FALSE 0
+#define JNI_TRUE 1
+
+/*
+ * possible return values for JNI functions.
+ */
+
+#define JNI_OK           0                 /* success */
+#define JNI_ERR          (-1)              /* unknown error */
+#define JNI_EDETACHED    (-2)              /* thread detached from the VM */
+#define JNI_EVERSION     (-3)              /* JNI version error */
+#define JNI_ENOMEM       (-4)              /* not enough memory */
+#define JNI_EEXIST       (-5)              /* VM already created */
+#define JNI_EINVAL       (-6)              /* invalid arguments */
+
+/*
+ * used in ReleaseScalarArrayElements
+ */
+
+#define JNI_COMMIT 1
+#define JNI_ABORT 2
+
+/*
+ * used in RegisterNatives to describe native method name, signature,
+ * and function pointer.
+ */
+
+typedef struct {
+    char *name;
+    char *signature;
+    void *fnPtr;
+} JNINativeMethod;
+
+/*
+ * JNI Native Method Interface.
+ */
+
+struct JNINativeInterface_;
+
+struct JNIEnv_;
+
+#ifdef __cplusplus
+typedef JNIEnv_ JNIEnv;
+#else
+typedef const struct JNINativeInterface_ *JNIEnv;
+#endif
+
+/*
+ * JNI Invocation Interface.
+ */
+
+struct JNIInvokeInterface_;
+
+struct JavaVM_;
+
+#ifdef __cplusplus
+typedef JavaVM_ JavaVM;
+#else
+typedef const struct JNIInvokeInterface_ *JavaVM;
+#endif
+
+struct JNINativeInterface_ {
+    void *reserved0;
+    void *reserved1;
+    void *reserved2;
+
+    void *reserved3;
+    jint (JNICALL *GetVersion)(JNIEnv *env);
+
+    jclass (JNICALL *DefineClass)
+      (JNIEnv *env, const char *name, jobject loader, const jbyte *buf,
+       jsize len);
+    jclass (JNICALL *FindClass)
+      (JNIEnv *env, const char *name);
+
+    jmethodID (JNICALL *FromReflectedMethod)
+      (JNIEnv *env, jobject method);
+    jfieldID (JNICALL *FromReflectedField)
+      (JNIEnv *env, jobject field);
+
+    jobject (JNICALL *ToReflectedMethod)
+      (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic);
+
+    jclass (JNICALL *GetSuperclass)
+      (JNIEnv *env, jclass sub);
+    jboolean (JNICALL *IsAssignableFrom)
+      (JNIEnv *env, jclass sub, jclass sup);
+
+    jobject (JNICALL *ToReflectedField)
+      (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic);
+
+    jint (JNICALL *Throw)
+      (JNIEnv *env, jthrowable obj);
+    jint (JNICALL *ThrowNew)
+      (JNIEnv *env, jclass clazz, const char *msg);
+    jthrowable (JNICALL *ExceptionOccurred)
+      (JNIEnv *env);
+    void (JNICALL *ExceptionDescribe)
+      (JNIEnv *env);
+    void (JNICALL *ExceptionClear)
+      (JNIEnv *env);
+    void (JNICALL *FatalError)
+      (JNIEnv *env, const char *msg);
+
+    jint (JNICALL *PushLocalFrame)
+      (JNIEnv *env, jint capacity);
+    jobject (JNICALL *PopLocalFrame)
+      (JNIEnv *env, jobject result);
+
+    jobject (JNICALL *NewGlobalRef)
+      (JNIEnv *env, jobject lobj);
+    void (JNICALL *DeleteGlobalRef)
+      (JNIEnv *env, jobject gref);
+    void (JNICALL *DeleteLocalRef)
+      (JNIEnv *env, jobject obj);
+    jboolean (JNICALL *IsSameObject)
+      (JNIEnv *env, jobject obj1, jobject obj2);
+    jobject (JNICALL *NewLocalRef)
+      (JNIEnv *env, jobject ref);
+    jint (JNICALL *EnsureLocalCapacity)
+      (JNIEnv *env, jint capacity);
+
+    jobject (JNICALL *AllocObject)
+      (JNIEnv *env, jclass clazz);
+    jobject (JNICALL *NewObject)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+    jobject (JNICALL *NewObjectV)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+    jobject (JNICALL *NewObjectA)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+    jclass (JNICALL *GetObjectClass)
+      (JNIEnv *env, jobject obj);
+    jboolean (JNICALL *IsInstanceOf)
+      (JNIEnv *env, jobject obj, jclass clazz);
+
+    jmethodID (JNICALL *GetMethodID)
+      (JNIEnv *env, jclass clazz, const char *name, const char *sig);
+
+    jobject (JNICALL *CallObjectMethod)
+      (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+    jobject (JNICALL *CallObjectMethodV)
+      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+    jobject (JNICALL *CallObjectMethodA)
+      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
+
+    jboolean (JNICALL *CallBooleanMethod)
+      (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+    jboolean (JNICALL *CallBooleanMethodV)
+      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+    jboolean (JNICALL *CallBooleanMethodA)
+      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
+
+    jbyte (JNICALL *CallByteMethod)
+      (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+    jbyte (JNICALL *CallByteMethodV)
+      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+    jbyte (JNICALL *CallByteMethodA)
+      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+    jchar (JNICALL *CallCharMethod)
+      (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+    jchar (JNICALL *CallCharMethodV)
+      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+    jchar (JNICALL *CallCharMethodA)
+      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+    jshort (JNICALL *CallShortMethod)
+      (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+    jshort (JNICALL *CallShortMethodV)
+      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+    jshort (JNICALL *CallShortMethodA)
+      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+    jint (JNICALL *CallIntMethod)
+      (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+    jint (JNICALL *CallIntMethodV)
+      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+    jint (JNICALL *CallIntMethodA)
+      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+    jlong (JNICALL *CallLongMethod)
+      (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+    jlong (JNICALL *CallLongMethodV)
+      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+    jlong (JNICALL *CallLongMethodA)
+      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+    jfloat (JNICALL *CallFloatMethod)
+      (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+    jfloat (JNICALL *CallFloatMethodV)
+      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+    jfloat (JNICALL *CallFloatMethodA)
+      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+    jdouble (JNICALL *CallDoubleMethod)
+      (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+    jdouble (JNICALL *CallDoubleMethodV)
+      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+    jdouble (JNICALL *CallDoubleMethodA)
+      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+    void (JNICALL *CallVoidMethod)
+      (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+    void (JNICALL *CallVoidMethodV)
+      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+    void (JNICALL *CallVoidMethodA)
+      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
+
+    jobject (JNICALL *CallNonvirtualObjectMethod)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+    jobject (JNICALL *CallNonvirtualObjectMethodV)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       va_list args);
+    jobject (JNICALL *CallNonvirtualObjectMethodA)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       const jvalue * args);
+
+    jboolean (JNICALL *CallNonvirtualBooleanMethod)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+    jboolean (JNICALL *CallNonvirtualBooleanMethodV)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       va_list args);
+    jboolean (JNICALL *CallNonvirtualBooleanMethodA)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       const jvalue * args);
+
+    jbyte (JNICALL *CallNonvirtualByteMethod)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+    jbyte (JNICALL *CallNonvirtualByteMethodV)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       va_list args);
+    jbyte (JNICALL *CallNonvirtualByteMethodA)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       const jvalue *args);
+
+    jchar (JNICALL *CallNonvirtualCharMethod)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+    jchar (JNICALL *CallNonvirtualCharMethodV)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       va_list args);
+    jchar (JNICALL *CallNonvirtualCharMethodA)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       const jvalue *args);
+
+    jshort (JNICALL *CallNonvirtualShortMethod)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+    jshort (JNICALL *CallNonvirtualShortMethodV)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       va_list args);
+    jshort (JNICALL *CallNonvirtualShortMethodA)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       const jvalue *args);
+
+    jint (JNICALL *CallNonvirtualIntMethod)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+    jint (JNICALL *CallNonvirtualIntMethodV)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       va_list args);
+    jint (JNICALL *CallNonvirtualIntMethodA)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       const jvalue *args);
+
+    jlong (JNICALL *CallNonvirtualLongMethod)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+    jlong (JNICALL *CallNonvirtualLongMethodV)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       va_list args);
+    jlong (JNICALL *CallNonvirtualLongMethodA)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       const jvalue *args);
+
+    jfloat (JNICALL *CallNonvirtualFloatMethod)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+    jfloat (JNICALL *CallNonvirtualFloatMethodV)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       va_list args);
+    jfloat (JNICALL *CallNonvirtualFloatMethodA)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       const jvalue *args);
+
+    jdouble (JNICALL *CallNonvirtualDoubleMethod)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+    jdouble (JNICALL *CallNonvirtualDoubleMethodV)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       va_list args);
+    jdouble (JNICALL *CallNonvirtualDoubleMethodA)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       const jvalue *args);
+
+    void (JNICALL *CallNonvirtualVoidMethod)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+    void (JNICALL *CallNonvirtualVoidMethodV)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       va_list args);
+    void (JNICALL *CallNonvirtualVoidMethodA)
+      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+       const jvalue * args);
+
+    jfieldID (JNICALL *GetFieldID)
+      (JNIEnv *env, jclass clazz, const char *name, const char *sig);
+
+    jobject (JNICALL *GetObjectField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID);
+    jboolean (JNICALL *GetBooleanField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID);
+    jbyte (JNICALL *GetByteField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID);
+    jchar (JNICALL *GetCharField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID);
+    jshort (JNICALL *GetShortField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID);
+    jint (JNICALL *GetIntField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID);
+    jlong (JNICALL *GetLongField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID);
+    jfloat (JNICALL *GetFloatField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID);
+    jdouble (JNICALL *GetDoubleField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID);
+
+    void (JNICALL *SetObjectField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val);
+    void (JNICALL *SetBooleanField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val);
+    void (JNICALL *SetByteField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val);
+    void (JNICALL *SetCharField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val);
+    void (JNICALL *SetShortField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val);
+    void (JNICALL *SetIntField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID, jint val);
+    void (JNICALL *SetLongField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val);
+    void (JNICALL *SetFloatField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val);
+    void (JNICALL *SetDoubleField)
+      (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val);
+
+    jmethodID (JNICALL *GetStaticMethodID)
+      (JNIEnv *env, jclass clazz, const char *name, const char *sig);
+
+    jobject (JNICALL *CallStaticObjectMethod)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+    jobject (JNICALL *CallStaticObjectMethodV)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+    jobject (JNICALL *CallStaticObjectMethodA)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+    jboolean (JNICALL *CallStaticBooleanMethod)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+    jboolean (JNICALL *CallStaticBooleanMethodV)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+    jboolean (JNICALL *CallStaticBooleanMethodA)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+    jbyte (JNICALL *CallStaticByteMethod)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+    jbyte (JNICALL *CallStaticByteMethodV)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+    jbyte (JNICALL *CallStaticByteMethodA)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+    jchar (JNICALL *CallStaticCharMethod)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+    jchar (JNICALL *CallStaticCharMethodV)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+    jchar (JNICALL *CallStaticCharMethodA)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+    jshort (JNICALL *CallStaticShortMethod)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+    jshort (JNICALL *CallStaticShortMethodV)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+    jshort (JNICALL *CallStaticShortMethodA)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+    jint (JNICALL *CallStaticIntMethod)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+    jint (JNICALL *CallStaticIntMethodV)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+    jint (JNICALL *CallStaticIntMethodA)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+    jlong (JNICALL *CallStaticLongMethod)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+    jlong (JNICALL *CallStaticLongMethodV)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+    jlong (JNICALL *CallStaticLongMethodA)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+    jfloat (JNICALL *CallStaticFloatMethod)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+    jfloat (JNICALL *CallStaticFloatMethodV)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+    jfloat (JNICALL *CallStaticFloatMethodA)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+    jdouble (JNICALL *CallStaticDoubleMethod)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+    jdouble (JNICALL *CallStaticDoubleMethodV)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+    jdouble (JNICALL *CallStaticDoubleMethodA)
+      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+    void (JNICALL *CallStaticVoidMethod)
+      (JNIEnv *env, jclass cls, jmethodID methodID, ...);
+    void (JNICALL *CallStaticVoidMethodV)
+      (JNIEnv *env, jclass cls, jmethodID methodID, va_list args);
+    void (JNICALL *CallStaticVoidMethodA)
+      (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args);
+
+    jfieldID (JNICALL *GetStaticFieldID)
+      (JNIEnv *env, jclass clazz, const char *name, const char *sig);
+    jobject (JNICALL *GetStaticObjectField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID);
+    jboolean (JNICALL *GetStaticBooleanField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID);
+    jbyte (JNICALL *GetStaticByteField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID);
+    jchar (JNICALL *GetStaticCharField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID);
+    jshort (JNICALL *GetStaticShortField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID);
+    jint (JNICALL *GetStaticIntField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID);
+    jlong (JNICALL *GetStaticLongField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID);
+    jfloat (JNICALL *GetStaticFloatField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID);
+    jdouble (JNICALL *GetStaticDoubleField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID);
+
+    void (JNICALL *SetStaticObjectField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value);
+    void (JNICALL *SetStaticBooleanField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value);
+    void (JNICALL *SetStaticByteField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value);
+    void (JNICALL *SetStaticCharField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value);
+    void (JNICALL *SetStaticShortField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value);
+    void (JNICALL *SetStaticIntField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value);
+    void (JNICALL *SetStaticLongField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value);
+    void (JNICALL *SetStaticFloatField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value);
+    void (JNICALL *SetStaticDoubleField)
+      (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value);
+
+    jstring (JNICALL *NewString)
+      (JNIEnv *env, const jchar *unicode, jsize len);
+    jsize (JNICALL *GetStringLength)
+      (JNIEnv *env, jstring str);
+    const jchar *(JNICALL *GetStringChars)
+      (JNIEnv *env, jstring str, jboolean *isCopy);
+    void (JNICALL *ReleaseStringChars)
+      (JNIEnv *env, jstring str, const jchar *chars);
+
+    jstring (JNICALL *NewStringUTF)
+      (JNIEnv *env, const char *utf);
+    jsize (JNICALL *GetStringUTFLength)
+      (JNIEnv *env, jstring str);
+    const char* (JNICALL *GetStringUTFChars)
+      (JNIEnv *env, jstring str, jboolean *isCopy);
+    void (JNICALL *ReleaseStringUTFChars)
+      (JNIEnv *env, jstring str, const char* chars);
+
+
+    jsize (JNICALL *GetArrayLength)
+      (JNIEnv *env, jarray array);
+
+    jobjectArray (JNICALL *NewObjectArray)
+      (JNIEnv *env, jsize len, jclass clazz, jobject init);
+    jobject (JNICALL *GetObjectArrayElement)
+      (JNIEnv *env, jobjectArray array, jsize index);
+    void (JNICALL *SetObjectArrayElement)
+      (JNIEnv *env, jobjectArray array, jsize index, jobject val);
+
+    jbooleanArray (JNICALL *NewBooleanArray)
+      (JNIEnv *env, jsize len);
+    jbyteArray (JNICALL *NewByteArray)
+      (JNIEnv *env, jsize len);
+    jcharArray (JNICALL *NewCharArray)
+      (JNIEnv *env, jsize len);
+    jshortArray (JNICALL *NewShortArray)
+      (JNIEnv *env, jsize len);
+    jintArray (JNICALL *NewIntArray)
+      (JNIEnv *env, jsize len);
+    jlongArray (JNICALL *NewLongArray)
+      (JNIEnv *env, jsize len);
+    jfloatArray (JNICALL *NewFloatArray)
+      (JNIEnv *env, jsize len);
+    jdoubleArray (JNICALL *NewDoubleArray)
+      (JNIEnv *env, jsize len);
+
+    jboolean * (JNICALL *GetBooleanArrayElements)
+      (JNIEnv *env, jbooleanArray array, jboolean *isCopy);
+    jbyte * (JNICALL *GetByteArrayElements)
+      (JNIEnv *env, jbyteArray array, jboolean *isCopy);
+    jchar * (JNICALL *GetCharArrayElements)
+      (JNIEnv *env, jcharArray array, jboolean *isCopy);
+    jshort * (JNICALL *GetShortArrayElements)
+      (JNIEnv *env, jshortArray array, jboolean *isCopy);
+    jint * (JNICALL *GetIntArrayElements)
+      (JNIEnv *env, jintArray array, jboolean *isCopy);
+    jlong * (JNICALL *GetLongArrayElements)
+      (JNIEnv *env, jlongArray array, jboolean *isCopy);
+    jfloat * (JNICALL *GetFloatArrayElements)
+      (JNIEnv *env, jfloatArray array, jboolean *isCopy);
+    jdouble * (JNICALL *GetDoubleArrayElements)
+      (JNIEnv *env, jdoubleArray array, jboolean *isCopy);
+
+    void (JNICALL *ReleaseBooleanArrayElements)
+      (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode);
+    void (JNICALL *ReleaseByteArrayElements)
+      (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode);
+    void (JNICALL *ReleaseCharArrayElements)
+      (JNIEnv *env, jcharArray array, jchar *elems, jint mode);
+    void (JNICALL *ReleaseShortArrayElements)
+      (JNIEnv *env, jshortArray array, jshort *elems, jint mode);
+    void (JNICALL *ReleaseIntArrayElements)
+      (JNIEnv *env, jintArray array, jint *elems, jint mode);
+    void (JNICALL *ReleaseLongArrayElements)
+      (JNIEnv *env, jlongArray array, jlong *elems, jint mode);
+    void (JNICALL *ReleaseFloatArrayElements)
+      (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode);
+    void (JNICALL *ReleaseDoubleArrayElements)
+      (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode);
+
+    void (JNICALL *GetBooleanArrayRegion)
+      (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf);
+    void (JNICALL *GetByteArrayRegion)
+      (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf);
+    void (JNICALL *GetCharArrayRegion)
+      (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf);
+    void (JNICALL *GetShortArrayRegion)
+      (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf);
+    void (JNICALL *GetIntArrayRegion)
+      (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf);
+    void (JNICALL *GetLongArrayRegion)
+      (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf);
+    void (JNICALL *GetFloatArrayRegion)
+      (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf);
+    void (JNICALL *GetDoubleArrayRegion)
+      (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf);
+
+    void (JNICALL *SetBooleanArrayRegion)
+      (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf);
+    void (JNICALL *SetByteArrayRegion)
+      (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf);
+    void (JNICALL *SetCharArrayRegion)
+      (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf);
+    void (JNICALL *SetShortArrayRegion)
+      (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf);
+    void (JNICALL *SetIntArrayRegion)
+      (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf);
+    void (JNICALL *SetLongArrayRegion)
+      (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf);
+    void (JNICALL *SetFloatArrayRegion)
+      (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf);
+    void (JNICALL *SetDoubleArrayRegion)
+      (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf);
+
+    jint (JNICALL *RegisterNatives)
+      (JNIEnv *env, jclass clazz, const JNINativeMethod *methods,
+       jint nMethods);
+    jint (JNICALL *UnregisterNatives)
+      (JNIEnv *env, jclass clazz);
+
+    jint (JNICALL *MonitorEnter)
+      (JNIEnv *env, jobject obj);
+    jint (JNICALL *MonitorExit)
+      (JNIEnv *env, jobject obj);
+
+    jint (JNICALL *GetJavaVM)
+      (JNIEnv *env, JavaVM **vm);
+
+    void (JNICALL *GetStringRegion)
+      (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf);
+    void (JNICALL *GetStringUTFRegion)
+      (JNIEnv *env, jstring str, jsize start, jsize len, char *buf);
+
+    void * (JNICALL *GetPrimitiveArrayCritical)
+      (JNIEnv *env, jarray array, jboolean *isCopy);
+    void (JNICALL *ReleasePrimitiveArrayCritical)
+      (JNIEnv *env, jarray array, void *carray, jint mode);
+
+    const jchar * (JNICALL *GetStringCritical)
+      (JNIEnv *env, jstring string, jboolean *isCopy);
+    void (JNICALL *ReleaseStringCritical)
+      (JNIEnv *env, jstring string, const jchar *cstring);
+
+    jweak (JNICALL *NewWeakGlobalRef)
+       (JNIEnv *env, jobject obj);
+    void (JNICALL *DeleteWeakGlobalRef)
+       (JNIEnv *env, jweak ref);
+
+    jboolean (JNICALL *ExceptionCheck)
+       (JNIEnv *env);
+
+    jobject (JNICALL *NewDirectByteBuffer)
+       (JNIEnv* env, void* address, jlong capacity);
+    void* (JNICALL *GetDirectBufferAddress)
+       (JNIEnv* env, jobject buf);
+    jlong (JNICALL *GetDirectBufferCapacity)
+       (JNIEnv* env, jobject buf);
+};
+
+/*
+ * We use inlined functions for C++ so that programmers can write:
+ *
+ *    env->FindClass("java/lang/String")
+ *
+ * in C++ rather than:
+ *
+ *    (*env)->FindClass(env, "java/lang/String")
+ *
+ * in C.
+ */
+
+struct JNIEnv_ {
+    const struct JNINativeInterface_ *functions;
+#ifdef __cplusplus
+
+    jint GetVersion() {
+        return functions->GetVersion(this);
+    }
+    jclass DefineClass(const char *name, jobject loader, const jbyte *buf,
+		       jsize len) {
+        return functions->DefineClass(this, name, loader, buf, len);
+    }
+    jclass FindClass(const char *name) {
+        return functions->FindClass(this, name);
+    }
+    jmethodID FromReflectedMethod(jobject method) {
+        return functions->FromReflectedMethod(this,method);
+    }
+    jfieldID FromReflectedField(jobject field) {
+        return functions->FromReflectedField(this,field);
+    }
+
+    jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) {
+        return functions->ToReflectedMethod(this, cls, methodID, isStatic);
+    }
+
+    jclass GetSuperclass(jclass sub) {
+        return functions->GetSuperclass(this, sub);
+    }
+    jboolean IsAssignableFrom(jclass sub, jclass sup) {
+        return functions->IsAssignableFrom(this, sub, sup);
+    }
+
+    jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) {
+        return functions->ToReflectedField(this,cls,fieldID,isStatic);
+    }
+
+    jint Throw(jthrowable obj) {
+        return functions->Throw(this, obj);
+    }
+    jint ThrowNew(jclass clazz, const char *msg) {
+        return functions->ThrowNew(this, clazz, msg);
+    }
+    jthrowable ExceptionOccurred() {
+        return functions->ExceptionOccurred(this);
+    }
+    void ExceptionDescribe() {
+        functions->ExceptionDescribe(this);
+    }
+    void ExceptionClear() {
+        functions->ExceptionClear(this);
+    }
+    void FatalError(const char *msg) {
+        functions->FatalError(this, msg);
+    }
+
+    jint PushLocalFrame(jint capacity) {
+        return functions->PushLocalFrame(this,capacity);
+    }
+    jobject PopLocalFrame(jobject result) {
+        return functions->PopLocalFrame(this,result);
+    }
+
+    jobject NewGlobalRef(jobject lobj) {
+        return functions->NewGlobalRef(this,lobj);
+    }
+    void DeleteGlobalRef(jobject gref) {
+        functions->DeleteGlobalRef(this,gref);
+    }
+    void DeleteLocalRef(jobject obj) {
+        functions->DeleteLocalRef(this, obj);
+    }
+
+    jboolean IsSameObject(jobject obj1, jobject obj2) {
+        return functions->IsSameObject(this,obj1,obj2);
+    }
+
+    jobject NewLocalRef(jobject ref) {
+        return functions->NewLocalRef(this,ref);
+    }
+    jint EnsureLocalCapacity(jint capacity) {
+        return functions->EnsureLocalCapacity(this,capacity);
+    }
+
+    jobject AllocObject(jclass clazz) {
+        return functions->AllocObject(this,clazz);
+    }
+    jobject NewObject(jclass clazz, jmethodID methodID, ...) {
+        va_list args;
+	jobject result;
+	va_start(args, methodID);
+        result = functions->NewObjectV(this,clazz,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jobject NewObjectV(jclass clazz, jmethodID methodID,
+		       va_list args) {
+        return functions->NewObjectV(this,clazz,methodID,args);
+    }
+    jobject NewObjectA(jclass clazz, jmethodID methodID,
+		       const jvalue *args) {
+        return functions->NewObjectA(this,clazz,methodID,args);
+    }
+
+    jclass GetObjectClass(jobject obj) {
+        return functions->GetObjectClass(this,obj);
+    }
+    jboolean IsInstanceOf(jobject obj, jclass clazz) {
+        return functions->IsInstanceOf(this,obj,clazz);
+    }
+
+    jmethodID GetMethodID(jclass clazz, const char *name,
+			  const char *sig) {
+        return functions->GetMethodID(this,clazz,name,sig);
+    }
+
+    jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) {
+        va_list args;
+	jobject result;
+	va_start(args,methodID);
+	result = functions->CallObjectMethodV(this,obj,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jobject CallObjectMethodV(jobject obj, jmethodID methodID,
+			va_list args) {
+        return functions->CallObjectMethodV(this,obj,methodID,args);
+    }
+    jobject CallObjectMethodA(jobject obj, jmethodID methodID,
+			const jvalue * args) {
+        return functions->CallObjectMethodA(this,obj,methodID,args);
+    }
+
+    jboolean CallBooleanMethod(jobject obj,
+			       jmethodID methodID, ...) {
+        va_list args;
+	jboolean result;
+	va_start(args,methodID);
+	result = functions->CallBooleanMethodV(this,obj,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jboolean CallBooleanMethodV(jobject obj, jmethodID methodID,
+				va_list args) {
+        return functions->CallBooleanMethodV(this,obj,methodID,args);
+    }
+    jboolean CallBooleanMethodA(jobject obj, jmethodID methodID,
+				const jvalue * args) {
+        return functions->CallBooleanMethodA(this,obj,methodID, args);
+    }
+
+    jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) {
+        va_list args;
+	jbyte result;
+	va_start(args,methodID);
+	result = functions->CallByteMethodV(this,obj,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jbyte CallByteMethodV(jobject obj, jmethodID methodID,
+			  va_list args) {
+        return functions->CallByteMethodV(this,obj,methodID,args);
+    }
+    jbyte CallByteMethodA(jobject obj, jmethodID methodID,
+			  const jvalue * args) {
+        return functions->CallByteMethodA(this,obj,methodID,args);
+    }
+
+    jchar CallCharMethod(jobject obj, jmethodID methodID, ...) {
+        va_list args;
+	jchar result;
+	va_start(args,methodID);
+	result = functions->CallCharMethodV(this,obj,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jchar CallCharMethodV(jobject obj, jmethodID methodID,
+			  va_list args) {
+        return functions->CallCharMethodV(this,obj,methodID,args);
+    }
+    jchar CallCharMethodA(jobject obj, jmethodID methodID,
+			  const jvalue * args) {
+        return functions->CallCharMethodA(this,obj,methodID,args);
+    }
+
+    jshort CallShortMethod(jobject obj, jmethodID methodID, ...) {
+        va_list args;
+	jshort result;
+	va_start(args,methodID);
+	result = functions->CallShortMethodV(this,obj,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jshort CallShortMethodV(jobject obj, jmethodID methodID,
+			    va_list args) {
+        return functions->CallShortMethodV(this,obj,methodID,args);
+    }
+    jshort CallShortMethodA(jobject obj, jmethodID methodID,
+			    const jvalue * args) {
+        return functions->CallShortMethodA(this,obj,methodID,args);
+    }
+
+    jint CallIntMethod(jobject obj, jmethodID methodID, ...) {
+        va_list args;
+	jint result;
+	va_start(args,methodID);
+	result = functions->CallIntMethodV(this,obj,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jint CallIntMethodV(jobject obj, jmethodID methodID,
+			va_list args) {
+        return functions->CallIntMethodV(this,obj,methodID,args);
+    }
+    jint CallIntMethodA(jobject obj, jmethodID methodID,
+			const jvalue * args) {
+        return functions->CallIntMethodA(this,obj,methodID,args);
+    }
+
+    jlong CallLongMethod(jobject obj, jmethodID methodID, ...) {
+        va_list args;
+	jlong result;
+	va_start(args,methodID);
+	result = functions->CallLongMethodV(this,obj,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jlong CallLongMethodV(jobject obj, jmethodID methodID,
+			  va_list args) {
+        return functions->CallLongMethodV(this,obj,methodID,args);
+    }
+    jlong CallLongMethodA(jobject obj, jmethodID methodID,
+			  const jvalue * args) {
+        return functions->CallLongMethodA(this,obj,methodID,args);
+    }
+
+    jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) {
+        va_list args;
+	jfloat result;
+	va_start(args,methodID);
+	result = functions->CallFloatMethodV(this,obj,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jfloat CallFloatMethodV(jobject obj, jmethodID methodID,
+			    va_list args) {
+        return functions->CallFloatMethodV(this,obj,methodID,args);
+    }
+    jfloat CallFloatMethodA(jobject obj, jmethodID methodID,
+			    const jvalue * args) {
+        return functions->CallFloatMethodA(this,obj,methodID,args);
+    }
+
+    jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) {
+        va_list args;
+	jdouble result;
+	va_start(args,methodID);
+	result = functions->CallDoubleMethodV(this,obj,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jdouble CallDoubleMethodV(jobject obj, jmethodID methodID,
+			va_list args) {
+        return functions->CallDoubleMethodV(this,obj,methodID,args);
+    }
+    jdouble CallDoubleMethodA(jobject obj, jmethodID methodID,
+			const jvalue * args) {
+        return functions->CallDoubleMethodA(this,obj,methodID,args);
+    }
+
+    void CallVoidMethod(jobject obj, jmethodID methodID, ...) {
+        va_list args;
+	va_start(args,methodID);
+	functions->CallVoidMethodV(this,obj,methodID,args);
+	va_end(args);
+    }
+    void CallVoidMethodV(jobject obj, jmethodID methodID,
+			 va_list args) {
+        functions->CallVoidMethodV(this,obj,methodID,args);
+    }
+    void CallVoidMethodA(jobject obj, jmethodID methodID,
+			 const jvalue * args) {
+        functions->CallVoidMethodA(this,obj,methodID,args);
+    }
+
+    jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz,
+				       jmethodID methodID, ...) {
+        va_list args;
+	jobject result;
+	va_start(args,methodID);
+	result = functions->CallNonvirtualObjectMethodV(this,obj,clazz,
+							methodID,args);
+	va_end(args);
+	return result;
+    }
+    jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz,
+					jmethodID methodID, va_list args) {
+        return functions->CallNonvirtualObjectMethodV(this,obj,clazz,
+						      methodID,args);
+    }
+    jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz,
+					jmethodID methodID, const jvalue * args) {
+        return functions->CallNonvirtualObjectMethodA(this,obj,clazz,
+						      methodID,args);
+    }
+
+    jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz,
+					 jmethodID methodID, ...) {
+        va_list args;
+	jboolean result;
+	va_start(args,methodID);
+	result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz,
+							 methodID,args);
+	va_end(args);
+	return result;
+    }
+    jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz,
+					  jmethodID methodID, va_list args) {
+        return functions->CallNonvirtualBooleanMethodV(this,obj,clazz,
+						       methodID,args);
+    }
+    jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz,
+					  jmethodID methodID, const jvalue * args) {
+        return functions->CallNonvirtualBooleanMethodA(this,obj,clazz,
+						       methodID, args);
+    }
+
+    jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz,
+				   jmethodID methodID, ...) {
+        va_list args;
+	jbyte result;
+	va_start(args,methodID);
+	result = functions->CallNonvirtualByteMethodV(this,obj,clazz,
+						      methodID,args);
+	va_end(args);
+	return result;
+    }
+    jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz,
+				    jmethodID methodID, va_list args) {
+        return functions->CallNonvirtualByteMethodV(this,obj,clazz,
+						    methodID,args);
+    }
+    jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz,
+				    jmethodID methodID, const jvalue * args) {
+        return functions->CallNonvirtualByteMethodA(this,obj,clazz,
+						    methodID,args);
+    }
+
+    jchar CallNonvirtualCharMethod(jobject obj, jclass clazz,
+				   jmethodID methodID, ...) {
+        va_list args;
+	jchar result;
+	va_start(args,methodID);
+	result = functions->CallNonvirtualCharMethodV(this,obj,clazz,
+						      methodID,args);
+	va_end(args);
+	return result;
+    }
+    jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz,
+				    jmethodID methodID, va_list args) {
+        return functions->CallNonvirtualCharMethodV(this,obj,clazz,
+						    methodID,args);
+    }
+    jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz,
+				    jmethodID methodID, const jvalue * args) {
+        return functions->CallNonvirtualCharMethodA(this,obj,clazz,
+						    methodID,args);
+    }
+
+    jshort CallNonvirtualShortMethod(jobject obj, jclass clazz,
+				     jmethodID methodID, ...) {
+        va_list args;
+	jshort result;
+	va_start(args,methodID);
+	result = functions->CallNonvirtualShortMethodV(this,obj,clazz,
+						       methodID,args);
+	va_end(args);
+	return result;
+    }
+    jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz,
+				      jmethodID methodID, va_list args) {
+        return functions->CallNonvirtualShortMethodV(this,obj,clazz,
+						     methodID,args);
+    }
+    jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz,
+				      jmethodID methodID, const jvalue * args) {
+        return functions->CallNonvirtualShortMethodA(this,obj,clazz,
+						     methodID,args);
+    }
+
+    jint CallNonvirtualIntMethod(jobject obj, jclass clazz,
+				 jmethodID methodID, ...) {
+        va_list args;
+	jint result;
+	va_start(args,methodID);
+	result = functions->CallNonvirtualIntMethodV(this,obj,clazz,
+						     methodID,args);
+	va_end(args);
+	return result;
+    }
+    jint CallNonvirtualIntMethodV(jobject obj, jclass clazz,
+				  jmethodID methodID, va_list args) {
+        return functions->CallNonvirtualIntMethodV(this,obj,clazz,
+						   methodID,args);
+    }
+    jint CallNonvirtualIntMethodA(jobject obj, jclass clazz,
+				  jmethodID methodID, const jvalue * args) {
+        return functions->CallNonvirtualIntMethodA(this,obj,clazz,
+						   methodID,args);
+    }
+
+    jlong CallNonvirtualLongMethod(jobject obj, jclass clazz,
+				   jmethodID methodID, ...) {
+        va_list args;
+	jlong result;
+	va_start(args,methodID);
+	result = functions->CallNonvirtualLongMethodV(this,obj,clazz,
+						      methodID,args);
+	va_end(args);
+	return result;
+    }
+    jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz,
+				    jmethodID methodID, va_list args) {
+        return functions->CallNonvirtualLongMethodV(this,obj,clazz,
+						    methodID,args);
+    }
+    jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz,
+				    jmethodID methodID, const jvalue * args) {
+        return functions->CallNonvirtualLongMethodA(this,obj,clazz,
+						    methodID,args);
+    }
+
+    jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz,
+				     jmethodID methodID, ...) {
+        va_list args;
+	jfloat result;
+	va_start(args,methodID);
+	result = functions->CallNonvirtualFloatMethodV(this,obj,clazz,
+						       methodID,args);
+	va_end(args);
+	return result;
+    }
+    jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz,
+				      jmethodID methodID,
+				      va_list args) {
+        return functions->CallNonvirtualFloatMethodV(this,obj,clazz,
+						     methodID,args);
+    }
+    jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz,
+				      jmethodID methodID,
+				      const jvalue * args) {
+        return functions->CallNonvirtualFloatMethodA(this,obj,clazz,
+						     methodID,args);
+    }
+
+    jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz,
+				       jmethodID methodID, ...) {
+        va_list args;
+	jdouble result;
+	va_start(args,methodID);
+	result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz,
+							methodID,args);
+	va_end(args);
+	return result;
+    }
+    jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz,
+					jmethodID methodID,
+					va_list args) {
+        return functions->CallNonvirtualDoubleMethodV(this,obj,clazz,
+						      methodID,args);
+    }
+    jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz,
+					jmethodID methodID,
+					const jvalue * args) {
+        return functions->CallNonvirtualDoubleMethodA(this,obj,clazz,
+						      methodID,args);
+    }
+
+    void CallNonvirtualVoidMethod(jobject obj, jclass clazz,
+				  jmethodID methodID, ...) {
+        va_list args;
+	va_start(args,methodID);
+	functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);
+	va_end(args);
+    }
+    void CallNonvirtualVoidMethodV(jobject obj, jclass clazz,
+				   jmethodID methodID,
+				   va_list args) {
+        functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);
+    }
+    void CallNonvirtualVoidMethodA(jobject obj, jclass clazz,
+				   jmethodID methodID,
+				   const jvalue * args) {
+        functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args);
+    }
+
+    jfieldID GetFieldID(jclass clazz, const char *name,
+			const char *sig) {
+        return functions->GetFieldID(this,clazz,name,sig);
+    }
+
+    jobject GetObjectField(jobject obj, jfieldID fieldID) {
+        return functions->GetObjectField(this,obj,fieldID);
+    }
+    jboolean GetBooleanField(jobject obj, jfieldID fieldID) {
+        return functions->GetBooleanField(this,obj,fieldID);
+    }
+    jbyte GetByteField(jobject obj, jfieldID fieldID) {
+        return functions->GetByteField(this,obj,fieldID);
+    }
+    jchar GetCharField(jobject obj, jfieldID fieldID) {
+        return functions->GetCharField(this,obj,fieldID);
+    }
+    jshort GetShortField(jobject obj, jfieldID fieldID) {
+        return functions->GetShortField(this,obj,fieldID);
+    }
+    jint GetIntField(jobject obj, jfieldID fieldID) {
+        return functions->GetIntField(this,obj,fieldID);
+    }
+    jlong GetLongField(jobject obj, jfieldID fieldID) {
+        return functions->GetLongField(this,obj,fieldID);
+    }
+    jfloat GetFloatField(jobject obj, jfieldID fieldID) {
+        return functions->GetFloatField(this,obj,fieldID);
+    }
+    jdouble GetDoubleField(jobject obj, jfieldID fieldID) {
+        return functions->GetDoubleField(this,obj,fieldID);
+    }
+
+    void SetObjectField(jobject obj, jfieldID fieldID, jobject val) {
+        functions->SetObjectField(this,obj,fieldID,val);
+    }
+    void SetBooleanField(jobject obj, jfieldID fieldID,
+			 jboolean val) {
+        functions->SetBooleanField(this,obj,fieldID,val);
+    }
+    void SetByteField(jobject obj, jfieldID fieldID,
+		      jbyte val) {
+        functions->SetByteField(this,obj,fieldID,val);
+    }
+    void SetCharField(jobject obj, jfieldID fieldID,
+		      jchar val) {
+        functions->SetCharField(this,obj,fieldID,val);
+    }
+    void SetShortField(jobject obj, jfieldID fieldID,
+		       jshort val) {
+        functions->SetShortField(this,obj,fieldID,val);
+    }
+    void SetIntField(jobject obj, jfieldID fieldID,
+		     jint val) {
+        functions->SetIntField(this,obj,fieldID,val);
+    }
+    void SetLongField(jobject obj, jfieldID fieldID,
+		      jlong val) {
+        functions->SetLongField(this,obj,fieldID,val);
+    }
+    void SetFloatField(jobject obj, jfieldID fieldID,
+		       jfloat val) {
+        functions->SetFloatField(this,obj,fieldID,val);
+    }
+    void SetDoubleField(jobject obj, jfieldID fieldID,
+			jdouble val) {
+        functions->SetDoubleField(this,obj,fieldID,val);
+    }
+
+    jmethodID GetStaticMethodID(jclass clazz, const char *name,
+				const char *sig) {
+        return functions->GetStaticMethodID(this,clazz,name,sig);
+    }
+
+    jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID,
+			     ...) {
+        va_list args;
+	jobject result;
+	va_start(args,methodID);
+	result = functions->CallStaticObjectMethodV(this,clazz,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID,
+			      va_list args) {
+        return functions->CallStaticObjectMethodV(this,clazz,methodID,args);
+    }
+    jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID,
+			      const jvalue *args) {
+        return functions->CallStaticObjectMethodA(this,clazz,methodID,args);
+    }
+
+    jboolean CallStaticBooleanMethod(jclass clazz,
+				     jmethodID methodID, ...) {
+        va_list args;
+	jboolean result;
+	va_start(args,methodID);
+	result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jboolean CallStaticBooleanMethodV(jclass clazz,
+				      jmethodID methodID, va_list args) {
+        return functions->CallStaticBooleanMethodV(this,clazz,methodID,args);
+    }
+    jboolean CallStaticBooleanMethodA(jclass clazz,
+				      jmethodID methodID, const jvalue *args) {
+        return functions->CallStaticBooleanMethodA(this,clazz,methodID,args);
+    }
+
+    jbyte CallStaticByteMethod(jclass clazz,
+			       jmethodID methodID, ...) {
+        va_list args;
+	jbyte result;
+	va_start(args,methodID);
+	result = functions->CallStaticByteMethodV(this,clazz,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jbyte CallStaticByteMethodV(jclass clazz,
+				jmethodID methodID, va_list args) {
+        return functions->CallStaticByteMethodV(this,clazz,methodID,args);
+    }
+    jbyte CallStaticByteMethodA(jclass clazz,
+				jmethodID methodID, const jvalue *args) {
+        return functions->CallStaticByteMethodA(this,clazz,methodID,args);
+    }
+
+    jchar CallStaticCharMethod(jclass clazz,
+			       jmethodID methodID, ...) {
+        va_list args;
+	jchar result;
+	va_start(args,methodID);
+	result = functions->CallStaticCharMethodV(this,clazz,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jchar CallStaticCharMethodV(jclass clazz,
+				jmethodID methodID, va_list args) {
+        return functions->CallStaticCharMethodV(this,clazz,methodID,args);
+    }
+    jchar CallStaticCharMethodA(jclass clazz,
+				jmethodID methodID, const jvalue *args) {
+        return functions->CallStaticCharMethodA(this,clazz,methodID,args);
+    }
+
+    jshort CallStaticShortMethod(jclass clazz,
+				 jmethodID methodID, ...) {
+        va_list args;
+	jshort result;
+	va_start(args,methodID);
+	result = functions->CallStaticShortMethodV(this,clazz,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jshort CallStaticShortMethodV(jclass clazz,
+				  jmethodID methodID, va_list args) {
+        return functions->CallStaticShortMethodV(this,clazz,methodID,args);
+    }
+    jshort CallStaticShortMethodA(jclass clazz,
+				  jmethodID methodID, const jvalue *args) {
+        return functions->CallStaticShortMethodA(this,clazz,methodID,args);
+    }
+
+    jint CallStaticIntMethod(jclass clazz,
+			     jmethodID methodID, ...) {
+        va_list args;
+	jint result;
+	va_start(args,methodID);
+	result = functions->CallStaticIntMethodV(this,clazz,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jint CallStaticIntMethodV(jclass clazz,
+			      jmethodID methodID, va_list args) {
+        return functions->CallStaticIntMethodV(this,clazz,methodID,args);
+    }
+    jint CallStaticIntMethodA(jclass clazz,
+			      jmethodID methodID, const jvalue *args) {
+        return functions->CallStaticIntMethodA(this,clazz,methodID,args);
+    }
+
+    jlong CallStaticLongMethod(jclass clazz,
+			       jmethodID methodID, ...) {
+        va_list args;
+	jlong result;
+	va_start(args,methodID);
+	result = functions->CallStaticLongMethodV(this,clazz,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jlong CallStaticLongMethodV(jclass clazz,
+				jmethodID methodID, va_list args) {
+        return functions->CallStaticLongMethodV(this,clazz,methodID,args);
+    }
+    jlong CallStaticLongMethodA(jclass clazz,
+				jmethodID methodID, const jvalue *args) {
+        return functions->CallStaticLongMethodA(this,clazz,methodID,args);
+    }
+
+    jfloat CallStaticFloatMethod(jclass clazz,
+				 jmethodID methodID, ...) {
+        va_list args;
+	jfloat result;
+	va_start(args,methodID);
+	result = functions->CallStaticFloatMethodV(this,clazz,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jfloat CallStaticFloatMethodV(jclass clazz,
+				  jmethodID methodID, va_list args) {
+        return functions->CallStaticFloatMethodV(this,clazz,methodID,args);
+    }
+    jfloat CallStaticFloatMethodA(jclass clazz,
+				  jmethodID methodID, const jvalue *args) {
+        return functions->CallStaticFloatMethodA(this,clazz,methodID,args);
+    }
+
+    jdouble CallStaticDoubleMethod(jclass clazz,
+				   jmethodID methodID, ...) {
+        va_list args;
+	jdouble result;
+	va_start(args,methodID);
+	result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args);
+	va_end(args);
+	return result;
+    }
+    jdouble CallStaticDoubleMethodV(jclass clazz,
+				    jmethodID methodID, va_list args) {
+        return functions->CallStaticDoubleMethodV(this,clazz,methodID,args);
+    }
+    jdouble CallStaticDoubleMethodA(jclass clazz,
+				    jmethodID methodID, const jvalue *args) {
+        return functions->CallStaticDoubleMethodA(this,clazz,methodID,args);
+    }
+
+    void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) {
+        va_list args;
+	va_start(args,methodID);
+	functions->CallStaticVoidMethodV(this,cls,methodID,args);
+	va_end(args);
+    }
+    void CallStaticVoidMethodV(jclass cls, jmethodID methodID,
+			       va_list args) {
+        functions->CallStaticVoidMethodV(this,cls,methodID,args);
+    }
+    void CallStaticVoidMethodA(jclass cls, jmethodID methodID,
+			       const jvalue * args) {
+        functions->CallStaticVoidMethodA(this,cls,methodID,args);
+    }
+
+    jfieldID GetStaticFieldID(jclass clazz, const char *name,
+			      const char *sig) {
+        return functions->GetStaticFieldID(this,clazz,name,sig);
+    }
+    jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) {
+        return functions->GetStaticObjectField(this,clazz,fieldID);
+    }
+    jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) {
+        return functions->GetStaticBooleanField(this,clazz,fieldID);
+    }
+    jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) {
+        return functions->GetStaticByteField(this,clazz,fieldID);
+    }
+    jchar GetStaticCharField(jclass clazz, jfieldID fieldID) {
+        return functions->GetStaticCharField(this,clazz,fieldID);
+    }
+    jshort GetStaticShortField(jclass clazz, jfieldID fieldID) {
+        return functions->GetStaticShortField(this,clazz,fieldID);
+    }
+    jint GetStaticIntField(jclass clazz, jfieldID fieldID) {
+        return functions->GetStaticIntField(this,clazz,fieldID);
+    }
+    jlong GetStaticLongField(jclass clazz, jfieldID fieldID) {
+        return functions->GetStaticLongField(this,clazz,fieldID);
+    }
+    jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) {
+        return functions->GetStaticFloatField(this,clazz,fieldID);
+    }
+    jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) {
+        return functions->GetStaticDoubleField(this,clazz,fieldID);
+    }
+
+    void SetStaticObjectField(jclass clazz, jfieldID fieldID,
+			jobject value) {
+      functions->SetStaticObjectField(this,clazz,fieldID,value);
+    }
+    void SetStaticBooleanField(jclass clazz, jfieldID fieldID,
+			jboolean value) {
+      functions->SetStaticBooleanField(this,clazz,fieldID,value);
+    }
+    void SetStaticByteField(jclass clazz, jfieldID fieldID,
+			jbyte value) {
+      functions->SetStaticByteField(this,clazz,fieldID,value);
+    }
+    void SetStaticCharField(jclass clazz, jfieldID fieldID,
+			jchar value) {
+      functions->SetStaticCharField(this,clazz,fieldID,value);
+    }
+    void SetStaticShortField(jclass clazz, jfieldID fieldID,
+			jshort value) {
+      functions->SetStaticShortField(this,clazz,fieldID,value);
+    }
+    void SetStaticIntField(jclass clazz, jfieldID fieldID,
+			jint value) {
+      functions->SetStaticIntField(this,clazz,fieldID,value);
+    }
+    void SetStaticLongField(jclass clazz, jfieldID fieldID,
+			jlong value) {
+      functions->SetStaticLongField(this,clazz,fieldID,value);
+    }
+    void SetStaticFloatField(jclass clazz, jfieldID fieldID,
+			jfloat value) {
+      functions->SetStaticFloatField(this,clazz,fieldID,value);
+    }
+    void SetStaticDoubleField(jclass clazz, jfieldID fieldID,
+			jdouble value) {
+      functions->SetStaticDoubleField(this,clazz,fieldID,value);
+    }
+
+    jstring NewString(const jchar *unicode, jsize len) {
+        return functions->NewString(this,unicode,len);
+    }
+    jsize GetStringLength(jstring str) {
+        return functions->GetStringLength(this,str);
+    }
+    const jchar *GetStringChars(jstring str, jboolean *isCopy) {
+        return functions->GetStringChars(this,str,isCopy);
+    }
+    void ReleaseStringChars(jstring str, const jchar *chars) {
+        functions->ReleaseStringChars(this,str,chars);
+    }
+
+    jstring NewStringUTF(const char *utf) {
+        return functions->NewStringUTF(this,utf);
+    }
+    jsize GetStringUTFLength(jstring str) {
+        return functions->GetStringUTFLength(this,str);
+    }
+    const char* GetStringUTFChars(jstring str, jboolean *isCopy) {
+        return functions->GetStringUTFChars(this,str,isCopy);
+    }
+    void ReleaseStringUTFChars(jstring str, const char* chars) {
+        functions->ReleaseStringUTFChars(this,str,chars);
+    }
+
+    jsize GetArrayLength(jarray array) {
+        return functions->GetArrayLength(this,array);
+    }
+
+    jobjectArray NewObjectArray(jsize len, jclass clazz,
+				jobject init) {
+        return functions->NewObjectArray(this,len,clazz,init);
+    }
+    jobject GetObjectArrayElement(jobjectArray array, jsize index) {
+        return functions->GetObjectArrayElement(this,array,index);
+    }
+    void SetObjectArrayElement(jobjectArray array, jsize index,
+			       jobject val) {
+        functions->SetObjectArrayElement(this,array,index,val);
+    }
+
+    jbooleanArray NewBooleanArray(jsize len) {
+        return functions->NewBooleanArray(this,len);
+    }
+    jbyteArray NewByteArray(jsize len) {
+        return functions->NewByteArray(this,len);
+    }
+    jcharArray NewCharArray(jsize len) {
+        return functions->NewCharArray(this,len);
+    }
+    jshortArray NewShortArray(jsize len) {
+        return functions->NewShortArray(this,len);
+    }
+    jintArray NewIntArray(jsize len) {
+        return functions->NewIntArray(this,len);
+    }
+    jlongArray NewLongArray(jsize len) {
+        return functions->NewLongArray(this,len);
+    }
+    jfloatArray NewFloatArray(jsize len) {
+        return functions->NewFloatArray(this,len);
+    }
+    jdoubleArray NewDoubleArray(jsize len) {
+        return functions->NewDoubleArray(this,len);
+    }
+
+    jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) {
+        return functions->GetBooleanArrayElements(this,array,isCopy);
+    }
+    jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) {
+        return functions->GetByteArrayElements(this,array,isCopy);
+    }
+    jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) {
+        return functions->GetCharArrayElements(this,array,isCopy);
+    }
+    jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) {
+        return functions->GetShortArrayElements(this,array,isCopy);
+    }
+    jint * GetIntArrayElements(jintArray array, jboolean *isCopy) {
+        return functions->GetIntArrayElements(this,array,isCopy);
+    }
+    jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) {
+        return functions->GetLongArrayElements(this,array,isCopy);
+    }
+    jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) {
+        return functions->GetFloatArrayElements(this,array,isCopy);
+    }
+    jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) {
+        return functions->GetDoubleArrayElements(this,array,isCopy);
+    }
+
+    void ReleaseBooleanArrayElements(jbooleanArray array,
+				     jboolean *elems,
+				     jint mode) {
+        functions->ReleaseBooleanArrayElements(this,array,elems,mode);
+    }
+    void ReleaseByteArrayElements(jbyteArray array,
+				  jbyte *elems,
+				  jint mode) {
+        functions->ReleaseByteArrayElements(this,array,elems,mode);
+    }
+    void ReleaseCharArrayElements(jcharArray array,
+				  jchar *elems,
+				  jint mode) {
+        functions->ReleaseCharArrayElements(this,array,elems,mode);
+    }
+    void ReleaseShortArrayElements(jshortArray array,
+				   jshort *elems,
+				   jint mode) {
+        functions->ReleaseShortArrayElements(this,array,elems,mode);
+    }
+    void ReleaseIntArrayElements(jintArray array,
+				 jint *elems,
+				 jint mode) {
+        functions->ReleaseIntArrayElements(this,array,elems,mode);
+    }
+    void ReleaseLongArrayElements(jlongArray array,
+				  jlong *elems,
+				  jint mode) {
+        functions->ReleaseLongArrayElements(this,array,elems,mode);
+    }
+    void ReleaseFloatArrayElements(jfloatArray array,
+				   jfloat *elems,
+				   jint mode) {
+        functions->ReleaseFloatArrayElements(this,array,elems,mode);
+    }
+    void ReleaseDoubleArrayElements(jdoubleArray array,
+				    jdouble *elems,
+				    jint mode) {
+        functions->ReleaseDoubleArrayElements(this,array,elems,mode);
+    }
+
+    void GetBooleanArrayRegion(jbooleanArray array,
+			       jsize start, jsize len, jboolean *buf) {
+        functions->GetBooleanArrayRegion(this,array,start,len,buf);
+    }
+    void GetByteArrayRegion(jbyteArray array,
+			    jsize start, jsize len, jbyte *buf) {
+        functions->GetByteArrayRegion(this,array,start,len,buf);
+    }
+    void GetCharArrayRegion(jcharArray array,
+			    jsize start, jsize len, jchar *buf) {
+        functions->GetCharArrayRegion(this,array,start,len,buf);
+    }
+    void GetShortArrayRegion(jshortArray array,
+			     jsize start, jsize len, jshort *buf) {
+        functions->GetShortArrayRegion(this,array,start,len,buf);
+    }
+    void GetIntArrayRegion(jintArray array,
+			   jsize start, jsize len, jint *buf) {
+        functions->GetIntArrayRegion(this,array,start,len,buf);
+    }
+    void GetLongArrayRegion(jlongArray array,
+			    jsize start, jsize len, jlong *buf) {
+        functions->GetLongArrayRegion(this,array,start,len,buf);
+    }
+    void GetFloatArrayRegion(jfloatArray array,
+			     jsize start, jsize len, jfloat *buf) {
+        functions->GetFloatArrayRegion(this,array,start,len,buf);
+    }
+    void GetDoubleArrayRegion(jdoubleArray array,
+			      jsize start, jsize len, jdouble *buf) {
+        functions->GetDoubleArrayRegion(this,array,start,len,buf);
+    }
+
+    void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len,
+			       const jboolean *buf) {
+        functions->SetBooleanArrayRegion(this,array,start,len,buf);
+    }
+    void SetByteArrayRegion(jbyteArray array, jsize start, jsize len,
+			    const jbyte *buf) {
+        functions->SetByteArrayRegion(this,array,start,len,buf);
+    }
+    void SetCharArrayRegion(jcharArray array, jsize start, jsize len,
+			    const jchar *buf) {
+        functions->SetCharArrayRegion(this,array,start,len,buf);
+    }
+    void SetShortArrayRegion(jshortArray array, jsize start, jsize len,
+			     const jshort *buf) {
+        functions->SetShortArrayRegion(this,array,start,len,buf);
+    }
+    void SetIntArrayRegion(jintArray array, jsize start, jsize len,
+			   const jint *buf) {
+        functions->SetIntArrayRegion(this,array,start,len,buf);
+    }
+    void SetLongArrayRegion(jlongArray array, jsize start, jsize len,
+			    const jlong *buf) {
+        functions->SetLongArrayRegion(this,array,start,len,buf);
+    }
+    void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len,
+			     const jfloat *buf) {
+        functions->SetFloatArrayRegion(this,array,start,len,buf);
+    }
+    void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len,
+			      const jdouble *buf) {
+        functions->SetDoubleArrayRegion(this,array,start,len,buf);
+    }
+
+    jint RegisterNatives(jclass clazz, const JNINativeMethod *methods,
+			 jint nMethods) {
+        return functions->RegisterNatives(this,clazz,methods,nMethods);
+    }
+    jint UnregisterNatives(jclass clazz) {
+        return functions->UnregisterNatives(this,clazz);
+    }
+
+    jint MonitorEnter(jobject obj) {
+        return functions->MonitorEnter(this,obj);
+    }
+    jint MonitorExit(jobject obj) {
+        return functions->MonitorExit(this,obj);
+    }
+
+    jint GetJavaVM(JavaVM **vm) {
+        return functions->GetJavaVM(this,vm);
+    }
+
+    void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) {
+        functions->GetStringRegion(this,str,start,len,buf);
+    }
+    void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) {
+        functions->GetStringUTFRegion(this,str,start,len,buf);
+    }
+
+    void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) {
+        return functions->GetPrimitiveArrayCritical(this,array,isCopy);
+    }
+    void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) {
+        functions->ReleasePrimitiveArrayCritical(this,array,carray,mode);
+    }
+
+    const jchar * GetStringCritical(jstring string, jboolean *isCopy) {
+        return functions->GetStringCritical(this,string,isCopy);
+    }
+    void ReleaseStringCritical(jstring string, const jchar *cstring) {
+        functions->ReleaseStringCritical(this,string,cstring);
+    }
+
+    jweak NewWeakGlobalRef(jobject obj) {
+        return functions->NewWeakGlobalRef(this,obj);
+    }
+    void DeleteWeakGlobalRef(jweak ref) {
+        functions->DeleteWeakGlobalRef(this,ref);
+    }
+
+    jboolean ExceptionCheck() {
+	return functions->ExceptionCheck(this);
+    }
+
+    jobject NewDirectByteBuffer(void* address, jlong capacity) {
+        return functions->NewDirectByteBuffer(this, address, capacity);
+    }
+    void* GetDirectBufferAddress(jobject buf) {
+        return functions->GetDirectBufferAddress(this, buf);
+    }
+    jlong GetDirectBufferCapacity(jobject buf) {
+        return functions->GetDirectBufferCapacity(this, buf);
+    }
+
+#endif /* __cplusplus */
+};
+
+typedef struct JavaVMOption {
+    char *optionString;
+    void *extraInfo;
+} JavaVMOption;
+
+typedef struct JavaVMInitArgs {
+    jint version;
+
+    jint nOptions;
+    JavaVMOption *options;
+    jboolean ignoreUnrecognized;
+} JavaVMInitArgs;
+
+typedef struct JavaVMAttachArgs {
+    jint version;
+
+    char *name;
+    jobject group;
+} JavaVMAttachArgs;
+
+/* These structures will be VM-specific. */
+
+typedef struct JDK1_1InitArgs {
+    jint version;
+
+    char **properties;
+    jint checkSource;
+    jint nativeStackSize;
+    jint javaStackSize;
+    jint minHeapSize;
+    jint maxHeapSize;
+    jint verifyMode;
+    char *classpath;
+
+    jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args);
+    void (JNICALL *exit)(jint code);
+    void (JNICALL *abort)(void);
+
+    jint enableClassGC;
+    jint enableVerboseGC;
+    jint disableAsyncGC;
+    jint verbose;
+    jboolean debugging;
+    jint debugPort;
+} JDK1_1InitArgs;
+
+typedef struct JDK1_1AttachArgs {
+    void * __padding; /* C compilers don't allow empty structures. */
+} JDK1_1AttachArgs;
+
+#define JDK1_2
+#define JDK1_4
+
+/* End VM-specific. */
+
+struct JNIInvokeInterface_ {
+    void *reserved0;
+    void *reserved1;
+    void *reserved2;
+
+    jint (JNICALL *DestroyJavaVM)(JavaVM *vm);
+
+    jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args);
+
+    jint (JNICALL *DetachCurrentThread)(JavaVM *vm);
+
+    jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version);
+
+    jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args);
+};
+
+struct JavaVM_ {
+    const struct JNIInvokeInterface_ *functions;
+#ifdef __cplusplus
+
+    jint DestroyJavaVM() {
+        return functions->DestroyJavaVM(this);
+    }
+    jint AttachCurrentThread(void **penv, void *args) {
+        return functions->AttachCurrentThread(this, penv, args);
+    }
+    jint DetachCurrentThread() {
+        return functions->DetachCurrentThread(this);
+    }
+
+    jint GetEnv(void **penv, jint version) {
+        return functions->GetEnv(this, penv, version);
+    }
+    jint AttachCurrentThreadAsDaemon(void **penv, void *args) {
+        return functions->AttachCurrentThreadAsDaemon(this, penv, args);
+    }
+#endif
+};
+
+#ifdef _JNI_IMPLEMENTATION_
+#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT
+#else
+#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT
+#endif
+_JNI_IMPORT_OR_EXPORT_ jint JNICALL
+JNI_GetDefaultJavaVMInitArgs(void *args);
+
+_JNI_IMPORT_OR_EXPORT_ jint JNICALL
+JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args);
+
+_JNI_IMPORT_OR_EXPORT_ jint JNICALL
+JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);
+
+/* Defined by native libraries. */
+JNIEXPORT jint JNICALL
+JNI_OnLoad(JavaVM *vm, void *reserved);
+
+JNIEXPORT void JNICALL
+JNI_OnUnload(JavaVM *vm, void *reserved);
+
+#define JNI_VERSION_1_1 0x00010001
+#define JNI_VERSION_1_2 0x00010002
+#define JNI_VERSION_1_4 0x00010004
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* __cplusplus */
+
+#endif /* !_JAVASOFT_JNI_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/jdk1.5.0_10/include/jvmdi.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,1012 @@
+/*
+ * @(#)jvmdi.h	1.48 03/12/19
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/*
+ *   Java Virtual Machine Debug Interface
+ *
+ *   Defines debugging functionality that a VM should provide.  
+ *
+ *   Should not overlap functionality in jni.h
+ */
+
+#ifndef _JAVASOFT_JVMDI_H_
+#define _JAVASOFT_JVMDI_H_
+
+#include "jni.h"
+
+#define JVMDI_VERSION_1    0x20010000
+#define JVMDI_VERSION_1_1  0x20010001
+#define JVMDI_VERSION_1_2  0x20010002
+#define JVMDI_VERSION_1_3  0x20010003
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef jobject jthread;
+
+typedef jobject jthreadGroup;
+
+struct _jframeID;
+typedef struct _jframeID *jframeID;
+
+  /* specifies program location "pc" - often byte code index */
+typedef jlong jlocation;
+
+  /* The jmethodID for methods that have been replaced */
+  /* via RedefineClasses - used when the implementation */
+  /* does not wish to retain replaced jmethodIDs */
+#define OBSOLETE_METHOD_ID ((jmethodID)(NULL))
+
+  /*
+   *  Errors
+   */
+
+typedef jint jvmdiError;
+
+  /* no error */
+#define JVMDI_ERROR_NONE                 ((jvmdiError)0)
+
+  /*
+   * Errors on thread operations
+   */
+
+  /* invalid thread */
+#define JVMDI_ERROR_INVALID_THREAD       ((jvmdiError)10)
+  /* invalid thread group */
+#define JVMDI_ERROR_INVALID_THREAD_GROUP ((jvmdiError)11)
+  /* invalid thread priority */
+#define JVMDI_ERROR_INVALID_PRIORITY     ((jvmdiError)12)
+  /* thread not suspended */
+#define JVMDI_ERROR_THREAD_NOT_SUSPENDED ((jvmdiError)13)
+  /* thread already suspended */
+#define JVMDI_ERROR_THREAD_SUSPENDED     ((jvmdiError)14)
+
+  /* 
+   * Errors on object and class operations
+   */
+
+  /* invalid object (implementation not required to gracefully catch) */
+#define JVMDI_ERROR_INVALID_OBJECT       ((jvmdiError)20)
+  /* invalid class (implementation not required to gracefully catch) */
+#define JVMDI_ERROR_INVALID_CLASS        ((jvmdiError)21)
+  /* class not prepared */
+#define JVMDI_ERROR_CLASS_NOT_PREPARED   ((jvmdiError)22)
+  /* invalid methodID (implementation not required to gracefully catch) */
+#define JVMDI_ERROR_INVALID_METHODID     ((jvmdiError)23)
+  /* invalid location */
+#define JVMDI_ERROR_INVALID_LOCATION     ((jvmdiError)24)
+  /* invalid fieldID (implementation not required to gracefully catch) */
+#define JVMDI_ERROR_INVALID_FIELDID      ((jvmdiError)25)
+
+  /*
+   * Errors on frame operations
+   */
+
+  /* invalid frameID (implementation not required to gracefully catch) */
+#define JVMDI_ERROR_INVALID_FRAMEID      ((jvmdiError)30)
+  /* there are no more frames on the stack */
+#define JVMDI_ERROR_NO_MORE_FRAMES       ((jvmdiError)31)
+  /* operation cannot be performed on this frame */
+#define JVMDI_ERROR_OPAQUE_FRAME         ((jvmdiError)32)
+  /* operation can only be performed on current frame */
+#define JVMDI_ERROR_NOT_CURRENT_FRAME    ((jvmdiError)33)
+  /* type mismatch (implementation not required to gracefully catch) */
+#define JVMDI_ERROR_TYPE_MISMATCH        ((jvmdiError)34)
+  /* invalid slot */
+#define JVMDI_ERROR_INVALID_SLOT         ((jvmdiError)35)
+
+  /*
+   * Errors on set/clear/find operations
+   */
+
+  /* item already present */
+#define JVMDI_ERROR_DUPLICATE            ((jvmdiError)40)
+  /* item not found */
+#define JVMDI_ERROR_NOT_FOUND            ((jvmdiError)41)
+
+  /*
+   * Errors on monitor operations
+   */
+
+  /* invalid monitor */
+#define JVMDI_ERROR_INVALID_MONITOR      ((jvmdiError)50)
+  /* wait, notify, notify all tried without entering monitor  */
+#define JVMDI_ERROR_NOT_MONITOR_OWNER    ((jvmdiError)51)
+  /* waiting thread interrupted */
+#define JVMDI_ERROR_INTERRUPT            ((jvmdiError)52)
+  
+  /*
+   * Class redefinition / operand stack errors
+   */
+
+  /* The equivalent of ClassFormatError */
+#define JVMDI_ERROR_INVALID_CLASS_FORMAT          ((jvmdiError)60)
+  /* The equivalent of ClassCircularityError */
+#define JVMDI_ERROR_CIRCULAR_CLASS_DEFINITION     ((jvmdiError)61)
+  /* The class bytes fail verification */
+#define JVMDI_ERROR_FAILS_VERIFICATION            ((jvmdiError)62)
+  /* The new class version adds new methods */
+  /* and can_add_method is false */
+#define JVMDI_ERROR_ADD_METHOD_NOT_IMPLEMENTED    ((jvmdiError)63)
+  /* The new class version changes fields */ 
+  /* and can_unrestrictedly_redefine_classes is false */
+#define JVMDI_ERROR_SCHEMA_CHANGE_NOT_IMPLEMENTED ((jvmdiError)64)
+  /* bci/operand stack/local var combination is not verifiably */
+  /* type safe */
+#define JVMDI_ERROR_INVALID_TYPESTATE             ((jvmdiError)65)
+  /* A direct superclass is different for the new class */
+  /* version, or the set of directly implemented */
+  /* interfaces is different */
+  /* and can_unrestrictedly_redefine_classes is false */
+#define JVMDI_ERROR_HIERARCHY_CHANGE_NOT_IMPLEMENTED ((jvmdiError)66)
+  /* The new class version does not declare a method */
+  /* declared in the old class version */
+  /* and can_unrestrictedly_redefine_classes is false */
+#define JVMDI_ERROR_DELETE_METHOD_NOT_IMPLEMENTED ((jvmdiError)67)
+  /* A class file has a version number not supported */
+  /* by this VM. */
+#define JVMDI_ERROR_UNSUPPORTED_VERSION           ((jvmdiError)68)
+  /* The class name defined in the new class file is */
+  /* different from the name in the old class object */
+#define JVMDI_ERROR_NAMES_DONT_MATCH              ((jvmdiError)69)
+  /* The new class version has different modifiers and */
+  /* can_unrestrictedly_redefine_classes is false */
+#define JVMDI_ERROR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED   ((jvmdiError)70)
+  /* A method in the new class version has different modifiers */
+  /* than its counterpart in the old class version */
+  /* and can_unrestrictedly_redefine_classes is false */
+#define JVMDI_ERROR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED  ((jvmdiError)71)
+
+  /*
+   * Miscellaneous errors
+   */
+
+  /* Not yet implemented */
+#define JVMDI_ERROR_NOT_IMPLEMENTED      ((jvmdiError)99)
+  /* null pointer */
+#define JVMDI_ERROR_NULL_POINTER         ((jvmdiError)100)
+  /* information is absent */
+#define JVMDI_ERROR_ABSENT_INFORMATION   ((jvmdiError)101)
+  /* invalid event type  */
+#define JVMDI_ERROR_INVALID_EVENT_TYPE   ((jvmdiError)102)
+  /* invalid argument  */
+#define JVMDI_ERROR_ILLEGAL_ARGUMENT     ((jvmdiError)103)
+
+  /*
+   * Universal errors. These errors may be returned by
+   * any JVMDI function, not just the ones for which they are listed
+   * below.
+   */
+
+  /* no more memory available for allocation */
+#define JVMDI_ERROR_OUT_OF_MEMORY        ((jvmdiError)110)
+  /* debugging has not been enabled in this VM */
+#define JVMDI_ERROR_ACCESS_DENIED        ((jvmdiError)111)
+  /* VM is dead (implementation not required to gracefully catch) */
+#define JVMDI_ERROR_VM_DEAD              ((jvmdiError)112)
+  /* internal error  */
+#define JVMDI_ERROR_INTERNAL             ((jvmdiError)113)
+  /* Thread calling JVMDI function not attached to VM */
+#define JVMDI_ERROR_UNATTACHED_THREAD    ((jvmdiError)115)
+
+
+  /*
+   *  Threads
+   */
+
+  /* Thread status is unknown */
+#define JVMDI_THREAD_STATUS_UNKNOWN      ((jint)-1)
+  /* Thread is waiting to die */
+#define JVMDI_THREAD_STATUS_ZOMBIE       ((jint)0)
+  /* Thread is runnable */
+#define JVMDI_THREAD_STATUS_RUNNING      ((jint)1)
+  /* Thread is sleeping - Thread.sleep() or JVM_Sleep() was called */
+#define JVMDI_THREAD_STATUS_SLEEPING     ((jint)2)
+  /* Thread is waiting on a java monitor */
+#define JVMDI_THREAD_STATUS_MONITOR      ((jint)3)
+  /* Thread is waiting - Thread.wait() or JVM_MonitorWait() was called */
+#define JVMDI_THREAD_STATUS_WAIT         ((jint)4)
+
+  /* Thread is suspended - Thread.suspend(), JVM_Suspend() or
+   * JVMDI_Suspend was called */
+#define JVMDI_SUSPEND_STATUS_SUSPENDED   ((jint)0x1)
+  /* Thread is at a breakpoint */
+#define JVMDI_SUSPEND_STATUS_BREAK       ((jint)0x2)
+
+
+  /* Thread priority constants */
+#define JVMDI_THREAD_MIN_PRIORITY   ((jint)1)
+#define JVMDI_THREAD_NORM_PRIORITY  ((jint)5)
+#define JVMDI_THREAD_MAX_PRIORITY   ((jint)10)
+
+typedef struct {
+    char *name;
+    jint  priority;
+    jboolean is_daemon;
+    jthreadGroup thread_group;
+    jobject context_class_loader;
+} JVMDI_thread_info;
+
+typedef struct {
+    jthreadGroup parent;
+    char *name;
+    jint  max_priority;
+    jboolean is_daemon;
+} JVMDI_thread_group_info;
+
+#define JVMDI_DISABLE ((jint) 0)
+#define JVMDI_ENABLE  ((jint) 1)
+
+/*
+ * Initial function for debug threads created through JVMDI
+ */
+typedef void (*JVMDI_StartFunction)(void *);
+
+/*
+ * Type for debug monitors created through JVMDI
+ */
+typedef void *JVMDI_RawMonitor;
+
+#define JVMDI_MONITOR_WAIT_FOREVER ((jlong)(-1))
+
+/*
+ * Monitor information
+ */
+typedef struct {
+    jthread owner;
+    jint entry_count;
+    jint waiter_count;
+    jthread *waiters;
+} JVMDI_monitor_info;
+
+typedef struct {
+    jint owned_monitor_count;
+    jobject *owned_monitors;
+} JVMDI_owned_monitor_info;
+
+  /*
+   *  Events
+   */
+
+    /* kind = JVMDI_EVENT_SINGLE_STEP */
+    typedef struct { 
+        jthread thread;
+        jclass clazz;
+        jmethodID method;
+        jlocation location;
+    } JVMDI_single_step_event_data;
+			
+    /* kind = JVMDI_EVENT_BREAKPOINT */
+    typedef struct { 
+        jthread thread;
+        jclass clazz;
+        jmethodID method;
+        jlocation location;
+    } JVMDI_breakpoint_event_data;
+    
+    /* kind = JVMDI_EVENT_FIELD_ACCESS */
+    typedef struct { 
+        jthread thread;
+        jclass clazz;
+        jmethodID method;
+        jlocation location;
+        jclass field_clazz;
+        jobject object;
+        jfieldID field;
+    } JVMDI_field_access_event_data;
+    
+    /* kind = JVMDI_EVENT_FIELD_MODIFICATION */
+    typedef struct { 
+        jthread thread;
+        jclass clazz;
+        jmethodID method;
+        jlocation location;
+        jclass field_clazz;
+        jobject object;
+        jfieldID field;
+        char signature_type;
+        jvalue new_value;
+    } JVMDI_field_modification_event_data;
+    
+    /* kind = JVMDI_EVENT_FRAME_POP */
+    /* kind = JVMDI_EVENT_METHOD_ENTRY */
+    /* kind = JVMDI_EVENT_METHOD_EXIT */
+    typedef struct { 
+        jthread thread;
+        jclass clazz;
+        jmethodID method;
+        jframeID frame;
+    } JVMDI_frame_event_data;
+    
+    /* kind = JVMDI_EVENT_EXCEPTION */
+    typedef struct { 
+        jthread thread;
+        jclass clazz;
+        jmethodID method;
+        jlocation location;
+        jobject exception;
+        jclass catch_clazz;
+        jmethodID catch_method;
+        jlocation catch_location;
+    } JVMDI_exception_event_data;
+    
+    /* kind = JVMDI_EVENT_EXCEPTION_CATCH */
+    typedef struct { 
+        jthread thread;
+        jclass clazz;
+        jmethodID method;
+        jlocation location;
+        jobject exception;
+    } JVMDI_exception_catch_event_data;
+    
+    /* kind = JVMDI_EVENT_USER_DEFINED */
+    typedef struct { 
+        jobject object;
+        jint key;
+    } JVMDI_user_event_data;
+    
+    /* kind = JVMDI_EVENT_THREAD_END or */
+    /* JVMDI_EVENT_THREAD_START */
+    typedef struct { 
+        jthread thread;
+    } JVMDI_thread_change_event_data;
+    
+    /* kind = JVMDI_EVENT_CLASS_LOAD, */
+    /* JVMDI_EVENT_CLASS_UNLOAD, or */
+    /* JVMDI_EVENT_CLASS_PREPARE */
+    typedef struct { 
+        jthread thread;
+        jclass clazz;
+    } JVMDI_class_event_data;
+    
+/* This stucture passes information about the event.
+ * location is the index of the last instruction executed. 
+ */
+typedef struct {
+    jint kind;		/* the discriminant */
+
+    union {
+	/* kind = JVMDI_EVENT_SINGLE_STEP */
+        JVMDI_single_step_event_data single_step;
+			
+        /* kind = JVMDI_EVENT_BREAKPOINT */
+        JVMDI_breakpoint_event_data breakpoint;
+
+        /* kind = JVMDI_EVENT_FRAME_POP */
+        /* kind = JVMDI_EVENT_METHOD_ENTRY */
+        /* kind = JVMDI_EVENT_METHOD_EXIT */
+        JVMDI_frame_event_data frame;
+
+        /* kind = JVMDI_EVENT_FIELD_ACCESS */
+        JVMDI_field_access_event_data field_access;
+
+        /* kind = JVMDI_EVENT_FIELD_MODIFICATION */
+        JVMDI_field_modification_event_data field_modification;
+
+        /* kind = JVMDI_EVENT_EXCEPTION */
+        JVMDI_exception_event_data exception;
+
+        /* kind = JVMDI_EVENT_EXCEPTION_CATCH */
+        JVMDI_exception_catch_event_data exception_catch;
+
+        /* kind = JVMDI_EVENT_USER_DEFINED */
+        JVMDI_user_event_data user;
+			
+        /* kind = JVMDI_EVENT_THREAD_END or */
+        /* JVMDI_EVENT_THREAD_START */
+        JVMDI_thread_change_event_data thread_change;
+			
+        /* kind = JVMDI_EVENT_CLASS_LOAD, */
+        /* JVMDI_EVENT_CLASS_UNLOAD, or */
+        /* JVMDI_EVENT_CLASS_PREPARE */
+        JVMDI_class_event_data class_event;
+			
+        /* kind = JVMDI_EVENT_VM_DEATH, JVMDI_EVENT_VM_INIT */
+        /* no additional fields */		
+    } u;
+} JVMDI_Event;
+
+	/*** event kinds ***/
+#define JVMDI_EVENT_SINGLE_STEP   ((jint)1)
+#define JVMDI_EVENT_BREAKPOINT    ((jint)2)
+#define JVMDI_EVENT_FRAME_POP     ((jint)3)
+#define JVMDI_EVENT_EXCEPTION     ((jint)4)
+#define JVMDI_EVENT_USER_DEFINED  ((jint)5)
+#define JVMDI_EVENT_THREAD_START  ((jint)6)
+#define JVMDI_EVENT_THREAD_END    ((jint)7)
+#define JVMDI_EVENT_CLASS_PREPARE ((jint)8)
+#define JVMDI_EVENT_CLASS_UNLOAD  ((jint)9)
+#define JVMDI_EVENT_CLASS_LOAD    ((jint)10)
+#define JVMDI_EVENT_FIELD_ACCESS       ((jint)20)
+#define JVMDI_EVENT_FIELD_MODIFICATION ((jint)21)
+#define JVMDI_EVENT_EXCEPTION_CATCH    ((jint)30)
+#define JVMDI_EVENT_METHOD_ENTRY       ((jint)40)
+#define JVMDI_EVENT_METHOD_EXIT        ((jint)41)
+#define JVMDI_EVENT_VM_INIT            ((jint)90)
+#define JVMDI_EVENT_VM_DEATH           ((jint)99)
+
+#define JVMDI_MAX_EVENT_TYPE_VAL       ((jint)99)
+
+
+
+/* event handler hook */
+typedef void (*JVMDI_EventHook)(JNIEnv *env, JVMDI_Event *event);
+
+typedef jvmdiError (*JVMDI_AllocHook) (jlong size, jbyte** memPtr);
+typedef jvmdiError (*JVMDI_DeallocHook) (jbyte* buffer);
+
+/*
+ * Class states used in JVMDI_GetClassStatus
+ */
+#define JVMDI_CLASS_STATUS_VERIFIED          ((jint)0x01)
+#define JVMDI_CLASS_STATUS_PREPARED          ((jint)0x02)
+#define JVMDI_CLASS_STATUS_INITIALIZED       ((jint)0x04)
+ /* Error prevents initialization */
+#define JVMDI_CLASS_STATUS_ERROR             ((jint)0x08) 
+
+/* structure for returning line number information 
+ */
+typedef struct {
+    jlocation start_location;
+    jint line_number;
+} JVMDI_line_number_entry;
+
+
+/* structure for returning local variable information 
+ */
+typedef struct {
+    jlocation start_location;   /* variable valid start_location */
+    jint length;                /* upto start_location+length */ 
+    char *name;                 /* name in UTF8 */
+    char *signature;            /* type signature in UTF8 */
+    jint slot;                  /* variable slot, see JVMDI_GetLocal*()  */
+} JVMDI_local_variable_entry;
+
+/* structure for returning exception handler information 
+ */
+typedef struct {
+    jlocation start_location;
+    jlocation end_location;
+    jlocation handler_location;
+    jclass exception;           /* if null, all exceptions */
+} JVMDI_exception_handler_entry;
+
+#define JVMDI_OPERAND_TYPE_REFERENCE      ((jint)1)
+#define JVMDI_OPERAND_TYPE_INT            ((jint)2)
+#define JVMDI_OPERAND_TYPE_FLOAT          ((jint)3)
+#define JVMDI_OPERAND_TYPE_LONG0          ((jint)4) /* least sig. 32 bits */
+#define JVMDI_OPERAND_TYPE_LONG1          ((jint)5) /* most sig. 32 bits */
+#define JVMDI_OPERAND_TYPE_DOUBLE0        ((jint)6) /* least sig. 32 bits */
+#define JVMDI_OPERAND_TYPE_DOUBLE1        ((jint)7) /* most sig. 32 bits */
+#define JVMDI_OPERAND_TYPE_RETURN_ADDRESS ((jint)8)
+
+typedef struct {
+    jint word;                 /* 32 bit operand stack quantities */
+    jint type;                 /* type encoding of the operand word */
+                               /* one of JVMDI_OPERAND_TYPE_* */
+} JVMDI_operand_stack_element;
+
+typedef struct { 
+    jint instance_field_count; /* number of instance fields referencing obj */
+    struct JVMDI_instance_field {
+        jobject instance;      /* instance referencing obj */
+        jfieldID field;        /* field holding reference */
+    } *instance_fields;        /* instanceField_count of them */
+     
+    jint static_field_count;   /* number of static fields referencing obj */
+    struct JVMDI_static_field {
+        jclass clazz;          /* class referencing obj */
+        jfieldID static_field; /* field holding reference */
+    } *static_fields;          /* static_field_count of them */
+    
+    jint array_element_count;  /* number of array elements referencing obj */
+    struct JVMDI_array_element {
+        jobjectArray array;    /* array referencing obj */
+        jint index;            /* index holding reference */
+    } *array_elements;         /* array_element_count of them */
+    
+    jint frame_slot_count;     /* number of frame slots referencing obj */
+    struct JVMDI_frame_slot {
+        jthread thread;        /* thread of the frame */
+        jframeID frame;        /* frame referencing obj */
+        jint slot;             /* slot holding reference */
+    } *frame_slots;            /* frame_slot_count of them */
+} JVMDI_object_reference_info;
+
+/* structure for defining a class
+*/
+typedef struct {
+    jclass clazz;              /* Class object for this class */
+    jint class_byte_count;     /* number of bytes defining class (below) */
+    jbyte *class_bytes;        /* bytes defining class (in JVM spec */
+                               /* Class File Format) */
+} JVMDI_class_definition;
+
+  /* For backwards compatibility */
+#define can_change_schema can_unrestrictedly_redefine_classes
+
+typedef struct {
+    unsigned int can_watch_field_modification      : 1;
+    unsigned int can_watch_field_access            : 1;
+    unsigned int can_get_bytecodes                 : 1;
+    unsigned int can_get_synthetic_attribute       : 1;
+    unsigned int can_get_owned_monitor_info        : 1;
+    unsigned int can_get_current_contended_monitor : 1;
+    unsigned int can_get_monitor_info              : 1;
+    unsigned int can_get_heap_info                 : 1;
+    unsigned int can_get_operand_stack             : 1;
+    unsigned int can_set_operand_stack             : 1;
+    unsigned int can_pop_frame                     : 1;
+    unsigned int can_get_class_definition          : 1;
+    unsigned int can_redefine_classes              : 1; 
+    unsigned int can_add_method                    : 1;
+    unsigned int can_unrestrictedly_redefine_classes : 1;
+    unsigned int can_suspend_resume_thread_lists   : 1;
+} JVMDI_capabilities;
+
+typedef struct JVMDI_Interface_1_ {
+    jvmdiError (JNICALL *SetEventHook)
+      (JVMDI_EventHook hook);
+    jvmdiError (JNICALL *SetEventNotificationMode)
+      (jint mode, jint eventType, jthread thread, ...);
+
+    jvmdiError (JNICALL *GetThreadStatus)
+      (jthread thread,
+       jint *threadStatusPtr, jint *suspendStatusPtr);
+    jvmdiError (JNICALL *GetAllThreads)
+      (jint *threadsCountPtr, jthread **threadsPtr);
+    jvmdiError (JNICALL *SuspendThread)
+      (jthread thread); 
+    jvmdiError (JNICALL *ResumeThread)
+      (jthread thread);
+    jvmdiError (JNICALL *StopThread)
+      (jthread thread, jobject exception);
+    jvmdiError (JNICALL *InterruptThread)
+      (jthread thread);
+    jvmdiError (JNICALL *GetThreadInfo)
+      (jthread thread, JVMDI_thread_info *infoPtr);
+    jvmdiError (JNICALL *GetOwnedMonitorInfo)
+      (jthread thread, JVMDI_owned_monitor_info *infoPtr);
+    jvmdiError (JNICALL *GetCurrentContendedMonitor)
+      (jthread thread, jobject *monitor);
+    jvmdiError (JNICALL *RunDebugThread)
+      (jthread thread, JVMDI_StartFunction proc, void *arg,
+       int priority);
+
+    jvmdiError (JNICALL *GetTopThreadGroups)
+      (jint *groupCountPtr, jthreadGroup **groupsPtr);
+    jvmdiError (JNICALL *GetThreadGroupInfo)
+      (jthreadGroup group, JVMDI_thread_group_info *infoPtr);
+    jvmdiError (JNICALL *GetThreadGroupChildren)
+      (jthreadGroup group, 
+       jint *threadCountPtr, jthread **threadsPtr,
+       jint *groupCountPtr, jthreadGroup **groupsPtr);
+
+    jvmdiError (JNICALL *GetFrameCount)
+      (jthread thread, jint *countPtr);
+    jvmdiError (JNICALL *GetCurrentFrame)
+      (jthread thread, jframeID *framePtr);
+    jvmdiError (JNICALL *GetCallerFrame)
+      (jframeID called, jframeID *framePtr);
+    jvmdiError (JNICALL *GetFrameLocation)
+      (jframeID frame, jclass *classPtr, jmethodID *methodPtr,
+       jlocation *locationPtr);
+    jvmdiError (JNICALL *NotifyFramePop)
+      (jframeID frame); 
+    jvmdiError (JNICALL *GetLocalObject)
+      (jframeID frame, jint slot, jobject *valuePtr);
+    jvmdiError (JNICALL *GetLocalInt)
+      (jframeID frame, jint slot, jint *valuePtr);
+    jvmdiError (JNICALL *GetLocalLong)
+      (jframeID frame, jint slot, jlong *valuePtr);
+    jvmdiError (JNICALL *GetLocalFloat)
+      (jframeID frame, jint slot, jfloat *valuePtr);
+    jvmdiError (JNICALL *GetLocalDouble)
+      (jframeID frame, jint slot, jdouble *valuePtr);
+    jvmdiError (JNICALL *SetLocalObject)
+      (jframeID frame, jint slot, jobject value);
+    jvmdiError (JNICALL *SetLocalInt)
+      (jframeID frame, jint slot, jint value);
+    jvmdiError (JNICALL *SetLocalLong)
+      (jframeID frame, jint slot, jlong value);
+    jvmdiError (JNICALL *SetLocalFloat)
+      (jframeID frame, jint slot, jfloat value);
+    jvmdiError (JNICALL *SetLocalDouble)
+      (jframeID frame, jint slot, jdouble value);
+
+    jvmdiError (JNICALL *CreateRawMonitor)
+      (char *name, JVMDI_RawMonitor *monitorPtr);
+    jvmdiError (JNICALL *DestroyRawMonitor)
+      (JVMDI_RawMonitor monitor);
+    jvmdiError (JNICALL *RawMonitorEnter)
+      (JVMDI_RawMonitor monitor);
+    jvmdiError (JNICALL *RawMonitorExit)
+      (JVMDI_RawMonitor monitor);
+    jvmdiError (JNICALL *RawMonitorWait)
+      (JVMDI_RawMonitor monitor, jlong millis);
+    jvmdiError (JNICALL *RawMonitorNotify)
+      (JVMDI_RawMonitor monitor);
+    jvmdiError (JNICALL *RawMonitorNotifyAll)
+      (JVMDI_RawMonitor monitor);
+
+    jvmdiError (JNICALL *SetBreakpoint)
+      (jclass clazz, jmethodID method, jlocation location);
+    jvmdiError (JNICALL *ClearBreakpoint)
+      (jclass clazz, jmethodID method, jlocation location);
+    jvmdiError (JNICALL *ClearAllBreakpoints)
+      ();
+
+    jvmdiError (JNICALL *SetFieldAccessWatch)
+      (jclass clazz, jfieldID field);
+    jvmdiError (JNICALL *ClearFieldAccessWatch)
+      (jclass clazz, jfieldID field);
+    jvmdiError (JNICALL *SetFieldModificationWatch)
+      (jclass clazz, jfieldID field);
+    jvmdiError (JNICALL *ClearFieldModificationWatch)
+      (jclass clazz, jfieldID field);
+
+    jvmdiError (JNICALL *SetAllocationHooks)
+      (JVMDI_AllocHook ahook, JVMDI_DeallocHook dhook);
+    jvmdiError (JNICALL *Allocate)
+      (jlong size, jbyte** memPtr);
+    jvmdiError (JNICALL *Deallocate)
+      (jbyte* mem);
+
+    jvmdiError (JNICALL *GetClassSignature)
+      (jclass clazz, char **sigPtr);
+    jvmdiError (JNICALL *GetClassStatus)
+      (jclass clazz, jint *statusPtr);
+    jvmdiError (JNICALL *GetSourceFileName)
+      (jclass clazz, char **sourceNamePtr);
+    jvmdiError (JNICALL *GetClassModifiers)
+      (jclass clazz, jint *modifiersPtr);
+    jvmdiError (JNICALL *GetClassMethods)
+      (jclass clazz, jint *methodCountPtr, jmethodID **methodsPtr);
+    jvmdiError (JNICALL *GetClassFields)
+       (jclass clazz, jint *fieldCountPtr, jfieldID **fieldsPtr);
+    jvmdiError (JNICALL *GetImplementedInterfaces)
+      (jclass clazz, jint *interfaceCountPtr, jclass **interfacesPtr);
+    jvmdiError (JNICALL *IsInterface)
+      (jclass clazz, jboolean *isInterfacePtr);
+    jvmdiError (JNICALL *IsArrayClass)
+      (jclass clazz, jboolean *isArrayClassPtr);
+    jvmdiError (JNICALL *GetClassLoader)
+      (jclass clazz, jobject *classloaderPtr);
+
+    jvmdiError (JNICALL *GetObjectHashCode)
+      (jobject object, jint *hashCodePtr);
+    jvmdiError (JNICALL *GetMonitorInfo)
+      (jobject object, JVMDI_monitor_info *infoPtr);
+
+    jvmdiError (JNICALL *GetFieldName)
+      (jclass clazz, jfieldID field, char **namePtr, char **signaturePtr);
+    jvmdiError (JNICALL *GetFieldDeclaringClass)
+      (jclass clazz, jfieldID field, jclass *declaringClassPtr);
+    jvmdiError (JNICALL *GetFieldModifiers)
+      (jclass clazz, jfieldID field, jint *modifiersPtr);
+    jvmdiError (JNICALL *IsFieldSynthetic)
+      (jclass clazz, jfieldID field, jboolean *isSyntheticPtr);
+
+    jvmdiError (JNICALL *GetMethodName)
+      (jclass clazz, jmethodID method, 
+       char **namePtr, char **signaturePtr);
+    jvmdiError (JNICALL *GetMethodDeclaringClass)
+      (jclass clazz, jmethodID method, jclass *declaringClassPtr);
+    jvmdiError (JNICALL *GetMethodModifiers)
+      (jclass clazz, jmethodID method, jint *modifiersPtr);
+    jvmdiError (JNICALL *GetMaxStack)
+      (jclass clazz, jmethodID method, jint *maxPtr);
+    jvmdiError (JNICALL *GetMaxLocals)
+      (jclass clazz, jmethodID method, jint *maxPtr);
+    jvmdiError (JNICALL *GetArgumentsSize)
+      (jclass clazz, jmethodID method, jint *sizePtr);
+    jvmdiError (JNICALL *GetLineNumberTable)
+      (jclass clazz, jmethodID method,
+       jint *entryCountPtr, JVMDI_line_number_entry **tablePtr);
+    jvmdiError (JNICALL *GetMethodLocation)
+      (jclass clazz, jmethodID method,
+       jlocation *startLocationPtr, jlocation *endLocationPtr);
+    jvmdiError (JNICALL *GetLocalVariableTable)
+      (jclass clazz, jmethodID method,
+       jint *entryCountPtr, JVMDI_local_variable_entry **tablePtr);
+    jvmdiError (JNICALL *GetExceptionHandlerTable)
+      (jclass clazz, jmethodID method,
+       jint *entryCountPtr, JVMDI_exception_handler_entry **tablePtr);
+    jvmdiError (JNICALL *GetThrownExceptions)
+      (jclass clazz, jmethodID method,
+       jint *exceptionCountPtr, jclass **exceptionsPtr);
+    jvmdiError (JNICALL *GetBytecodes)
+      (jclass clazz, jmethodID method,
+       jint *bytecodeCountPtr, jbyte **bytecodesPtr);
+    jvmdiError (JNICALL *IsMethodNative)
+      (jclass clazz, jmethodID method, jboolean *isNativePtr);
+    jvmdiError (JNICALL *IsMethodSynthetic)
+      (jclass clazz, jmethodID method, jboolean *isSyntheticPtr);
+
+    jvmdiError (JNICALL *GetLoadedClasses)
+      (jint *classCountPtr, jclass **classesPtr);
+    jvmdiError (JNICALL *GetClassLoaderClasses)
+      (jobject initiatingLoader, jint *classesCountPtr, 
+       jclass **classesPtr);
+
+    jvmdiError (JNICALL *PopFrame)
+      (jthread thread);
+    jvmdiError (JNICALL *SetFrameLocation)
+      (jframeID frame, jlocation location);
+    jvmdiError (JNICALL *GetOperandStack)
+      (jframeID frame, jint *operandStackSizePtr, 
+       JVMDI_operand_stack_element **operandStackPtr);
+    jvmdiError (JNICALL *SetOperandStack)
+      (jframeID frame, jint operandStackSize, 
+       JVMDI_operand_stack_element *operandStack);
+    jvmdiError (JNICALL *AllInstances)
+      (jclass clazz, jint *instanceCountPtr, jobject **instancesPtr);
+    jvmdiError (JNICALL *References)
+      (jobject obj, JVMDI_object_reference_info *refs);
+    jvmdiError (JNICALL *GetClassDefinition)
+      (jclass clazz, JVMDI_class_definition *classDefPtr);
+    jvmdiError (JNICALL *RedefineClasses)
+      (jint classCount, JVMDI_class_definition *classDefs);
+
+    jvmdiError (JNICALL *GetVersionNumber)
+      (jint *versionPtr);
+    jvmdiError (JNICALL *GetCapabilities)
+      (JVMDI_capabilities *capabilitiesPtr);
+
+    jvmdiError (JNICALL *GetSourceDebugExtension)
+      (jclass clazz, char **sourceDebugExtension);
+    jvmdiError (JNICALL *IsMethodObsolete)
+      (jclass clazz, jmethodID method, jboolean *isObsoletePtr);
+
+    jvmdiError (JNICALL *SuspendThreadList)
+      (jint reqCount, jthread *reqList, jvmdiError *results); 
+    jvmdiError (JNICALL *ResumeThreadList)
+      (jint reqCount, jthread *reqList, jvmdiError *results); 
+} JVMDI_Interface_1;
+  
+#ifndef NO_JVMDI_MACROS
+
+#define JVMDI_ERROR_DUPLICATE_BREAKPOINT JVMDI_ERROR_DUPLICATE
+#define JVMDI_ERROR_NO_SUCH_BREAKPOINT   JVMDI_ERROR_NOT_FOUND
+#define JVMDI_ERROR_DUPLICATE_FRAME_POP  JVMDI_ERROR_DUPLICATE
+
+
+static JVMDI_Interface_1 *jvmdi_interface = NULL;
+static JavaVM *j_vm;
+
+#ifdef __cplusplus
+#define SetJVMDIfromJNIEnv(a_env) ( (jvmdi_interface == NULL)?  \
+              ((a_env)->GetJavaVM(&j_vm),  \
+               (j_vm)->GetEnv((void **)&jvmdi_interface,  \
+                               JVMDI_VERSION_1)):0)
+#else
+#define SetJVMDIfromJNIEnv(a_env) ( (jvmdi_interface == NULL)?  \
+              ((*a_env)->GetJavaVM(a_env, &j_vm), \
+               (*j_vm)->GetEnv(j_vm, (void **)&jvmdi_interface, \
+                               JVMDI_VERSION_1)):0)
+#endif
+
+#define JVMDI_SetEventHook(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->SetEventHook(a1) )
+#define JVMDI_GetThreadStatus(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetThreadStatus(a1, a2, a3) )
+#define JVMDI_GetAllThreads(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetAllThreads(a1, a2) )
+#define JVMDI_SuspendThread(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->SuspendThread(a1) )
+#define JVMDI_ResumeThread(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->ResumeThread(a1) )
+#define JVMDI_StopThread(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->StopThread(a1, a2) )
+#define JVMDI_InterruptThread(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->InterruptThread(a1) )
+#define JVMDI_SetSingleStep(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->SetEventNotificationMode( \
+                                       (a2) ? JVMDI_ENABLE : JVMDI_DISABLE, \
+                                        JVMDI_EVENT_SINGLE_STEP, a1) )
+#define JVMDI_GetThreadInfo(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetThreadInfo(a1, a2) )
+#define JVMDI_RunDebugThread(a_env, a1, a2, a3, a4) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->RunDebugThread(a1, a2, a3, a4) )
+#define JVMDI_GetTopThreadGroups(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetTopThreadGroups(a1, a2) )
+#define JVMDI_GetThreadGroupInfo(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetThreadGroupInfo(a1, a2) )
+#define JVMDI_GetThreadGroupChildren(a_env, a1, a2, a3, a4, a5) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetThreadGroupChildren(a1, a2, a3, a4, a5) )
+#define JVMDI_GetCurrentFrame(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetCurrentFrame(a1, a2) )
+#define JVMDI_GetCallerFrame(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetCallerFrame(a1, a2) )
+#define JVMDI_GetFrameLocation(a_env, a1, a2, a3, a4) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetFrameLocation(a1, a2, a3, a4) )
+#define JVMDI_NotifyFramePop(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->NotifyFramePop(a1) )
+#define JVMDI_GetLocalObject(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetLocalObject(a1, a2, a3) )
+#define JVMDI_GetLocalInt(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetLocalInt(a1, a2, a3) )
+#define JVMDI_GetLocalLong(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetLocalLong(a1, a2, a3) )
+#define JVMDI_GetLocalFloat(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetLocalFloat(a1, a2, a3) )
+#define JVMDI_GetLocalDouble(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetLocalDouble(a1, a2, a3) )
+#define JVMDI_SetLocalObject(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->SetLocalObject(a1, a2, a3) )
+#define JVMDI_SetLocalInt(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->SetLocalInt(a1, a2, a3) )
+#define JVMDI_SetLocalLong(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->SetLocalLong(a1, a2, a3) )
+#define JVMDI_SetLocalFloat(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->SetLocalFloat(a1, a2, a3) )
+#define JVMDI_SetLocalDouble(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->SetLocalDouble(a1, a2, a3) )
+#define JVMDI_CreateRawMonitor(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->CreateRawMonitor(a1, a2) )
+#define JVMDI_DestroyRawMonitor(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->DestroyRawMonitor(a1) )
+#define JVMDI_RawMonitorEnter(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->RawMonitorEnter(a1) )
+#define JVMDI_RawMonitorExit(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->RawMonitorExit(a1) )
+#define JVMDI_RawMonitorWait(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->RawMonitorWait(a1, a2) )
+#define JVMDI_RawMonitorNotify(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->RawMonitorNotify(a1) )
+#define JVMDI_RawMonitorNotifyAll(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->RawMonitorNotifyAll(a1) )
+#define JVMDI_SetBreakpoint(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->SetBreakpoint(a1, a2, a3) )
+#define JVMDI_ClearBreakpoint(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->ClearBreakpoint(a1, a2, a3) )
+#define JVMDI_ClearAllBreakpoints(a_env) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->ClearAllBreakpoints() )
+#define JVMDI_SetAllocationHooks(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->SetAllocationHooks(a1, a2) )
+#define JVMDI_Allocate(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->Allocate(a1, a2) )
+#define JVMDI_Deallocate(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->Deallocate(a1) )
+#define JVMDI_GetClassSignature(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetClassSignature(a1, a2) )
+#define JVMDI_GetClassStatus(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetClassStatus(a1, a2) )
+#define JVMDI_GetSourceFileName(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetSourceFileName(a1, a2) )
+#define JVMDI_GetClassModifiers(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetClassModifiers(a1, a2) )
+#define JVMDI_GetClassMethods(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetClassMethods(a1, a2, a3) )
+#define JVMDI_GetClassFields(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetClassFields(a1, a2, a3) )
+#define JVMDI_GetImplementedInterfaces(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetImplementedInterfaces(a1, a2, a3) )
+#define JVMDI_IsInterface(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->IsInterface(a1, a2) )
+#define JVMDI_IsArrayClass(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->IsArrayClass(a1, a2) )
+#define JVMDI_ClassLoader(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetClassLoader(a1, a2) )
+#define JVMDI_GetFieldName(a_env, a1, a2, a3, a4) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetFieldName(a1, a2, a3, a4) )
+#define JVMDI_GetFieldDeclaringClass(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetFieldDeclaringClass(a1, a2, a3) )
+#define JVMDI_GetFieldModifiers(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetFieldModifiers(a1, a2, a3) )
+#define JVMDI_GetMethodName(a_env, a1, a2, a3, a4) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetMethodName(a1, a2, a3, a4) )
+#define JVMDI_GetMethodDeclaringClass(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetMethodDeclaringClass(a1, a2, a3) )
+#define JVMDI_GetMethodModifiers(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetMethodModifiers(a1, a2, a3) )
+#define JVMDI_GetMaxStack(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetMaxStack(a1, a2, a3) )
+#define JVMDI_GetMaxLocals(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetMaxLocals(a1, a2, a3) )
+#define JVMDI_GetArgumentsSize(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetArgumentsSize(a1, a2, a3) )
+#define JVMDI_GetLineNumberTable(a_env, a1, a2, a3, a4) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetLineNumberTable(a1, a2, a3, a4) )
+#define JVMDI_GetMethodLocation(a_env, a1, a2, a3, a4) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetMethodLocation(a1, a2, a3, a4) )
+#define JVMDI_GetLocalVariableTable(a_env, a1, a2, a3, a4) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetLocalVariableTable(a1, a2, a3, a4) )
+#define JVMDI_GetExceptionHandlerTable(a_env, a1, a2, a3, a4) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetExceptionHandlerTable(a1, a2, a3, a4) )
+#define JVMDI_GetThrownExceptions(a_env, a1, a2, a3, a4) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetThrownExceptions(a1, a2, a3, a4) )
+#define JVMDI_GetBytecodes(a_env, a1, a2, a3, a4) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetBytecodes(a1, a2, a3, a4) )
+#define JVMDI_IsMethodNative(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->IsMethodNative(a1, a2, a3) )
+#define JVMDI_GetLoadedClasses(a_env, a1, a2) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetLoadedClasses(a1, a2) )
+#define JVMDI_GetClassLoaderClasses(a_env, a1, a2, a3) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetClassLoaderClasses(a1, a2, a3) )
+#define JVMDI_GetVersionNumber(a_env, a1) ( \
+              SetJVMDIfromJNIEnv(a_env), \
+              jvmdi_interface->GetVersionNumber(a1) )
+
+#endif /* !NO_JVMDI_MACROS */
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* __cplusplus */
+
+#endif /* !_JAVASOFT_JVMDI_H_ */
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/jdk1.5.0_10/include/jvmpi.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,642 @@
+/*
+ * @(#)jvmpi.h	1.28 03/12/19
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#ifndef _JAVASOFT_JVMPI_H_
+#define _JAVASOFT_JVMPI_H_
+
+#include "jni.h"
+
+#define JVMPI_VERSION_1   ((jint)0x10000001)  /* implied 0 for minor version */
+#define JVMPI_VERSION_1_1 ((jint)0x10000002)
+#define JVMPI_VERSION_1_2 ((jint)0x10000003)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+  typedef void (*jvmpi_void_function_of_void)(void *);
+#ifdef __cplusplus
+}
+#endif
+
+/****************************************************************
+ * Profiler interface data structures.
+ ****************************************************************/
+/* identifier types. */
+struct _jobjectID;
+typedef struct _jobjectID * jobjectID;       /* type of object ids */ 
+
+/* raw monitors */
+struct _JVMPI_RawMonitor;
+typedef struct _JVMPI_RawMonitor * JVMPI_RawMonitor;
+
+/* call frame */
+typedef struct {
+    jint lineno;                      /* line number in the source file */
+    jmethodID method_id;              /* method executed in this frame */
+} JVMPI_CallFrame;
+
+/* call trace */
+typedef struct {
+    JNIEnv *env_id;                   /* Env where trace was recorded */
+    jint num_frames;                  /* number of frames in this trace */
+    JVMPI_CallFrame *frames;          /* frames */
+} JVMPI_CallTrace;
+
+/* method */
+typedef struct {
+    char *method_name;                /* name of method */
+    char *method_signature;           /* signature of method */
+    jint start_lineno;                /* -1 if native, abstract .. */
+    jint end_lineno;                  /* -1 if native, abstract .. */
+    jmethodID method_id;              /* id assigned to this method */
+} JVMPI_Method;
+
+/* Field */
+typedef struct {
+    char *field_name;                 /* name of field */
+    char *field_signature;            /* signature of field */
+} JVMPI_Field;
+
+/* line number info for a compiled method */
+typedef struct {
+    jint offset;                      /* offset from beginning of method */
+    jint lineno;                      /* lineno from beginning of src file */
+} JVMPI_Lineno;
+
+/* event */
+typedef struct {
+    jint event_type;                  /* event_type */
+    JNIEnv *env_id;                   /* env where this event occured */
+  
+    union {
+        struct {
+	    const char *class_name;   /* class name */
+	    char *source_name;        /* name of source file */
+	    jint num_interfaces;      /* number of interfaces implemented */
+  	    jint num_methods;         /* number of methods in the class */
+	    JVMPI_Method *methods;    /* methods */
+	    jint num_static_fields;   /* number of static fields */
+	    JVMPI_Field *statics;     /* static fields */
+	    jint num_instance_fields; /* number of instance fields */
+	    JVMPI_Field *instances;   /* instance fields */
+	    jobjectID class_id;       /* id of the class object */
+	} class_load;
+
+        struct {
+	    jobjectID class_id;       /* id of the class object */
+	} class_unload;
+
+        struct {
+	    unsigned char *class_data;        /* content of class file */
+	    jint class_data_len;              /* class file length */
+	    unsigned char *new_class_data;    /* instrumented class file */
+	    jint new_class_data_len;          /* new class file length */
+	    void * (*malloc_f)(unsigned int); /* memory allocation function */
+	} class_load_hook;
+
+        struct {
+            jint arena_id;
+	    jobjectID class_id;       /* id of object class */
+	    jint is_array;            /* JVMPI_NORMAL_OBJECT, ... */
+	    jint size;                /* size in number of bytes */
+	    jobjectID obj_id;         /* id assigned to this object */
+        } obj_alloc;
+
+        struct {
+	    jobjectID obj_id;         /* id of the object */
+	} obj_free;
+
+        struct {
+	    jint arena_id;            /* cur arena id */
+	    jobjectID obj_id;         /* cur object id */
+	    jint new_arena_id;        /* new arena id */
+	    jobjectID new_obj_id;     /* new object id */	  
+	} obj_move;
+
+        struct {
+	    jint arena_id;            /* id of arena */
+	    const char *arena_name;   /* name of arena */
+	} new_arena;
+
+        struct {
+	    jint arena_id;            /* id of arena */
+	} delete_arena;
+
+        struct {
+	    char *thread_name;        /* name of thread */
+	    char *group_name;         /* name of group */
+	    char *parent_name;        /* name of parent */
+	    jobjectID thread_id;      /* id of the thread object */
+	    JNIEnv *thread_env_id;
+        } thread_start;
+
+        struct {
+	    int dump_level;           /* level of the heap dump info */
+	    char *begin;              /* where all the root records begin,
+					 please see the heap dump buffer 
+				         format described below */
+	    char *end;                /* where the object records end. */
+	    jint num_traces;          /* number of thread traces, 
+				         0 if dump level = JVMPI_DUMP_LEVEL_0 */
+	    JVMPI_CallTrace *traces;  /* thread traces collected during 
+					 heap dump */ 
+	} heap_dump;
+
+        struct {
+	    jobjectID obj_id;         /* object id */
+	    jobject ref_id;           /* id assigned to the globalref */
+	} jni_globalref_alloc;
+      
+        struct {
+	    jobject ref_id;           /* id of the global ref */
+	} jni_globalref_free;
+
+        struct {
+	    jmethodID method_id;      /* method */
+	} method;
+
+        struct {
+	    jmethodID method_id;      /* id of method */
+	    jobjectID obj_id;         /* id of target object */
+	} method_entry2;
+
+        struct {
+	    jmethodID method_id;        /* id of compiled method */
+	    void *code_addr;            /* code start addr. in memory */
+	    jint code_size;             /* code size */
+	    jint lineno_table_size;     /* size of lineno table */
+	    JVMPI_Lineno *lineno_table; /* lineno info */
+	} compiled_method_load;
+        
+        struct {
+	    jmethodID method_id;        /* id of unloaded compiled method */
+	} compiled_method_unload;
+
+	struct {
+	    jmethodID method_id; /* id of the method the instruction belongs to */
+	    jint offset;         /* instruction offset in the method's bytecode */
+	    union {
+		struct {
+		    jboolean is_true; /* whether true or false branch is taken  */
+		} if_info;
+		struct {
+		    jint key; /* top stack value used as an index */
+		    jint low; /* min value of the index           */
+		    jint hi;  /* max value of the index           */
+		} tableswitch_info;
+		struct {
+		    jint chosen_pair_index; /* actually chosen pair index (0-based)
+                                             * if chosen_pair_index == pairs_total then
+                                             * the 'default' branch is taken
+                                             */
+		    jint pairs_total;       /* total number of lookupswitch pairs */
+		} lookupswitch_info;
+	    } u;
+	} instruction;
+	
+        struct {
+	    char *begin;                /* beginning of dump buffer, 
+					   see below for format */
+	    char *end;                  /* end of dump buffer */
+	    jint num_traces;            /* number of traces */
+	    JVMPI_CallTrace *traces;    /* traces of all threads */
+	    jint *threads_status;       /* status of all threads */
+	} monitor_dump;
+
+        struct {
+	    const char *name;           /* name of raw monitor */
+	    JVMPI_RawMonitor id;        /* id */
+	} raw_monitor;
+
+        struct {
+	    jobjectID object;           /* Java object */
+	} monitor;
+
+        struct {
+	    jobjectID object;           /* Java object */
+	    jlong timeout;              /* timeout period */
+	} monitor_wait;
+
+        struct {
+	    jlong used_objects;
+	    jlong used_object_space;
+	    jlong total_object_space;
+	} gc_info;
+
+        struct {
+	    jint data_len;
+	    char *data;
+	} object_dump;
+    } u;
+} JVMPI_Event;
+
+/* interface functions */
+typedef struct {
+    jint version;   /* JVMPI version */
+    
+    /* ------interface implemented by the profiler------ */
+
+    /**
+     * Function called by the JVM to notify an event. 
+     */
+    void (*NotifyEvent)(JVMPI_Event *event);
+  
+    /* ------interface implemented by the JVM------ */
+    
+    /**
+     * Function called by the profiler to enable/disable/send notification 
+     * for a particular event type.  
+     * 
+     * event_type - event_type
+     * arg - event specific arg
+     *
+     * return JVMPI_NOT_AVAILABLE, JVMPI_SUCCESS or JVMPI_FAIL
+     */
+    jint (*EnableEvent)(jint event_type, void *arg);
+    jint (*DisableEvent)(jint event_type, void *arg);
+    jint (*RequestEvent)(jint event_type, void *arg);
+  
+    /**
+     * Function called by the profiler to get a stack
+     * trace from the JVM.
+     *
+     * trace - trace data structure to be filled
+     * depth - maximum depth of the trace.
+     */
+    void (*GetCallTrace)(JVMPI_CallTrace *trace, jint depth);
+
+    /**
+     * Function called by profiler when it wants to exit/stop.
+     */
+    void (*ProfilerExit)(jint);
+
+    /**
+     * Utility functions provided by the JVM.
+     */
+    JVMPI_RawMonitor (*RawMonitorCreate)(char *lock_name);
+    void (*RawMonitorEnter)(JVMPI_RawMonitor lock_id);
+    void (*RawMonitorExit)(JVMPI_RawMonitor lock_id);
+    void (*RawMonitorWait)(JVMPI_RawMonitor lock_id, jlong ms);
+    void (*RawMonitorNotifyAll)(JVMPI_RawMonitor lock_id);
+    void (*RawMonitorDestroy)(JVMPI_RawMonitor lock_id);
+
+    /**
+     * Function called by the profiler to get the current thread's CPU time.
+     *
+     * return time in nanoseconds;
+     */
+    jlong (*GetCurrentThreadCpuTime)(void);
+
+    void (*SuspendThread)(JNIEnv *env);
+    void (*ResumeThread)(JNIEnv *env);
+    jint (*GetThreadStatus)(JNIEnv *env);
+    jboolean (*ThreadHasRun)(JNIEnv *env);
+
+    /* This function can be called safely only after JVMPI_EVENT_VM_INIT_DONE
+       notification by the JVM. */
+    jint (*CreateSystemThread)(char *name, jint priority, void (*f)(void *));
+
+    /* thread local storage access functions to avoid locking in time 
+       critical functions */
+    void (*SetThreadLocalStorage)(JNIEnv *env_id, void *ptr);
+    void * (*GetThreadLocalStorage)(JNIEnv *env_id);
+
+    /* control GC */
+    void (*DisableGC)(void);
+    void (*EnableGC)(void);
+    void (*RunGC)(void);
+
+    jobjectID (*GetThreadObject)(JNIEnv *env);
+    jobjectID (*GetMethodClass)(jmethodID mid);
+
+    /* JNI <-> jobject conversions */
+    jobject   (*jobjectID2jobject)(jobjectID jid);
+    jobjectID (*jobject2jobjectID)(jobject jobj);
+
+    void (*SuspendThreadList)
+      (jint reqCount, JNIEnv **reqList, jint *results);
+    void (*ResumeThreadList)
+      (jint reqCount, JNIEnv **reqList, jint *results);
+} JVMPI_Interface;
+
+/* type of argument passed to RequestEvent for heap dumps */
+typedef struct {
+    jint heap_dump_level;
+} JVMPI_HeapDumpArg;
+
+/**********************************************************************
+ * Constants and formats used in JVM Profiler Interface.
+ **********************************************************************/
+/*
+ * Event type constants.
+ */
+#define JVMPI_EVENT_METHOD_ENTRY            ((jint)1) 
+#define JVMPI_EVENT_METHOD_ENTRY2           ((jint)2) 
+#define JVMPI_EVENT_METHOD_EXIT             ((jint)3) 
+
+#define JVMPI_EVENT_OBJECT_ALLOC            ((jint)4) 
+#define JVMPI_EVENT_OBJECT_FREE             ((jint)5) 
+#define JVMPI_EVENT_OBJECT_MOVE             ((jint)6) 
+
+#define JVMPI_EVENT_COMPILED_METHOD_LOAD    ((jint)7) 
+#define JVMPI_EVENT_COMPILED_METHOD_UNLOAD  ((jint)8) 
+
+#define JVMPI_EVENT_INSTRUCTION_START       ((jint)9) 
+
+#define JVMPI_EVENT_THREAD_START           ((jint)33) 
+#define JVMPI_EVENT_THREAD_END             ((jint)34) 
+
+#define JVMPI_EVENT_CLASS_LOAD_HOOK        ((jint)35) 
+
+#define JVMPI_EVENT_HEAP_DUMP                     ((jint)37) 
+#define JVMPI_EVENT_JNI_GLOBALREF_ALLOC           ((jint)38) 
+#define JVMPI_EVENT_JNI_GLOBALREF_FREE            ((jint)39) 
+#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_ALLOC      ((jint)40) 
+#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_FREE       ((jint)41) 
+#define JVMPI_EVENT_CLASS_LOAD                    ((jint)42) 
+#define JVMPI_EVENT_CLASS_UNLOAD                  ((jint)43) 
+#define JVMPI_EVENT_DATA_DUMP_REQUEST             ((jint)44) 
+#define JVMPI_EVENT_DATA_RESET_REQUEST            ((jint)45) 
+
+#define JVMPI_EVENT_JVM_INIT_DONE          ((jint)46) 
+#define JVMPI_EVENT_JVM_SHUT_DOWN          ((jint)47) 
+
+#define JVMPI_EVENT_ARENA_NEW              ((jint)48)
+#define JVMPI_EVENT_ARENA_DELETE           ((jint)49)
+
+#define JVMPI_EVENT_OBJECT_DUMP            ((jint)50)
+
+#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTER   ((jint)51)
+#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTERED ((jint)52)
+#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_EXIT    ((jint)53)
+#define JVMPI_EVENT_MONITOR_CONTENDED_ENTER       ((jint)54)
+#define JVMPI_EVENT_MONITOR_CONTENDED_ENTERED     ((jint)55)
+#define JVMPI_EVENT_MONITOR_CONTENDED_EXIT        ((jint)56)
+#define JVMPI_EVENT_MONITOR_WAIT                  ((jint)57)
+#define JVMPI_EVENT_MONITOR_WAITED                ((jint)58)
+#define JVMPI_EVENT_MONITOR_DUMP                  ((jint)59)
+
+#define JVMPI_EVENT_GC_START                      ((jint)60)
+#define JVMPI_EVENT_GC_FINISH                     ((jint)61)
+
+#define JVMPI_MAX_EVENT_TYPE_VAL                  ((jint)61)
+
+/* old definitions, to be removed */
+#define JVMPI_EVENT_LOAD_COMPILED_METHOD          ((jint)7) 
+#define JVMPI_EVENT_UNLOAD_COMPILED_METHOD        ((jint)8) 
+#define JVMPI_EVENT_NEW_ARENA                     ((jint)48)
+#define JVMPI_EVENT_DELETE_ARENA                  ((jint)49)
+#define JVMPI_EVENT_DUMP_DATA_REQUEST             ((jint)44) 
+#define JVMPI_EVENT_RESET_DATA_REQUEST            ((jint)45) 
+#define JVMPI_EVENT_OBJ_ALLOC                     ((jint)4) 
+#define JVMPI_EVENT_OBJ_FREE                      ((jint)5) 
+#define JVMPI_EVENT_OBJ_MOVE                      ((jint)6) 
+
+#define JVMPI_REQUESTED_EVENT                     ((jint)0x10000000)
+
+
+ 
+/* 
+ * enabling/disabling event notification.
+ */
+/* results */
+#define JVMPI_SUCCESS                    ((jint)0)
+#define JVMPI_NOT_AVAILABLE              ((jint)1)
+#define JVMPI_FAIL                       ((jint)-1)
+
+/*
+ * Thread status
+ */
+enum {
+    JVMPI_THREAD_RUNNABLE = 1,
+    JVMPI_THREAD_MONITOR_WAIT,
+    JVMPI_THREAD_CONDVAR_WAIT
+};
+
+#define JVMPI_THREAD_SUSPENDED        0x8000
+#define JVMPI_THREAD_INTERRUPTED      0x4000
+
+/*
+ * Thread priority
+ */
+#define JVMPI_MINIMUM_PRIORITY	    1
+#define JVMPI_MAXIMUM_PRIORITY	    10
+#define JVMPI_NORMAL_PRIORITY	    5
+
+/*
+ * Object type constants.
+ */
+#define JVMPI_NORMAL_OBJECT	         ((jint)0)
+#define JVMPI_CLASS		         ((jint)2)
+#define JVMPI_BOOLEAN	                 ((jint)4)
+#define JVMPI_CHAR                       ((jint)5)
+#define JVMPI_FLOAT                      ((jint)6)
+#define JVMPI_DOUBLE                     ((jint)7)
+#define JVMPI_BYTE                       ((jint)8)
+#define JVMPI_SHORT                      ((jint)9)
+#define JVMPI_INT                        ((jint)10)
+#define JVMPI_LONG                       ((jint)11)    
+
+/*
+ * Monitor dump constants.
+ */
+
+#define JVMPI_MONITOR_JAVA          0x01
+#define JVMPI_MONITOR_RAW           0x02
+
+/*
+ * Heap dump constants.
+ */
+#define JVMPI_GC_ROOT_UNKNOWN       0xff
+#define JVMPI_GC_ROOT_JNI_GLOBAL    0x01
+#define JVMPI_GC_ROOT_JNI_LOCAL     0x02
+#define JVMPI_GC_ROOT_JAVA_FRAME    0x03
+#define JVMPI_GC_ROOT_NATIVE_STACK  0x04
+#define JVMPI_GC_ROOT_STICKY_CLASS  0x05
+#define JVMPI_GC_ROOT_THREAD_BLOCK  0x06
+#define JVMPI_GC_ROOT_MONITOR_USED  0x07
+#define JVMPI_GC_ROOT_THREAD_OBJ    0x08
+
+#define JVMPI_GC_CLASS_DUMP         0x20
+#define JVMPI_GC_INSTANCE_DUMP      0x21 
+#define JVMPI_GC_OBJ_ARRAY_DUMP     0x22
+#define JVMPI_GC_PRIM_ARRAY_DUMP    0x23
+
+/*
+ * Dump levels
+ */
+#define JVMPI_DUMP_LEVEL_0    ((jint)0)
+#define JVMPI_DUMP_LEVEL_1    ((jint)1)
+#define JVMPI_DUMP_LEVEL_2    ((jint)2)
+
+/* Types used in dumps -
+ *
+ * u1: 1 byte
+ * u2: 2 bytes
+ * u4: 4 bytes
+ * u8: 8 bytes
+ *
+ * ty: u1 where:
+ *     JVMPI_CLASS:   object
+ *     JVMPI_BOOLEAN: boolean
+ *     JVMPI_CHAR:    char
+ *     JVMPI_FLOAT:   float
+ *     JVMPI_DOUBLE:  double
+ *     JVMPI_BYTE:    byte
+ *     JVMPI_SHORT:   short
+ *     JVMPI_INT:     int
+ *     JVMPI_LONG:    long
+ *
+ * vl: values, exact type depends on the type of the value:
+ *     JVMPI_BOOLEAN & JVMPI_BYTE:   u1
+ *     JVMPI_SHORT & JVMPI_CHAR:     u2
+ *     JVMPI_INT & JVMPI_FLOAT:      u4
+ *     JVMPI_LONG & JVMPI_DOUBLE:    u8
+ *     JVMPI_CLASS:                  jobjectID
+ */
+
+/* Format of the monitor dump buffer:
+ *
+ *               u1                          monitor type
+ *
+ *               JVMPI_MONITOR_JAVA          Java monitor
+ *
+ *                          jobjectID        object
+ *                          JNIEnv *         owner thread
+ *                          u4               entry count
+ *                          u4               # of threads waiting to enter
+ *                          [JNIEnv *]*      threads waiting to enter
+ *                          u4               # of threads waiting to be notified
+ *                          [JNIEnv *]*      threads waiting to be notified
+ *
+ *               JVMPI_MONITOR_RAW           raw monitor
+ *
+ *                          char *           name
+ *                          JVMPI_RawMonitor raw monitor
+ *                          JNIEnv *         owner thread
+ *                          u4               entry count
+ *                          u4               # of threads waiting to enter
+ *                          [JNIEnv *]*      threads waiting to enter
+ *                          u4               # of threads waiting to be notified
+ *                          [JNIEnv *]*      threads waiting to be notified
+ */
+
+/* Format of the heap dump buffer depends on the dump level 
+ * specified in the JVMPI_HeapDumpArg passed to RequestEvent as arg. 
+ * The default is JVMPI_DUMP_LEVEL_2.
+ *
+ * JVMPI_DUMP_LEVEL_0:
+ * 
+ *               u1                          object type (JVMPI_CLASS ...)
+ *               jobjectID                   object
+ *
+ * JVMPI_DUMP_LEVEL_1 and JVMPI_DUMP_LEVEL_2 use the following format:  
+ * In the case of JVMPI_DUMP_LEVEL_1 the values of primitive fields in object 
+ * instance dumps , the values of primitive statics in class dumps and the 
+ * values of primitive arrays are excluded.  JVMPI_DUMP_LEVEL_2 includes the
+ * primitive values.
+ *
+ *               u1                          record type
+ *
+ *               JVMPI_GC_ROOT_UNKNOWN       unknown root
+ *
+ *                          jobjectID        object
+ *
+ *               JVMPI_GC_ROOT_JNI_GLOBAL    JNI global ref root
+ *
+ *                          jobjectID        object
+ *                          jobject          JNI global reference
+ *
+ *               JVMPI_GC_ROOT_JNI_LOCAL     JNI local ref
+ *
+ *                          jobjectID        object
+ *                          JNIEnv *         thread
+ *                          u4               frame # in stack trace (-1 for empty)
+ *
+ *               JVMPI_GC_ROOT_JAVA_FRAME    Java stack frame
+ *
+ *                          jobjectID        object
+ *                          JNIEnv *         thread
+ *                          u4               frame # in stack trace (-1 for empty)
+ *
+ *               JVMPI_GC_ROOT_NATIVE_STACK  Native stack
+ *
+ *                          jobjectID        object
+ *                          JNIEnv *         thread
+ *
+ *               JVMPI_GC_ROOT_STICKY_CLASS  System class
+ *
+ *                          jobjectID        class object
+ *
+ *               JVMPI_GC_ROOT_THREAD_BLOCK  Reference from thread block
+ *
+ *                          jobjectID        thread object
+ *                          JNIEnv *         thread
+ *
+ *               JVMPI_GC_ROOT_MONITOR_USED  Busy monitor
+ *
+ *                          jobjectID        object
+ *
+ *               JVMPI_GC_CLASS_DUMP         dump of a class object
+ *
+ *                          jobjectID        class
+ *                          jobjectID        super
+ *                          jobjectID        class loader
+ *                          jobjectID        signers
+ *                          jobjectID        protection domain
+ *                          jobjectID        class name
+ *                          void *           reserved
+ *
+ *                          u4               instance size (in bytes)
+ *
+ *                          [jobjectID]*     interfaces
+ *
+ *                          u2               size of constant pool
+ *                          [u2,             constant pool index,
+ *                           ty,             type, 
+ *                           vl]*            value
+ *
+ *                          [vl]*            static field values
+ *
+ *               JVMPI_GC_INSTANCE_DUMP      dump of a normal object
+ *
+ *                          jobjectID        object
+ *                          jobjectID        class
+ *                          u4               number of bytes that follow
+ *                          [vl]*            instance field values (class, followed
+ *                                           by super, super's super ...)
+ *
+ *               JVMPI_GC_OBJ_ARRAY_DUMP     dump of an object array
+ *
+ *                          jobjectID        array object
+ *                          u4               number of elements
+ *                          jobjectID        element class
+ *                          [jobjectID]*     elements
+ *
+ *               JVMPI_GC_PRIM_ARRAY_DUMP    dump of a primitive array
+ *
+ *                          jobjectID        array object
+ *                          u4               number of elements
+ *                          ty               element type
+ *                          [vl]*            elements
+ *
+ */
+
+/* Format of the dump received in JVMPI_EVENT_OBJECT_DUMP:
+ * All the records have JVMPI_DUMP_LEVEL_2 information.
+ *
+ *               u1                          record type
+ *
+ *                     followed by a:
+ *
+ *                          JVMPI_GC_CLASS_DUMP,
+ *                          JVMPI_GC_INSTANCE_DUMP,
+ *                          JVMPI_GC_OBJ_ARRAY_DUMP, or
+ *                          JVMPI_GC_PRIM_ARRAY_DUMP record.
+ */
+
+#endif /* !_JAVASOFT_JVMPI_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/jdk1.5.0_10/include/jvmti.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,2181 @@
+#ifdef USE_PRAGMA_IDENT_HDR
+#pragma ident "@(#)jvmtiLib.xsl	1.32 04/06/01 20:19:53 JVM"
+#endif
+/*
+ * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ */
+
+    /* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */
+
+
+    /* Include file for the Java(tm) Virtual Machine Tool Interface */
+
+#ifndef _JAVA_JVMTI_H_
+#define _JAVA_JVMTI_H_
+
+#include "jni.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    JVMTI_VERSION_1   = 0x30010000,
+    JVMTI_VERSION_1_0 = 0x30010000,
+
+    JVMTI_VERSION = 0x30000000 + (1 * 0x10000) + (0 * 0x100) + 33  /* version: 1.0.33 */
+};
+
+JNIEXPORT jint JNICALL 
+Agent_OnLoad(JavaVM *vm, char *options, void *reserved);
+
+JNIEXPORT void JNICALL 
+Agent_OnUnload(JavaVM *vm);
+
+    /* Forward declaration of the environment */
+        
+struct _jvmtiEnv;
+
+struct jvmtiInterface_1_;
+  
+#ifdef __cplusplus
+typedef _jvmtiEnv jvmtiEnv;
+#else
+typedef const struct jvmtiInterface_1_ *jvmtiEnv;
+#endif /* __cplusplus */
+
+/* Derived Base Types */
+
+typedef jobject jthread;
+typedef jobject jthreadGroup;
+typedef jlong jlocation;
+struct _jrawMonitorID;
+typedef struct _jrawMonitorID *jrawMonitorID;
+typedef struct JNINativeInterface_ jniNativeInterface;
+
+    /* Constants */
+
+
+    /* Thread State Flags */ 
+
+enum {
+    JVMTI_THREAD_STATE_ALIVE = 0x0001,
+    JVMTI_THREAD_STATE_TERMINATED = 0x0002,
+    JVMTI_THREAD_STATE_RUNNABLE = 0x0004,
+    JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400,
+    JVMTI_THREAD_STATE_WAITING = 0x0080,
+    JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010,
+    JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020,
+    JVMTI_THREAD_STATE_SLEEPING = 0x0040,
+    JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100,
+    JVMTI_THREAD_STATE_PARKED = 0x0200,
+    JVMTI_THREAD_STATE_SUSPENDED = 0x100000,
+    JVMTI_THREAD_STATE_INTERRUPTED = 0x200000,
+    JVMTI_THREAD_STATE_IN_NATIVE = 0x400000,
+    JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000,
+    JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000,
+    JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000
+};
+
+    /* java.lang.Thread.State Conversion Masks */ 
+
+enum {
+    JVMTI_JAVA_LANG_THREAD_STATE_MASK = JVMTI_THREAD_STATE_TERMINATED | JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT,
+    JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0,
+    JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED,
+    JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE,
+    JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER,
+    JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY,
+    JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT
+};
+
+    /* Thread Priority Constants */ 
+
+enum {
+    JVMTI_THREAD_MIN_PRIORITY = 1,
+    JVMTI_THREAD_NORM_PRIORITY = 5,
+    JVMTI_THREAD_MAX_PRIORITY = 10
+};
+
+    /* Heap Object Filter Enumeration */ 
+
+typedef enum {
+    JVMTI_HEAP_OBJECT_TAGGED = 1,
+    JVMTI_HEAP_OBJECT_UNTAGGED = 2,
+    JVMTI_HEAP_OBJECT_EITHER = 3
+} jvmtiHeapObjectFilter;
+
+    /* Heap Root Kind Enumeration */ 
+
+typedef enum {
+    JVMTI_HEAP_ROOT_JNI_GLOBAL = 1,
+    JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2,
+    JVMTI_HEAP_ROOT_MONITOR = 3,
+    JVMTI_HEAP_ROOT_STACK_LOCAL = 4,
+    JVMTI_HEAP_ROOT_JNI_LOCAL = 5,
+    JVMTI_HEAP_ROOT_THREAD = 6,
+    JVMTI_HEAP_ROOT_OTHER = 7
+} jvmtiHeapRootKind;
+
+    /* Object Reference Enumeration */ 
+
+typedef enum {
+    JVMTI_REFERENCE_CLASS = 1,
+    JVMTI_REFERENCE_FIELD = 2,
+    JVMTI_REFERENCE_ARRAY_ELEMENT = 3,
+    JVMTI_REFERENCE_CLASS_LOADER = 4,
+    JVMTI_REFERENCE_SIGNERS = 5,
+    JVMTI_REFERENCE_PROTECTION_DOMAIN = 6,
+    JVMTI_REFERENCE_INTERFACE = 7,
+    JVMTI_REFERENCE_STATIC_FIELD = 8,
+    JVMTI_REFERENCE_CONSTANT_POOL = 9
+} jvmtiObjectReferenceKind;
+
+    /* Iteration Control Enumeration */ 
+
+typedef enum {
+    JVMTI_ITERATION_CONTINUE = 1,
+    JVMTI_ITERATION_IGNORE = 2,
+    JVMTI_ITERATION_ABORT = 0
+} jvmtiIterationControl;
+
+    /* Class Status Flags */ 
+
+enum {
+    JVMTI_CLASS_STATUS_VERIFIED = 1,
+    JVMTI_CLASS_STATUS_PREPARED = 2,
+    JVMTI_CLASS_STATUS_INITIALIZED = 4,
+    JVMTI_CLASS_STATUS_ERROR = 8,
+    JVMTI_CLASS_STATUS_ARRAY = 16,
+    JVMTI_CLASS_STATUS_PRIMITIVE = 32
+};
+
+    /* Event Enable/Disable */ 
+
+typedef enum {
+    JVMTI_ENABLE = 1,
+    JVMTI_DISABLE = 0
+} jvmtiEventMode;
+
+    /* Extension Function/Event Parameter Types */ 
+
+typedef enum {
+    JVMTI_TYPE_JBYTE = 101,
+    JVMTI_TYPE_JCHAR = 102,
+    JVMTI_TYPE_JSHORT = 103,
+    JVMTI_TYPE_JINT = 104,
+    JVMTI_TYPE_JLONG = 105,
+    JVMTI_TYPE_JFLOAT = 106,
+    JVMTI_TYPE_JDOUBLE = 107,
+    JVMTI_TYPE_JBOOLEAN = 108,
+    JVMTI_TYPE_JOBJECT = 109,
+    JVMTI_TYPE_JTHREAD = 110,
+    JVMTI_TYPE_JCLASS = 111,
+    JVMTI_TYPE_JVALUE = 112,
+    JVMTI_TYPE_JFIELDID = 113,
+    JVMTI_TYPE_JMETHODID = 114,
+    JVMTI_TYPE_CCHAR = 115,
+    JVMTI_TYPE_CVOID = 116,
+    JVMTI_TYPE_JNIENV = 117
+} jvmtiParamTypes;
+
+    /* Extension Function/Event Parameter Kinds */ 
+
+typedef enum {
+    JVMTI_KIND_IN = 91,
+    JVMTI_KIND_IN_PTR = 92,
+    JVMTI_KIND_IN_BUF = 93,
+    JVMTI_KIND_ALLOC_BUF = 94,
+    JVMTI_KIND_ALLOC_ALLOC_BUF = 95,
+    JVMTI_KIND_OUT = 96,
+    JVMTI_KIND_OUT_BUF = 97
+} jvmtiParamKind;
+
+    /* Timer Kinds */ 
+
+typedef enum {
+    JVMTI_TIMER_USER_CPU = 30,
+    JVMTI_TIMER_TOTAL_CPU = 31,
+    JVMTI_TIMER_ELAPSED = 32
+} jvmtiTimerKind;
+
+    /* Phases of execution */ 
+
+typedef enum {
+    JVMTI_PHASE_ONLOAD = 1,
+    JVMTI_PHASE_PRIMORDIAL = 2,
+    JVMTI_PHASE_START = 6,
+    JVMTI_PHASE_LIVE = 4,
+    JVMTI_PHASE_DEAD = 8
+} jvmtiPhase;
+
+    /* Version Interface Types */ 
+
+enum {
+    JVMTI_VERSION_INTERFACE_JNI = 0x00000000,
+    JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000
+};
+
+    /* Version Masks */ 
+
+enum {
+    JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000,
+    JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000,
+    JVMTI_VERSION_MASK_MINOR = 0x0000FF00,
+    JVMTI_VERSION_MASK_MICRO = 0x000000FF
+};
+
+    /* Version Shifts */ 
+
+enum {
+    JVMTI_VERSION_SHIFT_MAJOR = 16,
+    JVMTI_VERSION_SHIFT_MINOR = 8,
+    JVMTI_VERSION_SHIFT_MICRO = 0
+};
+
+    /* Verbose Flag Enumeration */ 
+
+typedef enum {
+    JVMTI_VERBOSE_OTHER = 0,
+    JVMTI_VERBOSE_GC = 1,
+    JVMTI_VERBOSE_CLASS = 2,
+    JVMTI_VERBOSE_JNI = 4
+} jvmtiVerboseFlag;
+
+    /* JLocation Format Enumeration */ 
+
+typedef enum {
+    JVMTI_JLOCATION_JVMBCI = 1,
+    JVMTI_JLOCATION_MACHINEPC = 2,
+    JVMTI_JLOCATION_OTHER = 0
+} jvmtiJlocationFormat;
+
+    /* Errors */
+
+typedef enum {
+    JVMTI_ERROR_NONE = 0,
+    JVMTI_ERROR_INVALID_THREAD = 10,
+    JVMTI_ERROR_INVALID_THREAD_GROUP = 11,
+    JVMTI_ERROR_INVALID_PRIORITY = 12,
+    JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,
+    JVMTI_ERROR_THREAD_SUSPENDED = 14,
+    JVMTI_ERROR_THREAD_NOT_ALIVE = 15,
+    JVMTI_ERROR_INVALID_OBJECT = 20,
+    JVMTI_ERROR_INVALID_CLASS = 21,
+    JVMTI_ERROR_CLASS_NOT_PREPARED = 22,
+    JVMTI_ERROR_INVALID_METHODID = 23,
+    JVMTI_ERROR_INVALID_LOCATION = 24,
+    JVMTI_ERROR_INVALID_FIELDID = 25,
+    JVMTI_ERROR_NO_MORE_FRAMES = 31,
+    JVMTI_ERROR_OPAQUE_FRAME = 32,
+    JVMTI_ERROR_TYPE_MISMATCH = 34,
+    JVMTI_ERROR_INVALID_SLOT = 35,
+    JVMTI_ERROR_DUPLICATE = 40,
+    JVMTI_ERROR_NOT_FOUND = 41,
+    JVMTI_ERROR_INVALID_MONITOR = 50,
+    JVMTI_ERROR_NOT_MONITOR_OWNER = 51,
+    JVMTI_ERROR_INTERRUPT = 52,
+    JVMTI_ERROR_INVALID_CLASS_FORMAT = 60,
+    JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61,
+    JVMTI_ERROR_FAILS_VERIFICATION = 62,
+    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63,
+    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64,
+    JVMTI_ERROR_INVALID_TYPESTATE = 65,
+    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66,
+    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67,
+    JVMTI_ERROR_UNSUPPORTED_VERSION = 68,
+    JVMTI_ERROR_NAMES_DONT_MATCH = 69,
+    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,
+    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,
+    JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,
+    JVMTI_ERROR_NOT_AVAILABLE = 98,
+    JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,
+    JVMTI_ERROR_NULL_POINTER = 100,
+    JVMTI_ERROR_ABSENT_INFORMATION = 101,
+    JVMTI_ERROR_INVALID_EVENT_TYPE = 102,
+    JVMTI_ERROR_ILLEGAL_ARGUMENT = 103,
+    JVMTI_ERROR_NATIVE_METHOD = 104,
+    JVMTI_ERROR_OUT_OF_MEMORY = 110,
+    JVMTI_ERROR_ACCESS_DENIED = 111,
+    JVMTI_ERROR_WRONG_PHASE = 112,
+    JVMTI_ERROR_INTERNAL = 113,
+    JVMTI_ERROR_UNATTACHED_THREAD = 115,
+    JVMTI_ERROR_INVALID_ENVIRONMENT = 116,
+    JVMTI_ERROR_MAX = 116
+} jvmtiError;
+
+    /* Event IDs */
+
+typedef enum {
+    JVMTI_MIN_EVENT_TYPE_VAL = 50,
+    JVMTI_EVENT_VM_INIT = 50,
+    JVMTI_EVENT_VM_DEATH = 51,
+    JVMTI_EVENT_THREAD_START = 52,
+    JVMTI_EVENT_THREAD_END = 53,
+    JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54,
+    JVMTI_EVENT_CLASS_LOAD = 55,
+    JVMTI_EVENT_CLASS_PREPARE = 56,
+    JVMTI_EVENT_VM_START = 57,
+    JVMTI_EVENT_EXCEPTION = 58,
+    JVMTI_EVENT_EXCEPTION_CATCH = 59,
+    JVMTI_EVENT_SINGLE_STEP = 60,
+    JVMTI_EVENT_FRAME_POP = 61,
+    JVMTI_EVENT_BREAKPOINT = 62,
+    JVMTI_EVENT_FIELD_ACCESS = 63,
+    JVMTI_EVENT_FIELD_MODIFICATION = 64,
+    JVMTI_EVENT_METHOD_ENTRY = 65,
+    JVMTI_EVENT_METHOD_EXIT = 66,
+    JVMTI_EVENT_NATIVE_METHOD_BIND = 67,
+    JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,
+    JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,
+    JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,
+    JVMTI_EVENT_DATA_DUMP_REQUEST = 71,
+    JVMTI_EVENT_MONITOR_WAIT = 73,
+    JVMTI_EVENT_MONITOR_WAITED = 74,
+    JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,
+    JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,
+    JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,
+    JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,
+    JVMTI_EVENT_OBJECT_FREE = 83,
+    JVMTI_EVENT_VM_OBJECT_ALLOC = 84,
+    JVMTI_MAX_EVENT_TYPE_VAL = 84
+} jvmtiEvent;
+
+
+    /* Function Types */
+
+typedef void (JNICALL *jvmtiStartFunction)
+    (jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg);
+
+typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback)
+    (jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);
+
+typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback)
+    (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);
+
+typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback)
+    (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_data);
+
+typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback)
+    (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data);
+
+typedef jvmtiError (JNICALL *jvmtiExtensionFunction)
+    (jvmtiEnv* jvmti_env,  ...);
+
+typedef void (JNICALL *jvmtiExtensionEvent)
+    (jvmtiEnv* jvmti_env,  ...);
+
+
+    /* Structure Types */
+
+typedef struct {
+    char* name;
+    jint priority;
+    jboolean is_daemon;
+    jthreadGroup thread_group;
+    jobject context_class_loader;
+} jvmtiThreadInfo;
+
+typedef struct {
+    jthreadGroup parent;
+    char* name;
+    jint max_priority;
+    jboolean is_daemon;
+} jvmtiThreadGroupInfo;
+
+typedef struct {
+    jmethodID method;
+    jlocation location;
+} jvmtiFrameInfo;
+
+typedef struct {
+    jthread thread;
+    jint state;
+    jvmtiFrameInfo* frame_buffer;
+    jint frame_count;
+} jvmtiStackInfo;
+
+typedef struct {
+    jclass klass;
+    jint class_byte_count;
+    const unsigned char* class_bytes;
+} jvmtiClassDefinition;
+
+typedef struct {
+    jthread owner;
+    jint entry_count;
+    jint waiter_count;
+    jthread* waiters;
+    jint notify_waiter_count;
+    jthread* notify_waiters;
+} jvmtiMonitorUsage;
+
+typedef struct {
+    jlocation start_location;
+    jint line_number;
+} jvmtiLineNumberEntry;
+
+typedef struct {
+    jlocation start_location;
+    jint length;
+    char* name;
+    char* signature;
+    char* generic_signature;
+    jint slot;
+} jvmtiLocalVariableEntry;
+
+typedef struct {
+    char* name;
+    jvmtiParamKind kind;
+    jvmtiParamTypes base_type;
+    jboolean null_ok;
+} jvmtiParamInfo;
+
+typedef struct {
+    jvmtiExtensionFunction func;
+    char* id;
+    char* short_description;
+    jint param_count;
+    jvmtiParamInfo* params;
+    jint error_count;
+    jvmtiError* errors;
+} jvmtiExtensionFunctionInfo;
+
+typedef struct {
+    jint extension_event_index;
+    char* id;
+    char* short_description;
+    jint param_count;
+    jvmtiParamInfo* params;
+} jvmtiExtensionEventInfo;
+
+typedef struct {
+    jlong max_value;
+    jboolean may_skip_forward;
+    jboolean may_skip_backward;
+    jvmtiTimerKind kind;
+    jlong reserved1;
+    jlong reserved2;
+} jvmtiTimerInfo;
+
+typedef struct {
+    const void* start_address;
+    jlocation location;
+} jvmtiAddrLocationMap;
+
+typedef struct {
+    unsigned int can_tag_objects : 1;
+    unsigned int can_generate_field_modification_events : 1;
+    unsigned int can_generate_field_access_events : 1;
+    unsigned int can_get_bytecodes : 1;
+    unsigned int can_get_synthetic_attribute : 1;
+    unsigned int can_get_owned_monitor_info : 1;
+    unsigned int can_get_current_contended_monitor : 1;
+    unsigned int can_get_monitor_info : 1;
+    unsigned int can_pop_frame : 1;
+    unsigned int can_redefine_classes : 1;
+    unsigned int can_signal_thread : 1;
+    unsigned int can_get_source_file_name : 1;
+    unsigned int can_get_line_numbers : 1;
+    unsigned int can_get_source_debug_extension : 1;
+    unsigned int can_access_local_variables : 1;
+    unsigned int can_maintain_original_method_order : 1;
+    unsigned int can_generate_single_step_events : 1;
+    unsigned int can_generate_exception_events : 1;
+    unsigned int can_generate_frame_pop_events : 1;
+    unsigned int can_generate_breakpoint_events : 1;
+    unsigned int can_suspend : 1;
+    unsigned int can_redefine_any_class : 1;
+    unsigned int can_get_current_thread_cpu_time : 1;
+    unsigned int can_get_thread_cpu_time : 1;
+    unsigned int can_generate_method_entry_events : 1;
+    unsigned int can_generate_method_exit_events : 1;
+    unsigned int can_generate_all_class_hook_events : 1;
+    unsigned int can_generate_compiled_method_load_events : 1;
+    unsigned int can_generate_monitor_events : 1;
+    unsigned int can_generate_vm_object_alloc_events : 1;
+    unsigned int can_generate_native_method_bind_events : 1;
+    unsigned int can_generate_garbage_collection_events : 1;
+    unsigned int can_generate_object_free_events : 1;
+    unsigned int : 15;
+    unsigned int : 16;
+    unsigned int : 16;
+    unsigned int : 16;
+    unsigned int : 16;
+    unsigned int : 16;
+} jvmtiCapabilities;
+
+
+    /* Event Definitions */
+
+typedef void (JNICALL *jvmtiEventReserved)(void);
+
+
+typedef void (JNICALL *jvmtiEventBreakpoint)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jmethodID method, 
+     jlocation location);
+
+typedef void (JNICALL *jvmtiEventClassFileLoadHook)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jclass class_being_redefined, 
+     jobject loader, 
+     const char* name, 
+     jobject protection_domain, 
+     jint class_data_len, 
+     const unsigned char* class_data, 
+     jint* new_class_data_len, 
+     unsigned char** new_class_data);
+
+typedef void (JNICALL *jvmtiEventClassLoad)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jclass klass);
+
+typedef void (JNICALL *jvmtiEventClassPrepare)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jclass klass);
+
+typedef void (JNICALL *jvmtiEventCompiledMethodLoad)
+    (jvmtiEnv *jvmti_env, 
+     jmethodID method, 
+     jint code_size, 
+     const void* code_addr, 
+     jint map_length, 
+     const jvmtiAddrLocationMap* map, 
+     const void* compile_info);
+
+typedef void (JNICALL *jvmtiEventCompiledMethodUnload)
+    (jvmtiEnv *jvmti_env, 
+     jmethodID method, 
+     const void* code_addr);
+
+typedef void (JNICALL *jvmtiEventDataDumpRequest)
+    (jvmtiEnv *jvmti_env);
+
+typedef void (JNICALL *jvmtiEventDynamicCodeGenerated)
+    (jvmtiEnv *jvmti_env, 
+     const char* name, 
+     const void* address, 
+     jint length);
+
+typedef void (JNICALL *jvmtiEventException)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jmethodID method, 
+     jlocation location, 
+     jobject exception, 
+     jmethodID catch_method, 
+     jlocation catch_location);
+
+typedef void (JNICALL *jvmtiEventExceptionCatch)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jmethodID method, 
+     jlocation location, 
+     jobject exception);
+
+typedef void (JNICALL *jvmtiEventFieldAccess)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jmethodID method, 
+     jlocation location, 
+     jclass field_klass, 
+     jobject object, 
+     jfieldID field);
+
+typedef void (JNICALL *jvmtiEventFieldModification)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jmethodID method, 
+     jlocation location, 
+     jclass field_klass, 
+     jobject object, 
+     jfieldID field, 
+     char signature_type, 
+     jvalue new_value);
+
+typedef void (JNICALL *jvmtiEventFramePop)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jmethodID method, 
+     jboolean was_popped_by_exception);
+
+typedef void (JNICALL *jvmtiEventGarbageCollectionFinish)
+    (jvmtiEnv *jvmti_env);
+
+typedef void (JNICALL *jvmtiEventGarbageCollectionStart)
+    (jvmtiEnv *jvmti_env);
+
+typedef void (JNICALL *jvmtiEventMethodEntry)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jmethodID method);
+
+typedef void (JNICALL *jvmtiEventMethodExit)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jmethodID method, 
+     jboolean was_popped_by_exception, 
+     jvalue return_value);
+
+typedef void (JNICALL *jvmtiEventMonitorContendedEnter)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jobject object);
+
+typedef void (JNICALL *jvmtiEventMonitorContendedEntered)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jobject object);
+
+typedef void (JNICALL *jvmtiEventMonitorWait)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jobject object, 
+     jlong timeout);
+
+typedef void (JNICALL *jvmtiEventMonitorWaited)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jobject object, 
+     jboolean timed_out);
+
+typedef void (JNICALL *jvmtiEventNativeMethodBind)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jmethodID method, 
+     void* address, 
+     void** new_address_ptr);
+
+typedef void (JNICALL *jvmtiEventObjectFree)
+    (jvmtiEnv *jvmti_env, 
+     jlong tag);
+
+typedef void (JNICALL *jvmtiEventSingleStep)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jmethodID method, 
+     jlocation location);
+
+typedef void (JNICALL *jvmtiEventThreadEnd)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread);
+
+typedef void (JNICALL *jvmtiEventThreadStart)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread);
+
+typedef void (JNICALL *jvmtiEventVMDeath)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env);
+
+typedef void (JNICALL *jvmtiEventVMInit)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread);
+
+typedef void (JNICALL *jvmtiEventVMObjectAlloc)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env, 
+     jthread thread, 
+     jobject object, 
+     jclass object_klass, 
+     jlong size);
+
+typedef void (JNICALL *jvmtiEventVMStart)
+    (jvmtiEnv *jvmti_env, 
+     JNIEnv* jni_env);
+
+    /* Event Callback Structure */
+
+typedef struct {
+                              /*   50 : VM Initialization Event */
+    jvmtiEventVMInit VMInit;
+                              /*   51 : VM Death Event */
+    jvmtiEventVMDeath VMDeath;
+                              /*   52 : Thread Start */
+    jvmtiEventThreadStart ThreadStart;
+                              /*   53 : Thread End */
+    jvmtiEventThreadEnd ThreadEnd;
+                              /*   54 : Class File Load Hook */
+    jvmtiEventClassFileLoadHook ClassFileLoadHook;
+                              /*   55 : Class Load */
+    jvmtiEventClassLoad ClassLoad;
+                              /*   56 : Class Prepare */
+    jvmtiEventClassPrepare ClassPrepare;
+                              /*   57 : VM Start Event */
+    jvmtiEventVMStart VMStart;
+                              /*   58 : Exception */
+    jvmtiEventException Exception;
+                              /*   59 : Exception Catch */
+    jvmtiEventExceptionCatch ExceptionCatch;
+                              /*   60 : Single Step */
+    jvmtiEventSingleStep SingleStep;
+                              /*   61 : Frame Pop */
+    jvmtiEventFramePop FramePop;
+                              /*   62 : Breakpoint */
+    jvmtiEventBreakpoint Breakpoint;
+                              /*   63 : Field Access */
+    jvmtiEventFieldAccess FieldAccess;
+                              /*   64 : Field Modification */
+    jvmtiEventFieldModification FieldModification;
+                              /*   65 : Method Entry */
+    jvmtiEventMethodEntry MethodEntry;
+                              /*   66 : Method Exit */
+    jvmtiEventMethodExit MethodExit;
+                              /*   67 : Native Method Bind */
+    jvmtiEventNativeMethodBind NativeMethodBind;
+                              /*   68 : Compiled Method Load */
+    jvmtiEventCompiledMethodLoad CompiledMethodLoad;
+                              /*   69 : Compiled Method Unload */
+    jvmtiEventCompiledMethodUnload CompiledMethodUnload;
+                              /*   70 : Dynamic Code Generated */
+    jvmtiEventDynamicCodeGenerated DynamicCodeGenerated;
+                              /*   71 : Data Dump Request */
+    jvmtiEventDataDumpRequest DataDumpRequest;
+                              /*   72 */
+    jvmtiEventReserved reserved72;
+                              /*   73 : Monitor Wait */
+    jvmtiEventMonitorWait MonitorWait;
+                              /*   74 : Monitor Waited */
+    jvmtiEventMonitorWaited MonitorWaited;
+                              /*   75 : Monitor Contended Enter */
+    jvmtiEventMonitorContendedEnter MonitorContendedEnter;
+                              /*   76 : Monitor Contended Entered */
+    jvmtiEventMonitorContendedEntered MonitorContendedEntered;
+                              /*   77 */
+    jvmtiEventReserved reserved77;
+                              /*   78 */
+    jvmtiEventReserved reserved78;
+                              /*   79 */
+    jvmtiEventReserved reserved79;
+                              /*   80 */
+    jvmtiEventReserved reserved80;
+                              /*   81 : Garbage Collection Start */
+    jvmtiEventGarbageCollectionStart GarbageCollectionStart;
+                              /*   82 : Garbage Collection Finish */
+    jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;
+                              /*   83 : Object Free */
+    jvmtiEventObjectFree ObjectFree;
+                              /*   84 : VM Object Allocation */
+    jvmtiEventVMObjectAlloc VMObjectAlloc;
+} jvmtiEventCallbacks;
+
+
+    /* Function Interface */
+    
+typedef struct jvmtiInterface_1_ {
+
+  /*   1 :  RESERVED */
+  void *reserved1;
+
+  /*   2 : Set Event Notification Mode */
+  jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env, 
+    jvmtiEventMode mode, 
+    jvmtiEvent event_type, 
+    jthread event_thread, 
+     ...);
+
+  /*   3 :  RESERVED */
+  void *reserved3;
+
+  /*   4 : Get All Threads */
+  jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env, 
+    jint* threads_count_ptr, 
+    jthread** threads_ptr);
+
+  /*   5 : Suspend Thread */
+  jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env, 
+    jthread thread);
+
+  /*   6 : Resume Thread */
+  jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env, 
+    jthread thread);
+
+  /*   7 : Stop Thread */
+  jvmtiError (JNICALL *StopThread) (jvmtiEnv* env, 
+    jthread thread, 
+    jobject exception);
+
+  /*   8 : Interrupt Thread */
+  jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env, 
+    jthread thread);
+
+  /*   9 : Get Thread Info */
+  jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env, 
+    jthread thread, 
+    jvmtiThreadInfo* info_ptr);
+
+  /*   10 : Get Owned Monitor Info */
+  jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env, 
+    jthread thread, 
+    jint* owned_monitor_count_ptr, 
+    jobject** owned_monitors_ptr);
+
+  /*   11 : Get Current Contended Monitor */
+  jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env, 
+    jthread thread, 
+    jobject* monitor_ptr);
+
+  /*   12 : Run Agent Thread */
+  jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env, 
+    jthread thread, 
+    jvmtiStartFunction proc, 
+    const void* arg, 
+    jint priority);
+
+  /*   13 : Get Top Thread Groups */
+  jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env, 
+    jint* group_count_ptr, 
+    jthreadGroup** groups_ptr);
+
+  /*   14 : Get Thread Group Info */
+  jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env, 
+    jthreadGroup group, 
+    jvmtiThreadGroupInfo* info_ptr);
+
+  /*   15 : Get Thread Group Children */
+  jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv* env, 
+    jthreadGroup group, 
+    jint* thread_count_ptr, 
+    jthread** threads_ptr, 
+    jint* group_count_ptr, 
+    jthreadGroup** groups_ptr);
+
+  /*   16 : Get Frame Count */
+  jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env, 
+    jthread thread, 
+    jint* count_ptr);
+
+  /*   17 : Get Thread State */
+  jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env, 
+    jthread thread, 
+    jint* thread_state_ptr);
+
+  /*   18 :  RESERVED */
+  void *reserved18;
+
+  /*   19 : Get Frame Location */
+  jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jmethodID* method_ptr, 
+    jlocation* location_ptr);
+
+  /*   20 : Notify Frame Pop */
+  jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth);
+
+  /*   21 : Get Local Variable - Object */
+  jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jint slot, 
+    jobject* value_ptr);
+
+  /*   22 : Get Local Variable - Int */
+  jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jint slot, 
+    jint* value_ptr);
+
+  /*   23 : Get Local Variable - Long */
+  jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jint slot, 
+    jlong* value_ptr);
+
+  /*   24 : Get Local Variable - Float */
+  jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jint slot, 
+    jfloat* value_ptr);
+
+  /*   25 : Get Local Variable - Double */
+  jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jint slot, 
+    jdouble* value_ptr);
+
+  /*   26 : Set Local Variable - Object */
+  jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jint slot, 
+    jobject value);
+
+  /*   27 : Set Local Variable - Int */
+  jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jint slot, 
+    jint value);
+
+  /*   28 : Set Local Variable - Long */
+  jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jint slot, 
+    jlong value);
+
+  /*   29 : Set Local Variable - Float */
+  jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jint slot, 
+    jfloat value);
+
+  /*   30 : Set Local Variable - Double */
+  jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv* env, 
+    jthread thread, 
+    jint depth, 
+    jint slot, 
+    jdouble value);
+
+  /*   31 : Create Raw Monitor */
+  jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv* env, 
+    const char* name, 
+    jrawMonitorID* monitor_ptr);
+
+  /*   32 : Destroy Raw Monitor */
+  jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv* env, 
+    jrawMonitorID monitor);
+
+  /*   33 : Raw Monitor Enter */
+  jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv* env, 
+    jrawMonitorID monitor);
+
+  /*   34 : Raw Monitor Exit */
+  jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv* env, 
+    jrawMonitorID monitor);
+
+  /*   35 : Raw Monitor Wait */
+  jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv* env, 
+    jrawMonitorID monitor, 
+    jlong millis);
+
+  /*   36 : Raw Monitor Notify */
+  jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv* env, 
+    jrawMonitorID monitor);
+
+  /*   37 : Raw Monitor Notify All */
+  jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv* env, 
+    jrawMonitorID monitor);
+
+  /*   38 : Set Breakpoint */
+  jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv* env, 
+    jmethodID method, 
+    jlocation location);
+
+  /*   39 : Clear Breakpoint */
+  jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv* env, 
+    jmethodID method, 
+    jlocation location);
+
+  /*   40 :  RESERVED */
+  void *reserved40;
+
+  /*   41 : Set Field Access Watch */
+  jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv* env, 
+    jclass klass, 
+    jfieldID field);
+
+  /*   42 : Clear Field Access Watch */
+  jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv* env, 
+    jclass klass, 
+    jfieldID field);
+
+  /*   43 : Set Field Modification Watch */
+  jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env, 
+    jclass klass, 
+    jfieldID field);
+
+  /*   44 : Clear Field Modification Watch */
+  jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env, 
+    jclass klass, 
+    jfieldID field);
+
+  /*   45 :  RESERVED */
+  void *reserved45;
+
+  /*   46 : Allocate */
+  jvmtiError (JNICALL *Allocate) (jvmtiEnv* env, 
+    jlong size, 
+    unsigned char** mem_ptr);
+
+  /*   47 : Deallocate */
+  jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env, 
+    unsigned char* mem);
+
+  /*   48 : Get Class Signature */
+  jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv* env, 
+    jclass klass, 
+    char** signature_ptr, 
+    char** generic_ptr);
+
+  /*   49 : Get Class Status */
+  jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv* env, 
+    jclass klass, 
+    jint* status_ptr);
+
+  /*   50 : Get Source File Name */
+  jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv* env, 
+    jclass klass, 
+    char** source_name_ptr);
+
+  /*   51 : Get Class Modifiers */
+  jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv* env, 
+    jclass klass, 
+    jint* modifiers_ptr);
+
+  /*   52 : Get Class Methods */
+  jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv* env, 
+    jclass klass, 
+    jint* method_count_ptr, 
+    jmethodID** methods_ptr);
+
+  /*   53 : Get Class Fields */
+  jvmtiError (JNICALL *GetClassFields) (jvmtiEnv* env, 
+    jclass klass, 
+    jint* field_count_ptr, 
+    jfieldID** fields_ptr);
+
+  /*   54 : Get Implemented Interfaces */
+  jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv* env, 
+    jclass klass, 
+    jint* interface_count_ptr, 
+    jclass** interfaces_ptr);
+
+  /*   55 : Is Interface */
+  jvmtiError (JNICALL *IsInterface) (jvmtiEnv* env, 
+    jclass klass, 
+    jboolean* is_interface_ptr);
+
+  /*   56 : Is Array Class */
+  jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv* env, 
+    jclass klass, 
+    jboolean* is_array_class_ptr);
+
+  /*   57 : Get Class Loader */
+  jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv* env, 
+    jclass klass, 
+    jobject* classloader_ptr);
+
+  /*   58 : Get Object Hash Code */
+  jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv* env, 
+    jobject object, 
+    jint* hash_code_ptr);
+
+  /*   59 : Get Object Monitor Usage */
+  jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv* env, 
+    jobject object, 
+    jvmtiMonitorUsage* info_ptr);
+
+  /*   60 : Get Field Name (and Signature) */
+  jvmtiError (JNICALL *GetFieldName) (jvmtiEnv* env, 
+    jclass klass, 
+    jfieldID field, 
+    char** name_ptr, 
+    char** signature_ptr, 
+    char** generic_ptr);
+
+  /*   61 : Get Field Declaring Class */
+  jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv* env, 
+    jclass klass, 
+    jfieldID field, 
+    jclass* declaring_class_ptr);
+
+  /*   62 : Get Field Modifiers */
+  jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv* env, 
+    jclass klass, 
+    jfieldID field, 
+    jint* modifiers_ptr);
+
+  /*   63 : Is Field Synthetic */
+  jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv* env, 
+    jclass klass, 
+    jfieldID field, 
+    jboolean* is_synthetic_ptr);
+
+  /*   64 : Get Method Name (and Signature) */
+  jvmtiError (JNICALL *GetMethodName) (jvmtiEnv* env, 
+    jmethodID method, 
+    char** name_ptr, 
+    char** signature_ptr, 
+    char** generic_ptr);
+
+  /*   65 : Get Method Declaring Class */
+  jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv* env, 
+    jmethodID method, 
+    jclass* declaring_class_ptr);
+
+  /*   66 : Get Method Modifiers */
+  jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv* env, 
+    jmethodID method, 
+    jint* modifiers_ptr);
+
+  /*   67 :  RESERVED */
+  void *reserved67;
+
+  /*   68 : Get Max Locals */
+  jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv* env, 
+    jmethodID method, 
+    jint* max_ptr);
+
+  /*   69 : Get Arguments Size */
+  jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv* env, 
+    jmethodID method, 
+    jint* size_ptr);
+
+  /*   70 : Get Line Number Table */
+  jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv* env, 
+    jmethodID method, 
+    jint* entry_count_ptr, 
+    jvmtiLineNumberEntry** table_ptr);
+
+  /*   71 : Get Method Location */
+  jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv* env, 
+    jmethodID method, 
+    jlocation* start_location_ptr, 
+    jlocation* end_location_ptr);
+
+  /*   72 : Get Local Variable Table */
+  jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env, 
+    jmethodID method, 
+    jint* entry_count_ptr, 
+    jvmtiLocalVariableEntry** table_ptr);
+
+  /*   73 :  RESERVED */
+  void *reserved73;
+
+  /*   74 :  RESERVED */
+  void *reserved74;
+
+  /*   75 : Get Bytecodes */
+  jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env, 
+    jmethodID method, 
+    jint* bytecode_count_ptr, 
+    unsigned char** bytecodes_ptr);
+
+  /*   76 : Is Method Native */
+  jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env, 
+    jmethodID method, 
+    jboolean* is_native_ptr);
+
+  /*   77 : Is Method Synthetic */
+  jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv* env, 
+    jmethodID method, 
+    jboolean* is_synthetic_ptr);
+
+  /*   78 : Get Loaded Classes */
+  jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv* env, 
+    jint* class_count_ptr, 
+    jclass** classes_ptr);
+
+  /*   79 : Get Classloader Classes */
+  jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env, 
+    jobject initiating_loader, 
+    jint* class_count_ptr, 
+    jclass** classes_ptr);
+
+  /*   80 : Pop Frame */
+  jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env, 
+    jthread thread);
+
+  /*   81 :  RESERVED */
+  void *reserved81;
+
+  /*   82 :  RESERVED */
+  void *reserved82;
+
+  /*   83 :  RESERVED */
+  void *reserved83;
+
+  /*   84 :  RESERVED */
+  void *reserved84;
+
+  /*   85 :  RESERVED */
+  void *reserved85;
+
+  /*   86 :  RESERVED */
+  void *reserved86;
+
+  /*   87 : Redefine Classes */
+  jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env, 
+    jint class_count, 
+    const jvmtiClassDefinition* class_definitions);
+
+  /*   88 : Get Version Number */
+  jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env, 
+    jint* version_ptr);
+
+  /*   89 : Get Capabilities */
+  jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv* env, 
+    jvmtiCapabilities* capabilities_ptr);
+
+  /*   90 : Get Source Debug Extension */
+  jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv* env, 
+    jclass klass, 
+    char** source_debug_extension_ptr);
+
+  /*   91 : Is Method Obsolete */
+  jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv* env, 
+    jmethodID method, 
+    jboolean* is_obsolete_ptr);
+
+  /*   92 : Suspend Thread List */
+  jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv* env, 
+    jint request_count, 
+    const jthread* request_list, 
+    jvmtiError* results);
+
+  /*   93 : Resume Thread List */
+  jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv* env, 
+    jint request_count, 
+    const jthread* request_list, 
+    jvmtiError* results);
+
+  /*   94 :  RESERVED */
+  void *reserved94;
+
+  /*   95 :  RESERVED */
+  void *reserved95;
+
+  /*   96 :  RESERVED */
+  void *reserved96;
+
+  /*   97 :  RESERVED */
+  void *reserved97;
+
+  /*   98 :  RESERVED */
+  void *reserved98;
+
+  /*   99 :  RESERVED */
+  void *reserved99;
+
+  /*   100 : Get All Stack Traces */
+  jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv* env, 
+    jint max_frame_count, 
+    jvmtiStackInfo** stack_info_ptr, 
+    jint* thread_count_ptr);
+
+  /*   101 : Get Thread List Stack Traces */
+  jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv* env, 
+    jint thread_count, 
+    const jthread* thread_list, 
+    jint max_frame_count, 
+    jvmtiStackInfo** stack_info_ptr);
+
+  /*   102 : Get Thread Local Storage */
+  jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv* env, 
+    jthread thread, 
+    void** data_ptr);
+
+  /*   103 : Set Thread Local Storage */
+  jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv* env, 
+    jthread thread, 
+    const void* data);
+
+  /*   104 : Get Stack Trace */
+  jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv* env, 
+    jthread thread, 
+    jint start_depth, 
+    jint max_frame_count, 
+    jvmtiFrameInfo* frame_buffer, 
+    jint* count_ptr);
+
+  /*   105 :  RESERVED */
+  void *reserved105;
+
+  /*   106 : Get Tag */
+  jvmtiError (JNICALL *GetTag) (jvmtiEnv* env, 
+    jobject object, 
+    jlong* tag_ptr);
+
+  /*   107 : Set Tag */
+  jvmtiError (JNICALL *SetTag) (jvmtiEnv* env, 
+    jobject object, 
+    jlong tag);
+
+  /*   108 : Force Garbage Collection */
+  jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env);
+
+  /*   109 : Iterate Over Objects Reachable From Object */
+  jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* env, 
+    jobject object, 
+    jvmtiObjectReferenceCallback object_reference_callback, 
+    void* user_data);
+
+  /*   110 : Iterate Over Reachable Objects */
+  jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env, 
+    jvmtiHeapRootCallback heap_root_callback, 
+    jvmtiStackReferenceCallback stack_ref_callback, 
+    jvmtiObjectReferenceCallback object_ref_callback, 
+    void* user_data);
+
+  /*   111 : Iterate Over Heap */
+  jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env, 
+    jvmtiHeapObjectFilter object_filter, 
+    jvmtiHeapObjectCallback heap_object_callback, 
+    void* user_data);
+
+  /*   112 : Iterate Over Instances Of Class */
+  jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env, 
+    jclass klass, 
+    jvmtiHeapObjectFilter object_filter, 
+    jvmtiHeapObjectCallback heap_object_callback, 
+    void* user_data);
+
+  /*   113 :  RESERVED */
+  void *reserved113;
+
+  /*   114 : Get Objects With Tags */
+  jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env, 
+    jint tag_count, 
+    const jlong* tags, 
+    jint* count_ptr, 
+    jobject** object_result_ptr, 
+    jlong** tag_result_ptr);
+
+  /*   115 :  RESERVED */
+  void *reserved115;
+
+  /*   116 :  RESERVED */
+  void *reserved116;
+
+  /*   117 :  RESERVED */
+  void *reserved117;
+
+  /*   118 :  RESERVED */
+  void *reserved118;
+
+  /*   119 :  RESERVED */
+  void *reserved119;
+
+  /*   120 : Set JNI Function Table */
+  jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv* env, 
+    const jniNativeInterface* function_table);
+
+  /*   121 : Get JNI Function Table */
+  jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv* env, 
+    jniNativeInterface** function_table);
+
+  /*   122 : Set Event Callbacks */
+  jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv* env, 
+    const jvmtiEventCallbacks* callbacks, 
+    jint size_of_callbacks);
+
+  /*   123 : Generate Events */
+  jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv* env, 
+    jvmtiEvent event_type);
+
+  /*   124 : Get Extension Functions */
+  jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv* env, 
+    jint* extension_count_ptr, 
+    jvmtiExtensionFunctionInfo** extensions);
+
+  /*   125 : Get Extension Events */
+  jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv* env, 
+    jint* extension_count_ptr, 
+    jvmtiExtensionEventInfo** extensions);
+
+  /*   126 : Set Extension Event Callback */
+  jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv* env, 
+    jint extension_event_index, 
+    jvmtiExtensionEvent callback);
+
+  /*   127 : Dispose Environment */
+  jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv* env);
+
+  /*   128 : Get Error Name */
+  jvmtiError (JNICALL *GetErrorName) (jvmtiEnv* env, 
+    jvmtiError error, 
+    char** name_ptr);
+
+  /*   129 : Get JLocation Format */
+  jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv* env, 
+    jvmtiJlocationFormat* format_ptr);
+
+  /*   130 : Get System Properties */
+  jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv* env, 
+    jint* count_ptr, 
+    char*** property_ptr);
+
+  /*   131 : Get System Property */
+  jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv* env, 
+    const char* property, 
+    char** value_ptr);
+
+  /*   132 : Set System Property */
+  jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv* env, 
+    const char* property, 
+    const char* value);
+
+  /*   133 : Get Phase */
+  jvmtiError (JNICALL *GetPhase) (jvmtiEnv* env, 
+    jvmtiPhase* phase_ptr);
+
+  /*   134 : Get Current Thread CPU Timer Information */
+  jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv* env, 
+    jvmtiTimerInfo* info_ptr);
+
+  /*   135 : Get Current Thread CPU Time */
+  jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv* env, 
+    jlong* nanos_ptr);
+
+  /*   136 : Get Thread CPU Timer Information */
+  jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv* env, 
+    jvmtiTimerInfo* info_ptr);
+
+  /*   137 : Get Thread CPU Time */
+  jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv* env, 
+    jthread thread, 
+    jlong* nanos_ptr);
+
+  /*   138 : Get Timer Information */
+  jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv* env, 
+    jvmtiTimerInfo* info_ptr);
+
+  /*   139 : Get Time */
+  jvmtiError (JNICALL *GetTime) (jvmtiEnv* env, 
+    jlong* nanos_ptr);
+
+  /*   140 : Get Potential Capabilities */
+  jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv* env, 
+    jvmtiCapabilities* capabilities_ptr);
+
+  /*   141 :  RESERVED */
+  void *reserved141;
+
+  /*   142 : Add Capabilities */
+  jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv* env, 
+    const jvmtiCapabilities* capabilities_ptr);
+
+  /*   143 : Relinquish Capabilities */
+  jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env, 
+    const jvmtiCapabilities* capabilities_ptr);
+
+  /*   144 : Get Available Processors */
+  jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env, 
+    jint* processor_count_ptr);
+
+  /*   145 :  RESERVED */
+  void *reserved145;
+
+  /*   146 :  RESERVED */
+  void *reserved146;
+
+  /*   147 : Get Environment Local Storage */
+  jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env, 
+    void** data_ptr);
+
+  /*   148 : Set Environment Local Storage */
+  jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env, 
+    const void* data);
+
+  /*   149 : Add To Bootstrap Class Loader Search */
+  jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env, 
+    const char* segment);
+
+  /*   150 : Set Verbose Flag */
+  jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env, 
+    jvmtiVerboseFlag flag, 
+    jboolean value);
+
+  /*   151 :  RESERVED */
+  void *reserved151;
+
+  /*   152 :  RESERVED */
+  void *reserved152;
+
+  /*   153 :  RESERVED */
+  void *reserved153;
+
+  /*   154 : Get Object Size */
+  jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env, 
+    jobject object, 
+    jlong* size_ptr);
+
+} jvmtiInterface_1;
+
+struct _jvmtiEnv {
+    const struct jvmtiInterface_1_ *functions;
+#ifdef __cplusplus
+
+
+  jvmtiError Allocate(jlong size,
+            unsigned char** mem_ptr) {
+    return functions->Allocate(this, size, mem_ptr);
+  }
+
+  jvmtiError Deallocate(unsigned char* mem) {
+    return functions->Deallocate(this, mem);
+  }
+
+  jvmtiError GetThreadState(jthread thread,
+            jint* thread_state_ptr) {
+    return functions->GetThreadState(this, thread, thread_state_ptr);
+  }
+
+  jvmtiError GetAllThreads(jint* threads_count_ptr,
+            jthread** threads_ptr) {
+    return functions->GetAllThreads(this, threads_count_ptr, threads_ptr);
+  }
+
+  jvmtiError SuspendThread(jthread thread) {
+    return functions->SuspendThread(this, thread);
+  }
+
+  jvmtiError SuspendThreadList(jint request_count,
+            const jthread* request_list,
+            jvmtiError* results) {
+    return functions->SuspendThreadList(this, request_count, request_list, results);
+  }
+
+  jvmtiError ResumeThread(jthread thread) {
+    return functions->ResumeThread(this, thread);
+  }
+
+  jvmtiError ResumeThreadList(jint request_count,
+            const jthread* request_list,
+            jvmtiError* results) {
+    return functions->ResumeThreadList(this, request_count, request_list, results);
+  }
+
+  jvmtiError StopThread(jthread thread,
+            jobject exception) {
+    return functions->StopThread(this, thread, exception);
+  }
+
+  jvmtiError InterruptThread(jthread thread) {
+    return functions->InterruptThread(this, thread);
+  }
+
+  jvmtiError GetThreadInfo(jthread thread,
+            jvmtiThreadInfo* info_ptr) {
+    return functions->GetThreadInfo(this, thread, info_ptr);
+  }
+
+  jvmtiError GetOwnedMonitorInfo(jthread thread,
+            jint* owned_monitor_count_ptr,
+            jobject** owned_monitors_ptr) {
+    return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count_ptr, owned_monitors_ptr);
+  }
+
+  jvmtiError GetCurrentContendedMonitor(jthread thread,
+            jobject* monitor_ptr) {
+    return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr);
+  }
+
+  jvmtiError RunAgentThread(jthread thread,
+            jvmtiStartFunction proc,
+            const void* arg,
+            jint priority) {
+    return functions->RunAgentThread(this, thread, proc, arg, priority);
+  }
+
+  jvmtiError SetThreadLocalStorage(jthread thread,
+            const void* data) {
+    return functions->SetThreadLocalStorage(this, thread, data);
+  }
+
+  jvmtiError GetThreadLocalStorage(jthread thread,
+            void** data_ptr) {
+    return functions->GetThreadLocalStorage(this, thread, data_ptr);
+  }
+
+  jvmtiError GetTopThreadGroups(jint* group_count_ptr,
+            jthreadGroup** groups_ptr) {
+    return functions->GetTopThreadGroups(this, group_count_ptr, groups_ptr);
+  }
+
+  jvmtiError GetThreadGroupInfo(jthreadGroup group,
+            jvmtiThreadGroupInfo* info_ptr) {
+    return functions->GetThreadGroupInfo(this, group, info_ptr);
+  }
+
+  jvmtiError GetThreadGroupChildren(jthreadGroup group,
+            jint* thread_count_ptr,
+            jthread** threads_ptr,
+            jint* group_count_ptr,
+            jthreadGroup** groups_ptr) {
+    return functions->GetThreadGroupChildren(this, group, thread_count_ptr, threads_ptr, group_count_ptr, groups_ptr);
+  }
+
+  jvmtiError GetStackTrace(jthread thread,
+            jint start_depth,
+            jint max_frame_count,
+            jvmtiFrameInfo* frame_buffer,
+            jint* count_ptr) {
+    return functions->GetStackTrace(this, thread, start_depth, max_frame_count, frame_buffer, count_ptr);
+  }
+
+  jvmtiError GetAllStackTraces(jint max_frame_count,
+            jvmtiStackInfo** stack_info_ptr,
+            jint* thread_count_ptr) {
+    return functions->GetAllStackTraces(this, max_frame_count, stack_info_ptr, thread_count_ptr);
+  }
+
+  jvmtiError GetThreadListStackTraces(jint thread_count,
+            const jthread* thread_list,
+            jint max_frame_count,
+            jvmtiStackInfo** stack_info_ptr) {
+    return functions->GetThreadListStackTraces(this, thread_count, thread_list, max_frame_count, stack_info_ptr);
+  }
+
+  jvmtiError GetFrameCount(jthread thread,
+            jint* count_ptr) {
+    return functions->GetFrameCount(this, thread, count_ptr);
+  }
+
+  jvmtiError PopFrame(jthread thread) {
+    return functions->PopFrame(this, thread);
+  }
+
+  jvmtiError GetFrameLocation(jthread thread,
+            jint depth,
+            jmethodID* method_ptr,
+            jlocation* location_ptr) {
+    return functions->GetFrameLocation(this, thread, depth, method_ptr, location_ptr);
+  }
+
+  jvmtiError NotifyFramePop(jthread thread,
+            jint depth) {
+    return functions->NotifyFramePop(this, thread, depth);
+  }
+
+  jvmtiError GetTag(jobject object,
+            jlong* tag_ptr) {
+    return functions->GetTag(this, object, tag_ptr);
+  }
+
+  jvmtiError SetTag(jobject object,
+            jlong tag) {
+    return functions->SetTag(this, object, tag);
+  }
+
+  jvmtiError ForceGarbageCollection() {
+    return functions->ForceGarbageCollection(this);
+  }
+
+  jvmtiError IterateOverObjectsReachableFromObject(jobject object,
+            jvmtiObjectReferenceCallback object_reference_callback,
+            void* user_data) {
+    return functions->IterateOverObjectsReachableFromObject(this, object, object_reference_callback, user_data);
+  }
+
+  jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback,
+            jvmtiStackReferenceCallback stack_ref_callback,
+            jvmtiObjectReferenceCallback object_ref_callback,
+            void* user_data) {
+    return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data);
+  }
+
+  jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter,
+            jvmtiHeapObjectCallback heap_object_callback,
+            void* user_data) {
+    return functions->IterateOverHeap(this, object_filter, heap_object_callback, user_data);
+  }
+
+  jvmtiError IterateOverInstancesOfClass(jclass klass,
+            jvmtiHeapObjectFilter object_filter,
+            jvmtiHeapObjectCallback heap_object_callback,
+            void* user_data) {
+    return functions->IterateOverInstancesOfClass(this, klass, object_filter, heap_object_callback, user_data);
+  }
+
+  jvmtiError GetObjectsWithTags(jint tag_count,
+            const jlong* tags,
+            jint* count_ptr,
+            jobject** object_result_ptr,
+            jlong** tag_result_ptr) {
+    return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr, object_result_ptr, tag_result_ptr);
+  }
+
+  jvmtiError GetLocalObject(jthread thread,
+            jint depth,
+            jint slot,
+            jobject* value_ptr) {
+    return functions->GetLocalObject(this, thread, depth, slot, value_ptr);
+  }
+
+  jvmtiError GetLocalInt(jthread thread,
+            jint depth,
+            jint slot,
+            jint* value_ptr) {
+    return functions->GetLocalInt(this, thread, depth, slot, value_ptr);
+  }
+
+  jvmtiError GetLocalLong(jthread thread,
+            jint depth,
+            jint slot,
+            jlong* value_ptr) {
+    return functions->GetLocalLong(this, thread, depth, slot, value_ptr);
+  }
+
+  jvmtiError GetLocalFloat(jthread thread,
+            jint depth,
+            jint slot,
+            jfloat* value_ptr) {
+    return functions->GetLocalFloat(this, thread, depth, slot, value_ptr);
+  }
+
+  jvmtiError GetLocalDouble(jthread thread,
+            jint depth,
+            jint slot,
+            jdouble* value_ptr) {
+    return functions->GetLocalDouble(this, thread, depth, slot, value_ptr);
+  }
+
+  jvmtiError SetLocalObject(jthread thread,
+            jint depth,
+            jint slot,
+            jobject value) {
+    return functions->SetLocalObject(this, thread, depth, slot, value);
+  }
+
+  jvmtiError SetLocalInt(jthread thread,
+            jint depth,
+            jint slot,
+            jint value) {
+    return functions->SetLocalInt(this, thread, depth, slot, value);
+  }
+
+  jvmtiError SetLocalLong(jthread thread,
+            jint depth,
+            jint slot,
+            jlong value) {
+    return functions->SetLocalLong(this, thread, depth, slot, value);
+  }
+
+  jvmtiError SetLocalFloat(jthread thread,
+            jint depth,
+            jint slot,
+            jfloat value) {
+    return functions->SetLocalFloat(this, thread, depth, slot, value);
+  }
+
+  jvmtiError SetLocalDouble(jthread thread,
+            jint depth,
+            jint slot,
+            jdouble value) {
+    return functions->SetLocalDouble(this, thread, depth, slot, value);
+  }
+
+  jvmtiError SetBreakpoint(jmethodID method,
+            jlocation location) {
+    return functions->SetBreakpoint(this, method, location);
+  }
+
+  jvmtiError ClearBreakpoint(jmethodID method,
+            jlocation location) {
+    return functions->ClearBreakpoint(this, method, location);
+  }
+
+  jvmtiError SetFieldAccessWatch(jclass klass,
+            jfieldID field) {
+    return functions->SetFieldAccessWatch(this, klass, field);
+  }
+
+  jvmtiError ClearFieldAccessWatch(jclass klass,
+            jfieldID field) {
+    return functions->ClearFieldAccessWatch(this, klass, field);
+  }
+
+  jvmtiError SetFieldModificationWatch(jclass klass,
+            jfieldID field) {
+    return functions->SetFieldModificationWatch(this, klass, field);
+  }
+
+  jvmtiError ClearFieldModificationWatch(jclass klass,
+            jfieldID field) {
+    return functions->ClearFieldModificationWatch(this, klass, field);
+  }
+
+  jvmtiError GetLoadedClasses(jint* class_count_ptr,
+            jclass** classes_ptr) {
+    return functions->GetLoadedClasses(this, class_count_ptr, classes_ptr);
+  }
+
+  jvmtiError GetClassLoaderClasses(jobject initiating_loader,
+            jint* class_count_ptr,
+            jclass** classes_ptr) {
+    return functions->GetClassLoaderClasses(this, initiating_loader, class_count_ptr, classes_ptr);
+  }
+
+  jvmtiError GetClassSignature(jclass klass,
+            char** signature_ptr,
+            char** generic_ptr) {
+    return functions->GetClassSignature(this, klass, signature_ptr, generic_ptr);
+  }
+
+  jvmtiError GetClassStatus(jclass klass,
+            jint* status_ptr) {
+    return functions->GetClassStatus(this, klass, status_ptr);
+  }
+
+  jvmtiError GetSourceFileName(jclass klass,
+            char** source_name_ptr) {
+    return functions->GetSourceFileName(this, klass, source_name_ptr);
+  }
+
+  jvmtiError GetClassModifiers(jclass klass,
+            jint* modifiers_ptr) {
+    return functions->GetClassModifiers(this, klass, modifiers_ptr);
+  }
+
+  jvmtiError GetClassMethods(jclass klass,
+            jint* method_count_ptr,
+            jmethodID** methods_ptr) {
+    return functions->GetClassMethods(this, klass, method_count_ptr, methods_ptr);
+  }
+
+  jvmtiError GetClassFields(jclass klass,
+            jint* field_count_ptr,
+            jfieldID** fields_ptr) {
+    return functions->GetClassFields(this, klass, field_count_ptr, fields_ptr);
+  }
+
+  jvmtiError GetImplementedInterfaces(jclass klass,
+            jint* interface_count_ptr,
+            jclass** interfaces_ptr) {
+    return functions->GetImplementedInterfaces(this, klass, interface_count_ptr, interfaces_ptr);
+  }
+
+  jvmtiError IsInterface(jclass klass,
+            jboolean* is_interface_ptr) {
+    return functions->IsInterface(this, klass, is_interface_ptr);
+  }
+
+  jvmtiError IsArrayClass(jclass klass,
+            jboolean* is_array_class_ptr) {
+    return functions->IsArrayClass(this, klass, is_array_class_ptr);
+  }
+
+  jvmtiError GetClassLoader(jclass klass,
+            jobject* classloader_ptr) {
+    return functions->GetClassLoader(this, klass, classloader_ptr);
+  }
+
+  jvmtiError GetSourceDebugExtension(jclass klass,
+            char** source_debug_extension_ptr) {
+    return functions->GetSourceDebugExtension(this, klass, source_debug_extension_ptr);
+  }
+
+  jvmtiError RedefineClasses(jint class_count,
+            const jvmtiClassDefinition* class_definitions) {
+    return functions->RedefineClasses(this, class_count, class_definitions);
+  }
+
+  jvmtiError GetObjectSize(jobject object,
+            jlong* size_ptr) {
+    return functions->GetObjectSize(this, object, size_ptr);
+  }
+
+  jvmtiError GetObjectHashCode(jobject object,
+            jint* hash_code_ptr) {
+    return functions->GetObjectHashCode(this, object, hash_code_ptr);
+  }
+
+  jvmtiError GetObjectMonitorUsage(jobject object,
+            jvmtiMonitorUsage* info_ptr) {
+    return functions->GetObjectMonitorUsage(this, object, info_ptr);
+  }
+
+  jvmtiError GetFieldName(jclass klass,
+            jfieldID field,
+            char** name_ptr,
+            char** signature_ptr,
+            char** generic_ptr) {
+    return functions->GetFieldName(this, klass, field, name_ptr, signature_ptr, generic_ptr);
+  }
+
+  jvmtiError GetFieldDeclaringClass(jclass klass,
+            jfieldID field,
+            jclass* declaring_class_ptr) {
+    return functions->GetFieldDeclaringClass(this, klass, field, declaring_class_ptr);
+  }
+
+  jvmtiError GetFieldModifiers(jclass klass,
+            jfieldID field,
+            jint* modifiers_ptr) {
+    return functions->GetFieldModifiers(this, klass, field, modifiers_ptr);
+  }
+
+  jvmtiError IsFieldSynthetic(jclass klass,
+            jfieldID field,
+            jboolean* is_synthetic_ptr) {
+    return functions->IsFieldSynthetic(this, klass, field, is_synthetic_ptr);
+  }
+
+  jvmtiError GetMethodName(jmethodID method,
+            char** name_ptr,
+            char** signature_ptr,
+            char** generic_ptr) {
+    return functions->GetMethodName(this, method, name_ptr, signature_ptr, generic_ptr);
+  }
+
+  jvmtiError GetMethodDeclaringClass(jmethodID method,
+            jclass* declaring_class_ptr) {
+    return functions->GetMethodDeclaringClass(this, method, declaring_class_ptr);
+  }
+
+  jvmtiError GetMethodModifiers(jmethodID method,
+            jint* modifiers_ptr) {
+    return functions->GetMethodModifiers(this, method, modifiers_ptr);
+  }
+
+  jvmtiError GetMaxLocals(jmethodID method,
+            jint* max_ptr) {
+    return functions->GetMaxLocals(this, method, max_ptr);
+  }
+
+  jvmtiError GetArgumentsSize(jmethodID method,
+            jint* size_ptr) {
+    return functions->GetArgumentsSize(this, method, size_ptr);
+  }
+
+  jvmtiError GetLineNumberTable(jmethodID method,
+            jint* entry_count_ptr,
+            jvmtiLineNumberEntry** table_ptr) {
+    return functions->GetLineNumberTable(this, method, entry_count_ptr, table_ptr);
+  }
+
+  jvmtiError GetMethodLocation(jmethodID method,
+            jlocation* start_location_ptr,
+            jlocation* end_location_ptr) {
+    return functions->GetMethodLocation(this, method, start_location_ptr, end_location_ptr);
+  }
+
+  jvmtiError GetLocalVariableTable(jmethodID method,
+            jint* entry_count_ptr,
+            jvmtiLocalVariableEntry** table_ptr) {
+    return functions->GetLocalVariableTable(this, method, entry_count_ptr, table_ptr);
+  }
+
+  jvmtiError GetBytecodes(jmethodID method,
+            jint* bytecode_count_ptr,
+            unsigned char** bytecodes_ptr) {
+    return functions->GetBytecodes(this, method, bytecode_count_ptr, bytecodes_ptr);
+  }
+
+  jvmtiError IsMethodNative(jmethodID method,
+            jboolean* is_native_ptr) {
+    return functions->IsMethodNative(this, method, is_native_ptr);
+  }
+
+  jvmtiError IsMethodSynthetic(jmethodID method,
+            jboolean* is_synthetic_ptr) {
+    return functions->IsMethodSynthetic(this, method, is_synthetic_ptr);
+  }
+
+  jvmtiError IsMethodObsolete(jmethodID method,
+            jboolean* is_obsolete_ptr) {
+    return functions->IsMethodObsolete(this, method, is_obsolete_ptr);
+  }
+
+  jvmtiError CreateRawMonitor(const char* name,
+            jrawMonitorID* monitor_ptr) {
+    return functions->CreateRawMonitor(this, name, monitor_ptr);
+  }
+
+  jvmtiError DestroyRawMonitor(jrawMonitorID monitor) {
+    return functions->DestroyRawMonitor(this, monitor);
+  }
+
+  jvmtiError RawMonitorEnter(jrawMonitorID monitor) {
+    return functions->RawMonitorEnter(this, monitor);
+  }
+
+  jvmtiError RawMonitorExit(jrawMonitorID monitor) {
+    return functions->RawMonitorExit(this, monitor);
+  }
+
+  jvmtiError RawMonitorWait(jrawMonitorID monitor,
+            jlong millis) {
+    return functions->RawMonitorWait(this, monitor, millis);
+  }
+
+  jvmtiError RawMonitorNotify(jrawMonitorID monitor) {
+    return functions->RawMonitorNotify(this, monitor);
+  }
+
+  jvmtiError RawMonitorNotifyAll(jrawMonitorID monitor) {
+    return functions->RawMonitorNotifyAll(this, monitor);
+  }
+
+  jvmtiError SetJNIFunctionTable(const jniNativeInterface* function_table) {
+    return functions->SetJNIFunctionTable(this, function_table);
+  }
+
+  jvmtiError GetJNIFunctionTable(jniNativeInterface** function_table) {
+    return functions->GetJNIFunctionTable(this, function_table);
+  }
+
+  jvmtiError SetEventCallbacks(const jvmtiEventCallbacks* callbacks,
+            jint size_of_callbacks) {
+    return functions->SetEventCallbacks(this, callbacks, size_of_callbacks);
+  }
+
+  jvmtiError SetEventNotificationMode(jvmtiEventMode mode,
+            jvmtiEvent event_type,
+            jthread event_thread,
+             ...) {
+    return functions->SetEventNotificationMode(this, mode, event_type, event_thread);
+  }
+
+  jvmtiError GenerateEvents(jvmtiEvent event_type) {
+    return functions->GenerateEvents(this, event_type);
+  }
+
+  jvmtiError GetExtensionFunctions(jint* extension_count_ptr,
+            jvmtiExtensionFunctionInfo** extensions) {
+    return functions->GetExtensionFunctions(this, extension_count_ptr, extensions);
+  }
+
+  jvmtiError GetExtensionEvents(jint* extension_count_ptr,
+            jvmtiExtensionEventInfo** extensions) {
+    return functions->GetExtensionEvents(this, extension_count_ptr, extensions);
+  }
+
+  jvmtiError SetExtensionEventCallback(jint extension_event_index,
+            jvmtiExtensionEvent callback) {
+    return functions->SetExtensionEventCallback(this, extension_event_index, callback);
+  }
+
+  jvmtiError GetPotentialCapabilities(jvmtiCapabilities* capabilities_ptr) {
+    return functions->GetPotentialCapabilities(this, capabilities_ptr);
+  }
+
+  jvmtiError AddCapabilities(const jvmtiCapabilities* capabilities_ptr) {
+    return functions->AddCapabilities(this, capabilities_ptr);
+  }
+
+  jvmtiError RelinquishCapabilities(const jvmtiCapabilities* capabilities_ptr) {
+    return functions->RelinquishCapabilities(this, capabilities_ptr);
+  }
+
+  jvmtiError GetCapabilities(jvmtiCapabilities* capabilities_ptr) {
+    return functions->GetCapabilities(this, capabilities_ptr);
+  }
+
+  jvmtiError GetCurrentThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {
+    return functions->GetCurrentThreadCpuTimerInfo(this, info_ptr);
+  }
+
+  jvmtiError GetCurrentThreadCpuTime(jlong* nanos_ptr) {
+    return functions->GetCurrentThreadCpuTime(this, nanos_ptr);
+  }
+
+  jvmtiError GetThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {
+    return functions->GetThreadCpuTimerInfo(this, info_ptr);
+  }
+
+  jvmtiError GetThreadCpuTime(jthread thread,
+            jlong* nanos_ptr) {
+    return functions->GetThreadCpuTime(this, thread, nanos_ptr);
+  }
+
+  jvmtiError GetTimerInfo(jvmtiTimerInfo* info_ptr) {
+    return functions->GetTimerInfo(this, info_ptr);
+  }
+
+  jvmtiError GetTime(jlong* nanos_ptr) {
+    return functions->GetTime(this, nanos_ptr);
+  }
+
+  jvmtiError GetAvailableProcessors(jint* processor_count_ptr) {
+    return functions->GetAvailableProcessors(this, processor_count_ptr);
+  }
+
+  jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) {
+    return functions->AddToBootstrapClassLoaderSearch(this, segment);
+  }
+
+  jvmtiError GetSystemProperties(jint* count_ptr,
+            char*** property_ptr) {
+    return functions->GetSystemProperties(this, count_ptr, property_ptr);
+  }
+
+  jvmtiError GetSystemProperty(const char* property,
+            char** value_ptr) {
+    return functions->GetSystemProperty(this, property, value_ptr);
+  }
+
+  jvmtiError SetSystemProperty(const char* property,
+            const char* value) {
+    return functions->SetSystemProperty(this, property, value);
+  }
+
+  jvmtiError GetPhase(jvmtiPhase* phase_ptr) {
+    return functions->GetPhase(this, phase_ptr);
+  }
+
+  jvmtiError DisposeEnvironment() {
+    return functions->DisposeEnvironment(this);
+  }
+
+  jvmtiError SetEnvironmentLocalStorage(const void* data) {
+    return functions->SetEnvironmentLocalStorage(this, data);
+  }
+
+  jvmtiError GetEnvironmentLocalStorage(void** data_ptr) {
+    return functions->GetEnvironmentLocalStorage(this, data_ptr);
+  }
+
+  jvmtiError GetVersionNumber(jint* version_ptr) {
+    return functions->GetVersionNumber(this, version_ptr);
+  }
+
+  jvmtiError GetErrorName(jvmtiError error,
+            char** name_ptr) {
+    return functions->GetErrorName(this, error, name_ptr);
+  }
+
+  jvmtiError SetVerboseFlag(jvmtiVerboseFlag flag,
+            jboolean value) {
+    return functions->SetVerboseFlag(this, flag, value);
+  }
+
+  jvmtiError GetJLocationFormat(jvmtiJlocationFormat* format_ptr) {
+    return functions->GetJLocationFormat(this, format_ptr);
+  }
+
+#endif /* __cplusplus */
+};
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* __cplusplus */
+
+#endif /* !_JAVA_JVMTI_H_ */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/jdk1.5.0_10/include/win32/jawt_md.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,41 @@
+/*
+ * @(#)jawt_md.h	1.7 03/12/19
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#ifndef _JAVASOFT_JAWT_MD_H_
+#define _JAVASOFT_JAWT_MD_H_
+
+#include <windows.h>
+#include "jawt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Win32-specific declarations for AWT native interface.
+ * See notes in jawt.h for an example of use.
+ */
+typedef struct jawt_Win32DrawingSurfaceInfo {
+    /* Native window, DDB, or DIB handle */
+    union {
+        HWND hwnd;
+        HBITMAP hbitmap;
+        void* pbits;
+    };
+    /*
+     * This HDC should always be used instead of the HDC returned from
+     * BeginPaint() or any calls to GetDC().
+     */
+    HDC hdc;
+    HPALETTE hpalette;
+} JAWT_Win32DrawingSurfaceInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_JAVASOFT_JAWT_MD_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/jdk1.5.0_10/include/win32/jni_md.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,19 @@
+/*
+ * @(#)jni_md.h	1.14 03/12/19
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#ifndef _JAVASOFT_JNI_MD_H_
+#define _JAVASOFT_JNI_MD_H_
+
+#define JNIEXPORT __declspec(dllexport)
+#define JNIIMPORT __declspec(dllimport)
+#define JNICALL __stdcall
+
+typedef long jint;
+typedef __int64 jlong;
+typedef signed char jbyte;
+
+#endif /* !_JAVASOFT_JNI_MD_H_ */
Binary file connectivity/com.nokia.tcf/native/TCFNative/TCFClient/resource.aps has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/resource.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by resource.rc
+//
+#define IDS_VERSION                     1
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        102
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFClient/resource.rc	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,120 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 2,0,0,0
+ PRODUCTVERSION 2,0,0,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904b0"
+        BEGIN
+            VALUE "Comments", "\0"
+            VALUE "CompanyName", "Nokia\0"
+            VALUE "FileDescription", "Target Communication Framework Client\0"
+            VALUE "FileVersion", "2, 0, 0, 0\0"
+            VALUE "InternalName", "TCFClient\0"
+            VALUE "LegalCopyright", "Copyright © 2008\0"
+            VALUE "LegalTrademarks", "\0"
+            VALUE "OriginalFilename", "TCFClient.dll\0"
+            VALUE "PrivateBuild", "\0"
+            VALUE "ProductName", "Nokia TCFClient\0"
+            VALUE "ProductVersion", "2, 0, 0, 0\0"
+            VALUE "SpecialBuild", "\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+#endif    // !_MAC
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_VERSION             "2.0.0.0"
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/ReadMe.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,37 @@
+========================================================================
+       DYNAMIC LINK LIBRARY : TCFCommSerial
+========================================================================
+
+
+AppWizard has created this TCFCommSerial DLL for you.  
+
+This file contains a summary of what you will find in each of the files that
+make up your TCFCommSerial application.
+
+TCFCommSerial.dsp
+    This file (the project file) contains information at the project level and
+    is used to build a single project or subproject. Other users can share the
+    project (.dsp) file, but they should export the makefiles locally.
+
+TCFCommSerial.cpp
+    This is the main DLL source file.
+
+TCFCommSerial.h
+    This file contains your DLL exports.
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named TCFCommSerial.pch and a precompiled types file named StdAfx.obj.
+
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+
+/////////////////////////////////////////////////////////////////////////////
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/RealSerialComm.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,886 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// RealSerialComm.cpp: implementation of the CRealSerialComm class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "RealSerialComm.h"
+//#include "pn_const.h"
+//#include "OSTConstants.h"
+#include "Connection.h"
+
+#ifdef _DEBUG
+static char sLogMsg[3000];
+#endif
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+#ifdef _DEBUG
+#define LogErrorText(err) { if (err > 0) GetErrorText(err); }
+#define LogErrorText2(err) { if (err > 0) GetErrorText2(err); }
+#else
+#define LogErrorText(err) {}
+#define LogErrorText2(err) {}
+#endif
+
+#ifdef _DEBUG
+#define DUMPCOMSTAT(x) DumpComStat(x)
+#define DUMPCOMSTATP(x) DumpComStatP(x)
+#else
+#define DUMPCOMSTAT(x)
+#define DUMPCOMSTATP(x)
+#endif
+
+CRealSerialComm::CRealSerialComm()
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\rscommlog.txt", "at");
+		fprintf(f, "CRealSerialComm::CRealSerialComm() (default constructor)\n");
+		fclose(f);
+	}
+#endif
+	m_hSerial = INVALID_HANDLE_VALUE;
+	m_serialPortName[0] = 0;
+	m_pBuffer = NULL;
+	m_ProcDebugLog = NULL;
+
+}
+CRealSerialComm::CRealSerialComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol)
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\rscommlog.txt", "at");
+		fprintf(f, "connectSettings=%x connectionId=%d, protocol=%x\n", connectSettings, connectionId, protocol);
+		fclose(f);
+	}
+#endif
+	m_hSerial = INVALID_HANDLE_VALUE;
+	m_serialPortName[0] = 0;
+	m_pBuffer = NULL;
+
+	m_connId = connectionId;
+	m_Protocol = protocol;
+
+	m_ConnectSettings = new ConnectData();
+	memcpy(m_ConnectSettings, connectSettings, sizeof(ConnectData));
+
+#if (defined(LOG_COMM) || defined(LOG_PROCCOMM)) && defined(_DEBUG)
+	if (gDoLogging)
+	{
+		m_CommDebugLog = new TCDebugLog("TCF_Comm", connectionId, 2000L);
+		m_ProcDebugLog = new TCDebugLog("TCF_CommP", connectionId, 2000L);
+	}
+#endif
+}
+CRealSerialComm::~CRealSerialComm()
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\rscommlog.txt", "at");
+		fprintf(f, "CRealSerialComm::~CRealSerialComm()\n");
+		fclose(f);
+	}
+#endif
+	if (m_hSerial != INVALID_HANDLE_VALUE)
+		::CloseHandle(m_hSerial);
+
+	if (m_pBuffer)
+		delete[] m_pBuffer;
+
+}
+
+long CRealSerialComm::OpenPort()
+{
+	COMMLOGOPEN();
+	COMMLOGS("CRealSerialComm::OpenPort\n");
+
+	long err = TCAPI_ERR_NONE;
+
+	char* comPort = m_ConnectSettings->realSerialSettings.comPort;
+	DWORD baudRate = m_ConnectSettings->realSerialSettings.baudRate;
+	DWORD dataBits = m_ConnectSettings->realSerialSettings.dataBits;
+	eParity parity = m_ConnectSettings->realSerialSettings.parity;
+	eStopBits stopBits = m_ConnectSettings->realSerialSettings.stopBits;
+	eFlowControl flow = m_ConnectSettings->realSerialSettings.flowControl;
+
+	COMMLOGA2("CRealSerialComm::OpenPort comPort=%s baudRate=%d\n", comPort, baudRate);
+	COMMLOGA2("CRealSerialComm::OpenPort dataBits=%d parity=%d\n", dataBits, parity);
+	COMMLOGA2("CRealSerialComm::OpenPort stopBits=%d flow=%d\n", stopBits, flow);
+
+	// fill in DCB
+	m_dcb.DCBlength = sizeof(DCB);
+	m_dcb.BaudRate = baudRate;
+	m_dcb.ByteSize = dataBits;
+
+	// parity
+	switch(parity)
+	{
+	default:
+	case eParityNone:
+		m_dcb.fParity = FALSE;
+		m_dcb.Parity = NOPARITY;
+		break;
+	case eParityEven:
+		m_dcb.fParity = TRUE;
+		m_dcb.Parity = EVENPARITY;
+		break;
+	case eParityOdd:
+		m_dcb.fParity = TRUE;
+		m_dcb.Parity = ODDPARITY;
+		break;
+	}
+
+	// stop bits
+	switch(stopBits)
+	{
+	default:
+	case eStopBits1:
+		m_dcb.StopBits = ONESTOPBIT;
+		break;
+	case eStopBits15:
+		m_dcb.StopBits = ONE5STOPBITS;
+		break;
+	case eStopBits2:
+		m_dcb.StopBits = TWOSTOPBITS;
+		break;
+	}
+
+	// flow control
+	switch(flow)
+	{
+	default:
+	case eFlowControlNone:
+		m_dcb.fRtsControl = RTS_CONTROL_DISABLE;
+		m_dcb.fOutxCtsFlow = FALSE;
+		m_dcb.fInX = m_dcb.fOutX = FALSE;
+		break;
+	case eFlowControlHW:
+		m_dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
+		m_dcb.fOutxCtsFlow = TRUE;
+		m_dcb.fInX = m_dcb.fOutX = FALSE;
+		break;
+	case eFlowControlSW:
+		m_dcb.fRtsControl = RTS_CONTROL_DISABLE;
+		m_dcb.fOutxCtsFlow = FALSE;
+		m_dcb.fInX = m_dcb.fOutX = TRUE;
+		m_dcb.XonChar = '\021';	// Ctrl-Q;
+		m_dcb.XoffChar = '\023';	// Ctrl-S;
+		m_dcb.XonLim = 100;
+		m_dcb.XoffLim = 100;
+		break;
+	}
+
+	// other things in DCB
+	m_dcb.fDtrControl = DTR_CONTROL_ENABLE;	
+	m_dcb.fDsrSensitivity = FALSE;
+	m_dcb.fBinary = TRUE;
+	m_dcb.fNull = FALSE;
+	m_dcb.fAbortOnError = TRUE;		// reads & writes will terminate with errors if one occurs
+
+	// translate serial port
+	char p[20]; char* pp = p;
+	strncpy(p, comPort, 20);
+	int len = (int)strlen(p);
+	for (int i = 0; i < len; i++)
+	{
+		p[i] = toupper(p[i]);
+	}
+	if (strncmp(p, "COM", 3) == 0)
+	{
+		pp+=3;
+	}
+	int val = atoi((const char*)pp);
+	if (val == INT_MIN || val == INT_MAX)
+	{
+		err = TCAPI_ERR_INVALID_MEDIA_DATA;
+	}
+	else
+	{
+		// must translate for CreatFile
+		_snprintf(m_serialPortName, MAX_COMPORT_SIZE, "\\\\.\\COM%d", val);
+	}
+
+
+	if (err == TCAPI_ERR_NONE)
+	{
+		m_hSerial = CreateFile(m_serialPortName,
+			GENERIC_READ|GENERIC_WRITE,	// dwDesiredAccess = read & write
+			0,							// dwSharedMode = 0 ==> device not shared
+			NULL,						// lpSecurityAttributes = NULL ==> not inheritable
+			OPEN_EXISTING,				// dwCreationDisposition ==> required for devices
+			0,							// dwFlagsAndAttributes ==> no special flags or attributes (not overlapped)
+			NULL );						// hTemplateFile = NULL ==> required for devices
+
+		if (m_hSerial != INVALID_HANDLE_VALUE)
+		{
+			// TODO: this is really not needed as we're not doing overlapped IO
+			//   and we're not creating an event nor waiting on that event
+			if (!SetCommMask(m_hSerial, EV_RXCHAR))
+			{
+				::CloseHandle(m_hSerial);
+				m_hSerial = INVALID_HANDLE_VALUE;
+				m_lastCommError = GetLastError();
+				err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+			}
+			else
+			{
+				// no error from SetCommMask
+				if (!SetupComm(m_hSerial,MAX_MESSAGE_LENGTH,MAX_SERIAL_MESSAGE_BUFFER_LENGTH))
+				{
+					CloseHandle(m_hSerial);
+					m_hSerial = INVALID_HANDLE_VALUE;
+					m_lastCommError = GetLastError();
+					err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+				}
+				else
+				{
+					// no error from SetupComm
+					// Get rid of any junk that might be sitting there.
+					PurgeComm( m_hSerial, PURGE_TXABORT | PURGE_RXABORT |
+										  PURGE_TXCLEAR | PURGE_RXCLEAR );
+
+					// Using these settings, the ReadFile command will return immediately
+					// rather than waiting for a timeout.
+					COMMTIMEOUTS lclCommTimeOuts;
+
+					lclCommTimeOuts.ReadIntervalTimeout			= MAXDWORD;	// we don't care about time between chars
+					lclCommTimeOuts.ReadTotalTimeoutMultiplier	= 100;
+					lclCommTimeOuts.ReadTotalTimeoutConstant	= 0;
+					lclCommTimeOuts.WriteTotalTimeoutMultiplier	= 100;
+					lclCommTimeOuts.WriteTotalTimeoutConstant	= 0;
+					
+					if (!SetCommTimeouts( m_hSerial, &lclCommTimeOuts ))
+					{
+						CloseHandle(m_hSerial); 
+						m_hSerial = INVALID_HANDLE_VALUE;
+						m_lastCommError = GetLastError();
+						err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+					}
+					else
+					{
+						// no error from SetCommTimeouts
+						err = SetDCB();
+						if (err != TCAPI_ERR_NONE)
+						{
+							CloseHandle(m_hSerial); 
+							m_hSerial = INVALID_HANDLE_VALUE;
+						}
+						else
+						{
+							// no error from SetDCB 
+							err = TCAPI_ERR_NONE;
+							m_numberBytes = 0;
+							m_lastCommError = 0;
+							m_isConnected = true;
+							m_pBuffer = new BYTE[MAX_SERIAL_MESSAGE_BUFFER_LENGTH];
+						}
+					}
+				}
+			}
+		}
+		else
+		{
+			// error from CreateFile
+			// couldn't open serial port
+			m_lastCommError = GetLastError();
+			err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+		}
+	}
+
+	COMMLOGA2("CRealSerialComm::OpenPort err=%d osError=%d\n", err, m_lastCommError);
+	LogErrorText(m_lastCommError);
+//	if (m_lastCommError > 0)
+//		LogErrorText(m_lastCommError);
+	COMMLOGCLOSE();
+	return err;
+}
+
+long CRealSerialComm::SetDCB()
+{
+	// assumes serial port is open
+	long err = TCAPI_ERR_NONE;
+	if (m_hSerial == INVALID_HANDLE_VALUE)
+		return err;
+
+	// setup DCB
+	DCB lcldcb;
+	lcldcb.DCBlength = sizeof(DCB);
+
+	if (!GetCommState( m_hSerial, &lcldcb ))
+	{
+		m_lastCommError = GetLastError();
+		err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+	}
+
+//	LogDCB(pInfo);
+	// copy only the ones that Connect() set initially
+	lcldcb.BaudRate = m_dcb.BaudRate;
+	lcldcb.ByteSize = m_dcb.ByteSize;
+	lcldcb.Parity = m_dcb.Parity;
+	lcldcb.StopBits = m_dcb.StopBits;
+	lcldcb.fRtsControl = m_dcb.fRtsControl;
+	lcldcb.fOutxCtsFlow = m_dcb.fOutxCtsFlow;
+	lcldcb.fDtrControl = m_dcb.fDtrControl;
+	lcldcb.fDsrSensitivity = m_dcb.fDsrSensitivity;
+	lcldcb.fInX = m_dcb.fInX;
+	lcldcb.fOutX = m_dcb.fOutX;
+	lcldcb.XonChar = m_dcb.XonChar;
+	lcldcb.XoffChar = m_dcb.XoffChar;
+	lcldcb.XonLim = m_dcb.XonLim;
+	lcldcb.XoffLim = m_dcb.XoffLim;
+	lcldcb.fBinary = m_dcb.fBinary;
+	lcldcb.fParity = m_dcb.fParity;
+	lcldcb.fNull = m_dcb.fNull;
+	lcldcb.fAbortOnError = m_dcb.fAbortOnError;
+
+	// DCB has been changed
+	// If setting the port went well then we are connected properly!
+	if (!SetCommState( m_hSerial, &lcldcb))
+	{
+		m_lastCommError = GetLastError();
+		err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+	}
+
+	return err;
+}
+
+long CRealSerialComm::ClosePort()
+{
+	COMMLOGOPEN();
+	COMMLOGS("CRealSerialComm::ClosePort\n");
+
+	long err = TCAPI_ERR_NONE;
+
+	if (!IsConnected()) 
+	{
+
+		err = TCAPI_ERR_MEDIA_NOT_OPEN;
+	}
+	else if (m_hSerial != INVALID_HANDLE_VALUE)
+	{
+		// disable event notification 
+		SetCommMask( m_hSerial, 0 );
+
+		// drop DTR
+		EscapeCommFunction( m_hSerial, CLRDTR );
+
+		// purge any outstanding reads/writes and close device handle
+		PurgeComm(	m_hSerial, 
+					PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR );
+		
+		CloseHandle( m_hSerial );
+		m_hSerial = INVALID_HANDLE_VALUE;
+
+		if (m_pBuffer)
+		{
+			delete[] m_pBuffer;
+			m_pBuffer = NULL;
+		}
+		m_isConnected = false;
+	}
+
+	COMMLOGCLOSE();
+	return err;
+}
+
+void CRealSerialComm::DeleteMsg(DWORD inMsgLength)
+{
+	if (!IsConnected())
+		return;
+	// inMsgLength includes header
+	// delete from beginning of buffer
+	if (inMsgLength == 0)
+		return;
+	if (m_numberBytes > 0 && m_numberBytes >= inMsgLength)
+	{
+		size_t moveLen = m_numberBytes - inMsgLength;
+		if (moveLen > 0)
+			memcpy(&m_pBuffer[0], &m_pBuffer[inMsgLength], moveLen);
+		m_numberBytes -= inMsgLength;
+	}
+}
+
+long CRealSerialComm::SendDataToPort(DWORD inSize, const void *inData)
+{
+
+	long err = TCAPI_ERR_NONE;
+	DWORD lclNumBytes=0;
+	COMMLOGOPEN();
+	COMMLOGS("CRealSerialComm::SendDataToPort\n");
+	COMMLOGCLOSE();
+	if (!IsConnected())
+	{
+
+		COMMLOGOPEN();
+		COMMLOGS("CRealSerialComm::SendDataToPort notConnected\n");
+		COMMLOGCLOSE();
+		return TCAPI_ERR_MEDIA_NOT_OPEN;
+	}
+
+	if (WriteFile(m_hSerial, inData, inSize, &lclNumBytes, NULL))
+	{
+		// we were successful, but did we send all data? (i.e., a timeout occurred)
+		// we are not doing overlapped I/O so if not all data went, then we timed out
+		//   and there was some kind of error
+		if (lclNumBytes != inSize)
+		{
+			COMMLOGOPEN();
+			COMMLOGA3("CRealSerialComm::SendDataToPort WriteFile not all bytes sent: lclNumBytes=%d inSize=%d err=%d\n", lclNumBytes, inSize, GetLastError());
+			COMMLOGCLOSE();
+
+			COMSTAT lclComStat;
+			DWORD lclErrorFlags = 0;
+			if (!ClearCommError(m_hSerial, &lclErrorFlags, &lclComStat))
+			{
+				// clear comm error returned error (this doesn't normally happen if the handle is valid and port is still open)
+				m_lastCommError = GetLastError();
+				err = TCAPI_ERR_COMM_ERROR;
+				COMMLOGOPEN();
+				COMMLOGA1("CRealSerialComm::SendDataToPort ClearCommError failed=%d\n", m_lastCommError);
+				COMMLOGCLOSE();
+			}
+			else
+			{
+				// clear comm error returned OK
+				// check error flags
+				if (lclErrorFlags)
+				{
+					// there really was an error
+					m_lastCommError = lclErrorFlags;
+					err = TCAPI_ERR_COMM_ERROR;
+					COMMLOGOPEN();
+					COMMLOGA1("CRealSerialComm::SendDataToPort ClearCommError succeeded lclErrorFlags=%d\n", m_lastCommError);
+					COMMLOGCLOSE();
+				}
+				else
+				{
+					// No OS error returned, but WriteFile failed to write out all bytes
+					//  therefore, since we are not doing overlapped I/O, this is an error.
+					err = TCAPI_ERR_COMM_ERROR;
+					COMMLOGOPEN();
+					COMMLOGS("CRealSerialComm::SendDataToPort ClearCommError succeeded lclErrorFlags=0\n");
+					COMMLOGCLOSE();
+//					DUMPCOMSTAT(&lclComStat);
+				}
+			}
+		}
+		else
+		{
+			// we sent all the data we requested
+			err = TCAPI_ERR_NONE;
+#ifdef _DEBUG
+			COMMLOGOPEN();
+			COMMLOGS("CRealSerialComm::SendDataToPort WriteFile successful\n");
+			BYTE* ptr = (BYTE*)inData;
+			long numBytes = (inSize > 20) ? 20 : inSize;
+			char msg[200];
+			sprintf(msg, "CRealSerialComm::SendDataToPort = ");
+			for (int i = 0; i < numBytes; i++)
+			{
+				sprintf(msg, "%s %02.2x", msg, ptr[i]);
+			}
+			sprintf(msg, "%s\n", msg);
+			COMMLOGS(msg);
+			COMMLOGCLOSE();
+#endif
+		}
+	}
+	else
+	{
+		// write failed
+		m_lastCommError = GetLastError();
+		err = TCAPI_ERR_COMM_ERROR;
+		COMMLOGOPEN();
+		COMMLOGA1("CRealSerialComm::SendDataToPort WriteFile failed = %d\n", m_lastCommError);
+		COMMLOGCLOSE();
+	}
+	
+	return err;
+}
+long CRealSerialComm::PollPort(DWORD &outSize)
+{
+	long err = TCAPI_ERR_NONE;
+	outSize = 0;
+
+	COMSTAT lclComStat;
+	DWORD lclErrorFlags=0;
+
+	if (!IsConnected())
+		return TCAPI_ERR_MEDIA_NOT_OPEN;
+
+//	Sleep(1);
+	if (!ClearCommError( m_hSerial, &lclErrorFlags, &lclComStat ))
+	{
+		m_lastCommError = GetLastError();
+		err = TCAPI_ERR_COMM_ERROR;
+
+		PROCLOGOPEN();
+		PROCLOGA1("CRealSerialComm::PollPort ClearCommError failed=%d\n", m_lastCommError);
+//		if (m_lastCommError > 0)
+		LogErrorText2(m_lastCommError);
+		PROCLOGCLOSE();
+	}
+	else
+	{
+		// ClearCommError succeeded
+		if (lclErrorFlags)
+		{
+			m_lastCommError = lclErrorFlags;
+			err = TCAPI_ERR_COMM_ERROR;
+			PROCLOGOPEN();
+			PROCLOGA1("CRealSerialComm::PollPort ClearCommError succeeded but lclErrorFlags=%d\n", m_lastCommError);
+			PROCLOGCLOSE();
+		}
+		else
+		{
+//			DUMPCOMSTATP(&lclComStat);
+//			PROCLOGOPEN();
+//			PROCLOGA1("CRealSerialComm::PollPort ClearCommError succeeded cbInQue=%d\n", lclComStat.cbInQue);
+//			PROCLOGCLOSE();
+			m_lastCommError = 0;
+		}
+		outSize = lclComStat.cbInQue;
+	}
+
+	return err;
+}
+#ifdef _DEBUG
+void CRealSerialComm::DumpComStat(COMSTAT* stat)
+{
+	COMMLOGOPEN();
+	COMMLOGA3(" comstat fCtsHold =%d fDsrHold =%d fRlsdHold=%d\n", stat->fCtsHold, stat->fDsrHold, stat->fRlsdHold);
+	COMMLOGA3(" comstat fXoffHold=%d fXoffSent=%d fEof     =%d\n", stat->fXoffHold, stat->fXoffSent, stat->fEof);
+	COMMLOGA3(" comstat fTxim    =%d cbInQue  =%d cbOutQue =%d\n", stat->fTxim, stat->cbInQue, stat->cbOutQue);
+	COMMLOGCLOSE();
+}
+void CRealSerialComm::DumpComStatP(COMSTAT* stat)
+{
+	PROCLOGOPEN();
+	PROCLOGA3(" comstat fCtsHold =%d fDsrHold =%d fRlsdHold=%d\n", stat->fCtsHold, stat->fDsrHold, stat->fRlsdHold);
+	PROCLOGA3(" comstat fXoffHold=%d fXoffSent=%d fEof     =%d\n", stat->fXoffHold, stat->fXoffSent, stat->fEof);
+	PROCLOGA3(" comstat fTxim    =%d cbInQue  =%d cbOutQue =%d\n", stat->fTxim, stat->cbInQue, stat->cbOutQue);
+	PROCLOGCLOSE();
+}
+#endif
+long CRealSerialComm::ReadPort(DWORD inSize, void *outData, DWORD &outSize)
+{
+	long err = TCAPI_ERR_NONE;
+	outSize = 0;
+
+	COMSTAT lclComStat;
+	DWORD lclErrorFlags=0;
+	DWORD lclLength;
+	if (!IsConnected())
+		return TCAPI_ERR_MEDIA_NOT_OPEN;
+
+	// clear out any errors in the channel and get the length of the buffer
+	if (!ClearCommError( m_hSerial, &lclErrorFlags, &lclComStat ))
+	{
+		// ClearCommError failed
+		m_lastCommError = GetLastError();
+		err = TCAPI_ERR_COMM_ERROR;
+		PROCLOGOPEN();
+		PROCLOGA1("CRealSerialComm::ReadPort ClearCommError failed=%d\n", m_lastCommError);
+		PROCLOGCLOSE();
+	}
+	else
+	{
+		if (lclErrorFlags)
+		{
+			m_lastCommError = lclErrorFlags;
+			err = TCAPI_ERR_COMM_ERROR;
+			PROCLOGOPEN();
+			PROCLOGA1("CRealSerialComm::ReadPort ClearCommError succeeded but lclErrorFlags=%d\n", m_lastCommError);
+			PROCLOGCLOSE();
+		}
+		else
+		{
+			m_lastCommError = 0;
+
+			lclLength = min( inSize, lclComStat.cbInQue );
+
+			if (lclLength > 0)
+			{
+				// Read lclLength number of bytes into outData.
+				if (!ReadFile(m_hSerial,outData,lclLength,&outSize,NULL))
+				{
+					m_lastCommError = GetLastError();
+					err = TCAPI_ERR_COMM_ERROR;
+					PROCLOGOPEN();
+					PROCLOGA1("CRealSerialComm::ReadPort ReadFile failed = %d\n", m_lastCommError);
+					PROCLOGCLOSE();
+				}
+				else
+				{
+					// ReadFile returned successful, check to see all our bytes came in
+					//  If a timeout happened - we may not get all the data
+					if (lclLength != outSize)
+					{
+						lclErrorFlags = 0;
+						if (!ClearCommError( m_hSerial, &lclErrorFlags, &lclComStat ))
+						{
+							// ClearCommError failed
+							m_lastCommError = GetLastError();
+							err = TCAPI_ERR_COMM_ERROR;
+							PROCLOGOPEN();
+							PROCLOGA1("CRealSerialComm::ReadPort ClearCommError failed=%d\n", m_lastCommError);
+							PROCLOGCLOSE();
+						}
+						else
+						{
+							// ClearCommError succeeded
+							if (lclErrorFlags)
+							{
+								// there really was an error
+								m_lastCommError = lclErrorFlags;
+								err = TCAPI_ERR_COMM_ERROR;
+								PROCLOGOPEN();
+								PROCLOGA1("CRealSerialComm::ReadPort ReadFile succeeded-not all data read lclErrorFlags=%d\n", m_lastCommError);
+								PROCLOGCLOSE();
+							}
+							else
+							{
+								// Since we are not doing overlapped I/O 
+								//  and our timeout values say to timeout, we should read all the bytes
+								//  that the last Poll told us, if not this is an error
+								err = TCAPI_ERR_COMM_ERROR;
+								PROCLOGOPEN();
+								PROCLOGS("CRealSerialComm::ReadPort ReadFile succeeded-not all data read lclErrorFlags=0\n");
+								PROCLOGCLOSE();
+							}
+						}
+					}
+					else
+					{
+						// all data read
+						m_lastCommError = 0;
+						PROCLOGOPEN();
+						PROCLOGS("CRealSerialComm::ReadPort ReadFile successful\n");
+						PROCLOGCLOSE();
+					}
+				}
+			}
+		}
+	}
+
+	return err;
+}
+
+long CRealSerialComm::ProcessBuffer(CConnection* pConn, CRegistry* pRegistry, long& numberProcessed)
+{
+	PROCLOGOPEN();
+	PROCLOGS("CRealSerialComm::ProcessBuffer\n");
+	PROCLOGCLOSE();
+
+	long err = TCAPI_ERR_NONE;
+	long routingErr = TCAPI_ERR_NONE;
+
+	if (!IsConnected())
+		return TCAPI_ERR_MEDIA_NOT_OPEN;
+
+	if (!m_Protocol)
+		return TCAPI_ERR_UNKNOWN_MEDIA_TYPE;
+
+	DWORD protocolHeaderLength = m_Protocol->GetHeaderLength();
+
+	// fill buffer
+	if (m_numberBytes < MAX_SERIAL_MESSAGE_BUFFER_LENGTH)
+	{
+		DWORD outLen = 0;
+		err = PollPort(outLen);
+		if (err == TCAPI_ERR_NONE && outLen > 0)
+		{
+			if (outLen > (MAX_SERIAL_MESSAGE_BUFFER_LENGTH - m_numberBytes))
+				outLen = MAX_SERIAL_MESSAGE_BUFFER_LENGTH - m_numberBytes;
+			BYTE *ptr = &m_pBuffer[m_numberBytes];
+			err = ReadPort(outLen, ptr, outLen);
+			if (err == TCAPI_ERR_NONE && outLen > 0)
+			{
+				m_numberBytes += outLen;
+			}
+		}
+	}
+	// now process buffer but only for complete messages
+	if (err == TCAPI_ERR_NONE)
+	{
+		if (m_numberBytes >= protocolHeaderLength)
+		{
+			BYTE* ptr = m_pBuffer;
+			long bytesRemaining = m_numberBytes;
+			long usedLen = 0;
+			bool done = false;
+
+			while (!done)
+			{
+				DWORD fullMessageLength = bytesRemaining;
+				DWORD rawLength = 0;
+				BYTE* fullMessage = ptr;
+				BYTE* rawMessage = ptr;
+				BYTE msgId = 0;
+				if (m_Protocol->DecodeMessage(fullMessage, fullMessageLength, msgId, rawMessage, rawLength))
+				{
+					err = PreProcessMessage(msgId, fullMessageLength, fullMessage);
+					if (err != TCAPI_ERR_NONE)
+					{
+						// notify all clients right now 
+						pConn->NotifyClientsCommError(err, false, 0);
+						err = TCAPI_ERR_NONE;
+					}
+#ifdef _DEBUG
+					int reallen = fullMessageLength;
+					if (reallen > 50) reallen = 50;
+					char msg[6];
+					msg[0] = '\0';
+
+					sLogMsg[0] = '\0';
+					if (reallen > 0)
+					{
+						sLogMsg[0] = '\0';
+						for (int i = 0; i < reallen; i++)
+						{
+							sprintf(msg, "%02.2x ", ptr[i]);
+							strcat(sLogMsg, msg);
+						}
+					}
+#endif
+					PROCLOGOPEN();
+					PROCLOGA5("CRealSerialComm::ProcessBuffer - RouteMesssage pRegistry = %x id=%x len=%d len=%d\n  msg=%s\n", pRegistry, msgId, fullMessageLength, rawLength, sLogMsg);
+					PROCLOGCLOSE();
+
+					err = pRegistry->RouteMessage(msgId, fullMessage, fullMessageLength, rawMessage, rawLength);
+					if (err != TCAPI_ERR_NONE) routingErr = err; // saved for future
+
+					numberProcessed++;
+					usedLen += fullMessageLength;
+					bytesRemaining -= fullMessageLength;
+					ptr += fullMessageLength;
+					if (bytesRemaining < protocolHeaderLength)
+						done = true;
+				}
+				else
+				{
+					done = true;
+				}
+			}
+			DeleteMsg(usedLen);
+		}
+	}
+//	PROCLOGOPEN();
+//	PROCLOGA1("CRealSerialComm::ProcessBuffer err = %d\n", err);
+//	PROCLOGCLOSE();
+	if (routingErr == TCAPI_ERR_NONE)
+		return err;
+	else
+		return routingErr;
+}
+bool CRealSerialComm::IsConnectionEqual(ConnectData* pConn)
+{
+	bool equal = false;
+
+	// forms accepted:
+	//   "comNN", "NN"
+	char* ptr1 = m_ConnectSettings->realSerialSettings.comPort;
+	char* ptr2 = pConn->realSerialSettings.comPort;
+	bool digit1found = false;
+	while(!digit1found && *ptr1 != NULL) 
+	{
+		if (*ptr1 >= '0' && *ptr1 <= '9')
+		{
+			digit1found = true;
+			break;
+		}
+		ptr1++;
+	}
+	bool digit2found = false;
+	while(!digit2found && *ptr2 != NULL) 
+	{
+		if (*ptr2 >= '0' && *ptr2 <= '9')
+		{
+			digit2found = true;
+			break;
+		}
+		ptr2++;
+	}
+	if (digit1found && digit2found)
+	{
+		if (strcmp(ptr1, ptr2) == 0)
+			equal = true;
+	}
+	return equal;
+}
+
+#ifdef _DEBUG
+DWORD CRealSerialComm::GetErrorText(DWORD inError)
+{
+	LPVOID lpMsgBuf;
+	
+	if (inError == 0) return inError;
+
+	FormatMessage( 
+		FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+		NULL,
+		inError,
+		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 	// Default language
+		(LPTSTR) &lpMsgBuf,
+		0,
+		NULL );
+
+	COMMLOGA1(" -- GetErrorText=%s", lpMsgBuf);
+	// Free the buffer.
+	LocalFree( lpMsgBuf );
+	
+	return inError;
+}
+DWORD CRealSerialComm::GetErrorText2(DWORD inError)
+{
+	LPVOID lpMsgBuf;
+	
+	if (inError == 0) return inError;
+
+	FormatMessage( 
+		FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+		NULL,
+		inError,
+		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 	// Default language
+		(LPTSTR) &lpMsgBuf,
+		0,
+		NULL );
+
+	PROCLOGA1(" -- GetErrorText=%s", lpMsgBuf);
+	// Free the buffer.
+	LocalFree( lpMsgBuf );
+	
+	return inError;
+}
+
+void CRealSerialComm::DumpBuffer(BYTE* ptr, long length)
+{
+	char msg[256] = {0};
+	if (length > 50) length = 50;
+	for (int i = 0; i < length; i++)
+	{
+		sprintf(msg, "%s%02.2X ", msg, ptr[i]);
+	}
+	sprintf(msg, "%s\n", msg);
+	PROCLOGS(msg);
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/RealSerialComm.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,68 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// RealSerialComm.h: interface for the CRealSerialComm class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_REALSERIALCOMM_H__B20F73BE_260A_4A99_B7F5_E4F7C42FE05F__INCLUDED_)
+#define AFX_REALSERIALCOMM_H__B20F73BE_260A_4A99_B7F5_E4F7C42FE05F__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "BaseCom.h"
+#define MAX_MESSAGE_LENGTH	(64*1024L)
+#define MAX_SERIAL_MESSAGE_BUFFER_LENGTH (2*MAX_MESSAGE_LENGTH)
+
+class CRealSerialComm : public CBaseCom  
+{
+public:
+	CRealSerialComm();
+	CRealSerialComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol);
+	virtual ~CRealSerialComm();
+
+	virtual long OpenPort();
+	long ClosePort();
+	long SendDataToPort(DWORD inSize, const void* inData);
+	long PollPort(DWORD& outSize);
+	long ReadPort(DWORD inSize, void* outData, DWORD& outSize);
+	long ProcessBuffer(CConnection* pConn, CRegistry* pRegistry, long& numberProcessed);
+	void DeleteMsg(DWORD inMsgLength);
+	bool GetVersion(char* outVersion) { return false; } // don't have enough information for this
+	bool HasVersion() { return false; } // can we have a version?
+	virtual long PreProcessMessage(int inMsgType, DWORD inMsgLength, BYTE* inMessage) { return TCAPI_ERR_NONE; }
+	virtual long PreProcessMessage(BYTE msgId, DWORD inMsgLength, BYTE* inMessage) { return TCAPI_ERR_NONE; }
+	virtual bool IsConnectionEqual(ConnectData* pConn);
+
+#ifdef _DEBUG
+	DWORD GetErrorText(DWORD inError);
+	DWORD GetErrorText2(DWORD inError);
+	void DumpComStat(COMSTAT* stat);
+	void DumpComStatP(COMSTAT* stat);
+	void DumpBuffer(BYTE* ptr, long length);
+#endif
+
+private:
+	long SetDCB();
+	HANDLE m_hSerial;
+	DCB m_dcb;
+	char m_serialPortName[MAX_COMPORT_SIZE];
+
+};
+
+#endif // !defined(AFX_REALSERIALCOMM_H__B20F73BE_260A_4A99_B7F5_E4F7C42FE05F__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/StdAfx.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.cpp : source file that includes just the standard includes
+//	TCFCommSerial.pch will be the pre-compiled header
+//	stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/StdAfx.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__825E7B19_F712_4246_8188_8E96B42EEB40__INCLUDED_)
+#define AFX_STDAFX_H__825E7B19_F712_4246_8188_8E96B42EEB40__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+
+// Insert your headers here
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+
+#include <stdlib.h>
+#include <windows.h>
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__825E7B19_F712_4246_8188_8E96B42EEB40__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/TCFCommSerial.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// TCFCommSerial.cpp : Defines the entry point for the DLL application.
+//
+
+#include "stdafx.h"
+#include <sys/stat.h>
+#include "TCFCommSerial.h"
+#include "RealSerialComm.h"
+
+static const char* pCommType="serial";
+static CBaseCom* pCommClass=NULL;
+#ifdef _DEBUG
+BOOL gDoLogging = FALSE;
+#endif
+
+BOOL APIENTRY DllMain( HANDLE hModule, 
+                       DWORD  ul_reason_for_call, 
+                       LPVOID lpReserved
+					 )
+{
+    switch (ul_reason_for_call)
+	{
+		case DLL_PROCESS_ATTACH:
+			{
+#ifdef _DEBUG
+				struct _stat buf;
+				char* dirname = "c:\\tcf";
+				int result = _stat(dirname, &buf);
+				if (result == 0) // exists
+				{
+					gDoLogging = TRUE;
+				}
+				else
+				{
+					gDoLogging = FALSE;
+				}
+#endif
+			}
+			break;
+		case DLL_THREAD_ATTACH:
+		case DLL_THREAD_DETACH:
+		case DLL_PROCESS_DETACH:
+			break;
+    }
+    return TRUE;
+}
+
+// register this connection type
+TCFCOMMSERIAL_API const char* RegisterComm()
+{
+	return pCommType;
+}
+
+// create this connection type
+TCFCOMMSERIAL_API CBaseCom* CreateComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol)
+{
+	pCommClass = new CRealSerialComm(connectSettings, connectionId, protocol);
+
+	return pCommClass;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/TCFCommSerial.dep	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,66 @@
+# Microsoft Developer Studio Generated Dependency File, included by TCFCommSerial.mak
+
+..\TCFServer\BaseCom.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	"..\TCFServer\BaseCom.h"\
+	"..\TCFServer\BaseProtocol.h"\
+	"..\TCFServer\Client.h"\
+	"..\TCFServer\MessageFile.h"\
+	"..\TCFServer\Registry.h"\
+	
+
+..\Common\Source\mutex.cpp : \
+	"..\Common\Headers\mutex.h"\
+	
+
+.\RealSerialComm.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	"..\TCFServer\BaseCom.h"\
+	"..\TCFServer\BaseProtocol.h"\
+	"..\TCFServer\Client.h"\
+	"..\TCFServer\Connection.h"\
+	"..\TCFServer\MessageFile.h"\
+	"..\TCFServer\Registry.h"\
+	".\RealSerialComm.h"\
+	
+
+.\StdAfx.cpp : \
+	".\StdAfx.h"\
+	
+
+..\Common\Source\TCDebugLog.cpp : \
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	
+
+.\TCFCommSerial.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	"..\TCFServer\BaseCom.h"\
+	"..\TCFServer\BaseProtocol.h"\
+	"..\TCFServer\Client.h"\
+	"..\TCFServer\MessageFile.h"\
+	"..\TCFServer\Registry.h"\
+	".\RealSerialComm.h"\
+	".\TCFCommSerial.h"\
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/TCFCommSerial.dsp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,154 @@
+# Microsoft Developer Studio Project File - Name="TCFCommSerial" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=TCFCommSerial - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFCommSerial.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFCommSerial.mak" CFG="TCFCommSerial - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFCommSerial - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "TCFCommSerial - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "TCFCommSerial - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /map /machine:I386
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+PostBuild_Cmds=copyBinaries Release
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "TCFCommSerial - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /map /debug /machine:I386 /pdbtype:sept
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+PostBuild_Cmds=copyBinaries Debug
+# End Special Build Tool
+
+!ENDIF 
+
+# Begin Target
+
+# Name "TCFCommSerial - Win32 Release"
+# Name "TCFCommSerial - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\TCFServer\BaseCom.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\mutex.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\RealSerialComm.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\TCDebugLog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFCommSerial.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\RealSerialComm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFCommSerial.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Source File
+
+SOURCE=.\ReadMe.txt
+# End Source File
+# End Target
+# End Project
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/TCFCommSerial.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#include "BaseCom.h"
+// The following ifdef block is the standard way of creating macros which make exporting 
+// from a DLL simpler. All files within this DLL are compiled with the TCFCOMMSERIAL_EXPORTS
+// symbol defined on the command line. this symbol should not be defined on any project
+// that uses this DLL. This way any other project whose source files include this file see 
+// TCFCOMMSERIAL_API functions as being imported from a DLL, wheras this DLL sees symbols
+// defined with this macro as being exported.
+#ifdef TCFCOMMSERIAL_EXPORTS
+#define TCFCOMMSERIAL_API __declspec(dllexport)
+#else
+#define TCFCOMMSERIAL_API __declspec(dllimport)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+TCFCOMMSERIAL_API const char* RegisterComm();
+TCFCOMMSERIAL_API CBaseCom* CreateComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol);
+
+#ifdef __cplusplus
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/TCFCommSerial.mak	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,292 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on TCFCommSerial.dsp
+!IF "$(CFG)" == ""
+CFG=TCFCommSerial - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to TCFCommSerial - Win32 Debug.
+!ENDIF 
+
+!IF "$(CFG)" != "TCFCommSerial - Win32 Release" && "$(CFG)" != "TCFCommSerial - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFCommSerial.mak" CFG="TCFCommSerial - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFCommSerial - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "TCFCommSerial - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "TCFCommSerial - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFCommSerial.dll"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\BaseCom.obj"
+	-@erase "$(INTDIR)\mutex.obj"
+	-@erase "$(INTDIR)\RealSerialComm.obj"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\TCDebugLog.obj"
+	-@erase "$(INTDIR)\TCFCommSerial.obj"
+	-@erase "$(INTDIR)\TCFCommSerial.pch"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(OUTDIR)\TCFCommSerial.dll"
+	-@erase "$(OUTDIR)\TCFCommSerial.exp"
+	-@erase "$(OUTDIR)\TCFCommSerial.lib"
+	-@erase "$(OUTDIR)\TCFCommSerial.map"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"$(INTDIR)\TCFCommSerial.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFCommSerial.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\TCFCommSerial.pdb" /map:"$(INTDIR)\TCFCommSerial.map" /machine:I386 /out:"$(OUTDIR)\TCFCommSerial.dll" /implib:"$(OUTDIR)\TCFCommSerial.lib" 
+LINK32_OBJS= \
+	"$(INTDIR)\BaseCom.obj" \
+	"$(INTDIR)\mutex.obj" \
+	"$(INTDIR)\RealSerialComm.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCDebugLog.obj" \
+	"$(INTDIR)\TCFCommSerial.obj"
+
+"$(OUTDIR)\TCFCommSerial.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFCommSerial.dll"
+   copyBinaries Release
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "TCFCommSerial - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFCommSerial.dll"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\BaseCom.obj"
+	-@erase "$(INTDIR)\mutex.obj"
+	-@erase "$(INTDIR)\RealSerialComm.obj"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\TCDebugLog.obj"
+	-@erase "$(INTDIR)\TCFCommSerial.obj"
+	-@erase "$(INTDIR)\TCFCommSerial.pch"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(INTDIR)\vc60.pdb"
+	-@erase "$(OUTDIR)\TCFCommSerial.dll"
+	-@erase "$(OUTDIR)\TCFCommSerial.exp"
+	-@erase "$(OUTDIR)\TCFCommSerial.ilk"
+	-@erase "$(OUTDIR)\TCFCommSerial.lib"
+	-@erase "$(OUTDIR)\TCFCommSerial.map"
+	-@erase "$(OUTDIR)\TCFCommSerial.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"$(INTDIR)\TCFCommSerial.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFCommSerial.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\TCFCommSerial.pdb" /map:"$(INTDIR)\TCFCommSerial.map" /debug /machine:I386 /out:"$(OUTDIR)\TCFCommSerial.dll" /implib:"$(OUTDIR)\TCFCommSerial.lib" /pdbtype:sept 
+LINK32_OBJS= \
+	"$(INTDIR)\BaseCom.obj" \
+	"$(INTDIR)\mutex.obj" \
+	"$(INTDIR)\RealSerialComm.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCDebugLog.obj" \
+	"$(INTDIR)\TCFCommSerial.obj"
+
+"$(OUTDIR)\TCFCommSerial.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFCommSerial.dll"
+   copyBinaries Debug
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("TCFCommSerial.dep")
+!INCLUDE "TCFCommSerial.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "TCFCommSerial.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "TCFCommSerial - Win32 Release" || "$(CFG)" == "TCFCommSerial - Win32 Debug"
+SOURCE=..\TCFServer\BaseCom.cpp
+
+"$(INTDIR)\BaseCom.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommSerial.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\Common\Source\mutex.cpp
+
+"$(INTDIR)\mutex.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommSerial.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\RealSerialComm.cpp
+
+"$(INTDIR)\RealSerialComm.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommSerial.pch"
+
+
+SOURCE=.\StdAfx.cpp
+
+!IF  "$(CFG)" == "TCFCommSerial - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"$(INTDIR)\TCFCommSerial.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\TCFCommSerial.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFCommSerial - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"$(INTDIR)\TCFCommSerial.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\TCFCommSerial.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\TCDebugLog.cpp
+
+"$(INTDIR)\TCDebugLog.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommSerial.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\TCFCommSerial.cpp
+
+"$(INTDIR)\TCFCommSerial.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommSerial.pch"
+
+
+
+!ENDIF 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/TCFCommSerial.plg	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,48 @@
+<html>
+<body>
+<pre>
+<h1>Build Log</h1>
+<h3>
+--------------------Configuration: TCFCommSerial - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23D7.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"Debug/TCFCommSerial.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf.legacy\native\TCFNative\TCFCommSerial\RealSerialComm.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23D7.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23D8.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"Debug/TCFCommSerial.pdb" /map:"Debug/TCFCommSerial.map" /debug /machine:I386 /out:"Debug/TCFCommSerial.dll" /implib:"Debug/TCFCommSerial.lib" /pdbtype:sept 
+.\Debug\BaseCom.obj
+.\Debug\mutex.obj
+.\Debug\RealSerialComm.obj
+.\Debug\StdAfx.obj
+.\Debug\TCDebugLog.obj
+.\Debug\TCFCommSerial.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23D8.tmp"
+<h3>Output Window</h3>
+Compiling...
+RealSerialComm.cpp
+Linking...
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23D9.bat" with contents
+[
+@echo off
+copyBinaries Debug
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23D9.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommSerial.dll - 0 error(s), 0 warning(s)
+</pre>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/copyBinaries.cmd	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,5 @@
+echo off
+echo Copy binaries to ..\..\..\os\win32\x86
+copy /V %1\TCFCommSerial.dll ..\..\..\os\win32\x86
+copy /V %1\TCFCommSerial.lib ..\..\..\os\win32\x86
+copy /V %1\TCFCommSerial.map ..\..\..\os\win32\x86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/ReadMe.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,37 @@
+========================================================================
+       DYNAMIC LINK LIBRARY : TCFCommTCP
+========================================================================
+
+
+AppWizard has created this TCFCommTCP DLL for you.  
+
+This file contains a summary of what you will find in each of the files that
+make up your TCFCommTCP application.
+
+TCFCommTCP.dsp
+    This file (the project file) contains information at the project level and
+    is used to build a single project or subproject. Other users can share the
+    project (.dsp) file, but they should export the makefiles locally.
+
+TCFCommTCP.cpp
+    This is the main DLL source file.
+
+TCFCommTCP.h
+    This file contains your DLL exports.
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named TCFCommTCP.pch and a precompiled types file named StdAfx.obj.
+
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+
+/////////////////////////////////////////////////////////////////////////////
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/StdAfx.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.cpp : source file that includes just the standard includes
+//	TCFCommTCP.pch will be the pre-compiled header
+//	stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/StdAfx.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__7DD6E468_1B83_4416_82F1_1E86303443AD__INCLUDED_)
+#define AFX_STDAFX_H__7DD6E468_1B83_4416_82F1_1E86303443AD__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+
+// Insert your headers here
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+
+#include <stdlib.h>
+#include <windows.h>
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__7DD6E468_1B83_4416_82F1_1E86303443AD__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/TCFCommTCP.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// TCFCommTCP.cpp : Defines the entry point for the DLL application.
+//
+
+#include "stdafx.h"
+#include <sys/stat.h>
+#include "TCFCommTCP.h"
+#include "TcpComm.h"
+
+static const char* pCommType="tcp";
+static CBaseCom* pCommClass=NULL;
+#ifdef _DEBUG
+BOOL gDoLogging = FALSE;
+#endif
+
+BOOL APIENTRY DllMain( HANDLE hModule, 
+                       DWORD  ul_reason_for_call, 
+                       LPVOID lpReserved
+					 )
+{
+    switch (ul_reason_for_call)
+	{
+		case DLL_PROCESS_ATTACH:
+			{
+#ifdef _DEBUG
+				struct _stat buf;
+				char* dirname = "c:\\tcf";
+				int result = _stat(dirname, &buf);
+				if (result == 0) // exists
+				{
+					gDoLogging = TRUE;
+				}
+				else
+				{
+					gDoLogging = FALSE;
+				}
+#endif
+			}
+			break;
+		case DLL_THREAD_ATTACH:
+		case DLL_THREAD_DETACH:
+		case DLL_PROCESS_DETACH:
+			break;
+    }
+    return TRUE;
+}
+
+// register this connection type
+TCFCOMMTCP_API const char* RegisterComm()
+{
+	return pCommType;
+}
+
+// create this connection type
+TCFCOMMTCP_API CBaseCom* CreateComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol)
+{
+	pCommClass = new CTcpComm(connectSettings, connectionId, protocol);
+
+	return pCommClass;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/TCFCommTCP.dep	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,66 @@
+# Microsoft Developer Studio Generated Dependency File, included by TCFCommTCP.mak
+
+..\TCFServer\BaseCom.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	"..\TCFServer\BaseCom.h"\
+	"..\TCFServer\BaseProtocol.h"\
+	"..\TCFServer\Client.h"\
+	"..\TCFServer\MessageFile.h"\
+	"..\TCFServer\Registry.h"\
+	
+
+..\Common\Source\mutex.cpp : \
+	"..\Common\Headers\mutex.h"\
+	
+
+.\StdAfx.cpp : \
+	".\StdAfx.h"\
+	
+
+..\Common\Source\TCDebugLog.cpp : \
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	
+
+.\TCFCommTCP.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	"..\TCFServer\BaseCom.h"\
+	"..\TCFServer\BaseProtocol.h"\
+	"..\TCFServer\Client.h"\
+	"..\TCFServer\MessageFile.h"\
+	"..\TCFServer\Registry.h"\
+	".\TCFCommTCP.h"\
+	".\TcpComm.h"\
+	
+
+.\TcpComm.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	"..\TCFServer\BaseCom.h"\
+	"..\TCFServer\BaseProtocol.h"\
+	"..\TCFServer\Client.h"\
+	"..\TCFServer\Connection.h"\
+	"..\TCFServer\MessageFile.h"\
+	"..\TCFServer\Registry.h"\
+	".\TcpComm.h"\
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/TCFCommTCP.dsp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,154 @@
+# Microsoft Developer Studio Project File - Name="TCFCommTCP" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=TCFCommTCP - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFCommTCP.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFCommTCP.mak" CFG="TCFCommTCP - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFCommTCP - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "TCFCommTCP - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "TCFCommTCP - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /dll /map /machine:I386
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+PostBuild_Cmds=copybinaries Release
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "TCFCommTCP - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /dll /map /debug /machine:I386 /pdbtype:sept
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+PostBuild_Cmds=copybinaries Debug
+# End Special Build Tool
+
+!ENDIF 
+
+# Begin Target
+
+# Name "TCFCommTCP - Win32 Release"
+# Name "TCFCommTCP - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\TCFServer\BaseCom.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\mutex.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\TCDebugLog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFCommTCP.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TcpComm.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFCommTCP.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TcpComm.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Source File
+
+SOURCE=.\ReadMe.txt
+# End Source File
+# End Target
+# End Project
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/TCFCommTCP.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#include "BaseCom.h"
+// The following ifdef block is the standard way of creating macros which make exporting 
+// from a DLL simpler. All files within this DLL are compiled with the TCFCOMMTCP_EXPORTS
+// symbol defined on the command line. this symbol should not be defined on any project
+// that uses this DLL. This way any other project whose source files include this file see 
+// TCFCOMMTCP_API functions as being imported from a DLL, wheras this DLL sees symbols
+// defined with this macro as being exported.
+#ifdef TCFCOMMTCP_EXPORTS
+#define TCFCOMMTCP_API __declspec(dllexport)
+#else
+#define TCFCOMMTCP_API __declspec(dllimport)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+TCFCOMMTCP_API const char* RegisterComm();
+TCFCOMMTCP_API CBaseCom* CreateComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol);
+
+#ifdef __cplusplus
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/TCFCommTCP.mak	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,368 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on TCFCommTCP.dsp
+!IF "$(CFG)" == ""
+CFG=TCFCommTCP - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to TCFCommTCP - Win32 Debug.
+!ENDIF 
+
+!IF "$(CFG)" != "TCFCommTCP - Win32 Release" && "$(CFG)" != "TCFCommTCP - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFCommTCP.mak" CFG="TCFCommTCP - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFCommTCP - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "TCFCommTCP - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "TCFCommTCP - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFCommTCP.dll"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\BaseCom.obj"
+	-@erase "$(INTDIR)\mutex.obj"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\TCDebugLog.obj"
+	-@erase "$(INTDIR)\TCFCommTCP.obj"
+	-@erase "$(INTDIR)\TCFCommTCP.pch"
+	-@erase "$(INTDIR)\TcpComm.obj"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(OUTDIR)\TCFCommTCP.dll"
+	-@erase "$(OUTDIR)\TCFCommTCP.exp"
+	-@erase "$(OUTDIR)\TCFCommTCP.lib"
+	-@erase "$(OUTDIR)\TCFCommTCP.map"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /Fp"$(INTDIR)\TCFCommTCP.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFCommTCP.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\TCFCommTCP.pdb" /map:"$(INTDIR)\TCFCommTCP.map" /machine:I386 /out:"$(OUTDIR)\TCFCommTCP.dll" /implib:"$(OUTDIR)\TCFCommTCP.lib" 
+LINK32_OBJS= \
+	"$(INTDIR)\BaseCom.obj" \
+	"$(INTDIR)\mutex.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCDebugLog.obj" \
+	"$(INTDIR)\TCFCommTCP.obj" \
+	"$(INTDIR)\TcpComm.obj"
+
+"$(OUTDIR)\TCFCommTCP.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFCommTCP.dll"
+   copybinaries Release
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "TCFCommTCP - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFCommTCP.dll" "$(OUTDIR)\TCFCommTCP.bsc"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\BaseCom.obj"
+	-@erase "$(INTDIR)\BaseCom.sbr"
+	-@erase "$(INTDIR)\mutex.obj"
+	-@erase "$(INTDIR)\mutex.sbr"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\StdAfx.sbr"
+	-@erase "$(INTDIR)\TCDebugLog.obj"
+	-@erase "$(INTDIR)\TCDebugLog.sbr"
+	-@erase "$(INTDIR)\TCFCommTCP.obj"
+	-@erase "$(INTDIR)\TCFCommTCP.pch"
+	-@erase "$(INTDIR)\TCFCommTCP.sbr"
+	-@erase "$(INTDIR)\TcpComm.obj"
+	-@erase "$(INTDIR)\TcpComm.sbr"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(INTDIR)\vc60.pdb"
+	-@erase "$(OUTDIR)\TCFCommTCP.bsc"
+	-@erase "$(OUTDIR)\TCFCommTCP.dll"
+	-@erase "$(OUTDIR)\TCFCommTCP.exp"
+	-@erase "$(OUTDIR)\TCFCommTCP.ilk"
+	-@erase "$(OUTDIR)\TCFCommTCP.lib"
+	-@erase "$(OUTDIR)\TCFCommTCP.map"
+	-@erase "$(OUTDIR)\TCFCommTCP.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFCommTCP.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFCommTCP.bsc" 
+BSC32_SBRS= \
+	"$(INTDIR)\BaseCom.sbr" \
+	"$(INTDIR)\mutex.sbr" \
+	"$(INTDIR)\StdAfx.sbr" \
+	"$(INTDIR)\TCDebugLog.sbr" \
+	"$(INTDIR)\TCFCommTCP.sbr" \
+	"$(INTDIR)\TcpComm.sbr"
+
+"$(OUTDIR)\TCFCommTCP.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
+    $(BSC32) @<<
+  $(BSC32_FLAGS) $(BSC32_SBRS)
+<<
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\TCFCommTCP.pdb" /map:"$(INTDIR)\TCFCommTCP.map" /debug /machine:I386 /out:"$(OUTDIR)\TCFCommTCP.dll" /implib:"$(OUTDIR)\TCFCommTCP.lib" /pdbtype:sept 
+LINK32_OBJS= \
+	"$(INTDIR)\BaseCom.obj" \
+	"$(INTDIR)\mutex.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCDebugLog.obj" \
+	"$(INTDIR)\TCFCommTCP.obj" \
+	"$(INTDIR)\TcpComm.obj"
+
+"$(OUTDIR)\TCFCommTCP.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFCommTCP.dll" "$(OUTDIR)\TCFCommTCP.bsc"
+   copybinaries Debug
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("TCFCommTCP.dep")
+!INCLUDE "TCFCommTCP.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "TCFCommTCP.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "TCFCommTCP - Win32 Release" || "$(CFG)" == "TCFCommTCP - Win32 Debug"
+SOURCE=..\TCFServer\BaseCom.cpp
+
+!IF  "$(CFG)" == "TCFCommTCP - Win32 Release"
+
+
+"$(INTDIR)\BaseCom.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommTCP.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF  "$(CFG)" == "TCFCommTCP - Win32 Debug"
+
+
+"$(INTDIR)\BaseCom.obj"	"$(INTDIR)\BaseCom.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommTCP.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\mutex.cpp
+
+!IF  "$(CFG)" == "TCFCommTCP - Win32 Release"
+
+
+"$(INTDIR)\mutex.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommTCP.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF  "$(CFG)" == "TCFCommTCP - Win32 Debug"
+
+
+"$(INTDIR)\mutex.obj"	"$(INTDIR)\mutex.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommTCP.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF 
+
+SOURCE=.\StdAfx.cpp
+
+!IF  "$(CFG)" == "TCFCommTCP - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /Fp"$(INTDIR)\TCFCommTCP.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\TCFCommTCP.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFCommTCP - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFCommTCP.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\StdAfx.sbr"	"$(INTDIR)\TCFCommTCP.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\TCDebugLog.cpp
+
+!IF  "$(CFG)" == "TCFCommTCP - Win32 Release"
+
+
+"$(INTDIR)\TCDebugLog.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommTCP.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF  "$(CFG)" == "TCFCommTCP - Win32 Debug"
+
+
+"$(INTDIR)\TCDebugLog.obj"	"$(INTDIR)\TCDebugLog.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommTCP.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF 
+
+SOURCE=.\TCFCommTCP.cpp
+
+!IF  "$(CFG)" == "TCFCommTCP - Win32 Release"
+
+
+"$(INTDIR)\TCFCommTCP.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommTCP.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFCommTCP - Win32 Debug"
+
+
+"$(INTDIR)\TCFCommTCP.obj"	"$(INTDIR)\TCFCommTCP.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommTCP.pch"
+
+
+!ENDIF 
+
+SOURCE=.\TcpComm.cpp
+
+!IF  "$(CFG)" == "TCFCommTCP - Win32 Release"
+
+
+"$(INTDIR)\TcpComm.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommTCP.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFCommTCP - Win32 Debug"
+
+
+"$(INTDIR)\TcpComm.obj"	"$(INTDIR)\TcpComm.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommTCP.pch"
+
+
+!ENDIF 
+
+
+!ENDIF 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/TCFCommTCP.plg	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,16 @@
+<html>
+<body>
+<pre>
+<h1>Build Log</h1>
+<h3>
+--------------------Configuration: TCFCommTCP - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+
+
+
+<h3>Results</h3>
+TCFCommTCP.dll - 0 error(s), 0 warning(s)
+</pre>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/TcpComm.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,666 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// TcpComm.cpp: implementation of the CTcpComm class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "TcpComm.h"
+//#include "pn_const.h"
+//#include "OSTConstants.h"
+#include "Connection.h"
+
+#ifdef _DEBUG
+static char sTcpLogMsg[3000];
+#endif
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+CTcpComm::CTcpComm()
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\tcpcommlog.txt", "at");
+		fprintf(f, "CTcpComm::CTcpComm() (default constructor)\n");
+		fclose(f);
+	}
+#endif
+	m_socket = INVALID_SOCKET;
+	m_timeOut.tv_sec = TIMEOUT_SEC(DEFAULT_SOCKET_TIMEOUT);
+	m_timeOut.tv_usec = TIMEOUT_USEC(DEFAULT_SOCKET_TIMEOUT);
+
+	m_hSocketEvent = WSA_INVALID_EVENT;
+}
+
+CTcpComm::CTcpComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol)
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\tcpcommlog.txt", "at");
+		fprintf(f, "connectSettings=%x connectionId=%d, protocol=%x\n", connectSettings, connectionId, protocol);
+		fclose(f);
+	}
+#endif
+	m_connId = connectionId;
+	m_Protocol = protocol;
+
+	m_ConnectSettings = new ConnectData();
+	memcpy(m_ConnectSettings, connectSettings, sizeof(ConnectData));
+
+#if (defined(LOG_COMM) || defined(LOG_PROCCOMM)) && defined(_DEBUG)
+	if (gDoLogging)
+	{
+		m_CommDebugLog = new TCDebugLog("TCF_Comm", connectionId, 2000L);
+		m_ProcDebugLog = new TCDebugLog("TCF_CommP", connectionId, 2000L);
+	}
+#endif
+	m_socket = INVALID_SOCKET;
+	m_timeOut.tv_sec = TIMEOUT_SEC(DEFAULT_SOCKET_TIMEOUT);
+	m_timeOut.tv_usec = TIMEOUT_USEC(DEFAULT_SOCKET_TIMEOUT);
+
+	m_hSocketEvent = WSA_INVALID_EVENT;
+}
+CTcpComm::~CTcpComm()
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\tcpcommlog.txt", "at");
+		fprintf(f, "CTcpComm::~CTcpComm()\n");
+		fclose(f);
+	}
+#endif
+	if (IsConnected())
+	{
+		shutdown(m_socket, SD_BOTH);
+		closesocket(m_socket);
+		WSACleanup();
+	}
+	if (m_pBuffer)
+		delete[] m_pBuffer;
+
+	if (m_hSocketEvent != WSA_INVALID_EVENT)
+		WSACloseEvent(m_hSocketEvent);
+
+}
+
+//#define USE_EVENTS
+;
+long CTcpComm::OpenPort()
+{
+	COMMLOGOPEN();
+	COMMLOGS("CTcpComm::OpenPort\n");
+
+	long err = TCAPI_ERR_NONE;
+	char* ipAddress = m_ConnectSettings->tcpSettings.ipAddress;
+	char* ipPort = m_ConnectSettings->tcpSettings.ipPort;
+	// set this to set socket to non-blocking
+	// DWORD nonblock = 1;		// non-blocking
+	DWORD nonblock = 0;		// blocking
+
+	COMMLOGA2("CTcpComm::OpenPort ipAddress=%s ipPort=%s\n", ipAddress, ipPort);
+
+	WSADATA wsaData;
+	int wsaErr = WSAStartup(MAKEWORD(2,2), &wsaData);
+	if (wsaErr != 0)
+	{
+		err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+//		err = -1;
+	}
+	else
+	{
+		m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+		if (m_socket == INVALID_SOCKET)
+		{
+			m_lastCommError = WSAGetLastError();
+			WSACleanup();
+			err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+		}
+		else
+		{
+			if (ioctlsocket(m_socket, FIONBIO, &nonblock) == SOCKET_ERROR)
+			{
+				m_lastCommError = WSAGetLastError();
+				closesocket(m_socket);
+				m_socket = INVALID_SOCKET;
+				WSACleanup();
+				err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+			}
+			else
+			{
+				int i = SO_MAX_MSG_SIZE;
+				// set socket options
+				BOOL keepAlive = TRUE;
+				setsockopt(m_socket, SOL_SOCKET, SO_KEEPALIVE, (const char*)&keepAlive, sizeof(BOOL));
+				int sockRecvSize = MAX_TCP_MESSAGE_BUFFER_LENGTH;//(256*1024L);
+				setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, (const char*)&sockRecvSize, sizeof(int));
+				int sockSendSize = (64*1024L);
+				setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (const char*)&sockSendSize, sizeof(int));
+				WSAGetLastError(); // ignore error for now
+				int gotsockRecvSize, optLen=sizeof(int);
+				getsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, (char*)&gotsockRecvSize, &optLen);
+				WSAGetLastError(); // ignore error for now
+				// connect
+				WORD wPort = atoi(ipPort);
+				m_clientService.sin_family = AF_INET;
+				m_clientService.sin_addr.S_un.S_addr = inet_addr(ipAddress);
+				m_clientService.sin_port = htons(wPort);
+				if (connect(m_socket, (SOCKADDR*)&m_clientService, sizeof(m_clientService)) == SOCKET_ERROR)
+				{
+					int wsaErr = WSAGetLastError();
+					// socket is non-blocking
+					if (wsaErr != WSAEWOULDBLOCK)
+					{
+						m_lastCommError = wsaErr;
+
+						closesocket(m_socket);
+						m_socket = INVALID_SOCKET;
+						WSACleanup();
+						err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+					}
+					else // WSAEWOULDBLOCK error returned
+					{
+						// WSAEWOULDBLOCK use select now
+						fd_set readfds, writefds, exceptfds;
+						FD_ZERO(&readfds);
+						FD_ZERO(&writefds);
+						FD_ZERO(&exceptfds);
+						FD_SET(m_socket, &readfds);
+						FD_SET(m_socket, &writefds);
+						FD_SET(m_socket, &exceptfds);
+
+						int selRes = 0;
+						while(1)
+						{
+							selRes = select(0, &readfds, &writefds, &exceptfds, &m_timeOut);
+							if (selRes == SOCKET_ERROR)
+							{
+								wsaErr = WSAGetLastError();
+								if (wsaErr != WSAEWOULDBLOCK)
+								{
+									// real error
+									m_lastCommError = wsaErr;
+									shutdown(m_socket, SD_BOTH);
+									closesocket(m_socket);
+									m_socket = INVALID_SOCKET;
+									WSACleanup();
+									err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+								}
+								// else do another select
+							}
+							else if (selRes > 0)// select OK 
+							{
+								m_lastCommError = 0;
+								m_isConnected = true;
+								break; // done
+							}
+							else
+							{
+								// timed out
+								m_lastCommError = WSAGetLastError();
+								shutdown(m_socket, SD_BOTH);
+								closesocket(m_socket);
+								m_socket = INVALID_SOCKET;
+								WSACleanup();
+								err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
+							}
+						}
+					}
+				}
+				else // connect return OK
+				{
+					m_lastCommError = 0;
+					m_isConnected = true;
+				}
+			}
+		}
+	}
+	if (err == TCAPI_ERR_NONE)
+	{
+		// we are connected
+		m_numberBytes = 0;
+		m_pBuffer = new BYTE[MAX_TCP_MESSAGE_BUFFER_LENGTH];
+
+#ifdef USE_EVENTS
+		// create an event for the socket closing
+		m_hSocketEvent = WSACreateEvent();
+		::WSAEventSelect(m_socket, m_hSocketEvent, FD_CLOSE);
+		// above call sets socket to non-blocking
+		//  cannot reset to blocking after using WSAEventSelect
+		//  thus this ioctlsocket call will fail
+		ioctlsocket(m_socket, FIONBIO, &nonblock);
+#endif
+	}
+
+	COMMLOGCLOSE();
+	return err;
+}
+
+long CTcpComm::ClosePort()
+{
+	COMMLOGOPEN();
+	COMMLOGS("CTcpComm::ClosePort\n");
+
+	long err = TCAPI_ERR_NONE;
+
+	if (!IsConnected())
+	{
+		err = TCAPI_ERR_MEDIA_NOT_OPEN;
+	}
+	else
+	{
+		shutdown(m_socket, SD_BOTH);
+		closesocket(m_socket);
+		m_socket = INVALID_SOCKET;
+		WSACleanup();
+
+		delete[] m_pBuffer;
+		m_pBuffer = NULL;
+
+		if (m_hSocketEvent != WSA_INVALID_EVENT)
+		{
+			WSACloseEvent(m_hSocketEvent);
+			m_hSocketEvent = WSA_INVALID_EVENT;
+		}
+	}
+
+	COMMLOGCLOSE();
+	return err;
+}
+
+long CTcpComm::PollPort(DWORD &outSize)
+{
+	long err = TCAPI_ERR_NONE;
+	DWORD numBytes = 0;
+	outSize = 0;
+
+	if (!IsConnected())
+		return TCAPI_ERR_MEDIA_NOT_OPEN;
+
+#ifdef USE_EVENTS
+	int ret = ::WSAWaitForMultipleEvents(1, &m_hSocketEvent, FALSE, 0, FALSE);
+	if (ret == WSA_WAIT_EVENT_0)
+	{
+		::WSAResetEvent(m_hSocketEvent);
+		err = TCAPI_ERR_COMM_ERROR;
+		m_lastCommError = WSAESHUTDOWN;
+		return err;
+	}
+#endif
+	int sockErr = 0; int optLen = sizeof(int);
+	int getErr = getsockopt(m_socket, SOL_SOCKET, SO_ERROR, (char*)&sockErr, &optLen);
+	if (getErr == 0)
+	{
+		if (sockErr)
+		{
+			err = TCAPI_ERR_COMM_ERROR;
+			m_lastCommError = sockErr;
+			return err;
+		}
+	}
+
+	fd_set readfds, writefds, exceptfds;
+	FD_ZERO(&readfds); 
+	FD_ZERO(&writefds); 
+	FD_ZERO(&exceptfds);
+	FD_SET(m_socket, &readfds);
+	FD_SET(m_socket, &writefds);
+	FD_SET(m_socket, &exceptfds);
+
+	bool portReady = false;
+	{
+		TIMEVAL pollTimeout = {0,0}; // just poll the status
+		int selErr = select(0, &readfds, 0, 0, &pollTimeout);
+		if (selErr > 0)
+		{
+			if (FD_ISSET(m_socket, &readfds))
+			{
+				m_lastCommError = 0;
+				portReady = true;
+			}
+		}
+		else if (selErr == SOCKET_ERROR)
+		{
+			m_lastCommError = WSAGetLastError();
+			err = TCAPI_ERR_COMM_ERROR;
+		}
+	}
+
+	if (portReady)
+	{
+		// read was signaled as ready
+		int recvRet = recv(m_socket, (char*)&m_pPeekBuffer, sizeof(m_pPeekBuffer), MSG_PEEK);
+		if (recvRet > 0)
+		{
+			if (ioctlsocket(m_socket, FIONREAD, &numBytes) == 0)
+			{
+				m_lastCommError = 0;
+				outSize = numBytes;
+			}
+			else // SOCKET_ERROR
+			{
+				m_lastCommError = WSAGetLastError();
+				err = TCAPI_ERR_COMM_ERROR;
+			}
+		}
+		else if (recvRet == 0)
+		{
+			// read was signalled as ready but recv=0 signals that remote shutdown
+			m_lastCommError = WSAESHUTDOWN;
+			err = TCAPI_ERR_COMM_ERROR;
+		}
+		else
+		{
+			// SOCKET_ERROR: error on recv other than a shutdown
+			m_lastCommError = WSAGetLastError();
+			err = TCAPI_ERR_COMM_ERROR;
+		}
+	}
+	return err;
+}
+
+long CTcpComm::ReadPort(DWORD inSize, void *outData, DWORD &outSize)
+{
+	long err = TCAPI_ERR_NONE;
+	DWORD numBytes = 0;
+	outSize = 0;
+
+	if (!IsConnected())
+		return TCAPI_ERR_MEDIA_NOT_OPEN;
+
+	if (ioctlsocket(m_socket, FIONREAD, &numBytes) == 0)
+	{
+		if (numBytes > inSize)
+			numBytes = inSize;
+		int res = recv(m_socket, (char*)outData, numBytes, 0);
+		if (res == SOCKET_ERROR)
+		{
+			long commErr = WSAGetLastError();
+			if ((DWORD)commErr != m_lastCommError)
+			{
+				m_lastCommError = commErr;
+			}
+			err = TCAPI_ERR_COMM_ERROR;
+		}
+		else if (res == 0)
+		{
+			// recv=0 --> connection closed
+			m_lastCommError = WSAESHUTDOWN;
+			err = TCAPI_ERR_COMM_ERROR;
+		}
+		else
+		{
+			m_lastCommError = 0;
+			outSize = numBytes;
+		}
+	}
+	else
+	{
+		// SOCKET_ERROR on ioctlsocket
+		m_lastCommError = WSAGetLastError();
+		err = TCAPI_ERR_COMM_ERROR;
+	}
+	return err;
+}
+long CTcpComm::ProcessBuffer(CConnection* pConn, CRegistry* pRegistry, long& numberProcessed)
+{
+
+	long err = TCAPI_ERR_NONE;
+	long routingErr = TCAPI_ERR_NONE;
+
+	if (!IsConnected())
+		return TCAPI_ERR_MEDIA_NOT_OPEN;
+
+	if (!m_Protocol)
+		return TCAPI_ERR_UNKNOWN_MEDIA_TYPE;
+
+	DWORD protocolHeaderLength = m_Protocol->GetHeaderLength();
+
+	// fill buffer
+	if (m_numberBytes < MAX_TCP_MESSAGE_BUFFER_LENGTH)
+	{
+		DWORD outLen = MAX_TCP_MESSAGE_BUFFER_LENGTH - m_numberBytes;
+		BYTE* ptr = &m_pBuffer[m_numberBytes];
+		err = ReadPort(outLen, ptr, outLen);
+		if (err == TCAPI_ERR_NONE && outLen > 0)
+		{
+			m_numberBytes += outLen;
+		}
+	}
+	
+	// now process buffer but only for complete messages
+	if (err == TCAPI_ERR_NONE)
+	{
+		if (m_numberBytes >= protocolHeaderLength)
+		{
+			BYTE* ptr = m_pBuffer;
+			long bytesRemaining = m_numberBytes;
+			long usedLen = 0;
+			bool done = false;
+
+			while (!done)
+			{
+				DWORD fullMessageLength = bytesRemaining;
+				DWORD rawLength = 0;
+				BYTE* fullMessage = ptr;
+				BYTE* rawMessage = ptr;
+				BYTE msgId = 0;
+				if (m_Protocol->DecodeMessage(fullMessage, fullMessageLength, msgId, rawMessage, rawLength))
+				{
+					err = PreProcessMessage(msgId, fullMessageLength, fullMessage);
+					if (err != TCAPI_ERR_NONE)
+					{
+						PROCLOGOPEN();
+						PROCLOGA1("CTcpComm::ProcessBuffer Notify err = %x\n", err);
+						PROCLOGCLOSE();
+						// notify all clients right now 
+						pConn->NotifyClientsCommError(err, false, 0);
+						err = TCAPI_ERR_NONE;
+					}
+#ifdef _DEBUG
+					int reallen = fullMessageLength;
+					if (reallen > 50) reallen = 50;
+					char msg[6];
+					msg[0] = '\0';
+
+					sTcpLogMsg[0] = '\0';
+					if (reallen > 0)
+					{
+						sTcpLogMsg[0] = '\0';
+						for (int i = 0; i < reallen; i++)
+						{
+							sprintf(msg, "%02.2x ", ptr[i]);
+							strcat(sTcpLogMsg, msg);
+						}
+					}
+#endif
+					PROCLOGOPEN();
+					PROCLOGA5("CTcpComm::ProcessBuffer - RouteMesssage pRegistry = %x id=%x len=%d len=%d\n  msg=%s\n", pRegistry, msgId, fullMessageLength, rawLength, sTcpLogMsg);
+					PROCLOGCLOSE();
+
+					err = pRegistry->RouteMessage(msgId, fullMessage, fullMessageLength, rawMessage, rawLength);
+					if (err != TCAPI_ERR_NONE) routingErr = err; // saved for future
+
+					numberProcessed++;
+					usedLen += fullMessageLength;
+					bytesRemaining -= fullMessageLength;
+					ptr += fullMessageLength;
+					if (bytesRemaining < protocolHeaderLength)
+						done = true;
+				}
+				else
+				{
+					done = true;
+				}
+			}
+			DeleteMsg(usedLen);
+		}
+	}
+
+	if (routingErr == TCAPI_ERR_NONE)
+		return err;
+	else
+		return routingErr;
+}
+
+
+long CTcpComm::SendDataToPort(DWORD inSize, const void* inData)
+{
+	COMMLOGOPEN();
+	COMMLOGS("CTcpComm::SendDataToPort\n");
+	
+	long err = TCAPI_ERR_NONE;
+
+	if (!IsConnected())
+	{
+		COMMLOGCLOSE();
+		return TCAPI_ERR_MEDIA_NOT_OPEN;
+	}
+
+#ifdef USE_EVENTS
+	int ret = ::WSAWaitForMultipleEvents(1, &m_hSocketEvent, FALSE, 0, FALSE);
+	if (ret == WSA_WAIT_EVENT_0)
+	{
+		::WSAResetEvent(m_hSocketEvent);
+		err = TCAPI_ERR_COMM_ERROR;
+		m_lastCommError = WSAESHUTDOWN;
+		COMMLOGCLOSE();
+		return err;
+	}
+#endif
+	int sockErr = 0; int optLen = sizeof(int);
+	int getErr = getsockopt(m_socket, SOL_SOCKET, SO_ERROR, (char*)&sockErr, &optLen);
+	if (getErr == 0)
+	{
+		if (sockErr)
+		{
+			err = TCAPI_ERR_COMM_ERROR;
+			m_lastCommError = sockErr;
+			COMMLOGCLOSE();
+			return err;
+		}
+	}
+
+	fd_set readfds, writefds, exceptfds;
+	FD_ZERO(&readfds); 
+	FD_ZERO(&writefds); 
+	FD_ZERO(&exceptfds);
+	FD_SET(m_socket, &readfds);
+	FD_SET(m_socket, &writefds);
+	FD_SET(m_socket, &exceptfds);
+
+	COMMLOGS("CTcpComm::SendDataToPort select\n");
+	bool portReady = false;
+	{
+		int selErr = select(0, &readfds, &writefds, &exceptfds, &m_timeOut);
+		if (selErr > 0)
+		{
+			if (FD_ISSET(m_socket, &writefds))
+			{
+				m_lastCommError = 0;
+				portReady = true;
+			}
+		}
+		else if (selErr == SOCKET_ERROR)
+		{
+			m_lastCommError = WSAGetLastError();
+			err = TCAPI_ERR_COMM_ERROR;
+		}
+		else if (selErr == 0) // timeout
+		{
+			m_lastCommError = WSAGetLastError();
+			err = TCAPI_ERR_COMM_ERROR;
+		}
+	}
+	COMMLOGA1("CTcpComm::SendDataToPort portReady=%d\n", portReady);
+	if (portReady)
+	{
+		COMMLOGS("CTcpComm::SendDataToPort send start\n");
+		// loop until all bytes are sent
+		DWORD bytesRemaining = inSize;
+		DWORD nSent = 0;
+		char* unsent = (char*)inData;
+		while (bytesRemaining)
+		{
+			nSent = send(m_socket, unsent, bytesRemaining, 0);
+			if (nSent == SOCKET_ERROR)
+			{
+				int wsaErr = WSAGetLastError();
+				// ignore "would block" errors
+				if (wsaErr != WSAEWOULDBLOCK)
+				{
+					// TODO: error handling
+					m_lastCommError = wsaErr;
+					err = TCAPI_ERR_COMM_ERROR;
+					break;
+				}
+			}
+			else
+			{
+				m_lastCommError = 0;
+				unsent += nSent;
+				bytesRemaining -= nSent;
+			}
+		} // end while
+		COMMLOGS("CTcpComm::SendDataToPort send done\n");
+#ifdef _DEBUG
+		BYTE* ptr = (BYTE*)inData;
+		long numBytes = (inSize > 20) ? 20 : inSize;
+		char msg[200];
+		sprintf(msg, "CTcpComm::SendDataToPort data = ");
+		for (int i = 0; i < numBytes; i++)
+		{
+			sprintf(msg, "%s %02.2x", msg, ptr[i]);
+		}
+		sprintf(msg, "%s\n", msg);
+		COMMLOGS(msg);
+#endif
+	}
+
+	COMMLOGCLOSE();
+	return err;
+}
+
+void CTcpComm::DeleteMsg(DWORD inMsgLength)
+{
+	// inMsgLength includes header
+	// delete from beginning of buffer
+	if (inMsgLength == 0)
+		return;
+	if (m_numberBytes > 0 && m_numberBytes >= inMsgLength)
+	{
+		size_t moveLen = m_numberBytes - inMsgLength;
+		if (moveLen > 0)
+			memcpy(&m_pBuffer[0], &m_pBuffer[inMsgLength], moveLen);
+		m_numberBytes -= inMsgLength;
+	}
+}
+bool CTcpComm::IsConnectionEqual(ConnectData* pConn)
+{
+	if ((strcmp(pConn->tcpSettings.ipAddress, m_ConnectSettings->tcpSettings.ipAddress) == 0) &&
+		(strcmp(pConn->tcpSettings.ipPort, m_ConnectSettings->tcpSettings.ipPort) == 0))
+	{
+		return true;
+	}
+	else
+	{
+		return false;
+	}
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/TcpComm.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// TcpComm.h: interface for the CTcpComm class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_TCPCOMM_H__69657421_6D37_497A_A377_12E71365EDAB__INCLUDED_)
+#define AFX_TCPCOMM_H__69657421_6D37_497A_A377_12E71365EDAB__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "BaseCom.h"
+#include <winsock2.h>
+
+#define MAX_MESSAGE_LENGTH	(64*1024L)
+#define MAX_TCP_MESSAGE_BUFFER_LENGTH (8*MAX_MESSAGE_LENGTH)
+
+#define DEFAULT_SOCKET_TIMEOUT	(2000000L)	// 2 seconds
+#define TIMEOUT_SEC(x) (x/1000000L)
+#define TIMEOUT_USEC(x) (x%1000000L)
+
+class CTcpComm : public CBaseCom  
+{
+public:
+	CTcpComm();
+	CTcpComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol);
+	virtual ~CTcpComm();
+
+	virtual long OpenPort();
+	long ClosePort();
+	long SendDataToPort(DWORD inSize, const void* inData);
+	long PollPort(DWORD& outSize);
+	long ReadPort(DWORD inSize, void* outData, DWORD& outSize);
+	long ProcessBuffer(CConnection* pConn, CRegistry* pRegistry, long& numberProcessed);
+//	long ProcessBuffer(NOTIFYCLIENTSCOMMERROR pNotify, ROUTEMESSAGE pRouteMessage, long& numberProcessed);
+//	long ProcessBuffer(long& numberProcessed);
+	void DeleteMsg(DWORD inMsgLength);
+	bool GetVersion(char* outVersion) { return false; } // don't have enough information for this
+	bool HasVersion() { return false; } // can we have a version?
+	virtual long PreProcessMessage(int inMsgType, DWORD inMsgLength, BYTE* inMessage) { return TCAPI_ERR_NONE; }
+	virtual long PreProcessMessage(BYTE msgId, DWORD inMsgLength, BYTE* inMessage) { return TCAPI_ERR_NONE; }
+	bool IsConnectionEqual(ConnectData* pConn);
+
+private:
+	SOCKET m_socket;
+	sockaddr_in m_clientService;
+	TIMEVAL m_timeOut;
+	WSAEVENT m_hSocketEvent; 
+	DWORD m_pPeekBuffer;
+
+};
+
+#endif // !defined(AFX_TCPCOMM_H__69657421_6D37_497A_A377_12E71365EDAB__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/copyBinaries.cmd	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,5 @@
+echo off
+echo Copy binaries to ..\..\..\os\win32\x86
+copy /V %1\TCFCommTCP.dll ..\..\..\os\win32\x86
+copy /V %1\TCFCommTCP.lib ..\..\..\os\win32\x86
+copy /V %1\TCFCommTCP.map ..\..\..\os\win32\x86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/ReadMe.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,37 @@
+========================================================================
+       DYNAMIC LINK LIBRARY : TCFCommVirtualSerial
+========================================================================
+
+
+AppWizard has created this TCFCommVirtualSerial DLL for you.  
+
+This file contains a summary of what you will find in each of the files that
+make up your TCFCommVirtualSerial application.
+
+TCFCommVirtualSerial.dsp
+    This file (the project file) contains information at the project level and
+    is used to build a single project or subproject. Other users can share the
+    project (.dsp) file, but they should export the makefiles locally.
+
+TCFCommVirtualSerial.cpp
+    This is the main DLL source file.
+
+TCFCommVirtualSerial.h
+    This file contains your DLL exports.
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named TCFCommVirtualSerial.pch and a precompiled types file named StdAfx.obj.
+
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+
+/////////////////////////////////////////////////////////////////////////////
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/StdAfx.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.cpp : source file that includes just the standard includes
+//	TCFCommVirtualSerial.pch will be the pre-compiled header
+//	stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/StdAfx.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__9F3786A5_6D42_4ECE_BA9A_9BAE7093845F__INCLUDED_)
+#define AFX_STDAFX_H__9F3786A5_6D42_4ECE_BA9A_9BAE7093845F__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+
+// Insert your headers here
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+
+#include <stdlib.h>
+#include <windows.h>
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__9F3786A5_6D42_4ECE_BA9A_9BAE7093845F__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/TCFCommVirtualSerial.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// TCFCommVirtualSerial.cpp : Defines the entry point for the DLL application.
+//
+
+#include "stdafx.h"
+#include <sys/stat.h>
+#include "TCFCommVirtualSerial.h"
+#include "VirtualSerialComm.h"
+
+static const char* pCommType="virtualserial";
+static CBaseCom* pCommClass=NULL;
+#ifdef _DEBUG
+BOOL gDoLogging = FALSE;
+#endif
+
+BOOL APIENTRY DllMain( HANDLE hModule, 
+                       DWORD  ul_reason_for_call, 
+                       LPVOID lpReserved
+					 )
+{
+    switch (ul_reason_for_call)
+	{
+		case DLL_PROCESS_ATTACH:
+			{
+#ifdef _DEBUG
+				struct _stat buf;
+				char* dirname = "c:\\tcf";
+				int result = _stat(dirname, &buf);
+				if (result == 0) // exists
+				{
+					gDoLogging = TRUE;
+				}
+				else
+				{
+					gDoLogging = FALSE;
+				}
+#endif
+			}
+			break;
+		case DLL_THREAD_ATTACH:
+		case DLL_THREAD_DETACH:
+		case DLL_PROCESS_DETACH:
+			break;
+    }
+    return TRUE;
+}
+
+// register this connection type
+TCFCOMMVIRTUALSERIAL_API const char* RegisterComm()
+{
+	return pCommType;
+}
+
+// create this connection type
+TCFCOMMVIRTUALSERIAL_API CBaseCom* CreateComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol)
+{
+	pCommClass = new VirtualSerialComm(connectSettings, connectionId, protocol);
+
+	return pCommClass;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/TCFCommVirtualSerial.dep	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,85 @@
+# Microsoft Developer Studio Generated Dependency File, included by TCFCommVirtualSerial.mak
+
+..\TCFServer\BaseCom.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	"..\TCFServer\BaseCom.h"\
+	"..\TCFServer\BaseProtocol.h"\
+	"..\TCFServer\Client.h"\
+	"..\TCFServer\MessageFile.h"\
+	"..\TCFServer\Registry.h"\
+	
+
+..\Common\Source\mutex.cpp : \
+	"..\Common\Headers\mutex.h"\
+	
+
+..\TCFCommSerial\RealSerialComm.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	"..\TCFCommSerial\RealSerialComm.h"\
+	"..\TCFServer\BaseCom.h"\
+	"..\TCFServer\BaseProtocol.h"\
+	"..\TCFServer\Client.h"\
+	"..\TCFServer\Connection.h"\
+	"..\TCFServer\MessageFile.h"\
+	"..\TCFServer\Registry.h"\
+	
+
+.\StdAfx.cpp : \
+	".\StdAfx.h"\
+	
+
+..\Common\Source\TCDebugLog.cpp : \
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	
+
+.\TCFCommVirtualSerial.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	"..\TCFCommSerial\RealSerialComm.h"\
+	"..\TCFServer\BaseCom.h"\
+	"..\TCFServer\BaseProtocol.h"\
+	"..\TCFServer\Client.h"\
+	"..\TCFServer\MessageFile.h"\
+	"..\TCFServer\Registry.h"\
+	".\TCFCommVirtualSerial.h"\
+	".\VirtualSerialComm.h"\
+	
+
+.\VirtualSerialComm.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	"..\TCFCommSerial\RealSerialComm.h"\
+	"..\TCFServer\BaseCom.h"\
+	"..\TCFServer\BaseProtocol.h"\
+	"..\TCFServer\Client.h"\
+	"..\TCFServer\MessageFile.h"\
+	"..\TCFServer\Registry.h"\
+	".\VirtualSerialComm.h"\
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/TCFCommVirtualSerial.dsp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,162 @@
+# Microsoft Developer Studio Project File - Name="TCFCommVirtualSerial" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=TCFCommVirtualSerial - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFCommVirtualSerial.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFCommVirtualSerial.mak" CFG="TCFCommVirtualSerial - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFCommVirtualSerial - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "TCFCommVirtualSerial - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "TCFCommVirtualSerial - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /map /machine:I386
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+PostBuild_Cmds=copyBinaries Release
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "TCFCommVirtualSerial - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /map /debug /machine:I386 /pdbtype:sept
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+PostBuild_Cmds=copyBinaries Debug
+# End Special Build Tool
+
+!ENDIF 
+
+# Begin Target
+
+# Name "TCFCommVirtualSerial - Win32 Release"
+# Name "TCFCommVirtualSerial - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\TCFServer\BaseCom.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\mutex.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\TCFCommSerial\RealSerialComm.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\TCDebugLog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFCommVirtualSerial.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\VirtualSerialComm.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\TCFCommSerial\RealSerialComm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFCommVirtualSerial.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\VirtualSerialComm.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Source File
+
+SOURCE=.\ReadMe.txt
+# End Source File
+# End Target
+# End Project
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/TCFCommVirtualSerial.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#include "BaseCom.h"
+// The following ifdef block is the standard way of creating macros which make exporting 
+// from a DLL simpler. All files within this DLL are compiled with the TCFCOMMVIRTUALSERIAL_EXPORTS
+// symbol defined on the command line. this symbol should not be defined on any project
+// that uses this DLL. This way any other project whose source files include this file see 
+// TCFCOMMVIRTUALSERIAL_API functions as being imported from a DLL, wheras this DLL sees symbols
+// defined with this macro as being exported.
+#ifdef TCFCOMMVIRTUALSERIAL_EXPORTS
+#define TCFCOMMVIRTUALSERIAL_API __declspec(dllexport)
+#else
+#define TCFCOMMVIRTUALSERIAL_API __declspec(dllimport)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+TCFCOMMVIRTUALSERIAL_API const char* RegisterComm();
+TCFCOMMVIRTUALSERIAL_API CBaseCom* CreateComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol);
+
+#ifdef __cplusplus
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/TCFCommVirtualSerial.mak	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,302 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on TCFCommVirtualSerial.dsp
+!IF "$(CFG)" == ""
+CFG=TCFCommVirtualSerial - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to TCFCommVirtualSerial - Win32 Debug.
+!ENDIF 
+
+!IF "$(CFG)" != "TCFCommVirtualSerial - Win32 Release" && "$(CFG)" != "TCFCommVirtualSerial - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFCommVirtualSerial.mak" CFG="TCFCommVirtualSerial - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFCommVirtualSerial - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "TCFCommVirtualSerial - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "TCFCommVirtualSerial - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFCommVirtualSerial.dll"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\BaseCom.obj"
+	-@erase "$(INTDIR)\mutex.obj"
+	-@erase "$(INTDIR)\RealSerialComm.obj"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\TCDebugLog.obj"
+	-@erase "$(INTDIR)\TCFCommVirtualSerial.obj"
+	-@erase "$(INTDIR)\TCFCommVirtualSerial.pch"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(INTDIR)\VirtualSerialComm.obj"
+	-@erase "$(OUTDIR)\TCFCommVirtualSerial.dll"
+	-@erase "$(OUTDIR)\TCFCommVirtualSerial.exp"
+	-@erase "$(OUTDIR)\TCFCommVirtualSerial.lib"
+	-@erase "$(OUTDIR)\TCFCommVirtualSerial.map"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"$(INTDIR)\TCFCommVirtualSerial.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFCommVirtualSerial.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\TCFCommVirtualSerial.pdb" /map:"$(INTDIR)\TCFCommVirtualSerial.map" /machine:I386 /out:"$(OUTDIR)\TCFCommVirtualSerial.dll" /implib:"$(OUTDIR)\TCFCommVirtualSerial.lib" 
+LINK32_OBJS= \
+	"$(INTDIR)\BaseCom.obj" \
+	"$(INTDIR)\mutex.obj" \
+	"$(INTDIR)\RealSerialComm.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCDebugLog.obj" \
+	"$(INTDIR)\TCFCommVirtualSerial.obj" \
+	"$(INTDIR)\VirtualSerialComm.obj"
+
+"$(OUTDIR)\TCFCommVirtualSerial.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFCommVirtualSerial.dll"
+   copyBinaries Release
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "TCFCommVirtualSerial - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFCommVirtualSerial.dll"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\BaseCom.obj"
+	-@erase "$(INTDIR)\mutex.obj"
+	-@erase "$(INTDIR)\RealSerialComm.obj"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\TCDebugLog.obj"
+	-@erase "$(INTDIR)\TCFCommVirtualSerial.obj"
+	-@erase "$(INTDIR)\TCFCommVirtualSerial.pch"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(INTDIR)\vc60.pdb"
+	-@erase "$(INTDIR)\VirtualSerialComm.obj"
+	-@erase "$(OUTDIR)\TCFCommVirtualSerial.dll"
+	-@erase "$(OUTDIR)\TCFCommVirtualSerial.exp"
+	-@erase "$(OUTDIR)\TCFCommVirtualSerial.ilk"
+	-@erase "$(OUTDIR)\TCFCommVirtualSerial.lib"
+	-@erase "$(OUTDIR)\TCFCommVirtualSerial.map"
+	-@erase "$(OUTDIR)\TCFCommVirtualSerial.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"$(INTDIR)\TCFCommVirtualSerial.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFCommVirtualSerial.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\TCFCommVirtualSerial.pdb" /map:"$(INTDIR)\TCFCommVirtualSerial.map" /debug /machine:I386 /out:"$(OUTDIR)\TCFCommVirtualSerial.dll" /implib:"$(OUTDIR)\TCFCommVirtualSerial.lib" /pdbtype:sept 
+LINK32_OBJS= \
+	"$(INTDIR)\BaseCom.obj" \
+	"$(INTDIR)\mutex.obj" \
+	"$(INTDIR)\RealSerialComm.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCDebugLog.obj" \
+	"$(INTDIR)\TCFCommVirtualSerial.obj" \
+	"$(INTDIR)\VirtualSerialComm.obj"
+
+"$(OUTDIR)\TCFCommVirtualSerial.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFCommVirtualSerial.dll"
+   copyBinaries Debug
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("TCFCommVirtualSerial.dep")
+!INCLUDE "TCFCommVirtualSerial.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "TCFCommVirtualSerial.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "TCFCommVirtualSerial - Win32 Release" || "$(CFG)" == "TCFCommVirtualSerial - Win32 Debug"
+SOURCE=..\TCFServer\BaseCom.cpp
+
+"$(INTDIR)\BaseCom.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommVirtualSerial.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\Common\Source\mutex.cpp
+
+"$(INTDIR)\mutex.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommVirtualSerial.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\TCFCommSerial\RealSerialComm.cpp
+
+"$(INTDIR)\RealSerialComm.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommVirtualSerial.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\StdAfx.cpp
+
+!IF  "$(CFG)" == "TCFCommVirtualSerial - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"$(INTDIR)\TCFCommVirtualSerial.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\TCFCommVirtualSerial.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFCommVirtualSerial - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"$(INTDIR)\TCFCommVirtualSerial.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\TCFCommVirtualSerial.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\TCDebugLog.cpp
+
+"$(INTDIR)\TCDebugLog.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommVirtualSerial.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\TCFCommVirtualSerial.cpp
+
+"$(INTDIR)\TCFCommVirtualSerial.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommVirtualSerial.pch"
+
+
+SOURCE=.\VirtualSerialComm.cpp
+
+"$(INTDIR)\VirtualSerialComm.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFCommVirtualSerial.pch"
+
+
+
+!ENDIF 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/TCFCommVirtualSerial.plg	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,49 @@
+<html>
+<body>
+<pre>
+<h1>Build Log</h1>
+<h3>
+--------------------Configuration: TCFCommVirtualSerial - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23DA.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"Debug/TCFCommVirtualSerial.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf.legacy\native\TCFNative\TCFCommSerial\RealSerialComm.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23DA.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23DB.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"Debug/TCFCommVirtualSerial.pdb" /map:"Debug/TCFCommVirtualSerial.map" /debug /machine:I386 /out:"Debug/TCFCommVirtualSerial.dll" /implib:"Debug/TCFCommVirtualSerial.lib" /pdbtype:sept 
+.\Debug\BaseCom.obj
+.\Debug\mutex.obj
+.\Debug\RealSerialComm.obj
+.\Debug\StdAfx.obj
+.\Debug\TCDebugLog.obj
+.\Debug\TCFCommVirtualSerial.obj
+.\Debug\VirtualSerialComm.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23DB.tmp"
+<h3>Output Window</h3>
+Compiling...
+RealSerialComm.cpp
+Linking...
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23DC.bat" with contents
+[
+@echo off
+copyBinaries Debug
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP23DC.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommVirtualSerial.dll - 0 error(s), 0 warning(s)
+</pre>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/VirtualSerialComm.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,123 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// VirtualSerialComm1.cpp: implementation of the VirtualSerialComm class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "VirtualSerialComm.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+VirtualSerialComm::VirtualSerialComm()
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\vscommlog.txt", "at");
+		fprintf(f, "VirtualSerialComm::VirtualSerialComm() (default constructor)\n");
+		fclose(f);
+	}
+#endif
+}
+VirtualSerialComm::VirtualSerialComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol)
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\vscommlog.txt", "at");
+		fprintf(f, "connectSettings=%x connectionId=%d, protocol=%x\n", connectSettings, connectionId, protocol);
+		fprintf(f, "connectSettings->comPort=%s\n", connectSettings->virtualSerialSettings.comPort);
+		fclose(f);
+	}
+#endif
+	m_connId = connectionId;
+	m_Protocol = protocol;
+
+	m_ConnectSettings = new ConnectData();
+	memcpy(m_ConnectSettings, connectSettings, sizeof(ConnectData));
+
+#if (defined(LOG_COMM) || defined(LOG_PROCCOMM)) && defined(_DEBUG)
+	if (gDoLogging)
+	{
+		m_CommDebugLog = new TCDebugLog("TCF_Comm", connectionId, 2000L);
+		m_ProcDebugLog = new TCDebugLog("TCF_CommP", connectionId, 2000L);
+	}
+#endif
+	pRealSerialConnectData pR = &m_ConnectSettings->realSerialSettings;
+	pVirtualSerialConnectData pV = &m_ConnectSettings->virtualSerialSettings;
+
+	// copy com port to real settings
+	strcpy(pR->comPort, pV->comPort);
+
+	// fill in real setting defaults
+	pR->baudRate = 115200;
+	pR->dataBits = 8;
+	pR->flowControl = eFlowControlNone;
+	pR->parity = eParityNone;
+	pR->stopBits = eStopBits1;
+}
+
+VirtualSerialComm::~VirtualSerialComm()
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\vscommlog.txt", "at");
+		fprintf(f, "VirtualSerialComm::~VirtualSerialComm()\n");
+		fclose(f);
+	}
+#endif
+}
+bool VirtualSerialComm::IsConnectionEqual(ConnectData* pConn)
+{
+	bool equal = false;
+
+	// forms accepted:
+	//   "comNN", "NN"
+	char* ptr1 = m_ConnectSettings->virtualSerialSettings.comPort;
+	char* ptr2 = pConn->virtualSerialSettings.comPort;
+	bool digit1found = false;
+	while(!digit1found && *ptr1 != NULL) 
+	{
+		if (*ptr1 >= '0' && *ptr1 <= '9')
+		{
+			digit1found = true;
+			break;
+		}
+		ptr1++;
+	}
+	bool digit2found = false;
+	while(!digit2found && *ptr2 != NULL) 
+	{
+		if (*ptr2 >= '0' && *ptr2 <= '9')
+		{
+			digit2found = true;
+			break;
+		}
+		ptr2++;
+	}
+	if (digit1found && digit2found)
+	{
+		if (strcmp(ptr1, ptr2) == 0)
+			equal = true;
+	}
+	return equal;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/VirtualSerialComm.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// VirtualSerialComm1.h: interface for the VirtualSerialComm class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_VIRTUALSERIALCOMM1_H__C5549E09_44AA_4DD2_9DD0_56054DCA0C20__INCLUDED_)
+#define AFX_VIRTUALSERIALCOMM1_H__C5549E09_44AA_4DD2_9DD0_56054DCA0C20__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "RealSerialComm.h"
+
+class VirtualSerialComm : public CRealSerialComm  
+{
+public:
+	VirtualSerialComm();
+	VirtualSerialComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol);
+	virtual ~VirtualSerialComm();
+
+	virtual bool IsConnectionEqual(ConnectData* pConn);
+};
+
+#endif // !defined(AFX_VIRTUALSERIALCOMM1_H__C5549E09_44AA_4DD2_9DD0_56054DCA0C20__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFCommVirtualSerial/copyBinaries.cmd	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,5 @@
+echo off
+echo Copy binaries to ..\..\..\os\win32\x86
+copy /V %1\TCFCommVirtualSerial.dll ..\..\..\os\win32\x86
+copy /V %1\TCFCommVirtualSerial.lib ..\..\..\os\win32\x86
+copy /V %1\TCFCommVirtualSerial.map ..\..\..\os\win32\x86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFNative.dsw	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,89 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "TCFClient"=.\TCFClient\TCFClient.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "TCFCommSerial"=.\TCFCommSerial\TCFCommSerial.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "TCFCommTCP"=.\TCFCommTCP\TCFCommTCP.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "TCFCommVirtualSerial"=.\TCFCommVirtualSerial\TCFCommVirtualSerial.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "TCFProtOST"=.\TCFProtOST\TCFProtOST.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "TCFServer"=.\TCFServer\TCFServer.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
Binary file connectivity/com.nokia.tcf/native/TCFNative/TCFNative.ncb has changed
Binary file connectivity/com.nokia.tcf/native/TCFNative/TCFNative.opt has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/OSTProtocol.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// OSTProtocol.cpp: implementation of the COSTProtocol class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "OSTProtocol.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+COSTProtocol::COSTProtocol()
+{
+
+}
+
+COSTProtocol::~COSTProtocol()
+{
+
+}
+BOOL COSTProtocol::DecodeMessage(BYTE* fullMessage, DWORD& fullMessageLength, BYTE& msgId, BYTE*& rawMessage, DWORD& rawLength)
+{
+	BOOL found = FALSE;
+
+	WORD msgLen = MAKEWORD(fullMessage[OST_LEN_BYTE_1+1], fullMessage[OST_LEN_BYTE_1]);
+	if (fullMessageLength >= (WORD)(msgLen + OST_HDR_LEN_1))
+	{
+		msgId = fullMessage[OST_PROT_BYTE_1];
+		rawMessage = &fullMessage[OST_MSG_BYTE_1];
+		rawLength = msgLen;
+		fullMessageLength = msgLen+OST_HDR_LEN_1;
+		found = TRUE;
+	}
+
+	return found;
+}
+
+DWORD COSTProtocol::EncodeMessage(BYTE* rawMessage, DWORD rawLength, BYTE protocolVersion, BYTE msgId, BYTE* fullMessage, DWORD maxFullLength)
+{
+	DWORD outLength = 0;
+
+	fullMessage[OST_VER_BYTE_1] = protocolVersion;
+	fullMessage[OST_PROT_BYTE_1] = msgId;
+	fullMessage[OST_LEN_BYTE_1] = (BYTE)((rawLength >> 8) & 0xff);
+	fullMessage[OST_LEN_BYTE_1+1] = (BYTE)(rawLength & 0xff);
+	if (rawLength > 0)
+	{
+		memcpy(&fullMessage[OST_MSG_BYTE_1], rawMessage, rawLength);
+	}
+	outLength = rawLength + OST_HDR_LEN_1;
+
+	return outLength;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/OSTProtocol.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// OSTProtocol.h: interface for the COSTProtocol class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_OSTPROTOCOL_H__6A8FE0C0_A365_4649_8665_EFCCA002A707__INCLUDED_)
+#define AFX_OSTPROTOCOL_H__6A8FE0C0_A365_4649_8665_EFCCA002A707__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "BaseProtocol.h"
+// Version 1 offsets
+#define OST_HDR_LEN_1	4	// header length
+#define OST_VER_BYTE_1	0	// byte that contains the version
+#define OST_PROT_BYTE_1	1	// protocol byte
+#define OST_LEN_BYTE_1	2	// first byte of length (bytes 2-3)
+#define OST_MSG_BYTE_1	4	// start of message bytes
+	
+// Protocol constants
+#define OST_PROT_OST_SYSTEM			(0x00)	// OST System messages
+#define OST_PROT_OST_ACTIVATION		(0x01)	// OST Activation messages
+#define OST_PROT_OST_ASCII			(0x02)	// OST ASCII messages
+#define OST_PROT_OST_SIMPLE			(0x03)	// OST Simple messages
+#define OST_PROT_OST_EXTENSIBLE		(0x04)	// OST Extensible messages 
+#define OST_PROT_OST_SYMBIAN		(0x05)	// OST Symbian messages
+#define OST_PROT_TRK				(0x90)	// OST TRK messages
+#define OST_PROT_TC					(0x91)	// OST TraceCore messages
+
+class COSTProtocol : public CBaseProtocol  
+{
+public:
+	COSTProtocol();
+	virtual ~COSTProtocol();
+
+	BOOL DecodeMessage(BYTE* fullMessage, DWORD& fullLength, BYTE& msgId, BYTE*& rawMessage, DWORD& rawLength);
+	DWORD EncodeMessage(BYTE* rawMessage, DWORD rawLength, BYTE protocolVersion, BYTE msgId, BYTE* fullMessage, DWORD maxFullLength);
+	DWORD GetHeaderLength() { return OST_HDR_LEN_1; }
+};
+
+#endif // !defined(AFX_OSTPROTOCOL_H__6A8FE0C0_A365_4649_8665_EFCCA002A707__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/ReadMe.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,37 @@
+========================================================================
+       DYNAMIC LINK LIBRARY : TCFProtOST
+========================================================================
+
+
+AppWizard has created this TCFProtOST DLL for you.  
+
+This file contains a summary of what you will find in each of the files that
+make up your TCFProtOST application.
+
+TCFProtOST.dsp
+    This file (the project file) contains information at the project level and
+    is used to build a single project or subproject. Other users can share the
+    project (.dsp) file, but they should export the makefiles locally.
+
+TCFProtOST.cpp
+    This is the main DLL source file.
+
+TCFProtOST.h
+    This file contains your DLL exports.
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named TCFProtOST.pch and a precompiled types file named StdAfx.obj.
+
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+
+/////////////////////////////////////////////////////////////////////////////
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/StdAfx.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.cpp : source file that includes just the standard includes
+//	TCFProtOST.pch will be the pre-compiled header
+//	stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/StdAfx.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__FEC75CA3_A547_455E_AD43_CD2A8594423F__INCLUDED_)
+#define AFX_STDAFX_H__FEC75CA3_A547_455E_AD43_CD2A8594423F__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+
+// Insert your headers here
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+
+#include <stdlib.h>
+#include <windows.h>
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__FEC75CA3_A547_455E_AD43_CD2A8594423F__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/TCFProtOST.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// TCFProtOST.cpp : Defines the entry point for the DLL application.
+//
+
+#include "stdafx.h"
+#include "TCFProtOST.h"
+#include "OSTProtocol.h"
+
+static const char* pProtocol="ost";
+static COSTProtocol* pProtocolClass=NULL;
+
+BOOL APIENTRY DllMain( HANDLE hModule, 
+                       DWORD  ul_reason_for_call, 
+                       LPVOID lpReserved
+					 )
+{
+    switch (ul_reason_for_call)
+	{
+		case DLL_PROCESS_ATTACH:
+		case DLL_THREAD_ATTACH:
+		case DLL_THREAD_DETACH:
+		case DLL_PROCESS_DETACH:
+			break;
+    }
+    return TRUE;
+}
+
+TCFPROTOST_API const char* RegisterProtocol()
+{
+	return pProtocol;
+}
+
+TCFPROTOST_API CBaseProtocol* CreateProtocol()
+{
+	pProtocolClass = new COSTProtocol();
+	return pProtocolClass;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/TCFProtOST.dep	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,20 @@
+# Microsoft Developer Studio Generated Dependency File, included by TCFProtOST.mak
+
+..\TCFServer\BaseProtocol.cpp : \
+	"..\TCFServer\BaseProtocol.h"\
+	
+
+.\OSTProtocol.cpp : \
+	"..\TCFServer\BaseProtocol.h"\
+	".\OSTProtocol.h"\
+	
+
+.\StdAfx.cpp : \
+	".\StdAfx.h"\
+	
+
+.\TCFProtOST.cpp : \
+	"..\TCFServer\BaseProtocol.h"\
+	".\OSTProtocol.h"\
+	".\TCFProtOST.h"\
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/TCFProtOST.dsp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,146 @@
+# Microsoft Developer Studio Project File - Name="TCFProtOST" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=TCFProtOST - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFProtOST.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFProtOST.mak" CFG="TCFProtOST - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFProtOST - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "TCFProtOST - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "TCFProtOST - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /map /machine:I386
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+PostBuild_Cmds=copyBinaries Release
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "TCFProtOST - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /map /debug /machine:I386 /pdbtype:sept
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+PostBuild_Cmds=copyBinaries Debug
+# End Special Build Tool
+
+!ENDIF 
+
+# Begin Target
+
+# Name "TCFProtOST - Win32 Release"
+# Name "TCFProtOST - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\TCFServer\BaseProtocol.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\OSTProtocol.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFProtOST.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\OSTProtocol.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFProtOST.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Source File
+
+SOURCE=.\ReadMe.txt
+# End Source File
+# End Target
+# End Project
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/TCFProtOST.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#include "BaseProtocol.h"
+// The following ifdef block is the standard way of creating macros which make exporting 
+// from a DLL simpler. All files within this DLL are compiled with the TCFPROTOST_EXPORTS
+// symbol defined on the command line. this symbol should not be defined on any project
+// that uses this DLL. This way any other project whose source files include this file see 
+// TCFPROTOST_API functions as being imported from a DLL, wheras this DLL sees symbols
+// defined with this macro as being exported.
+#ifdef TCFPROTOST_EXPORTS
+#define TCFPROTOST_API __declspec(dllexport)
+#else
+#define TCFPROTOST_API __declspec(dllimport)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+TCFPROTOST_API const char* RegisterProtocol();
+TCFPROTOST_API CBaseProtocol* CreateProtocol();
+
+#ifdef __cplusplus
+}
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/TCFProtOST.mak	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,272 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on TCFProtOST.dsp
+!IF "$(CFG)" == ""
+CFG=TCFProtOST - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to TCFProtOST - Win32 Debug.
+!ENDIF 
+
+!IF "$(CFG)" != "TCFProtOST - Win32 Release" && "$(CFG)" != "TCFProtOST - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFProtOST.mak" CFG="TCFProtOST - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFProtOST - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "TCFProtOST - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "TCFProtOST - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFProtOST.dll"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\BaseProtocol.obj"
+	-@erase "$(INTDIR)\OSTProtocol.obj"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\TCFProtOST.obj"
+	-@erase "$(INTDIR)\TCFProtOST.pch"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(OUTDIR)\TCFProtOST.dll"
+	-@erase "$(OUTDIR)\TCFProtOST.exp"
+	-@erase "$(OUTDIR)\TCFProtOST.lib"
+	-@erase "$(OUTDIR)\TCFProtOST.map"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Fp"$(INTDIR)\TCFProtOST.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFProtOST.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\TCFProtOST.pdb" /map:"$(INTDIR)\TCFProtOST.map" /machine:I386 /out:"$(OUTDIR)\TCFProtOST.dll" /implib:"$(OUTDIR)\TCFProtOST.lib" 
+LINK32_OBJS= \
+	"$(INTDIR)\BaseProtocol.obj" \
+	"$(INTDIR)\OSTProtocol.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCFProtOST.obj"
+
+"$(OUTDIR)\TCFProtOST.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFProtOST.dll"
+   copyBinaries Release
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "TCFProtOST - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFProtOST.dll"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\BaseProtocol.obj"
+	-@erase "$(INTDIR)\OSTProtocol.obj"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\TCFProtOST.obj"
+	-@erase "$(INTDIR)\TCFProtOST.pch"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(INTDIR)\vc60.pdb"
+	-@erase "$(OUTDIR)\TCFProtOST.dll"
+	-@erase "$(OUTDIR)\TCFProtOST.exp"
+	-@erase "$(OUTDIR)\TCFProtOST.ilk"
+	-@erase "$(OUTDIR)\TCFProtOST.lib"
+	-@erase "$(OUTDIR)\TCFProtOST.map"
+	-@erase "$(OUTDIR)\TCFProtOST.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Fp"$(INTDIR)\TCFProtOST.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFProtOST.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\TCFProtOST.pdb" /map:"$(INTDIR)\TCFProtOST.map" /debug /machine:I386 /out:"$(OUTDIR)\TCFProtOST.dll" /implib:"$(OUTDIR)\TCFProtOST.lib" /pdbtype:sept 
+LINK32_OBJS= \
+	"$(INTDIR)\BaseProtocol.obj" \
+	"$(INTDIR)\OSTProtocol.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCFProtOST.obj"
+
+"$(OUTDIR)\TCFProtOST.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy libs
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFProtOST.dll"
+   copyBinaries Debug
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("TCFProtOST.dep")
+!INCLUDE "TCFProtOST.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "TCFProtOST.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "TCFProtOST - Win32 Release" || "$(CFG)" == "TCFProtOST - Win32 Debug"
+SOURCE=..\TCFServer\BaseProtocol.cpp
+
+"$(INTDIR)\BaseProtocol.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFProtOST.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\OSTProtocol.cpp
+
+"$(INTDIR)\OSTProtocol.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFProtOST.pch"
+
+
+SOURCE=.\StdAfx.cpp
+
+!IF  "$(CFG)" == "TCFProtOST - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Fp"$(INTDIR)\TCFProtOST.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\TCFProtOST.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFProtOST - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Fp"$(INTDIR)\TCFProtOST.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\TCFProtOST.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=.\TCFProtOST.cpp
+
+"$(INTDIR)\TCFProtOST.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFProtOST.pch"
+
+
+
+!ENDIF 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/TCFProtOST.plg	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,409 @@
+<html>
+<body>
+<pre>
+<h1>Build Log</h1>
+<h3>
+--------------------Configuration: TCFClient - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating command line "rc.exe /l 0x409 /fo"Release/resource.res" /d "NDEBUG" "C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\resource.rc"" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28AE.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"Release/TCFClient.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\ClientManager.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\ErrorMonitorData.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\InputStream.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\ServerClient.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\shareddata.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\TCAPIConnectionJni.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\TCFClient.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\TCFCppApi.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28AE.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28AF.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"Release/TCFClient.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFClient\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28AF.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28B0.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib shlwapi.lib /nologo /dll /incremental:no /pdb:"Release/TCFClient.pdb" /map:"Release/TCFClient.map" /machine:I386 /out:"Release/TCFClient.dll" /implib:"Release/TCFClient.lib" 
+.\Release\ClientManager.obj
+.\Release\ErrorMonitorData.obj
+.\Release\InputStream.obj
+.\Release\mutex.obj
+.\Release\ServerClient.obj
+.\Release\shareddata.obj
+.\Release\StdAfx.obj
+.\Release\TCAPIConnectionJni.obj
+.\Release\TCDebugLog.obj
+.\Release\TCFClient.obj
+.\Release\TCFCppApi.obj
+.\Release\resource.res
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28B0.tmp"
+<h3>Output Window</h3>
+Compiling resources...
+Compiling...
+StdAfx.cpp
+Compiling...
+ClientManager.cpp
+ErrorMonitorData.cpp
+InputStream.cpp
+mutex.cpp
+ServerClient.cpp
+shareddata.cpp
+TCAPIConnectionJni.cpp
+TCDebugLog.cpp
+TCFClient.cpp
+TCFCppApi.cpp
+Generating Code...
+Linking...
+   Creating library Release/TCFClient.lib and object Release/TCFClient.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28B4.bat" with contents
+[
+@echo off
+copybinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28B4.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFClient.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFCommSerial - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28B5.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"Release/TCFCommSerial.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\BaseCom.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFCommSerial\RealSerialComm.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFCommSerial\TCFCommSerial.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28B5.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28B6.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"Release/TCFCommSerial.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFCommSerial\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28B6.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28B7.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/TCFCommSerial.pdb" /map:"Release/TCFCommSerial.map" /machine:I386 /out:"Release/TCFCommSerial.dll" /implib:"Release/TCFCommSerial.lib" 
+.\Release\BaseCom.obj
+.\Release\mutex.obj
+.\Release\RealSerialComm.obj
+.\Release\StdAfx.obj
+.\Release\TCDebugLog.obj
+.\Release\TCFCommSerial.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28B7.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseCom.cpp
+mutex.cpp
+RealSerialComm.cpp
+TCDebugLog.cpp
+TCFCommSerial.cpp
+Generating Code...
+Linking...
+   Creating library Release/TCFCommSerial.lib and object Release/TCFCommSerial.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28BB.bat" with contents
+[
+@echo off
+copyBinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28BB.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommSerial.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFCommTCP - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28BC.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /Fp"Release/TCFCommTCP.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\BaseCom.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFCommTCP\TCFCommTCP.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFCommTCP\TcpComm.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28BC.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28BD.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /Fp"Release/TCFCommTCP.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFCommTCP\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28BD.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28BE.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /dll /incremental:no /pdb:"Release/TCFCommTCP.pdb" /map:"Release/TCFCommTCP.map" /machine:I386 /out:"Release/TCFCommTCP.dll" /implib:"Release/TCFCommTCP.lib" 
+.\Release\BaseCom.obj
+.\Release\mutex.obj
+.\Release\StdAfx.obj
+.\Release\TCDebugLog.obj
+.\Release\TCFCommTCP.obj
+.\Release\TcpComm.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28BE.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseCom.cpp
+mutex.cpp
+TCDebugLog.cpp
+TCFCommTCP.cpp
+TcpComm.cpp
+Generating Code...
+Linking...
+   Creating library Release/TCFCommTCP.lib and object Release/TCFCommTCP.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28C2.bat" with contents
+[
+@echo off
+copybinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28C2.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommTCP.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFCommVirtualSerial - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28C3.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"Release/TCFCommVirtualSerial.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\BaseCom.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFCommSerial\RealSerialComm.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFCommVirtualSerial\TCFCommVirtualSerial.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFCommVirtualSerial\VirtualSerialComm.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28C3.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28C4.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"Release/TCFCommVirtualSerial.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFCommVirtualSerial\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28C4.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28C5.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/TCFCommVirtualSerial.pdb" /map:"Release/TCFCommVirtualSerial.map" /machine:I386 /out:"Release/TCFCommVirtualSerial.dll" /implib:"Release/TCFCommVirtualSerial.lib" 
+.\Release\BaseCom.obj
+.\Release\mutex.obj
+.\Release\RealSerialComm.obj
+.\Release\StdAfx.obj
+.\Release\TCDebugLog.obj
+.\Release\TCFCommVirtualSerial.obj
+.\Release\VirtualSerialComm.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28C5.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseCom.cpp
+mutex.cpp
+RealSerialComm.cpp
+TCDebugLog.cpp
+TCFCommVirtualSerial.cpp
+VirtualSerialComm.cpp
+Generating Code...
+Linking...
+   Creating library Release/TCFCommVirtualSerial.lib and object Release/TCFCommVirtualSerial.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28C9.bat" with contents
+[
+@echo off
+copyBinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28C9.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommVirtualSerial.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFProtOST - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28CA.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Fp"Release/TCFProtOST.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\BaseProtocol.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFProtOST\OSTProtocol.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFProtOST\TCFProtOST.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28CA.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28CB.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Fp"Release/TCFProtOST.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFProtOST\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28CB.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28CC.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/TCFProtOST.pdb" /map:"Release/TCFProtOST.map" /machine:I386 /out:"Release/TCFProtOST.dll" /implib:"Release/TCFProtOST.lib" 
+.\Release\BaseProtocol.obj
+.\Release\OSTProtocol.obj
+.\Release\StdAfx.obj
+.\Release\TCFProtOST.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28CC.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseProtocol.cpp
+OSTProtocol.cpp
+TCFProtOST.cpp
+Generating Code...
+Linking...
+   Creating library Release/TCFProtOST.lib and object Release/TCFProtOST.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28D0.bat" with contents
+[
+@echo off
+copyBinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28D0.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFProtOST.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFServer - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating command line "rc.exe /l 0x409 /fo"Release/resource.res" /d "NDEBUG" "C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\resource.rc"" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28D1.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Release/TCFServer.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\Client.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\CommRegistryItem.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\Connection.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\ConnectionImpl.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\ErrorMonitorData.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\InputStream.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\MessageFile.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\ProtocolRegistryItem.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\Registry.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\RegistryImpl.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\ServerClient.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\ServerManager.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\shareddata.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\TCFServer.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28D1.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28D2.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Release/TCFServer.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\Symbian\Carbide\devspace_203_0316\com.nokia.tcf\native\TCFNative\TCFServer\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28D2.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28D3.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /subsystem:console /incremental:no /pdb:"Release/TCFServer.pdb" /machine:I386 /out:"Release/TCFServer.exe" 
+.\Release\Client.obj
+.\Release\CommRegistryItem.obj
+.\Release\Connection.obj
+.\Release\ConnectionImpl.obj
+.\Release\ErrorMonitorData.obj
+.\Release\InputStream.obj
+.\Release\MessageFile.obj
+.\Release\mutex.obj
+.\Release\ProtocolRegistryItem.obj
+.\Release\Registry.obj
+.\Release\RegistryImpl.obj
+.\Release\ServerClient.obj
+.\Release\ServerManager.obj
+.\Release\shareddata.obj
+.\Release\StdAfx.obj
+.\Release\TCDebugLog.obj
+.\Release\TCFServer.obj
+.\Release\resource.res
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28D3.tmp"
+<h3>Output Window</h3>
+Compiling resources...
+Compiling...
+StdAfx.cpp
+Compiling...
+Client.cpp
+CommRegistryItem.cpp
+Connection.cpp
+ConnectionImpl.cpp
+ErrorMonitorData.cpp
+InputStream.cpp
+MessageFile.cpp
+mutex.cpp
+ProtocolRegistryItem.cpp
+Registry.cpp
+RegistryImpl.cpp
+ServerClient.cpp
+ServerManager.cpp
+shareddata.cpp
+TCDebugLog.cpp
+TCFServer.cpp
+Generating Code...
+Linking...
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28D5.bat" with contents
+[
+@echo off
+copybinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP28D5.bat"
+copy binary
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFServer.exe - 0 error(s), 0 warning(s)
+</pre>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFProtOST/copyBinaries.cmd	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,5 @@
+echo off
+echo Copy binaries to ..\..\..\os\win32\x86
+copy /V %1\TCFProtOST.dll ..\..\..\os\win32\x86
+copy /V %1\TCFProtOST.lib ..\..\..\os\win32\x86
+copy /V %1\TCFProtOST.map ..\..\..\os\win32\x86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/BaseCom.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "stdafx.h"
+#include "BaseCom.h"
+
+CBaseCom::CBaseCom()
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\basecommlog.txt", "at");
+		fprintf(f, "CBaseCom::CBaseCom() (default constructor)\n");
+		fclose(f);
+	}
+#endif
+	m_isConnected = false;
+	m_pBuffer = NULL;
+	m_numberBytes = 0;
+	m_ConnectSettings = NULL;
+	m_lastCommError = 0;
+	m_CommDebugLog = NULL;
+	m_ProcDebugLog = NULL;
+	m_connId = -1;
+	m_Protocol = NULL;
+}
+
+CBaseCom::CBaseCom(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol)
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\basecommlog.txt", "at");
+		fprintf(f, "connectSettings=%x connectionId=%d, protocol=%x\n", connectSettings, connectionId, protocol);
+		fclose(f);
+	}
+#endif
+	m_isConnected = false;
+	m_pBuffer = NULL;
+	m_numberBytes = 0;
+	m_ConnectSettings = NULL;
+	m_lastCommError = 0;
+	m_CommDebugLog = NULL;
+	m_ProcDebugLog = NULL;
+
+	m_connId = connectionId;
+	m_Protocol = protocol;
+
+	m_ConnectSettings = new ConnectData();
+	memcpy(m_ConnectSettings, connectSettings, sizeof(ConnectData));
+
+#if (defined(LOG_COMM) || defined(LOG_PROCCOMM)) && defined(_DEBUG)
+	if (gDoLogging)
+	{
+		m_CommDebugLog = new TCDebugLog("TCF_Comm", connectionId, 2000L);
+		m_ProcDebugLog = new TCDebugLog("TCF_CommP", connectionId, 2000L);
+	}
+#endif
+}
+
+CBaseCom::~CBaseCom()
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\basecommlog.txt", "at");
+		fprintf(f, "CBaseCom::~CBaseCom()\n");
+		fclose(f);
+	}
+#endif
+	if (m_pBuffer)
+		delete[] m_pBuffer;
+
+	if (m_ConnectSettings)
+		delete m_ConnectSettings;
+
+	if (m_CommDebugLog)
+		delete m_CommDebugLog;
+
+	if (m_ProcDebugLog)
+		delete m_ProcDebugLog;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/BaseCom.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __BASECOM_H__
+#define __BASECOM_H__
+#include "Registry.h"
+#include "ServerClient.h"
+#include "TCConstants.h"
+#include "TCErrorConstants.h"
+#include "BaseProtocol.h"
+#include "TCDebugLog.h"
+#include <time.h>
+
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+#endif
+
+#define LOG_COMM
+#if defined(LOG_COMM) && defined(_DEBUG)
+
+#define COMMLOGOPEN() if (gDoLogging) { if (m_CommDebugLog) m_CommDebugLog->WaitForAccess(); }
+#define COMMLOGS(s) if (gDoLogging) { sprintf(m_CommDebugLogMsg,"%s", s); if (m_CommDebugLog) m_CommDebugLog->log(m_CommDebugLogMsg); }
+#define COMMLOGA1(s, a1) if (gDoLogging) { sprintf(m_CommDebugLogMsg, s, a1); if (m_CommDebugLog) m_CommDebugLog->log(m_CommDebugLogMsg); }
+#define COMMLOGA2(s, a1, a2) if (gDoLogging) { sprintf(m_CommDebugLogMsg, s, a1, a2); if (m_CommDebugLog) m_CommDebugLog->log(m_CommDebugLogMsg); }
+#define COMMLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(m_CommDebugLogMsg, s, a1, a2, a3); if (m_CommDebugLog) m_CommDebugLog->log(m_CommDebugLogMsg); }
+#define COMMLOGA4(s, a1, a2, a3, a4) if (gDoLogging) { sprintf(m_CommDebugLogMsg, s, a1, a2, a3, a4); if (m_CommDebugLog) m_CommDebugLog->log(m_CommDebugLogMsg); }
+#define COMMLOGCLOSE() if (gDoLogging) { if (m_CommDebugLog) m_CommDebugLog->ReleaseAccess(); }
+#else
+#define COMMLOGOPEN()
+#define COMMLOGS(s)
+#define COMMLOGA1(s, a1)
+#define COMMLOGA2(s, a1, a2)
+#define COMMLOGA3(s, a1, a2, a3)
+#define COMMLOGA4(s, a1, a2, a3, a4)
+#define COMMLOGCLOSE()
+#endif
+
+#define LOG_PROCCOMM
+#if defined(LOG_PROCCOMM) && defined(_DEBUG)
+#define PROCLOGOPEN() if (gDoLogging) { m_ProcDebugLog->WaitForAccess(); }
+#define PROCLOGS(s) if (gDoLogging) { sprintf(m_ProcDebugLogMsg,"%s", s); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
+#define PROCLOGA1(s, a1) if (gDoLogging) { sprintf(m_ProcDebugLogMsg, s, a1); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
+#define PROCLOGA2(s, a1, a2) if (gDoLogging) { sprintf(m_ProcDebugLogMsg, s, a1, a2); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
+#define PROCLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(m_ProcDebugLogMsg, s, a1, a2, a3); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
+#define PROCLOGA4(s, a1, a2, a3, a4) if (gDoLogging) { sprintf(m_ProcDebugLogMsg, s, a1, a2, a3, a4); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
+#define PROCLOGA5(s, a1, a2, a3, a4, a5) if (gDoLogging) { sprintf(m_ProcDebugLogMsg, s, a1, a2, a3, a4, a5); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
+#define PROCLOGCLOSE() if (gDoLogging) { m_ProcDebugLog->ReleaseAccess(); }
+#else
+#define PROCLOGOPEN()
+#define PROCLOGS(s)
+#define PROCLOGA1(s, a1)
+#define PROCLOGA2(s, a1, a2)
+#define PROCLOGA3(s, a1, a2, a3)
+#define PROCLOGA4(s, a1, a2, a3, a4)
+#define PROCLOGA5(s, a1, a2, a3, a4, a5)
+#define PROCLOGCLOSE()
+#endif
+
+class CConnection;
+class CBaseProtocol;
+
+class CBaseCom
+{
+public:
+	CBaseCom();
+	CBaseCom(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol);
+	virtual ~CBaseCom();
+
+//	void SetConnectSettings(ConnectData* connectSettings);
+//	void SetProtocol(CBaseProtocol* protocol) { m_Protocol = protocol; }
+//	void SetConnectionId(DWORD id);
+
+	virtual long OpenPort()=0;
+	virtual long ClosePort()=0;
+	virtual long SendDataToPort(DWORD inSize, const void* inData)=0;
+	virtual long PollPort(DWORD& outSize)=0;
+	virtual long ReadPort(DWORD inSize, void* outData, DWORD& outSize)=0;
+	virtual long ProcessBuffer(CConnection* pConn, CRegistry* pRegistry, long& numberProcessed)=0;
+	virtual void DeleteMsg(DWORD inMsgLength)=0;
+	virtual bool IsConnected() { return m_isConnected; }
+	virtual bool GetVersion(char* outVersion)=0; // get version of whatever we're connected to
+	virtual bool HasVersion()=0; // does this connection have a version?
+	virtual long PreProcessMessage(int inMsgType, DWORD inMsgLength, BYTE* inMessage)=0;
+	virtual long PreProcessMessage(BYTE msgId, DWORD inMsgLength, BYTE* inMessage)=0;
+	virtual bool IsConnectionEqual(ConnectData* pConn)=0;
+
+	BYTE* m_pBuffer;
+	DWORD m_numberBytes;
+	bool m_isConnected;
+	DWORD m_connId;
+
+	ConnectData* m_ConnectSettings; // from connection
+	CBaseProtocol* m_Protocol;		// used for this connection
+
+	// for Open/Close/Send thread
+	char m_CommDebugLogMsg[2000];
+	TCDebugLog* m_CommDebugLog;
+
+	// for Poll/Read/Process/PreProcess thread
+	char m_ProcDebugLogMsg[2000];
+	TCDebugLog* m_ProcDebugLog;
+
+	DWORD m_lastCommError;
+};
+
+typedef const char* (*COMMREGISTER)(void);
+typedef CBaseCom* (*COMMCREATE)(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol);
+
+#define COMMREGISTER_FNNAME	"RegisterComm"
+#define COMMCREATE_FNNAME	"CreateComm"
+
+#define COMMDLL_BASENAME	"TCFComm"
+
+#endif __BASECOM_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/BaseProtocol.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// BaseProtocol.cpp: implementation of the CBaseProtocol class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "BaseProtocol.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CBaseProtocol::CBaseProtocol()
+{
+
+}
+
+CBaseProtocol::~CBaseProtocol()
+{
+
+}
+
+DWORD CBaseProtocol::GetHeaderLength()
+{
+	return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/BaseProtocol.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// BaseProtocol.h: interface for the CBaseProtocol class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_BASEPROTOCOL_H__EABB80B6_353C_45AE_8976_AE0C0D93AC84__INCLUDED_)
+#define AFX_BASEPROTOCOL_H__EABB80B6_353C_45AE_8976_AE0C0D93AC84__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+class CBaseProtocol  
+{
+public:
+	CBaseProtocol();
+	virtual ~CBaseProtocol();
+
+	// used to decode a message into header/message parts
+	virtual BOOL DecodeMessage(BYTE* fullMessage, DWORD& fullLength, BYTE& msgId, BYTE*& rawMessage, DWORD& rawLength)=0;
+
+	// used to encode a raw message (prefixes any protocol headers)
+	virtual DWORD EncodeMessage(BYTE* rawMessage, DWORD rawLength, BYTE protocolVersion, BYTE msgId, BYTE* fullMessage, DWORD maxFullLength)=0;
+
+	// used to query how many bytes the header is so the caller can allocate enough memory
+	virtual DWORD GetHeaderLength()=0;
+
+};
+
+typedef const char* (*PROTOCOLREGISTER)(void);
+typedef CBaseProtocol* (*PROTOCOLCREATE)(void);
+
+#define PROTOCOLREGISTER_FNNAME	"RegisterProtocol"
+#define PROTOCOLCREATE_FNNAME	"CreateProtocol"
+
+#define PROTOCOLDLL_BASENAME	"TCFProt"
+
+#endif // !defined(AFX_BASEPROTOCOL_H__EABB80B6_353C_45AE_8976_AE0C0D93AC84__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/Client.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,173 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// Client.cpp: implementation of the CClient class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "Client.h"
+#include "ServerManager.h"
+
+extern CServerManager* gManager;
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+#endif
+
+//#define LOG_CLIENT
+#if defined(LOG_CLIENT) && defined(_DEBUG)
+extern char TCDebugMsg[];
+#define TCDEBUGOPEN() if (gDoLogging) { gManager->m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(TCDebugMsg,"%s", s); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(TCDebugMsg, s, a1); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2, a3); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { gManager->m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CClient::CClient()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CClient::CClient\n");
+	
+	m_InputStream = NULL;
+	m_MessageFile = NULL;
+	m_ErrorMonitor = NULL;
+	m_Connection = NULL;
+	m_Status = eStopped;
+	m_ClientId = -1;
+	m_Options.ostVersion = 1;
+	m_Options.unWrapFormat = DEFAULT_UNWRAP_OPTION;
+	m_MessageDestination = eDestinationInputStream;	// default - changed later
+
+	TCDEBUGCLOSE();
+}
+
+CClient::CClient(CConnection* connection, ClientOptions& options, DWORD clientId)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CClient::CClient\n");
+	
+	m_Connection = connection;
+	m_Options.ostVersion = options.ostVersion;
+	m_Options.unWrapFormat = options.unWrapFormat;
+	m_ClientId = clientId;
+	m_Status = eStopped;
+
+	m_ErrorMonitor = new CErrorMonitor(m_ClientId);
+	m_ErrorMonitor->CreateData();
+	m_InputStream = NULL; // created on open instead
+	m_MessageFile = NULL;
+	m_MessageDestination = eDestinationInputStream;	// default - changed later
+
+
+	TCDEBUGCLOSE();
+}
+CClient::~CClient()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CClient::~CClient\n");
+	
+	if (m_ErrorMonitor)
+		delete m_ErrorMonitor;
+
+	if (m_InputStream)
+		delete m_InputStream;
+
+	if (m_MessageFile)
+		delete m_MessageFile;
+
+	TCDEBUGCLOSE();
+}
+BOOL CClient::OpenStream(DestinationOptions* streamOptions)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CClient::OpenStream\n");
+	
+	BOOL done = TRUE;
+
+	if (m_InputStream == NULL)
+	{
+		m_InputStream = new CInputStream(streamOptions->destinationFile, streamOptions->streamSize, streamOptions->overFlowToFile, m_ClientId);
+		m_InputStream->CreateStream();
+	}
+
+	TCDEBUGCLOSE();
+	return done;
+}
+
+BOOL CClient::CloseStream()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CClient::CloseStream\n");
+	
+	BOOL done = TRUE;
+
+	if (m_InputStream)
+	{
+		delete m_InputStream;
+		m_InputStream = NULL;
+	}
+
+	TCDEBUGCLOSE();
+	return done;
+}
+BOOL CClient::OpenMessageFile(DestinationOptions *messageFileOptions)
+{
+	BOOL done = TRUE;
+	if (m_MessageFile == NULL)
+	{
+		m_MessageFile = new CMessageFile(messageFileOptions->destinationFile, m_ClientId);
+		m_MessageFile->Open();
+	}
+
+	return done;
+}
+BOOL CClient::CloseMessageFile()
+{
+	BOOL done = TRUE;
+
+	if (m_MessageFile)
+	{
+		delete m_MessageFile;
+		m_MessageFile = NULL;
+	}
+
+	return done;
+}
+BOOL CClient::ClearMessageFile()
+{
+	BOOL done = TRUE;
+
+	if (m_MessageFile)
+	{
+		m_MessageFile->ClearFile();
+	}
+
+	return done;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/Client.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// Client.h: interface for the CClient class.
+//
+// one of these per client
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_CLIENT_H__6BC8ADEC_683A_4924_ABD0_28B449E927C6__INCLUDED_)
+#define AFX_CLIENT_H__6BC8ADEC_683A_4924_ABD0_28B449E927C6__INCLUDED_
+
+#include "ServerClient.h"
+#include "InputStream.h"
+#include "MessageFile.h"
+#include "ErrorMonitorData.h"
+#include "TCConstants.h"
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+class CConnection;
+
+class CClient  
+{
+public:
+	CClient();
+	CClient(CConnection* connection, ClientOptions& options, DWORD clientId);
+	virtual ~CClient();
+
+	void Start() { m_Status = eStarted; }
+	void Stop() { m_Status = eStopped; }
+
+	BOOL IsStarted() { return (m_Status == eStarted); }
+	DWORD GetClientId() { return m_ClientId; }
+	CConnection* GetConnection() { return m_Connection; }
+	BOOL OpenStream(DestinationOptions* streamOptions);
+	BOOL CloseStream();
+	BOOL IsStreamOpen() { return (m_InputStream != NULL); }
+	CInputStream* GetInputStream() { return m_InputStream; }
+
+	BOOL OpenMessageFile(DestinationOptions* messageFileOptions);
+	BOOL CloseMessageFile();
+	BOOL ClearMessageFile();
+	BOOL IsMessageFileOpen() { return (m_MessageFile != NULL); }
+	CMessageFile* GetMessageFile() { return m_MessageFile; }
+
+	eMessageDestination m_MessageDestination;
+	CMessageFile* m_MessageFile;
+	CInputStream* m_InputStream;
+	CErrorMonitor* m_ErrorMonitor;
+	CConnection* m_Connection;
+	ClientOptions m_Options;
+	eClientStatus m_Status;
+	DWORD m_ClientId;
+};
+
+#endif // !defined(AFX_CLIENT_H__6BC8ADEC_683A_4924_ABD0_28B449E927C6__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/CommRegistryItem.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// CommRegistryItem.cpp: implementation of the CCommRegistryItem class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "CommRegistryItem.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CCommRegistryItem::CCommRegistryItem()
+{
+
+}
+
+CCommRegistryItem::~CCommRegistryItem()
+{
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/CommRegistryItem.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// CommRegistryItem.h: interface for the CCommRegistryItem class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_COMMREGISTRYITEM_H__3100D179_F754_4A4C_910D_7EB827E8DEA0__INCLUDED_)
+#define AFX_COMMREGISTRYITEM_H__3100D179_F754_4A4C_910D_7EB827E8DEA0__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "ServerClient.h"
+#include "BaseCom.h"
+
+#define MAX_DLLPATHNAME (2048)
+
+class CCommRegistryItem  
+{
+public:
+	CCommRegistryItem();
+	virtual ~CCommRegistryItem();
+
+	char m_CommType[MAX_CONNECTION_TYPE];
+	char m_CommLibrary[MAX_DLLPATHNAME];
+};
+
+#endif // !defined(AFX_COMMREGISTRYITEM_H__3100D179_F754_4A4C_910D_7EB827E8DEA0__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/Connection.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// Connection.cpp: implementation of the CConnection class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "Connection.h"
+#include "ServerManager.h"
+
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+#define TCDEBUGOPEN() if (gDoLogging) { this->m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(this->m_DebugLogMsg,"%s", s); this->m_DebugLog->log(this->m_DebugLogMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(this->m_DebugLogMsg, s, a1); this->m_DebugLog->log(this->m_DebugLogMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(this->m_DebugLogMsg, s, a1, a2); this->m_DebugLog->log(this->m_DebugLogMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(this->m_DebugLogMsg, s, a1, a2, a3); this->m_DebugLog->log(this->m_DebugLogMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { this->m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+CConnection::CConnection()
+{
+}
+
+CConnection::CConnection(ConnectData conData, DWORD connectionId)
+{
+}
+
+CConnection::~CConnection()
+{
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/Connection.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// Connection.h: interface for the CConnection class.
+// Implemented by CConnectionImpl
+//
+// one of these per connection
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_CONNECTION_H__C7E97807_97B0_4BF7_AEC7_FA246A751509__INCLUDED_)
+#define AFX_CONNECTION_H__C7E97807_97B0_4BF7_AEC7_FA246A751509__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "ServerClient.h"
+#include "TCErrorConstants.h"
+#include "Client.h"
+#include "Registry.h"
+#include "BaseCom.h"
+#include <vector>
+#include <time.h>
+
+// basename is suffixed with connection ID to make it unique per CConnection
+#define MESSAGEPROCESSOR_EXITEVENT_BASENAME	"TCFServerMessageProcessorExittedEvent"
+#define MESSAGEPROCESSOR_STOPEVENT_BASENAME	"TCFServerMessageProcessorStoppedEvent"
+#define MESSAGEPROCESSOR_STARTEVENT_BASENAME	"TCFServerMessageProcessorStartedEvent"
+#define MESSAGEPROCESSOR_EVENTWAIT_TIMEOUT	60000L
+
+typedef std::vector<CClient*> ClientList;
+
+// m_MessageProcessorState states
+#define MP_NONE (0)
+#define MP_EXIT (1)
+#define MP_START (2)
+#define MP_PAUSE (3)
+#define MP_PROCESSING (4)
+
+
+#define FLUSH_TIME		(100)		// 100 ms
+class CConnection  
+{
+public:
+	CConnection();
+	CConnection(ConnectData conData, DWORD connectionId);
+	virtual ~CConnection();
+
+	virtual BOOL IsEqual(CConnection* connection)=0;
+	virtual BOOL IsEqual(pConnectData pConData)=0;
+	virtual long GetConnectionId() { return m_ConnectionID; }
+	virtual BOOL ExitProcessing()=0;				// exit processing thread
+	virtual long DoDisconnect()=0;
+	virtual void NotifyClientsCommError(long tcfError, bool passOsError=false, DWORD osError=0)=0;
+	long m_ConnectionID;			// id for this connection
+
+	ConnectData* m_ConnectSettings;	// connection settings
+};
+
+#endif // !defined(AFX_CONNECTION_H__C7E97807_97B0_4BF7_AEC7_FA246A751509__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/ConnectionImpl.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,907 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// ConnectionImpl.cpp: implementation of the CConnectionImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "ConnectionImpl.h"
+#include "RegistryImpl.h"
+#include "ServerManager.h"
+
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+#endif
+
+#define LOG_CONNECTION
+#if defined(LOG_CONNECTION) && defined(_DEBUG)
+#define TCDEBUGOPEN() if (gDoLogging) { this->m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(this->m_DebugLogMsg,"%s", s); this->m_DebugLog->log(this->m_DebugLogMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(this->m_DebugLogMsg, s, a1); this->m_DebugLog->log(this->m_DebugLogMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(this->m_DebugLogMsg, s, a1, a2); this->m_DebugLog->log(this->m_DebugLogMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(this->m_DebugLogMsg, s, a1, a2, a3); this->m_DebugLog->log(this->m_DebugLogMsg); }
+#define TCDEBUGLOGA4(s, a1, a2, a3, a4) if (gDoLogging) { sprintf(this->m_DebugLogMsg, s, a1, a2, a3, a4); this->m_DebugLog->log(this->m_DebugLogMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { this->m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGLOGA4(s, a1, a2, a3, a4)
+#define TCDEBUGCLOSE()
+#endif
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CConnectionImpl::CConnectionImpl()
+{
+	m_ConnectSettings = NULL;
+	m_ClientList = NULL;
+	m_Status = eDisconnected;
+	m_Registry = NULL;
+	m_ConnectionID = 0;
+	m_OsError = 0;
+	m_BaseComm = NULL;
+	m_BaseProtocol = NULL;
+	m_BaseCommHandle = NULL;
+	m_BaseProtocolHandle = NULL;
+
+	// message processing thread flags and handles
+	m_MessageProcessorState = MP_NONE;
+	m_ExitMessageProcessor = false;
+	m_PauseMessageProcessing = false;
+	m_StartMessageProcessing = false;
+	m_hMessageProcessorExittedEvent = NULL;
+	m_hMessageProcessorStoppedEvent = NULL;
+	m_hMessageProcessorStartedEvent = NULL;
+	m_hMessageProcessorThread = NULL;
+	m_dwMessageProcessorThreadId = 0;
+
+	m_NextRetryTime = m_RetryTimeoutTime = 0;
+
+	m_NextFlushFileTime = 0;
+}
+
+CConnectionImpl::CConnectionImpl(ConnectData conData, DWORD connectionId)
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		m_DebugLog = new TCDebugLog("TCF_ConnectionLog", connectionId);
+		m_DebugLog2 = new TCDebugLog("TCF_ProcessorLog", connectionId);
+	}
+	else
+	{
+		m_DebugLog = NULL;
+		m_DebugLog2 = NULL;
+	}
+#else
+	m_DebugLog = NULL;
+	m_DebugLog2 = NULL;
+#endif
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGA1("CConnectionImpl::CConnectionImpl id = %d\n", connectionId);
+
+	m_ConnectSettings = new ConnectData();
+
+	memcpy(m_ConnectSettings, &conData, sizeof(ConnectData));
+
+	m_ClientList = new ClientList();
+	m_ClientList->clear();
+	m_Status = eDisconnected;
+	m_Registry = new CRegistryImpl(connectionId);
+	m_ConnectionID = connectionId;
+	m_BaseComm = NULL;
+	m_BaseProtocol = NULL;
+	m_BaseCommHandle = NULL;
+	m_BaseProtocolHandle = NULL;
+
+	// message processing thread flags and handles
+	m_MessageProcessorState = MP_NONE;
+	m_ExitMessageProcessor = false;
+	m_PauseMessageProcessing = false;
+	m_StartMessageProcessing = false;
+
+	// create named events
+	char eventName[100];
+
+	sprintf(eventName, "%s%d", MESSAGEPROCESSOR_EXITEVENT_BASENAME, connectionId);
+	m_hMessageProcessorExittedEvent = ::CreateEvent(NULL, FALSE, FALSE, eventName);
+
+	sprintf(eventName, "%s%d", MESSAGEPROCESSOR_STOPEVENT_BASENAME, connectionId);
+	m_hMessageProcessorStoppedEvent = ::CreateEvent(NULL, FALSE, FALSE, eventName);
+
+	sprintf(eventName, "%s%d", MESSAGEPROCESSOR_STARTEVENT_BASENAME, connectionId);
+	m_hMessageProcessorStartedEvent = ::CreateEvent(NULL, FALSE, FALSE, eventName);
+
+	m_hMessageProcessorThread = NULL;
+	m_dwMessageProcessorThreadId = 0;
+
+	m_NextRetryTime = m_RetryTimeoutTime = 0;
+
+	m_NextFlushFileTime = 0;
+	m_OsError = 0;
+
+	TCDEBUGCLOSE();
+}
+CConnectionImpl::~CConnectionImpl()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::~CConnectionImpl\n");
+
+	// terminate the message processor thread if running
+
+	if (m_hMessageProcessorThread != NULL)
+	{
+		BOOL t = ::TerminateThread(m_hMessageProcessorThread, 0);
+		::CloseHandle(m_hMessageProcessorThread);
+	}
+
+	if (m_hMessageProcessorExittedEvent != NULL)
+	{
+		::CloseHandle(m_hMessageProcessorExittedEvent);
+	}
+
+	if (m_hMessageProcessorStoppedEvent != NULL)
+	{
+		::CloseHandle(m_hMessageProcessorStoppedEvent);
+	}
+
+	if (m_ConnectSettings)
+		delete m_ConnectSettings;
+
+
+	if (m_ClientList)
+	{
+		m_ClientList->clear();
+		delete m_ClientList;
+	}
+
+	if (m_Registry)
+	{
+		delete m_Registry;
+	}
+
+	if (m_BaseComm)
+	{
+		delete m_BaseComm;
+	}
+
+	if (m_BaseCommHandle)
+	{
+		::FreeLibrary(m_BaseCommHandle);
+	}
+	if (m_BaseProtocol)
+	{
+		delete m_BaseProtocol;
+	}
+
+	if (m_BaseProtocolHandle)
+	{
+		::FreeLibrary(m_BaseProtocolHandle);
+	}
+
+	TCDEBUGCLOSE();
+	if (m_DebugLog)
+		delete m_DebugLog;
+	if (m_DebugLog2)
+		delete m_DebugLog2;
+
+}
+
+BOOL CConnectionImpl::IsEqual(CConnection* connection)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::IsEqual\n");
+
+	BOOL equal = FALSE;
+
+	if (strcmp(m_ConnectSettings->connectType, connection->m_ConnectSettings->connectType) == 0)
+	{
+		if (m_BaseComm)
+		{
+			if (m_BaseComm->IsConnectionEqual(connection->m_ConnectSettings))
+			{
+				equal = TRUE;
+			}
+		}
+		else
+		{
+			equal = TRUE;
+		}
+	}
+
+	TCDEBUGCLOSE();
+	return equal;
+}
+
+BOOL CConnectionImpl::IsEqual(pConnectData pConData)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::IsEqual\n");
+
+	BOOL equal = FALSE;
+
+	if (strcmp(m_ConnectSettings->connectType, pConData->connectType) == 0)
+	{
+		if (m_BaseComm)
+		{
+			if (m_BaseComm->IsConnectionEqual(pConData))
+			{
+				equal = TRUE;
+			}
+		}
+		else
+		{
+			equal = TRUE;
+		}
+	}
+	TCDEBUGCLOSE();
+	return equal;
+}
+
+long CConnectionImpl::DoConnect()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::DoConnect\n");
+
+	long ret = TCAPI_ERR_NONE;
+
+	if (m_BaseComm && m_BaseProtocol)
+	{
+		ret = m_BaseComm->OpenPort();
+		if (ret != TCAPI_ERR_NONE)
+		{
+			m_OsError = m_BaseComm->m_lastCommError;
+			TCDEBUGLOGA1(" m_BaseComm->OpenPort = %d\n", ret);
+		}
+	}
+	else
+	{
+		ret = TCAPI_ERR_UNKNOWN_MEDIA_TYPE;
+	}
+
+	if (ret == TCAPI_ERR_NONE)
+	{
+		m_Status = eConnected;
+
+		TCDEBUGCLOSE();
+
+		StartProcessing();
+	}
+	else
+	{
+//		if (m_BaseComm != NULL)
+//		{
+//			delete m_BaseComm;
+//			m_BaseComm = NULL;
+//		}
+		TCDEBUGCLOSE();
+	}
+	return ret;
+}
+
+long CConnectionImpl::DoDisconnect()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::DoDisconnect\n");
+
+	long ret = TCAPI_ERR_NONE;
+	if (IsConnected())
+	{
+		ret = m_BaseComm->ClosePort();
+//		delete m_BaseComm;
+//		m_BaseComm = NULL;
+	}
+	m_Status = eDisconnected;
+
+	TCDEBUGCLOSE();
+	return ret;
+}
+
+BOOL CConnectionImpl::AddClient(CClient* client)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::AddClient\n");
+
+	BOOL ok = TRUE;
+
+	m_ClientList->push_back(client);
+
+	TCDEBUGCLOSE();
+	return ok;
+}
+
+long CConnectionImpl::DoSendMessage(long encodeOption, BYTE protocolVersion, BOOL useMsgId, BYTE msgId, DWORD msgLength, BYTE* pMsg)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::DoSendMessage\n");
+
+	long err = TCAPI_ERR_NONE;
+	if (IsRetryInProgress())
+	{
+		err = TCAPI_ERR_COMM_RETRY_IN_PROGRESS;
+	}
+	else if (IsRetryTimedOut())
+	{
+		err = TCAPI_ERR_COMM_TIMEOUT;
+	}
+	else if (m_Status == eConnected)
+	{
+		BYTE* encodedMessage = new BYTE[msgLength + 40]; // add enough for header (msgLength may be 0)
+		// if msgLength == 0, then encodeOption SHOULD be ENCODE_FORMAT since com expects to send something!
+		if (encodeOption == ENCODE_FORMAT)
+		{
+#ifdef _DEBUG
+			char msg[200]; msg[0] = '\0';
+			int len = (msgLength > 30) ? 30 : msgLength;
+			for (int i = 0; i < len; i ++)
+			{
+				sprintf(msg, "%s%02.2x ", msg, pMsg[i]);
+			}
+			sprintf(msg, "%s\n", msg);
+			TCDEBUGLOGS(msg);
+#endif
+			// msgLength maybe 0 and pMsg maybe NULL (we're not sending a raw message, just a protocol header)
+			msgLength = m_BaseProtocol->EncodeMessage(pMsg, msgLength, protocolVersion, msgId, encodedMessage, msgLength+40);
+#ifdef _DEBUG
+			msg[0] = '\0';
+			len = (msgLength > 30) ? 30 : msgLength;
+			for (i = 0; i < len; i ++)
+			{
+				sprintf(msg, "%s%02.2x ", msg, encodedMessage[i]);
+			}
+			sprintf(msg, "%s\n", msg);
+			TCDEBUGLOGS(msg);
+#endif
+			err = m_BaseComm->SendDataToPort(msgLength, encodedMessage);
+		}
+		else
+		{
+#ifdef _DEBUG
+			char msg[200]; msg[0] = '\0';
+			int len = (msgLength > 30) ? 30 : msgLength;
+			for (int i = 0; i < len; i ++)
+			{
+				sprintf(msg, "%s%02.2x ", msg, pMsg[i]);
+			}
+			sprintf(msg, "%s\n", msg);
+			TCDEBUGLOGS(msg);
+#endif
+			// msgLength != 0 and pMsg != NULL
+			err = m_BaseComm->SendDataToPort(msgLength, pMsg);
+		}
+		delete[] encodedMessage;
+
+		TCDEBUGLOGS("CConnectionImpl::DoSendMessage done\n");
+		if (err == TCAPI_ERR_COMM_ERROR)
+		{
+			EnterRetryPeriod(err, true, m_BaseComm->m_lastCommError);
+			m_OsError = m_BaseComm->m_lastCommError;
+		}
+	}
+	else
+	{
+		err = TCAPI_ERR_MEDIA_NOT_OPEN;
+	}
+
+	TCDEBUGLOGA1("CConnectionImpl::DoSendMessage err = %d\n", err);
+	TCDEBUGCLOSE();
+	return err;
+}
+
+long CConnectionImpl::DoRetryProcessing()
+{
+	long err = TCAPI_ERR_NONE;
+
+	// if not connected
+	//   return no error
+	if (m_BaseComm == NULL /*|| m_BaseComm->IsConnected() == false*/)
+		return TCAPI_ERR_MEDIA_NOT_OPEN;
+
+	// if retry not in progress && retry not timed out
+	//   return no error
+	if (!IsRetryInProgress() && !IsRetryTimedOut())
+		return TCAPI_ERR_NONE;
+
+//	TCDEBUGOPEN();
+//	TCDEBUGLOGS("CConnectionImpl::DoRetryProcessing\n");
+//	TCDEBUGCLOSE();
+	// if retry timeout flag already set
+	//   return timeout error
+	if (IsRetryTimedOut())
+		return TCAPI_ERR_COMM_TIMEOUT;
+
+	// get current time
+	time_t ctime;
+	time(&ctime);
+	// if retry timeout period has expired
+	if (ctime >= m_RetryTimeoutTime)
+	{
+		TCDEBUGOPEN();
+		TCDEBUGLOGS("CConnectionImpl::DoRetryProcessing retry timeout\n");
+		TCDEBUGCLOSE();
+		// send timeout error to all clients
+		NotifyClientsCommError(TCAPI_ERR_COMM_TIMEOUT);
+		// close comm port
+		m_BaseComm->ClosePort();
+		// set retry timeout flag
+		SetRetryTimedOut();
+		// return retry timeout error
+		err = TCAPI_ERR_COMM_TIMEOUT;
+	}
+	// else if retry time has passed
+	else if (ctime >= m_NextRetryTime)
+	{
+		TCDEBUGOPEN();
+		TCDEBUGLOGS("CConnectionImpl::DoRetryProcessing retry time\n");
+		TCDEBUGCLOSE();
+		// close comm port
+		// reopen comm port
+		m_BaseComm->ClosePort();
+		int openErr = m_BaseComm->OpenPort();
+		// if comm error
+		if (openErr != TCAPI_ERR_NONE)
+		{
+			// set next retry time
+			// return comm error
+			m_NextRetryTime = ctime + m_ConnectSettings->retryInterval;
+			err = TCAPI_ERR_COMM_RETRY_IN_PROGRESS;
+			m_OsError = m_BaseComm->m_lastCommError;
+		}
+		else
+		{
+		TCDEBUGOPEN();
+		TCDEBUGLOGS("CConnectionImpl::DoRetryProcessing reconnected\n");
+		TCDEBUGCLOSE();
+			// send reconnect warning to all clients
+			NotifyClientsCommError(TCAPI_INFO_COMM_RECONNECTED);
+			// set connected
+			SetConnected();
+			err = TCAPI_ERR_NONE;
+		}
+	} 
+	else // still in retry
+	{
+		err = TCAPI_ERR_COMM_RETRY_IN_PROGRESS;
+	}
+
+
+//	TCDEBUGOPEN();
+//	TCDEBUGLOGA1("CConnectionImpl::DoRetryProcessing err = %d\n", err);
+//	TCDEBUGCLOSE();
+	return err;
+}
+long CConnectionImpl::EnterRetryPeriod(long commErr, bool passOsErr, DWORD osErr)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::EnterRetryPeriod\n");
+	TCDEBUGCLOSE();
+
+	long err = TCAPI_ERR_NONE;
+
+	// set next retry time
+	time_t ctime;
+	time(&ctime);
+	m_NextRetryTime = ctime + m_ConnectSettings->retryInterval;
+	// set retry timeout time
+	m_RetryTimeoutTime = ctime + m_ConnectSettings->retryTimeout;
+	// send comm error to all clients
+	NotifyClientsCommError(commErr, passOsErr, osErr);
+	// set retry in progress flag
+	SetRetryInProgress();
+
+	return err;
+}
+
+BOOL CConnectionImpl::RemoveClient(CClient* client)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::RemoveClient\n");
+
+	BOOL found = FALSE;
+
+	if (m_ClientList->size() != 0)
+	{
+		ClientList::iterator iter;
+		for (iter = m_ClientList->begin(); iter != m_ClientList->end(); iter++)
+		{
+			if ((*iter)->GetClientId() == client->GetClientId())
+			{
+				m_ClientList->erase(iter);
+				found = TRUE;
+				break;
+			}
+		}
+	}
+
+	TCDEBUGCLOSE();
+	return found;
+}
+
+BOOL CConnectionImpl::ExitProcessing()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::ExitProcessing\n");
+
+	// exit the messageprocessing thread
+	if (m_hMessageProcessorThread != NULL)
+	{
+		m_MessageProcessorState = MP_EXIT;
+
+		m_StartMessageProcessing = false;
+		m_PauseMessageProcessing = true;
+		m_ExitMessageProcessor = true;
+		DWORD waitStatus = ::WaitForSingleObject(m_hMessageProcessorExittedEvent, MESSAGEPROCESSOR_EVENTWAIT_TIMEOUT);
+		TCDEBUGLOGA1("CConnectionImpl::ExitProcessing waitStatus=%x\n", waitStatus);
+		::CloseHandle(m_hMessageProcessorThread);
+		m_hMessageProcessorThread = NULL;
+	}
+	
+	TCDEBUGCLOSE();
+	return TRUE;
+}
+
+BOOL CConnectionImpl::StartProcessing()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::StartProcessing\n");
+
+	// starts processing thread
+	if (m_hMessageProcessorThread == NULL)
+	{
+		m_MessageProcessorState = MP_PAUSE;
+
+		m_ExitMessageProcessor = false;
+		m_StartMessageProcessing = false;
+		m_PauseMessageProcessing = false;
+		// TODO: create thread
+		m_hMessageProcessorThread = ::CreateThread(
+			NULL,
+			0,
+			(LPTHREAD_START_ROUTINE) MessageProcessor,
+			this,
+			0,
+			&m_dwMessageProcessorThreadId);
+	}
+
+	TCDEBUGCLOSE();
+	return PauseProcessing();//RestartProcessing();
+}
+
+BOOL CConnectionImpl::PauseProcessing()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::PauseProcessing\n");
+
+	// tells the processing thread to pause
+	if (m_hMessageProcessorThread != NULL)
+	{
+		m_MessageProcessorState = MP_PAUSE;
+
+		m_ExitMessageProcessor = false;
+		m_StartMessageProcessing = false;
+		m_PauseMessageProcessing = true;
+		DWORD waitStatus = ::WaitForSingleObject(m_hMessageProcessorStoppedEvent, MESSAGEPROCESSOR_EVENTWAIT_TIMEOUT);
+		TCDEBUGLOGA1("CConnectionImpl::PauseProcessing waitStatus=%x\n", waitStatus);
+	}
+	
+	TCDEBUGCLOSE();
+	return TRUE;
+}
+
+BOOL CConnectionImpl::RestartProcessing()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::RestartProcessing\n");
+
+	// tell the processing thread to restart
+	if (m_hMessageProcessorThread != NULL)
+	{
+		m_MessageProcessorState = MP_START;
+
+		m_ExitMessageProcessor = false;
+		m_StartMessageProcessing = true;
+		m_PauseMessageProcessing = false;
+		DWORD waitStatus = ::WaitForSingleObject(m_hMessageProcessorStartedEvent, MESSAGEPROCESSOR_EVENTWAIT_TIMEOUT);
+		TCDEBUGLOGA1("CConnectionImpl::RestartProcessing waitStatus=%x\n", waitStatus);
+	}
+	
+	TCDEBUGCLOSE();
+	return TRUE;
+}
+
+BOOL CConnectionImpl::RemoveClientFromRegistry(CClient* client)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::RemoveClientFromRegistry\n");
+	TCDEBUGCLOSE();
+
+	return m_Registry->RemoveClient(client);
+}
+
+BOOL CConnectionImpl::AddClientToRegistry(CClient* client, long numberIds, BYTE* ids)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::AddClientToRegistry\n");
+	TCDEBUGCLOSE();
+
+	return m_Registry->AddClient(client, numberIds, ids);
+}
+
+void CConnectionImpl::NotifyClientsCommError(long tcfError, bool passOsError, DWORD osError)
+{
+//	TCDEBUGOPEN();
+//	TCDEBUGLOGS("CConnectionImpl::NotifyClientsCommError\n");
+//	TCDEBUGCLOSE();
+
+	if (m_ClientList->size() != 0)
+	{
+		ClientList::iterator iter;
+		for (iter = m_ClientList->begin(); iter != m_ClientList->end(); iter++)
+		{
+			CErrorMonitor* errorMonitor = (*iter)->m_ErrorMonitor;
+			errorMonitor->PutError(tcfError, passOsError, osError);
+		}
+	}
+}
+BOOL CConnectionImpl::HasVersion()
+{
+	BOOL found = FALSE;
+
+	if (m_BaseComm && m_BaseComm->HasVersion())
+		found = TRUE;
+
+	return found;
+}
+void CConnectionImpl::GetVersion(char* version)
+{
+	if (HasVersion()) {
+		m_BaseComm->GetVersion(version);
+	}
+}
+
+void CConnectionImpl::UnLockAllDestinations()
+{
+	if (m_ClientList->size() != 0)
+	{
+		ClientList::iterator iter;
+		for (iter = m_ClientList->begin(); iter != m_ClientList->end(); iter++)
+		{
+			CInputStream* inputStream = (*iter)->m_InputStream;
+			CMessageFile* file = (*iter)->m_MessageFile;
+			if (inputStream != NULL) 
+			{
+				inputStream->UnLockStream();
+			}
+			else if (file != NULL)
+			{
+				file->UnLockMessageFile();
+			}
+		}
+	}
+}
+
+#define LOG_MPROCESSOR
+#if defined(LOG_MPROCESSOR) && defined(_DEBUG)
+#define MPLOGOPEN() if (gDoLogging) { pThis->m_DebugLog2->WaitForAccess(); }
+#define MPLOGS(s) if (gDoLogging) { sprintf(pThis->m_DebugLogMsg2,"%s", s); pThis->m_DebugLog2->log(pThis->m_DebugLogMsg2); }
+#define MPLOGA1(s, a1) if (gDoLogging) { sprintf(pThis->m_DebugLogMsg2, s, a1); pThis->m_DebugLog2->log(pThis->m_DebugLogMsg2); }
+#define MPLOGA2(s, a1, a2) if (gDoLogging) { sprintf(pThis->m_DebugLogMsg2, s, a1, a2); pThis->m_DebugLog2->log(pThis->m_DebugLogMsg2); }
+#define MPLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(pThis->m_DebugLogMsg2, s, a1, a2, a3); pThis->m_DebugLog2->log(pThis->m_DebugLogMsg2); }
+#define MPLOGCLOSE() if (gDoLogging) { pThis->m_DebugLog2->ReleaseAccess(); }
+#else
+#define MPLOGOPEN()
+#define MPLOGS(s)
+#define MPLOGA1(s, a1)
+#define MPLOGA2(s, a1, a2)
+#define MPLOGA3(s, a1, a2, a3)
+#define MPLOGCLOSE()
+#endif
+
+DWORD WINAPI CConnectionImpl::MessageProcessor(LPVOID lpParam)
+{
+	CConnectionImpl* pThis = (CConnectionImpl*)lpParam;
+
+	MPLOGOPEN();
+	MPLOGS("MessageProcessor start thread\n");
+
+	bool processing = false;
+	long err = TCAPI_ERR_NONE;
+	DWORD pollSize = 0;
+
+	while (pThis->m_MessageProcessorState != MP_EXIT)
+	{
+		if (pThis->m_MessageProcessorState == MP_PAUSE)
+		{
+			MPLOGS("MessageProcessor pause\n");
+
+			processing = false; 
+			pThis->m_PauseMessageProcessing = false;
+			pThis->m_MessageProcessorState = MP_NONE;
+			BOOL ok = ::SetEvent(pThis->m_hMessageProcessorStoppedEvent);
+		}
+
+		if (pThis->IsRetryInProgress())
+			err = pThis->DoRetryProcessing();
+		else if (pThis->IsRetryTimedOut())
+			err = TCAPI_ERR_COMM_TIMEOUT;
+
+		if (processing && err == TCAPI_ERR_NONE)
+		{
+			if (pThis->m_BaseComm && pThis->m_BaseComm->IsConnected())
+			{
+				err = pThis->m_BaseComm->PollPort(pollSize);
+				MPLOGA2("MessageProcessor PollPort = %d pollsize = %d\n", err, pollSize);
+				if (err != TCAPI_ERR_NONE)
+				{
+					MPLOGA2("MessageProcessor  err = %d osError = %d\n", err, pThis->m_BaseComm->m_lastCommError);
+					pThis->EnterRetryPeriod(err, true, pThis->m_BaseComm->m_lastCommError);
+				}
+				else
+				{
+					if (pollSize == 0)
+					{
+						Sleep(1);
+					}
+					else
+					{
+						long numberProcessed = 0;
+//						MPLOGA1("MessageProcessor ProcessBuffer pRegistry = %x\n", pThis->m_Registry);
+						err = pThis->m_BaseComm->ProcessBuffer(pThis, pThis->m_Registry, numberProcessed);
+
+						MPLOGA2("MessageProcessor ProcessBuffer err = %d number = %d\n", err, numberProcessed);
+
+						if (err == TCAPI_ERR_COMM_ERROR)
+						{
+							// for this error we have os error, but we probably caught this in PollPort already
+							pThis->EnterRetryPeriod(err, true, pThis->m_BaseComm->m_lastCommError);
+						}
+						else if (err != TCAPI_ERR_NONE)
+						{
+							// all clients already notified in ProcessBuffer
+							err = TCAPI_ERR_NONE;
+						}
+						pThis->UnLockAllDestinations(); // unlock all input streams, if they became locked during AddMessage()
+//						Sleep(1);
+					}
+				}
+//				MPLOGS("MessageProcessor FlushAllClientMessageFiles\n");
+				pThis->FlushAllClientMessageFiles();
+			}
+			else
+			{
+				// basecom not connected
+				Sleep(1);
+			}
+		}
+		else
+		{
+			// processing is not being done
+			Sleep(1);
+		}
+		if (pThis->m_MessageProcessorState == MP_START)
+		{
+			MPLOGS("MessageProcessor start\n");
+
+			processing = true;
+			pThis->m_StartMessageProcessing = false;
+			pThis->m_MessageProcessorState = MP_PROCESSING;
+			BOOL ok = ::SetEvent(pThis->m_hMessageProcessorStartedEvent);
+		}
+	}
+	// signal we're stopping
+	pThis->m_ExitMessageProcessor = false;
+	pThis->m_MessageProcessorState = MP_NONE;
+	::SetEvent(pThis->m_hMessageProcessorExittedEvent);
+
+	MPLOGS("MessageProcessor exit thread\n");
+	MPLOGCLOSE();
+
+	return 0;
+}
+
+void CConnectionImpl::FlushAllClientMessageFiles()
+{
+	DWORD cTick = GetTickCount();
+
+//	MPLOGA2("CConnectionImpl::FlushAllClientMessageFiles cTick=%d m_NextFlushFileTime=%d\n", cTick, m_NextFlushFileTime);
+
+	if (cTick > m_NextFlushFileTime)
+	{
+//	MPLOGS("CConnectionImpl::FlushAllClientMessageFiles flush timeout\n");
+		if (m_ClientList->size() != 0)
+		{
+			ClientList::iterator iter;
+			for (iter = m_ClientList->begin(); iter != m_ClientList->end(); iter++)
+			{
+				CMessageFile* file = (*iter)->m_MessageFile;
+				if (file != NULL)
+				{
+//	MPLOGS("CConnectionImpl::FlushAllClientMessageFiles flush client\n");
+					file->FlushFile();
+				}
+			}
+		}
+		m_NextFlushFileTime = GetTickCount() + FLUSH_TIME;		
+	}
+}
+
+BOOL CConnectionImpl::CreateCommProtocols(const char* commPath, const char* protPath)
+{
+	BOOL loaded = FALSE;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CConnectionImpl::CreateCommProtocols\n");
+
+	TCDEBUGLOGA2(" commPath=%s protPath=%s\n", commPath, protPath);
+
+	m_BaseCommHandle = ::LoadLibrary(commPath);
+	m_BaseProtocolHandle = ::LoadLibrary(protPath);
+	if (m_BaseCommHandle == NULL || m_BaseProtocolHandle == NULL)
+	{
+		TCDEBUGLOGA2(" error loading library, m_BaseCommHandle=%x m_BaseProtocolHandle=%x\n", m_BaseCommHandle, m_BaseProtocolHandle);
+		if (m_BaseCommHandle) ::FreeLibrary(m_BaseCommHandle); m_BaseCommHandle = NULL;
+		if (m_BaseProtocolHandle) ::FreeLibrary(m_BaseProtocolHandle); m_BaseProtocolHandle = NULL;
+
+	}
+	else
+	{
+		COMMCREATE lpCommFn = (COMMCREATE)::GetProcAddress(m_BaseCommHandle, COMMCREATE_FNNAME);
+		PROTOCOLCREATE lpProtFn = (PROTOCOLCREATE)::GetProcAddress(m_BaseProtocolHandle, PROTOCOLCREATE_FNNAME);
+		if (lpCommFn == NULL || lpProtFn == NULL)
+		{
+			TCDEBUGLOGA2(" error finding function, lpCommFn=%x lpProtFn=%x\n", lpCommFn, lpProtFn);
+			if (m_BaseCommHandle) ::FreeLibrary(m_BaseCommHandle); m_BaseCommHandle = NULL;
+			if (m_BaseProtocolHandle) ::FreeLibrary(m_BaseProtocolHandle); m_BaseProtocolHandle = NULL;
+		}
+		else
+		{
+			m_BaseProtocol = lpProtFn();
+			if (m_BaseProtocol == NULL)
+			{
+				TCDEBUGLOGA1(" error creating protocol, m_BaseProtocol=%x\n", m_BaseProtocol);
+				if (m_BaseCommHandle) ::FreeLibrary(m_BaseCommHandle); m_BaseCommHandle = NULL;
+				if (m_BaseProtocolHandle) ::FreeLibrary(m_BaseProtocolHandle); m_BaseProtocolHandle = NULL;
+			}
+			else
+			{
+				m_BaseComm = lpCommFn(m_ConnectSettings, m_ConnectionID, m_BaseProtocol);
+				if (m_BaseComm == NULL)
+				{
+					TCDEBUGLOGA1(" error creating comm, m_BaseComm=%x\n", m_BaseComm);
+					if (m_BaseProtocol) delete m_BaseProtocol; m_BaseProtocol = NULL;
+
+					if (m_BaseCommHandle) ::FreeLibrary(m_BaseCommHandle); m_BaseCommHandle = NULL;
+					if (m_BaseProtocolHandle) ::FreeLibrary(m_BaseProtocolHandle); m_BaseProtocolHandle = NULL;
+				}
+				else
+				{
+					loaded = TRUE;
+					TCDEBUGLOGA4(" created class, m_BaseComm=%x m_BaseProtocol=%x m_BaseCommHandle=%x m_BaseProtocolHandle=%x\n", m_BaseComm, m_BaseProtocol, m_BaseCommHandle, m_BaseProtocolHandle);
+				}
+			}
+		}
+	}
+
+	TCDEBUGCLOSE();
+	return loaded;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/ConnectionImpl.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,123 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// ConnectionImpl.h: interface for the CConnectionImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_CONNECTIONIMPL_H__1D0D5B50_3DDD_49B8_834B_5996D9CC0124__INCLUDED_)
+#define AFX_CONNECTIONIMPL_H__1D0D5B50_3DDD_49B8_834B_5996D9CC0124__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "Connection.h"
+
+class CConnectionImpl : public CConnection  
+{
+public:
+	CConnectionImpl();
+	CConnectionImpl(ConnectData conData, DWORD connectionId);
+	virtual ~CConnectionImpl();
+
+	BOOL IsEqual(CConnection* connection);
+	BOOL IsEqual(pConnectData pConData);
+
+	BOOL AddClient(CClient* client);	// add a client to this connection
+	BOOL RemoveClient(CClient* client);	// remove a client from this connection
+	BOOL AddClientToRegistry(CClient* client, long numberIds, BYTE* ids); 
+	BOOL RemoveClientFromRegistry(CClient* client); // remove a client from this registry
+	BOOL StartClient(CClient* client){ return TRUE; }	// start processing for a specified client
+	BOOL StopClient(CClient* client){ return TRUE; }	// stop processing for a specified client
+	long DoConnect();
+	long DoDisconnect();
+	long DoSendMessage(long encodeOption, BYTE protocolVersion, BOOL useMsgId, BYTE msgId, DWORD msgLength, BYTE* msg);
+	long DoRetryProcessing();
+	long EnterRetryPeriod(long err, bool passOsErr, DWORD osErr);
+
+	BOOL PauseProcessing();				// pause processing thread (not exit)
+	BOOL RestartProcessing();			// restart processing after a pause
+	BOOL StartProcessing();				// start processing thread
+	BOOL ExitProcessing();				// exit processing thread
+	BOOL IsProcessingPaused() { return (m_MessageProcessorState == MP_PAUSE); }
+	BOOL IsProcessingStarted() { return (m_MessageProcessorState == MP_START); }
+	BOOL IsProcessingContinuing() { return (m_MessageProcessorState == MP_PROCESSING); }
+
+	long GetConnectionId() { return m_ConnectionID; }
+
+	// m_Status operations
+	BOOL IsConnected() { return ((m_Status == eConnected) || (m_Status == eRetryInProgress)); }
+	BOOL IsDisconnected() { return (m_Status == eDisconnected); }
+	BOOL IsRetryInProgress() { return (m_Status== eRetryInProgress); }
+	BOOL IsRetryTimedOut() { return (m_Status == eRetryTimedOut); }
+	void SetConnected() { m_Status = eConnected; }
+	void SetDisconnected() { m_Status = eDisconnected; }
+	void SetRetryInProgress() { m_Status = eRetryInProgress; }
+	void SetRetryTimedOut() { m_Status = eRetryTimedOut; }
+	void NotifyClientsCommError(long tcfError, bool passOsError=false, DWORD osError=0);
+	BOOL CreateCommProtocols(const char* commLibraryPath, const char* protocolLibraryPath);
+	BOOL HasVersion();
+	void GetVersion(char* outVersion);
+	
+	long GetNumberClients() { return m_ClientList->size(); }
+
+	void UnLockAllDestinations();
+	void FlushAllClientMessageFiles();
+
+	ConnectData* m_ConnectSettings;	// connection settings
+	ClientList* m_ClientList;		// this connection only
+	eConnectionStatus m_Status;		// this connection status
+	CRegistry* m_Registry;			// registry for this connection
+	long m_ConnectionID;			// id for this connection
+
+	CBaseCom* m_BaseComm;			// communication port handler
+	HINSTANCE m_BaseCommHandle;
+	CBaseProtocol* m_BaseProtocol;	// protocol for port
+	HINSTANCE m_BaseProtocolHandle;
+
+	unsigned long m_OsError;		// error from OS if applicable
+
+
+	char m_DebugLogMsg[2000];
+	TCDebugLog* m_DebugLog;
+	char m_DebugLogMsg2[2000];
+	TCDebugLog* m_DebugLog2;
+
+	// MessageProcessor thread
+	static DWORD WINAPI MessageProcessor(LPVOID lpParam);
+
+	int m_MessageProcessorState;
+	bool m_ExitMessageProcessor;		// flag to tell MessageProcessor thread to exit
+	bool m_PauseMessageProcessing; // flag to tell MessageProcessor thread to stop all message processing (temporarily)
+	bool m_StartMessageProcessing;	// flag to tell MessageProcessor thread to start message processing
+	HANDLE m_hMessageProcessorExittedEvent; // event to tell main thread that MessageProcessor thread has exitted
+	HANDLE m_hMessageProcessorStoppedEvent; // event to tell main thread that MessageProcessor thread has stopped processing
+	HANDLE m_hMessageProcessorStartedEvent; // event to tell main thread that MessageProcessor thread has started processing
+	
+	HANDLE m_hMessageProcessorThread;	// handle to MessageProcessor thread
+	DWORD m_dwMessageProcessorThreadId;	// ID for          "			"
+
+	// com errors and retry stuff
+	time_t m_NextRetryTime;
+	time_t m_RetryTimeoutTime;
+
+	// client flush times
+	DWORD m_NextFlushFileTime;
+
+};
+
+#endif // !defined(AFX_CONNECTIONIMPL_H__1D0D5B50_3DDD_49B8_834B_5996D9CC0124__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/MessageFile.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,276 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// MessageFile.cpp: implementation of the CMessageFile class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "ServerClient.h"
+#include "MessageFile.h"
+#include "ServerManager.h"
+#include "TCErrorConstants.h"
+#include <stdio.h>
+#include <sys/stat.h>
+
+//#define USE_TEXT_FILE
+#ifdef USE_TEXT_FILE
+#define WRITE_MODE		"w+t"
+#define APPEND_MODE		"a+t"
+#else
+#define WRITE_MODE		"w+b"
+#define APPEND_MODE		"a+b"
+#endif
+
+#define FLUSH_FREQ	2000	// # messages to write between flushing (if buffered)
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+#endif
+
+//#define LOG_MESSAGEFILE
+#if defined(LOG_MESSAGEFILE) && defined(_DEBUG)
+extern CServerManager* gManager;
+#define TCDEBUGOPEN() if (gDoLogging) { gManager->m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(TCDebugMsg,"%s", s); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(TCDebugMsg, s, a1); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2, a3); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { gManager->m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CMessageFile::CMessageFile(CHAR* pFilePath, long inClientID)
+{
+	m_ClientID = inClientID;
+	m_FileLocked = FALSE;
+	strncpy(m_FilePath, pFilePath, MAX_FILEPATH);
+
+	char toString[30];
+	sprintf(toString, "%s%04.4d", MESSAGEFILE_MUTEX_BASENAME, m_ClientID);
+
+	m_Mutex.Open(toString, MESSAGEFILE_MUTEX_TIMEOUT);
+	m_hFile = NULL;
+	m_numWritten = 0;
+	m_numWrittenSinceLastFlush = 0;
+	m_Open = FALSE;
+
+#ifdef LOG_FILE_PERFORMANCE
+	perfFileName="c:\\tcf\\serverfileperf.txt";
+	fpLog = NULL;
+	numLogged=0;
+#endif
+	OPENFILEPERF();
+}
+
+CMessageFile::~CMessageFile()
+{
+	CLOSEFILEPERF();
+	Close();
+	m_Mutex.Close();
+
+}
+
+long CMessageFile::AddMessage(DWORD inLength, BYTE* inMessage)
+{
+	long err = TCAPI_ERR_NONE;
+
+	BOOL gotIt = WaitForAccess(); // will lock on first access only
+	size_t lenWritten = 0;
+
+#ifdef USE_TEXT_FILE
+	lenWritten = inLength;
+	int textStart = 20;
+	if (inMessage[9] == 0x5a) textStart = 64;
+	for (int i = 0; i < textStart; i++)
+		fprintf(m_hFile, "%02.2X ", inMessage[i]);
+
+	for (i = textStart; i < (int)inLength; i++)
+	{
+		if (isprint(inMessage[i]))
+			fprintf(m_hFile, "%c", inMessage[i]);
+		else
+			fprintf(m_hFile, "%02.2X ", inMessage[i]);
+	}
+	fprintf(m_hFile,"\n");
+#else
+	lenWritten = fwrite(inMessage, 1, inLength, m_hFile);
+#endif
+	if (lenWritten < inLength)
+	{
+		err = TCAPI_ERR_WRITING_FILE;
+	}
+	else
+	{
+		m_numWrittenSinceLastFlush++;
+		m_numWritten++;
+		if ((m_numWrittenSinceLastFlush % FLUSH_FREQ) == 0)
+		{
+			FlushFile(TRUE);
+		}
+	}
+	LOGFILEPERF("AddMessage\n");
+
+	// no ReleaseAccess this is done by Connection when all bytes processed in buffer and
+	//   calls all clients unlock method
+
+	return err;
+}
+
+long CMessageFile::Open()
+{
+	TCDEBUGOPEN();
+	long err = TCAPI_ERR_NONE;
+
+	TCDEBUGLOGS("CMessageFile::Open\n");
+	WaitForAccess();
+
+	if (m_hFile)
+		fclose(m_hFile);
+
+	m_hFile = _fsopen(m_FilePath, APPEND_MODE, _SH_DENYNO);
+
+	if (m_hFile == NULL)
+	{
+		err = TCAPI_ERR_FILE_DOES_NOT_EXIST;
+	}
+	else
+		m_Open = TRUE;
+
+
+	ReleaseAccess();
+
+	TCDEBUGCLOSE();
+	return err;
+}
+
+long CMessageFile::Close()
+{
+	TCDEBUGOPEN();
+	long err = TCAPI_ERR_NONE;
+
+	TCDEBUGLOGA1("CMessageFile::Close numWritten=%d\n", m_numWritten);
+	WaitForAccess();
+
+	if (m_hFile)
+	{
+		fclose(m_hFile);
+		m_hFile = NULL;
+	}
+
+	ReleaseAccess();
+
+	TCDEBUGCLOSE();
+	return err;
+}
+
+long CMessageFile::ClearFile()
+{
+	TCDEBUGOPEN();
+	long err = TCAPI_ERR_NONE;
+
+	TCDEBUGLOGA2("CMessageFile::ClearFile m_hFile=%x numWritten=%d\n", m_hFile, m_numWritten);
+	WaitForAccess();
+
+	if (m_hFile)
+	{
+		fclose(m_hFile);
+		m_hFile = NULL;
+		m_Open = FALSE;
+	}
+	m_numWritten = 0;
+	m_numWrittenSinceLastFlush = 0;
+
+	m_hFile = _fsopen(m_FilePath, WRITE_MODE, _SH_DENYNO);
+
+	if (m_hFile == NULL)
+	{
+		err = TCAPI_ERR_FILE_DOES_NOT_EXIST;
+	}
+	else
+		m_Open = TRUE;
+
+	LOGFILEPERF("ClearFile\n");
+
+	TCDEBUGLOGA1("CMessageFile::ClearFile m_hFile=%x\n", m_hFile);
+	ReleaseAccess();
+
+	TCDEBUGCLOSE();
+	return err;
+}
+void CMessageFile::FlushFile(BOOL numberTimeOut)
+{
+	if (m_hFile && m_numWrittenSinceLastFlush > 0)
+	{
+		fflush(m_hFile);
+		m_numWrittenSinceLastFlush = 0;
+		if (numberTimeOut)
+			LOGFILEPERF("FlushFile <number>\n");
+		else
+			LOGFILEPERF("FlushFile <time>\n");
+	}
+}
+#ifdef LOG_FILE_PERFORMANCE
+void CMessageFile::logPerf(char* msg)
+{
+	if (fpLog)
+	{
+		SYSTEMTIME sTime;
+		GetLocalTime(&sTime);
+		fprintf(fpLog, 
+			"%02.2d%02.2d-%02.2d:%02.2d:%02.2d.%03.3d: %s",
+			sTime.wDay, sTime.wMonth, sTime.wHour, sTime.wMinute, sTime.wSecond, sTime.wMilliseconds,
+			msg);
+
+		numLogged++;
+		if ((numLogged % 1000) == 0)
+			fflush(fpLog);
+	}
+}
+void CMessageFile::openPerf()
+{
+	struct _stat buf;
+	char* dirname = "c:\\tcf";
+	int result = _stat(dirname, &buf);
+	if (result == 0) // exists
+	{
+		if (fpLog == NULL)
+			fpLog = _fsopen(perfFileName, "at", _SH_DENYNO);
+	}
+	else
+	{
+		fpLog = NULL;
+	}
+}
+void CMessageFile::closePerf()
+{
+	if (fpLog)
+	{
+		fflush(fpLog);
+		fclose(fpLog);
+	}
+	fpLog = NULL;
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/MessageFile.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,92 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// MessageFile.h: interface for the CMessageFile class.
+//
+// One per client
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_MESSAGEFILE_H__1049F760_2A8A_491F_A868_B063D52B18E8__INCLUDED_)
+#define AFX_MESSAGEFILE_H__1049F760_2A8A_491F_A868_B063D52B18E8__INCLUDED_
+
+#include <share.h>
+#include "stdio.h"
+#include "mutex.h"
+//#include "ServerClient.h"
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+
+//----------------------------------
+// Message File Mutex
+//----------------------------------
+// Mutex name is basename + clientID
+#define MESSAGEFILE_MUTEX_BASENAME		"TCFMessageFileMutex"
+#define MESSAGEFILE_MUTEX_TIMEOUT		(60000L)
+
+class CMessageFile  
+{
+public:
+	CMessageFile(CHAR* pFilePath, long inClientID);
+	virtual ~CMessageFile();
+
+
+	long Open();
+	long Close();
+	long AddMessage(DWORD inLength, BYTE* inMessage);
+	void UnLockMessageFile() { ReleaseAccess(); }
+
+	BOOL WaitForAccess() { if (m_FileLocked) return TRUE; else { m_FileLocked = TRUE; return m_Mutex.Wait();} };
+	BOOL ReleaseAccess() { if (m_FileLocked) { m_FileLocked = FALSE; return m_Mutex.Release();} else return TRUE; };
+	BOOL isOpen() { return m_Open; }
+	long ClearFile();
+	void FlushFile(BOOL numberTimeOut = FALSE);
+
+	long m_ClientID;
+	BOOL m_Open;
+	Mutex m_Mutex;
+	CHAR m_FilePath[MAX_FILEPATH];
+	BOOL m_FileLocked;
+	FILE* m_hFile;
+	DWORD m_numWritten;		// total number written
+	DWORD m_numWrittenSinceLastFlush;	// number written and not flushed yet
+
+	// logging performance
+// for performance - independent of debug logging
+//#define LOG_FILE_PERFORMANCE
+#ifdef LOG_FILE_PERFORMANCE
+	char* perfFileName;
+	FILE *fpLog;
+	int numLogged;
+	void logPerf(char* msg);
+	void openPerf();
+	void closePerf();
+#define OPENFILEPERF() openPerf()
+#define LOGFILEPERF(s) logPerf(s)
+#define CLOSEFILEPERF() closePerf()
+#else
+#define OPENFILEPERF()
+#define LOGFILEPERF(s)
+#define CLOSEFILEPERF()
+#endif
+
+
+
+};
+
+#endif // !defined(AFX_MESSAGEFILE_H__1049F760_2A8A_491F_A868_B063D52B18E8__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/ProtocolRegisterItem.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,20 @@
+// ProtocolRegisterItem.cpp: implementation of the ProtocolRegisterItem class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "ProtocolRegisterItem.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+ProtocolRegisterItem::ProtocolRegisterItem()
+{
+
+}
+
+ProtocolRegisterItem::~ProtocolRegisterItem()
+{
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/ProtocolRegisterItem.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,25 @@
+// ProtocolRegisterItem.h: interface for the ProtocolRegisterItem class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_PROTOCOLREGISTERITEM_H__50FA06CD_9D2E_4A84_BEA7_1E4FD5374D8C__INCLUDED_)
+#define AFX_PROTOCOLREGISTERITEM_H__50FA06CD_9D2E_4A84_BEA7_1E4FD5374D8C__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "ServerClient.h"
+#include "BaseProtocol.h"
+
+class ProtocolRegisterItem  
+{
+public:
+	ProtocolRegisterItem();
+	virtual ~ProtocolRegisterItem();
+
+	char m_ProtocolType[MAX_DECODE_FORMAT];
+	CBaseProtocol* m_Protocol;
+};
+
+#endif // !defined(AFX_PROTOCOLREGISTERITEM_H__50FA06CD_9D2E_4A84_BEA7_1E4FD5374D8C__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/ProtocolRegistryItem.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// ProtocolRegistryItem.cpp: implementation of the CProtocolRegistryItem class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "ProtocolRegistryItem.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CProtocolRegistryItem::CProtocolRegistryItem()
+{
+
+}
+
+CProtocolRegistryItem::~CProtocolRegistryItem()
+{
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/ProtocolRegistryItem.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// ProtocolRegistryItem.h: interface for the CProtocolRegistryItem class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_PROTOCOLREGISTRYITEM_H__BD3F800B_7676_4D8D_907E_AE324467968C__INCLUDED_)
+#define AFX_PROTOCOLREGISTRYITEM_H__BD3F800B_7676_4D8D_907E_AE324467968C__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+#include "ServerClient.h"
+#include "BaseProtocol.h"
+//#include <vector>
+
+#define MAX_DLLPATHNAME (2048)
+
+class CProtocolRegistryItem  
+{
+public:
+	CProtocolRegistryItem();
+	virtual ~CProtocolRegistryItem();
+
+	char m_ProtocolType[MAX_DECODE_FORMAT];
+	char m_ProtocolLibrary[MAX_DLLPATHNAME];
+	
+};
+
+//typdef std::vector<CProtocolRegistryItem*> ProtocolRegistryList;
+
+
+#endif // !defined(AFX_PROTOCOLREGISTRYITEM_H__BD3F800B_7676_4D8D_907E_AE324467968C__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/ReadMe.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,34 @@
+========================================================================
+       CONSOLE APPLICATION : TCFServer
+========================================================================
+
+
+AppWizard has created this TCFServer application for you.  
+
+This file contains a summary of what you will find in each of the files that
+make up your TCFServer application.
+
+TCFServer.dsp
+    This file (the project file) contains information at the project level and
+    is used to build a single project or subproject. Other users can share the
+    project (.dsp) file, but they should export the makefiles locally.
+
+TCFServer.cpp
+    This is the main application source file.
+
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named TCFServer.pch and a precompiled types file named StdAfx.obj.
+
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+/////////////////////////////////////////////////////////////////////////////
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/Registry.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,264 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// Registry.cpp: implementation of the CRegistry class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "Registry.h"
+#include "ServerManager.h"
+
+//#define LOG_REGISTRY
+#if defined(LOG_REGISTRY) && defined(_DEBUG)
+extern BOOL gDoLogging;
+extern char TCDebugMsg[];
+extern CServerManager* gManager;
+#define TCDEBUGOPEN() if (gDoLogging) { gManager->m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(TCDebugMsg,"%s", s); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(TCDebugMsg, s, a1); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2, a3); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { gManager->m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+CRegistry::CRegistry()
+{
+}
+CRegistry::CRegistry(DWORD connectionId)
+{
+}
+CRegistry::~CRegistry()
+{
+}
+#if (0)
+CRegistry::CRegistry()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CRegistry::CRegistry\n");
+	TCDEBUGCLOSE();
+}
+
+CRegistry::CRegistry(DWORD connectionId)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA1("CRegistry::CRegistry connectionId = %d\n", connectionId);
+
+	for (int i = 0; i < MAX_MESSAGE_IDS; i++)
+	{
+		m_Registry[i].clist = new IdClientList();
+		m_Registry[i].clist->clear();
+	}
+
+	char mutexName[200];
+
+	sprintf(mutexName, "%s%d", REGISTRY_MUTEX_BASENAME, connectionId);
+	m_Mutex.Open(mutexName, REGISTRY_MUTEX_TIMEOUT);
+	TCDEBUGCLOSE();
+}
+
+CRegistry::~CRegistry()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CRegistry::~CRegistry\n");
+
+	for (int i = 0; i < MAX_MESSAGE_IDS; i++)
+	{
+		if (m_Registry[i].clist != NULL)
+		{
+			m_Registry[i].clist->clear();
+			delete m_Registry[i].clist;
+		}
+	}
+	m_Mutex.Close();
+	TCDEBUGCLOSE();
+}
+BOOL CRegistry::AddClient(CClient* newClient, long numberIds, BYTE* ids)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CRegistry::AddClient\n");
+
+	m_Mutex.Wait();
+
+	for (int i = 0; i < numberIds; i++)
+	{
+		TCDEBUGLOGA1(" id=%x\n", ids[i]);
+		m_Registry[ids[i]].clist->push_back(newClient);
+	}
+
+	DumpRegistry();
+	m_Mutex.Release();
+	TCDEBUGCLOSE();
+	return TRUE;
+}
+BOOL CRegistry::RemoveClient(CClient* client)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CRegistry::RemoveClient\n");
+
+	m_Mutex.Wait();
+
+	BOOL found = FALSE;
+
+	for (int i = 0; i < MAX_MESSAGE_IDS; i++)
+	{
+		long num = m_Registry[i].clist->size();
+		if (num != 0)
+		{
+			TCDEBUGLOGA3(" CRegistry::RemoveClient client = %x i = %x num = %d\n", client, i, num);
+			IdClientList::iterator iter;
+			for (iter = m_Registry[i].clist->begin(); iter != m_Registry[i].clist->end(); iter++)
+			{
+				TCDEBUGLOGA2(" CRegistry::RemoveClient iter = %x *iter = %x\n", iter, *iter);
+				if (client == *iter)
+				{
+					m_Registry[i].clist->erase(iter);
+					found = TRUE;
+					break;
+				}
+			}
+		}
+	}
+
+	m_Mutex.Release();
+	TCDEBUGCLOSE();
+	return found;
+}
+
+void CRegistry::DumpRegistry()
+{
+	for (int i = 0; i < MAX_MESSAGE_IDS; i++)
+	{
+		long num = m_Registry[i].clist->size();
+		if (num != 0)
+		{
+			TCDEBUGLOGA2(" CRegistry::DumpRegistry i = %x num = %d\n", i, num);
+			IdClientList::iterator iter;
+			for (iter = m_Registry[i].clist->begin(); iter != m_Registry[i].clist->end(); iter++)
+			{
+				TCDEBUGLOGA2(" CRegistry::DumpRegistry iter = %x *iter = %x\n", iter, *iter);
+			}
+		}
+	}
+}
+
+// fullmessage includes the protocol header
+// message is unwrapped from the protocol header
+// this is because some clients want the full message and some clients just want the actual message
+long CRegistry::RouteMessage(BYTE msgId, BYTE* fullMessage, DWORD fullLen, BYTE* realMessage, DWORD realMessageLen)
+{
+
+	long err = TCAPI_ERR_NONE;
+
+//	TCDEBUGOPEN();
+//	TCDEBUGLOGS("CRegistry::RouteMessage\n");
+//	TCDEBUGCLOSE();
+	m_Mutex.Wait();
+
+	if (msgId >= 0 && msgId < MAX_MESSAGE_IDS)
+	{
+		long numClients = m_Registry[msgId&0xff].clist->size();
+
+		TCDEBUGOPEN();
+		TCDEBUGLOGA2(" CRegistry::RouteMessage msgId = %x numClients = %d\n", msgId, numClients);
+		TCDEBUGCLOSE();
+
+		if (numClients > 0)
+		{
+			IdClientList::iterator iter;
+			for (iter = m_Registry[msgId&0xff].clist->begin(); iter != m_Registry[msgId&0xff].clist->end(); iter++)
+			{
+				CClient* client = *iter;
+				if (client && client->IsStarted())
+				{
+					if (client->IsStreamOpen())
+					{
+						CInputStream* stream = client->GetInputStream();
+						// get unwrap format
+						if (client->m_Options.unWrapFormat == UNWRAP_LEAVE_HEADERS)
+						{
+							// use full message
+							err = stream->AddMessage(fullLen, fullMessage);
+							// routing errors here can be input stream overflows
+							//  notify this client right now (no OS error)
+							if (err != TCAPI_ERR_NONE)
+							{
+								client->m_ErrorMonitor->PutError(err, false, 0);
+								err = TCAPI_ERR_NONE;
+							}
+						}
+						else
+						{
+							// use raw message
+							err = stream->AddMessage(realMessageLen, realMessage);
+							// routing errors here can be input stream overflows
+							//  notify this client right now (no OS error)
+							if (err != TCAPI_ERR_NONE)
+							{
+								client->m_ErrorMonitor->PutError(err, false, 0);
+								err = TCAPI_ERR_NONE;
+							}
+						}
+					}
+					else if (client->IsMessageFileOpen())
+					{
+						CMessageFile* file = client->GetMessageFile();
+						// get unwrap format
+						if (client->m_Options.unWrapFormat == UNWRAP_LEAVE_HEADERS)
+						{
+							// use full message
+							err = file->AddMessage(fullLen, fullMessage);
+							// routing errors here can be input stream overflows
+							//  notify this client right now (no OS error)
+							if (err != TCAPI_ERR_NONE)
+							{
+								client->m_ErrorMonitor->PutError(err, false, 0);
+								err = TCAPI_ERR_NONE;
+							}
+						}
+						else
+						{
+							// use raw message
+							err = file->AddMessage(realMessageLen, realMessage);
+							// routing errors here can be input stream overflows
+							//  notify this client right now (no OS error)
+							if (err != TCAPI_ERR_NONE)
+							{
+								client->m_ErrorMonitor->PutError(err, false, 0);
+								err = TCAPI_ERR_NONE;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	m_Mutex.Release();
+	return err;
+}
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/Registry.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// Registry.h: interface for the CRegistry class.
+//
+// one of these per connection
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_REGISTRY_H__BB7103A0_5492_472D_86B4_C9BF4C25CD20__INCLUDED_)
+#define AFX_REGISTRY_H__BB7103A0_5492_472D_86B4_C9BF4C25CD20__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "Client.h"
+#include "mutex.h"
+#include <vector>
+
+#define REGISTRY_MUTEX_BASENAME		"TCFRegistry"
+#define REGISTRY_MUTEX_TIMEOUT		(60000L)
+
+typedef std::vector<CClient*> IdClientList;
+
+#define MAX_MESSAGE_IDS	(256)
+typedef struct tagMessageIdRegistry
+{
+	IdClientList* clist;
+} *pMessageIdRegistry, MessageIdRegistry;
+
+class CRegistry  
+{
+public:
+	CRegistry();
+	CRegistry(DWORD connectionId);
+	virtual ~CRegistry();
+
+	virtual BOOL AddClient(CClient* newClient, long numberIds, BYTE* ids)=0;
+	virtual BOOL RemoveClient(CClient* client)=0;
+	virtual void DumpRegistry()=0;
+	virtual long RouteMessage(BYTE msgId, BYTE* fullMessage, DWORD fullLen, BYTE* realMessage, DWORD realMessageLen)=0;
+
+	MessageIdRegistry m_Registry[MAX_MESSAGE_IDS];
+	Mutex m_Mutex;
+};
+
+#endif // !defined(AFX_REGISTRY_H__BB7103A0_5492_472D_86B4_C9BF4C25CD20__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/RegistryImpl.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,258 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// RegistryImpl.cpp: implementation of the CRegistryImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "RegistryImpl.h"
+#include "TCErrorConstants.h"
+
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+#endif
+
+//#define LOG_REGISTRY
+#if defined(LOG_REGISTRY) && defined(_DEBUG)
+extern char TCDebugMsg[];
+extern CServerManager* gManager;
+#define TCDEBUGOPEN() if (gDoLogging) { gManager->m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(TCDebugMsg,"%s", s); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(TCDebugMsg, s, a1); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2, a3); gManager->m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { gManager->m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CRegistryImpl::CRegistryImpl()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CRegistryImpl::CRegistryImpl\n");
+	TCDEBUGCLOSE();
+}
+
+CRegistryImpl::CRegistryImpl(DWORD connectionId)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGA1("CRegistryImpl::CRegistryImpl connectionId = %d\n", connectionId);
+
+	for (int i = 0; i < MAX_MESSAGE_IDS; i++)
+	{
+		m_Registry[i].clist = new IdClientList();
+		m_Registry[i].clist->clear();
+	}
+
+	char mutexName[200];
+
+	sprintf(mutexName, "%s%d", REGISTRY_MUTEX_BASENAME, connectionId);
+	m_Mutex.Open(mutexName, REGISTRY_MUTEX_TIMEOUT);
+	TCDEBUGCLOSE();
+}
+
+CRegistryImpl::~CRegistryImpl()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CRegistryImpl::~CRegistryImpl\n");
+
+	for (int i = 0; i < MAX_MESSAGE_IDS; i++)
+	{
+		if (m_Registry[i].clist != NULL)
+		{
+			m_Registry[i].clist->clear();
+			delete m_Registry[i].clist;
+		}
+	}
+	m_Mutex.Close();
+	TCDEBUGCLOSE();
+}
+
+BOOL CRegistryImpl::AddClient(CClient* newClient, long numberIds, BYTE* ids)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CRegistryImpl::AddClient\n");
+
+	m_Mutex.Wait();
+
+	for (int i = 0; i < numberIds; i++)
+	{
+		TCDEBUGLOGA1(" id=%x\n", ids[i]);
+		m_Registry[ids[i]].clist->push_back(newClient);
+	}
+
+	DumpRegistry();
+	m_Mutex.Release();
+	TCDEBUGCLOSE();
+	return TRUE;
+}
+BOOL CRegistryImpl::RemoveClient(CClient* client)
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CRegistryImpl::RemoveClient\n");
+
+	m_Mutex.Wait();
+
+	BOOL found = FALSE;
+
+	for (int i = 0; i < MAX_MESSAGE_IDS; i++)
+	{
+		long num = m_Registry[i].clist->size();
+		if (num != 0)
+		{
+			TCDEBUGLOGA3(" CRegistryImpl::RemoveClient client = %x i = %x num = %d\n", client, i, num);
+			IdClientList::iterator iter;
+			for (iter = m_Registry[i].clist->begin(); iter != m_Registry[i].clist->end(); iter++)
+			{
+				TCDEBUGLOGA2(" CRegistryImpl::RemoveClient iter = %x *iter = %x\n", iter, *iter);
+				if (client == *iter)
+				{
+					m_Registry[i].clist->erase(iter);
+					found = TRUE;
+					break;
+				}
+			}
+		}
+	}
+
+	m_Mutex.Release();
+	TCDEBUGCLOSE();
+	return found;
+}
+
+void CRegistryImpl::DumpRegistry()
+{
+	for (int i = 0; i < MAX_MESSAGE_IDS; i++)
+	{
+		long num = m_Registry[i].clist->size();
+		if (num != 0)
+		{
+			TCDEBUGLOGA2(" CRegistryImpl::DumpRegistry i = %x num = %d\n", i, num);
+			IdClientList::iterator iter;
+			for (iter = m_Registry[i].clist->begin(); iter != m_Registry[i].clist->end(); iter++)
+			{
+				TCDEBUGLOGA2(" CRegistryImpl::DumpRegistry iter = %x *iter = %x\n", iter, *iter);
+			}
+		}
+	}
+}
+
+// fullmessage includes the protocol header
+// message is unwrapped from the protocol header
+// this is because some clients want the full message and some clients just want the actual message
+long CRegistryImpl::RouteMessage(BYTE msgId, BYTE* fullMessage, DWORD fullLen, BYTE* realMessage, DWORD realMessageLen)
+{
+
+	long err = TCAPI_ERR_NONE;
+
+//	TCDEBUGOPEN();
+//	TCDEBUGLOGS("CRegistryImpl::RouteMessage\n");
+//	TCDEBUGCLOSE();
+	m_Mutex.Wait();
+
+	if (msgId >= 0 && msgId < MAX_MESSAGE_IDS)
+	{
+		long numClients = m_Registry[msgId&0xff].clist->size();
+
+		TCDEBUGOPEN();
+		TCDEBUGLOGA2(" CRegistryImpl::RouteMessage msgId = %x numClients = %d\n", msgId, numClients);
+		TCDEBUGCLOSE();
+
+		if (numClients > 0)
+		{
+			IdClientList::iterator iter;
+			for (iter = m_Registry[msgId&0xff].clist->begin(); iter != m_Registry[msgId&0xff].clist->end(); iter++)
+			{
+				CClient* client = *iter;
+				if (client && client->IsStarted())
+				{
+					if (client->IsStreamOpen())
+					{
+						CInputStream* stream = client->GetInputStream();
+						// get unwrap format
+						if (client->m_Options.unWrapFormat == UNWRAP_LEAVE_HEADERS)
+						{
+							// use full message
+							err = stream->AddMessage(fullLen, fullMessage);
+							// routing errors here can be input stream overflows
+							//  notify this client right now (no OS error)
+							if (err != TCAPI_ERR_NONE)
+							{
+								client->m_ErrorMonitor->PutError(err, false, 0);
+								err = TCAPI_ERR_NONE;
+							}
+						}
+						else
+						{
+							// use raw message
+							err = stream->AddMessage(realMessageLen, realMessage);
+							// routing errors here can be input stream overflows
+							//  notify this client right now (no OS error)
+							if (err != TCAPI_ERR_NONE)
+							{
+								client->m_ErrorMonitor->PutError(err, false, 0);
+								err = TCAPI_ERR_NONE;
+							}
+						}
+					}
+					else if (client->IsMessageFileOpen())
+					{
+						CMessageFile* file = client->GetMessageFile();
+						// get unwrap format
+						if (client->m_Options.unWrapFormat == UNWRAP_LEAVE_HEADERS)
+						{
+							// use full message
+							err = file->AddMessage(fullLen, fullMessage);
+							// routing errors here can be input stream overflows
+							//  notify this client right now (no OS error)
+							if (err != TCAPI_ERR_NONE)
+							{
+								client->m_ErrorMonitor->PutError(err, false, 0);
+								err = TCAPI_ERR_NONE;
+							}
+						}
+						else
+						{
+							// use raw message
+							err = file->AddMessage(realMessageLen, realMessage);
+							// routing errors here can be input stream overflows
+							//  notify this client right now (no OS error)
+							if (err != TCAPI_ERR_NONE)
+							{
+								client->m_ErrorMonitor->PutError(err, false, 0);
+								err = TCAPI_ERR_NONE;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	m_Mutex.Release();
+	return err;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/RegistryImpl.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// RegistryImpl.h: interface for the CRegistryImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_REGISTRYIMPL_H__2C724EE6_DB27_4511_A934_EF3CDBBECADB__INCLUDED_)
+#define AFX_REGISTRYIMPL_H__2C724EE6_DB27_4511_A934_EF3CDBBECADB__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "Registry.h"
+
+class CRegistryImpl : public CRegistry  
+{
+public:
+	CRegistryImpl();
+	CRegistryImpl(DWORD connectionId);
+	virtual ~CRegistryImpl();
+
+	BOOL AddClient(CClient* newClient, long numberIds, BYTE* ids);
+	BOOL RemoveClient(CClient* client);
+	void DumpRegistry();
+	long RouteMessage(BYTE msgId, BYTE* fullMessage, DWORD fullLen, BYTE* realMessage, DWORD realMessageLen);
+
+};
+
+#endif // !defined(AFX_REGISTRYIMPL_H__2C724EE6_DB27_4511_A934_EF3CDBBECADB__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/ServerManager.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,1192 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// ServerManager.cpp: implementation of the CServerManager class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "ServerManager.h"
+#include "ConnectionImpl.h"
+#include "resource.h"
+
+
+#ifdef _DEBUG
+extern BOOL gDoLogging;
+#endif
+
+#define LOG_SERVERMANAGER
+#if defined(LOG_SERVERMANAGER) && defined(_DEBUG)
+extern char TCDebugMsg[];
+#define TCDEBUGOPEN() if (gDoLogging) { m_DebugLog->WaitForAccess(); }
+#define TCDEBUGLOGS(s) if (gDoLogging) { sprintf(TCDebugMsg,"%s", s); m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA1(s, a1) if (gDoLogging) { sprintf(TCDebugMsg, s, a1); m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA2(s, a1, a2) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2); m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(TCDebugMsg, s, a1, a2, a3); m_DebugLog->log(TCDebugMsg); }
+#define TCDEBUGCLOSE() if (gDoLogging) { m_DebugLog->ReleaseAccess(); }
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+
+extern char* gServerLocation;
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+CServerManager::CServerManager()
+{
+	m_DebugLog = NULL;
+	m_Server = NULL;
+	m_ConnectionList = NULL;
+	m_ClientList = NULL;
+	m_NextClientId = 0;
+	m_NextConnectionId = 0;
+	m_Version[0] = NULL;
+	m_ExeLocation = NULL;
+	m_ProtocolList = NULL;
+	m_CommList = NULL;
+
+}
+CServerManager::CServerManager(const char* exeLocation)
+{
+#ifdef _DEBUG
+	if (gDoLogging)
+		m_DebugLog = new TCDebugLog("TCF_ServerLog", ::GetCurrentProcessId());
+	else
+		m_DebugLog = NULL;
+#else
+	m_DebugLog = NULL;
+#endif
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CServerManager::CServerManager\n");
+
+	m_Server = new CServerCommand();
+
+	m_ConnectionList = new ConnectionList();
+	m_ConnectionList->clear();
+
+	m_ClientList = new ClientList();
+	m_ClientList->clear();
+
+	m_NextClientId = ::GetCurrentProcessId() * 100;
+	m_NextConnectionId = (::GetCurrentProcessId() * 100) + 100;
+
+	int ret = ::LoadString(::GetModuleHandle(NULL), IDS_VERSION, m_Version, MAX_VERSION_STRING);
+	TCDEBUGLOGA1(" version=%s\n", m_Version);
+
+	TCDEBUGLOGA1(" exeLocation=%s\n", exeLocation);
+	m_ExeLocation = new char[MAX_EXEPATHNAME];
+	m_ExeLocation[0] = '\0';
+	strcpy(m_ExeLocation, exeLocation);
+	TCDEBUGLOGA1(" m_ExeLocation=%s\n", m_ExeLocation);
+
+	m_ProtocolList = new ProtocolRegistry();
+	m_ProtocolList->clear();
+
+	m_CommList = new CommRegistry();
+	m_CommList->clear();
+
+	TCDEBUGCLOSE();
+}
+
+CServerManager::~CServerManager()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CServerManager::~CServerManager\n");
+
+	if (m_Server)
+		delete m_Server;
+
+	if (m_ConnectionList)
+	{
+		m_ConnectionList->clear();
+		delete m_ConnectionList;
+	}
+
+	if (m_ClientList)
+	{
+		m_ClientList->clear();
+		delete m_ClientList;
+	}
+
+	if (m_ExeLocation)
+		delete[] m_ExeLocation;
+
+	if (m_ProtocolList)
+	{
+		m_ProtocolList->clear();
+		delete m_ProtocolList;
+	}
+
+	if (m_CommList)
+	{
+		m_CommList->clear();
+		delete m_CommList;
+	}
+
+	TCDEBUGCLOSE();
+
+	if (m_DebugLog)
+		delete m_DebugLog;
+
+}
+void CServerManager::CommandThread()
+{
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CServerManager::CommandThread\n");
+	TCDEBUGCLOSE();
+	
+	bool done = false;
+	eServerCommand command = eCmdNone;
+	ServerCommandData cmdrsp; pServerCommandData pCmdrsp = &cmdrsp;
+	pServerMessageData pMsg = new ServerMessageData();
+
+	TCDEBUGOPEN();
+	RegisterAllProtocols();
+	RegisterAllComms();
+	TCDEBUGCLOSE();
+
+	while(!done)
+	{
+		while(!m_Server->GetCommand(pCmdrsp, pMsg))
+		{
+			Sleep(1);
+		}
+		command = pCmdrsp->command;
+
+		switch(command)
+		{
+		case eCmdConnect:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdConnect\n");
+	TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				BOOL connCreated = FALSE;
+				CConnectionImpl* conn = (CConnectionImpl*)FindConnection(&pCmdrsp->connectSettings);
+				if (conn == NULL)
+				{
+					// create new one
+					DWORD connId = m_NextConnectionId;
+					conn = new CConnectionImpl(pCmdrsp->connectSettings, connId);
+
+					TCDEBUGOPEN();
+					const char* commPath = FindCommPath(pCmdrsp->connectSettings.connectType);
+					TCDEBUGCLOSE();
+					TCDEBUGOPEN();
+					const char* protPath = FindProtocolPath(pCmdrsp->connectSettings.decodeFormat);
+					TCDEBUGCLOSE();
+
+					if (protPath == NULL || commPath == NULL)
+					{
+						ret = TCAPI_ERR_UNKNOWN_MEDIA_TYPE;
+					}
+					else
+					{
+						if (conn->CreateCommProtocols(commPath, protPath))
+						{
+							connCreated = TRUE;
+						}
+						else
+						{
+							ret = TCAPI_ERR_UNKNOWN_MEDIA_TYPE;
+						}
+					}
+				}
+				if (ret == TCAPI_ERR_NONE && (conn->IsDisconnected() || conn->IsRetryTimedOut()))
+				{
+					ret = conn->DoConnect();
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+					DWORD id = m_NextClientId++;
+					// create client
+					CClient* client = new CClient(conn, pCmdrsp->clientOptions, id);
+					// add client to connection's list
+					conn->AddClient(client);
+					// add client to total list
+					m_ClientList->push_back(client);
+					// add connection to connection list
+					if (connCreated)
+						m_ConnectionList->push_back(conn);
+
+					m_NextConnectionId++;
+					pCmdrsp->response = eRspOK;
+					pCmdrsp->clientId = id;
+					m_Server->SendResponse(pCmdrsp);
+				}
+				else
+				{
+					if (conn->m_OsError > 0)
+						pCmdrsp->osError = conn->m_OsError;
+					else
+						pCmdrsp->osError = 0;
+					if (connCreated)
+						delete conn;
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+					m_Server->SendResponse(pCmdrsp);
+				}
+			}
+			break;
+		case eCmdDisconnect:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdDisconnect\n");
+	TCDEBUGCLOSE();
+				DWORD id = pCmdrsp->clientId;
+				// find this client in our list
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					// get the connection for this client
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					// pause the processing so we can delete the client 
+					conn->PauseProcessing();
+					// stop processing this client
+					client->Stop();
+					// remove client from registry
+					conn->RemoveClientFromRegistry(client);
+					// remove from connections client list
+					conn->RemoveClient(client);
+					// remove from total client list
+					RemoveClient(client);
+					// delete client
+					delete client;
+					// no more clients on this connection, disconnect this connection
+					if (conn->GetNumberClients() == 0)
+					{
+						conn->ExitProcessing();
+						conn->DoDisconnect();
+						RemoveConnection(conn);
+						delete conn;
+					}
+					else
+					{
+						conn->RestartProcessing();
+					}
+				}
+				pCmdrsp->response = eRspOK;
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdSetMessageIds:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdSetMessageIds\n");
+	TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				DWORD id = pCmdrsp->clientId;
+				bool restart = false;
+				// find client
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					// get connection
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					if (conn->IsProcessingContinuing())
+					{
+						conn->PauseProcessing();
+						restart = true;
+					}
+					if (conn->IsDisconnected())
+					{
+						ret = TCAPI_ERR_MEDIA_NOT_OPEN;
+					}
+					else if (conn->IsRetryInProgress())
+					{
+						ret = TCAPI_ERR_COMM_RETRY_IN_PROGRESS;
+					}
+					else if (conn->IsRetryTimedOut())
+					{
+						ret = TCAPI_ERR_COMM_TIMEOUT;
+					}
+
+					if (ret == TCAPI_ERR_NONE)
+					{
+						// add client to connection's registry
+						conn->AddClientToRegistry(client, pCmdrsp->number, pCmdrsp->messageIds);
+					}
+					if (restart)
+						conn->RestartProcessing();
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+					pCmdrsp->response = eRspOK;
+				}
+				else
+				{
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdGetNumberConnections:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdGetNumberConnections\n");
+	TCDEBUGCLOSE();
+				long num = m_ConnectionList->size();
+				pCmdrsp->response = eRspOK;
+				pCmdrsp->numConnections = num;
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdGetConnectionType:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdGetConnectionType\n");
+	TCDEBUGCLOSE();
+				long index = pCmdrsp->index;
+				CConnectionImpl* pConn = (CConnectionImpl*)FindConnection(index);
+				if (pConn != NULL)
+				{
+					pCmdrsp->response = eRspOK;
+					strncpy(pCmdrsp->connectSettings.connectType, pConn->m_ConnectSettings->connectType, MAX_CONNECTION_TYPE);
+//					pCmdrsp->connectSettings.connectType = pConn->m_ConnectSettings->connectType;
+					m_Server->SendResponse(pCmdrsp);
+				}
+				else
+				{
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = TCAPI_ERR_MISSING_CONNECTION_SPEC;
+					m_Server->SendResponse(pCmdrsp);
+				}
+			}
+			break;
+		case eCmdOpenStream:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdOpenStream\n");
+	TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				// find client
+				DWORD id = pCmdrsp->clientId;
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					// get connection
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					if (conn->IsDisconnected())
+					{
+						ret = TCAPI_ERR_MEDIA_NOT_OPEN;
+					}
+					else if (conn->IsRetryInProgress())
+					{
+						ret = TCAPI_ERR_COMM_RETRY_IN_PROGRESS;
+					}
+					else if (conn->IsRetryTimedOut())
+					{
+						ret = TCAPI_ERR_COMM_TIMEOUT;
+					}
+
+					if (ret == TCAPI_ERR_NONE)
+					{
+						bool restart = false;
+						if (conn->IsProcessingContinuing())
+						{
+							restart = true;
+							conn->PauseProcessing();
+						}
+						client->OpenStream(&pCmdrsp->destinationOptions);
+						if (restart)
+							conn->RestartProcessing();
+					}
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+					pCmdrsp->response = eRspOK;
+				}
+				else
+				{
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdCloseStream:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdCloseStream\n");
+	TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				DWORD id = pCmdrsp->clientId;
+				bool restart = false;
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					// get connection
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					if (conn->IsConnected())
+					{
+						if (!conn->IsRetryTimedOut() && !conn->IsRetryInProgress())
+						{
+							if (conn->IsProcessingContinuing())
+							{
+								conn->PauseProcessing();
+								restart = true;
+							}
+						}
+						client->CloseStream();
+						if (!conn->IsRetryTimedOut() && !conn->IsRetryInProgress())
+						{
+							if (restart)
+								conn->RestartProcessing();
+						}
+
+					}
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+					pCmdrsp->response = eRspOK;
+				}
+				else
+				{
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdOpenMessageFile:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdOpenMessageFile\n");
+	TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				// find client
+				DWORD id = pCmdrsp->clientId;
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					// get connection
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					if (conn->IsDisconnected())
+					{
+						ret = TCAPI_ERR_MEDIA_NOT_OPEN;
+					}
+					else if (conn->IsRetryInProgress())
+					{
+						ret = TCAPI_ERR_COMM_RETRY_IN_PROGRESS;
+					}
+					else if (conn->IsRetryTimedOut())
+					{
+						ret = TCAPI_ERR_COMM_TIMEOUT;
+					}
+
+					if (ret == TCAPI_ERR_NONE)
+					{
+						bool restart = false;
+						if (conn->IsProcessingContinuing())
+						{
+							restart = true;
+							conn->PauseProcessing();
+						}
+						client->OpenMessageFile(&pCmdrsp->destinationOptions);
+						if (restart)
+							conn->RestartProcessing();
+					}
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+					pCmdrsp->response = eRspOK;
+				}
+				else
+				{
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdCloseMessageFile:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdCloseMessageFile\n");
+	TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				DWORD id = pCmdrsp->clientId;
+				bool restart = false;
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					// get connection
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					if (conn->IsConnected())
+					{
+						if (!conn->IsRetryTimedOut() && !conn->IsRetryInProgress())
+						{
+							if (conn->IsProcessingContinuing())
+							{
+								conn->PauseProcessing();
+								restart = true;
+							}
+						}
+						client->CloseMessageFile();
+						if (!conn->IsRetryTimedOut() && !conn->IsRetryInProgress())
+						{
+							if (restart)
+								conn->RestartProcessing();
+						}
+
+					}
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+					pCmdrsp->response = eRspOK;
+				}
+				else
+				{
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdClearMessageFile:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdClearMessageFile\n");
+	TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				DWORD id = pCmdrsp->clientId;
+				bool restart = false;
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					// get connection
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					if (conn->IsConnected())
+					{
+						if (!conn->IsRetryTimedOut() && !conn->IsRetryInProgress())
+						{
+							if (conn->IsProcessingContinuing())
+							{
+								conn->PauseProcessing();
+								restart = true;
+							}
+						}
+						client->ClearMessageFile();
+						if (restart)
+							conn->RestartProcessing();
+					}
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+					pCmdrsp->response = eRspOK;
+				}
+				else
+				{
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdStart:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdStart\n");
+	TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				DWORD id = pCmdrsp->clientId;
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					// get connection
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					conn->PauseProcessing();
+					if (conn->IsDisconnected())
+					{
+						ret = TCAPI_ERR_MEDIA_NOT_OPEN;
+					}
+					else if (conn->IsRetryInProgress())
+					{
+						ret = TCAPI_ERR_COMM_RETRY_IN_PROGRESS;
+					}
+					else if (conn->IsRetryTimedOut())
+					{
+						ret = TCAPI_ERR_COMM_TIMEOUT;
+					}
+
+					if (ret == TCAPI_ERR_NONE)
+					{
+						client->Start();
+						conn->RestartProcessing();
+					}
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+					pCmdrsp->response = eRspOK;
+				}
+				else
+				{
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdStop:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdStop\n");
+	TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				DWORD id = pCmdrsp->clientId;
+				bool restart = false;
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					// get connection
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					if (conn->IsConnected())
+					{
+						if (!conn->IsRetryTimedOut() && !conn->IsRetryInProgress())
+						{
+							if (conn->IsProcessingContinuing())
+							{
+								restart = true;
+								conn->PauseProcessing();
+							}
+						}
+						client->Stop();
+						if (!conn->IsRetryTimedOut() && !conn->IsRetryInProgress())
+						{
+							if (restart)
+								conn->RestartProcessing();
+						}
+
+					}
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+					pCmdrsp->response = eRspOK;
+				}
+				else
+				{
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+				}
+				m_Server->SendResponse(pCmdrsp);
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdStop done\n");
+	TCDEBUGCLOSE();
+			}
+			break;
+		case eCmdSendMessage:
+			{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdSendMessage\n");
+	TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				DWORD osErr = 0;
+				DWORD id = pCmdrsp->clientId;
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					if (conn->IsDisconnected())
+					{
+						ret = TCAPI_ERR_MEDIA_NOT_OPEN;
+					}
+					else if (conn->IsRetryInProgress())
+					{
+						ret = TCAPI_ERR_COMM_RETRY_IN_PROGRESS;
+					}
+					else if (conn->IsRetryTimedOut())
+					{
+						ret = TCAPI_ERR_COMM_TIMEOUT;
+					}
+
+					if (ret == TCAPI_ERR_NONE)
+					{
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdSendMessage DoSendMessage\n");
+	TCDEBUGCLOSE();
+						ret = conn->DoSendMessage(pCmdrsp->encodeOption, pCmdrsp->protocolVersion, pCmdrsp->useMyId, pCmdrsp->myId, pMsg->length, pMsg->message);
+//						ret = conn->DoSendMessage(pMsg->length, pMsg->message);
+						if (ret != TCAPI_ERR_NONE)
+							osErr = conn->m_OsError;
+	TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdSendMessage DoSendMessage done\n");
+	TCDEBUGCLOSE();
+					}
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+//	TCDEBUGOPEN();
+//				TCDEBUGLOGS(" eCmdSendMessage OK\n");
+//	TCDEBUGCLOSE();
+					pCmdrsp->response = eRspOK;
+				}
+				else
+				{
+//	TCDEBUGOPEN();
+//				TCDEBUGLOGS(" eCmdSendMessage ERROR\n");
+//	TCDEBUGCLOSE();
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+					if (osErr > 0)
+						pCmdrsp->osError = osErr;
+					else
+						pCmdrsp->osError = 0;
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdExit:
+			{
+				TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdExit\n");
+				TCDEBUGCLOSE();
+				DoShutdown();
+				done = true;
+			}
+			break;
+		case eCmdGetNumberVersions:
+			{
+				TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdGetNumberVersions\n");
+				TCDEBUGCLOSE();
+
+				long ret = TCAPI_ERR_NONE;
+				long numberVersions = 1; // 1 for server
+				DWORD id = pCmdrsp->clientId;
+				CClient* client = FindClient(id);
+				if (client)
+				{
+					CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+					if (conn->IsConnected())
+					{
+						if (conn->HasVersion())
+							numberVersions++;
+					}
+				}
+				if (ret == TCAPI_ERR_NONE)
+				{
+					pCmdrsp->response = eRspOK;
+					pCmdrsp->number = numberVersions;
+				}
+				else
+				{
+					pCmdrsp->response = eRspError;
+					pCmdrsp->error = ret;
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdGetVersion:
+			{
+				TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdGetVersion\n");
+				TCDEBUGCLOSE();
+				// index = 1 ==> TCFServer version
+				// index = 2 ==> Connection version if it exists
+				long ret = TCAPI_ERR_NONE;
+				long index = pCmdrsp->index;
+				pCmdrsp->response = eRspOK;
+				pCmdrsp->version[0] = NULL;
+				if (index == 1)
+				{
+					pCmdrsp->response = eRspOK;
+					strncpy(pCmdrsp->version, m_Version, MAX_VERSION_STRING);
+				}
+				else if (index == 2)
+				{
+					DWORD id = pCmdrsp->clientId;
+					CClient* client = FindClient(id);
+					if (client)
+					{
+						CConnectionImpl* conn = (CConnectionImpl*)client->GetConnection();
+						if (conn->IsConnected())
+						{
+							pCmdrsp->response = eRspOK;
+							if (conn->HasVersion())
+							{
+								conn->GetVersion(pCmdrsp->version);
+							}
+						}
+						else
+						{
+							pCmdrsp->response = eRspError;
+							pCmdrsp->error = TCAPI_ERR_MEDIA_NOT_OPEN;
+						}
+					}
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		case eCmdGetClientStatus:
+			{
+				TCDEBUGOPEN();
+				TCDEBUGLOGS(" eCmdGetClientStatus\n");
+				TCDEBUGCLOSE();
+				long ret = TCAPI_ERR_NONE;
+				DWORD id = pCmdrsp->clientId;
+				CClient* client = FindClient(id);
+				pCmdrsp->response = eRspOK;
+				pCmdrsp->clientStatus = eUnknownClient;
+				if (client)
+				{
+					if (client->IsStarted())
+					{
+						pCmdrsp->clientStatus = eStarted;
+					}
+					else
+					{
+						pCmdrsp->clientStatus = eStopped;
+					}
+				}
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		default:
+			{
+				TCDEBUGOPEN();
+				TCDEBUGLOGA1(" unknown command = %d\n", command);
+				TCDEBUGCLOSE();
+				pCmdrsp->response = eRspOK;//eRspError;
+				pCmdrsp->error = TCAPI_ERR_FEATURE_NOT_IMPLEMENTED;
+				m_Server->SendResponse(pCmdrsp);
+			}
+			break;
+		}
+	}
+
+	pCmdrsp->response = eRspExitted;
+	m_Server->SendResponse(&cmdrsp);
+
+	if (pMsg)
+		delete pMsg;
+
+	TCDEBUGOPEN();
+	TCDEBUGLOGS("CServerManager::CommandThread exitting\n");
+	TCDEBUGCLOSE();
+}
+
+CConnection* CServerManager::FindConnection(pConnectData pConData)
+{
+	TCDEBUGLOGS("CServerManager::FindConnection1\n");
+	CConnection* connection = NULL;
+
+	if (m_ConnectionList->size() != 0)
+	{
+		ConnectionList::iterator pConn;
+		for (pConn = m_ConnectionList->begin(); pConn != m_ConnectionList->end(); pConn++)
+		{
+			if ((*pConn)->IsEqual(pConData))
+			{
+				connection = *pConn;
+				break;
+			}
+		}
+	}
+
+	TCDEBUGLOGA1("CServerManager::FindConnection1 connection=%x\n", connection);
+	return connection;
+
+}
+CConnection* CServerManager::FindConnection(long index)
+{
+	TCDEBUGLOGS("CServerManager::FindConnection2\n");
+	CConnection* connection = NULL;
+
+	if (m_ConnectionList->size() >= index)
+	{
+		connection = m_ConnectionList->at(index);
+	}
+
+	TCDEBUGLOGA1("CServerManager::FindConnection2 connection=%x\n", connection);
+	return connection;
+}
+CClient* CServerManager::FindClient(DWORD id)
+{
+	CClient* found = NULL;
+
+	if (m_ClientList->size() != 0)
+	{
+		ClientList::iterator iter;
+		for (iter = m_ClientList->begin(); iter != m_ClientList->end(); iter++)
+		{
+			if ((*iter)->GetClientId() == id)
+			{
+				found = *iter;
+				break;
+			}
+		}
+	}
+	return found;
+}
+
+BOOL CServerManager::RemoveClient(CClient* client)
+{
+	BOOL found = FALSE;
+
+	if (m_ClientList->size() != 0)
+	{
+		ClientList::iterator iter;
+		for (iter = m_ClientList->begin(); iter != m_ClientList->end(); iter++)
+		{
+			if ((*iter)->GetClientId() == client->GetClientId())
+			{
+				m_ClientList->erase(iter);
+				found = TRUE;
+				break;
+			}
+		}
+	}
+	return found;
+}
+
+BOOL CServerManager::RemoveConnection(CConnection* conn)
+{
+	BOOL found = FALSE;
+
+	if (m_ConnectionList->size() != 0)
+	{
+		ConnectionList::iterator iter;
+		for (iter = m_ConnectionList->begin(); iter != m_ConnectionList->end(); iter++)
+		{
+			if ((*iter)->GetConnectionId() == conn->GetConnectionId())
+			{
+				m_ConnectionList->erase(iter);
+				found = TRUE;
+				break;
+			}
+		}
+	}
+	return found;
+}
+
+void CServerManager::DoShutdown()
+{
+	// for each connection
+	// stop processing on that connection
+	// disconnect that connection
+	if (m_ConnectionList->size() != 0)
+	{
+		ConnectionList::iterator pConn;
+		for (pConn = m_ConnectionList->begin(); pConn != m_ConnectionList->end(); pConn++)
+		{
+			(*pConn)->ExitProcessing();
+			(*pConn)->DoDisconnect();
+			delete (*pConn);
+		}
+	}
+}
+void CServerManager::RegisterAllComms()
+{
+	TCDEBUGLOGS("CServerManager::RegisterAllComms\n");
+
+	m_CommList->clear();
+	if (m_ExeLocation && (m_ExeLocation[0] != '\0'))
+	{
+		char* searchPath = new char[MAX_EXEPATHNAME];
+		char* loadPath = new char[MAX_EXEPATHNAME];
+		strncpy(searchPath, m_ExeLocation, MAX_EXEPATHNAME);
+		sprintf(searchPath, "%s%c*", searchPath, PATH_DELIMITER);
+
+		TCDEBUGLOGA1("CServerManager::RegisterAllComms searchPath=%s\n", searchPath);
+		
+		WIN32_FIND_DATA fileData;
+
+		HANDLE sh = ::FindFirstFile(searchPath, &fileData);
+		if (sh != INVALID_HANDLE_VALUE)
+		{
+			BOOL done = FALSE;
+			while (!done)
+			{
+				TCDEBUGLOGA1("CServerManager::RegisterAllComms file=%s\n", fileData.cFileName);
+				if (strncmp(fileData.cFileName, COMMDLL_BASENAME, strlen(COMMDLL_BASENAME)) == 0)
+				{
+					sprintf(loadPath, "%s%c%s", m_ExeLocation, PATH_DELIMITER, fileData.cFileName);
+					TCDEBUGLOGA1("CServerManager::RegisterAllComms loadPath=%s\n", loadPath);
+
+					HINSTANCE hLib = ::LoadLibrary(loadPath);
+					TCDEBUGLOGA1("CServerManager::RegisterAllComms hLib=%x\n", hLib);
+
+					if (hLib)
+					{
+						TCDEBUGLOGS("CServerManager::RegisterAllComms - library loaded\n");
+
+						COMMREGISTER lpFn = (COMMREGISTER)::GetProcAddress(hLib, COMMREGISTER_FNNAME);
+						TCDEBUGLOGA1("CServerManager::RegisterAllComms lpFn=%x\n", lpFn);
+
+						if (lpFn)
+						{
+							TCDEBUGLOGS("CServerManager::RegisterAllComms - function found\n");
+							const char* pType = lpFn();
+							if (pType)
+							{
+								TCDEBUGLOGA1("CServerManager::RegisterAllComms pType=%s\n", pType);
+								CCommRegistryItem* pComm = new CCommRegistryItem();
+								strcpy(pComm->m_CommLibrary, loadPath);
+								strcpy(pComm->m_CommType, pType);
+								m_CommList->push_back(pComm);
+							}
+						}
+						::FreeLibrary(hLib);
+					}
+				}
+				BOOL fNext = ::FindNextFile(sh, &fileData);
+				if (fNext == FALSE)
+					done = TRUE;
+			}
+			::FindClose(sh);
+		}
+		delete[] searchPath;
+		delete[] loadPath;
+	}
+	TCDEBUGLOGS("CServerManager::RegisterAllComms\n");
+}
+
+void CServerManager::RegisterAllProtocols()
+{
+	TCDEBUGLOGS("CServerManager::RegisterAllProtocols\n");
+
+	m_ProtocolList->clear();
+	if (m_ExeLocation && (m_ExeLocation[0] != '\0'))
+	{
+		char* searchPath = new char[MAX_EXEPATHNAME];
+		char* loadPath = new char[MAX_EXEPATHNAME];
+		strncpy(searchPath, m_ExeLocation, MAX_EXEPATHNAME);
+		sprintf(searchPath, "%s%c*", searchPath, PATH_DELIMITER);
+
+		TCDEBUGLOGA1("CServerManager::RegisterAllProtocols searchPath=%s\n", searchPath);
+		
+		WIN32_FIND_DATA fileData;
+
+		HANDLE sh = ::FindFirstFile(searchPath, &fileData);
+		BOOL done = FALSE;
+
+		if (sh != INVALID_HANDLE_VALUE)
+		{
+			BOOL done = FALSE;
+			while (!done)
+			{
+				TCDEBUGLOGA1("CServerManager::RegisterAllProtocols file=%s\n", fileData.cFileName);
+				if (strncmp(fileData.cFileName, PROTOCOLDLL_BASENAME, strlen(PROTOCOLDLL_BASENAME)) == 0)
+				{
+					sprintf(loadPath, "%s%c%s", m_ExeLocation, PATH_DELIMITER, fileData.cFileName);
+					TCDEBUGLOGA1("CServerManager::RegisterAllProtocols loadPath=%s\n", loadPath);
+
+					HINSTANCE hLib = ::LoadLibrary(loadPath);
+					TCDEBUGLOGA1("CServerManager::RegisterAllProtocols hLib=%x\n", hLib);
+
+					if (hLib)
+					{
+						TCDEBUGLOGS("CServerManager::RegisterAllProtocols - library loaded\n");
+
+						PROTOCOLREGISTER lpFn = (PROTOCOLREGISTER)::GetProcAddress(hLib, PROTOCOLREGISTER_FNNAME);
+						TCDEBUGLOGA1("CServerManager::RegisterAllProtocols lpFn=%x\n", lpFn);
+
+						if (lpFn)
+						{
+							TCDEBUGLOGS("CServerManager::RegisterAllProtocols - function found\n");
+							const char* pType = lpFn();
+							if (pType)
+							{
+								TCDEBUGLOGA1("CServerManager::RegisterAllProtocols pType=%s\n", pType);
+								CProtocolRegistryItem* pProt = new CProtocolRegistryItem();
+								strcpy(pProt->m_ProtocolLibrary, loadPath);
+								strcpy(pProt->m_ProtocolType, pType);
+								m_ProtocolList->push_back(pProt);
+							}
+						}
+						::FreeLibrary(hLib);
+					}
+				}
+				BOOL fNext = ::FindNextFile(sh, &fileData);
+				if (fNext == FALSE)
+					done = TRUE;
+			}
+			::FindClose(sh);
+		}
+		delete[] searchPath;
+		delete[] loadPath;
+	}
+	TCDEBUGLOGS("CServerManager::RegisterAllProtocols\n");
+}
+
+void CServerManager::UnRegisterAllComms()
+{
+}
+
+void CServerManager::UnRegisterAllProtocols()
+{
+}
+
+const char* CServerManager::FindProtocolPath(char* protocolType)
+{
+	char* path = NULL;
+
+	TCDEBUGLOGS("CServerManager::FindProtocolPath\n");
+	if (m_ProtocolList->size() != 0)
+	{
+		ProtocolRegistry::iterator iter;
+		for (iter = m_ProtocolList->begin(); iter != m_ProtocolList->end(); iter++)
+		{
+			if (strcmp((*iter)->m_ProtocolType, protocolType) == 0)
+			{
+				path = (*iter)->m_ProtocolLibrary;
+				break;
+			}
+		}
+	}
+
+	TCDEBUGLOGA1("CServerManager::FindProtocolPath path=%s\n", path);
+	return path;
+}
+
+const char* CServerManager::FindCommPath(char* commType)
+{
+	char* path = NULL;
+
+	TCDEBUGLOGS("CServerManager::FindCommPath\n");
+	if (m_CommList->size() != 0)
+	{
+		CommRegistry::iterator iter;
+		for (iter = m_CommList->begin(); iter != m_CommList->end(); iter++)
+		{
+			if (strcmp((*iter)->m_CommType, commType) == 0)
+			{
+				path = (*iter)->m_CommLibrary;
+				break;
+			}
+		}
+	}
+
+	TCDEBUGLOGA1("CServerManager::FindCommPath path=%s\n", path);
+	return path;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/ServerManager.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// ServerManager.h: interface for the CServerManager class.
+//
+// Only one of these exists
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_SERVERMANAGER_H__30A5EF01_35BA_4B83_AA68_91F7DA0249B7__INCLUDED_)
+#define AFX_SERVERMANAGER_H__30A5EF01_35BA_4B83_AA68_91F7DA0249B7__INCLUDED_
+
+#include "ServerClient.h"
+#include "TCErrorConstants.h"
+#include "TCDebugLog.h"
+#include "Connection.h"
+#include "Client.h"
+#include "ProtocolRegistryItem.h"
+#include "CommRegistryItem.h"
+#include <vector>
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+typedef std::vector<CConnection*> ConnectionList;
+typedef std::vector<CClient*> ClientList;
+typedef std::vector<CProtocolRegistryItem*> ProtocolRegistry;
+typedef std::vector<CCommRegistryItem*> CommRegistry;
+
+#define MAX_EXEPATHNAME (2048)
+
+#ifdef _WIN32
+#define PATH_DELIMITER '\\'
+#else
+#error not Windows
+#endif
+
+class CServerManager  
+{
+public:
+	CServerManager();
+	virtual ~CServerManager();
+	CServerManager(const char* exeLocation);
+
+	void CommandThread();
+	CConnection* FindConnection(pConnectData pConData);
+	CConnection* FindConnection(long index);
+	CClient* FindClient(DWORD id);
+	BOOL RemoveClient(CClient* client);		// remove from m_ClientList
+	BOOL RemoveConnection(CConnection* conn);	// remove from m_ConnectionList
+	void DoShutdown();
+private:
+	void RegisterAllProtocols();
+	void RegisterAllComms();
+	void UnRegisterAllProtocols();
+	void UnRegisterAllComms();
+	const char* FindProtocolPath(char* protocolType);
+	const char* FindCommPath(char* commType);
+
+public:
+	CServerCommand* m_Server;			// client/server commands/responses
+	TCDebugLog* m_DebugLog;
+	ConnectionList* m_ConnectionList;	// all connections
+	ClientList* m_ClientList;			// all clients
+	DWORD m_NextClientId;				// next client ID
+	DWORD m_NextConnectionId;			// next connection ID
+	char m_Version[MAX_VERSION_STRING]; // our version string
+	ProtocolRegistry* m_ProtocolList;	// protocols (e.g., OST, etc)
+	CommRegistry* m_CommList;			// comm connections (e.g., TCP, etc)
+	char* m_ExeLocation;				// current location of TCFServer
+};
+
+#endif // !defined(AFX_SERVERMANAGER_H__30A5EF01_35BA_4B83_AA68_91F7DA0249B7__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/StdAfx.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.cpp : source file that includes just the standard includes
+//	TCFServer.pch will be the pre-compiled header
+//	stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/StdAfx.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__93DE6A0B_4CE2_49DE_915F_A981F08BBB8A__INCLUDED_)
+#define AFX_STDAFX_H__93DE6A0B_4CE2_49DE_915F_A981F08BBB8A__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+// Insert your headers here
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+
+#define TCF_SERVER
+
+#include <stdlib.h>
+#include <windows.h>
+#include <winsock2.h>
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__93DE6A0B_4CE2_49DE_915F_A981F08BBB8A__INCLUDED_)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/TCFServer.cpp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,108 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// TCFServer.cpp : Defines the entry point for the console application.
+//
+
+#include "stdafx.h"
+#include "ServerClient.h"
+#include "ServerManager.h"
+#include <vector>
+#include <sys/stat.h>
+
+CServerManager* gManager;
+char gServerLocation[2048]={0};
+
+#ifdef _DEBUG
+BOOL gDoLogging=FALSE;
+char TCDebugMsg[1000];
+#define TCDEBUGOPEN() gManager->m_DebugLog->WaitForAccess();
+#define TCDEBUGLOGS(s) sprintf(TCDebugMsg,"%s", s); gManager->m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGLOGA1(s, a1) sprintf(TCDebugMsg, s, a1); gManager->m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGLOGA2(s, a1, a2) sprintf(TCDebugMsg, s, a1, a2); gManager->m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGLOGA3(s, a1, a2, a3) sprintf(TCDebugMsg, s, a1, a2, a3); gManager->m_DebugLog->log(TCDebugMsg);
+#define TCDEBUGCLOSE() gManager->m_DebugLog->ReleaseAccess();
+#else
+#define TCDEBUGOPEN()
+#define TCDEBUGLOGS(s)
+#define TCDEBUGLOGA1(s, a1)
+#define TCDEBUGLOGA2(s, a1, a2)
+#define TCDEBUGLOGA3(s, a1, a2, a3)
+#define TCDEBUGCLOSE()
+#endif
+static void GetServerLocation(char* cl);
+#ifdef _DEBUG
+static void LogTime(FILE* f);
+#endif
+int main(int argc, char* argv[])
+{
+#ifdef _DEBUG
+	struct _stat buf;
+	char* dirname = "c:\\tcf";
+	int result = _stat(dirname, &buf);
+	if (result == 0)
+	{
+		gDoLogging = TRUE;
+	}
+	else
+	{
+		gDoLogging = FALSE;
+	}
+#endif
+
+
+	if (argc == 2) // for running from the debugger
+	{
+		GetServerLocation(argv[1]);
+	}
+	else
+	{
+		GetServerLocation(argv[0]);
+	}
+#ifdef _DEBUG
+	if (gDoLogging)
+	{
+		FILE* f = fopen("c:\\tcf\\TCFServer_Main.txt", "at");
+		LogTime(f);
+		fprintf(f,"ExeLocation=%s\n", gServerLocation);
+		fclose(f);
+	}
+#endif
+	gManager = new CServerManager(gServerLocation);
+	gManager->CommandThread();
+	delete gManager;
+	return 0;
+}
+#ifdef _DEBUG
+static void LogTime(FILE* f)
+{
+	SYSTEMTIME sTime;
+	GetLocalTime(&sTime);
+	if (f)
+		fprintf(f, "%02.2d%02.2d-%02.2d:%02.2d:%02.2d.%03.3d: ", sTime.wDay, sTime.wMonth, sTime.wHour, sTime.wMinute, sTime.wSecond, sTime.wMilliseconds);
+}
+#endif
+#ifdef _WIN32
+void GetServerLocation(char* cl)
+{
+	char dir[_MAX_DIR];
+	char drive[_MAX_DRIVE];
+	_splitpath(cl, drive, dir, NULL, NULL);
+	sprintf(gServerLocation, "%s%s", drive, dir);
+}
+#else
+#error not Windows
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/TCFServer.dep	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,266 @@
+# Microsoft Developer Studio Generated Dependency File, included by TCFServer.mak
+
+.\Client.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\Connection.h"\
+	".\MessageFile.h"\
+	".\ProtocolRegistryItem.h"\
+	".\Registry.h"\
+	".\ServerManager.h"\
+	
+
+.\CommRegistryItem.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\MessageFile.h"\
+	".\Registry.h"\
+	
+
+.\Connection.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\Connection.h"\
+	".\MessageFile.h"\
+	".\ProtocolRegistryItem.h"\
+	".\Registry.h"\
+	".\ServerManager.h"\
+	
+
+.\ConnectionImpl.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\Connection.h"\
+	".\ConnectionImpl.h"\
+	".\MessageFile.h"\
+	".\ProtocolRegistryItem.h"\
+	".\Registry.h"\
+	".\RegistryImpl.h"\
+	".\ServerManager.h"\
+	
+
+..\Common\Source\ErrorMonitorData.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\Connection.h"\
+	".\MessageFile.h"\
+	".\ProtocolRegistryItem.h"\
+	".\Registry.h"\
+	".\ServerManager.h"\
+	
+
+..\Common\Source\InputStream.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\Connection.h"\
+	".\MessageFile.h"\
+	".\ProtocolRegistryItem.h"\
+	".\Registry.h"\
+	".\ServerManager.h"\
+	
+
+.\MessageFile.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\Connection.h"\
+	".\MessageFile.h"\
+	".\ProtocolRegistryItem.h"\
+	".\Registry.h"\
+	".\ServerManager.h"\
+	
+
+..\Common\Source\mutex.cpp : \
+	"..\Common\Headers\mutex.h"\
+	
+
+.\ProtocolRegistryItem.cpp : \
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	".\BaseProtocol.h"\
+	".\ProtocolRegistryItem.h"\
+	
+
+.\Registry.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\Connection.h"\
+	".\MessageFile.h"\
+	".\ProtocolRegistryItem.h"\
+	".\Registry.h"\
+	".\ServerManager.h"\
+	
+
+.\RegistryImpl.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\Client.h"\
+	".\MessageFile.h"\
+	".\Registry.h"\
+	".\RegistryImpl.h"\
+	
+
+..\Common\Source\ServerClient.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\Connection.h"\
+	".\MessageFile.h"\
+	".\ProtocolRegistryItem.h"\
+	".\Registry.h"\
+	".\ServerManager.h"\
+	
+
+.\ServerManager.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\Connection.h"\
+	".\ConnectionImpl.h"\
+	".\MessageFile.h"\
+	".\ProtocolRegistryItem.h"\
+	".\Registry.h"\
+	".\resource.h"\
+	".\ServerManager.h"\
+	
+
+..\Common\Source\shareddata.cpp : \
+	"..\Common\Headers\shareddata.h"\
+	
+
+.\StdAfx.cpp : \
+	".\StdAfx.h"\
+	
+
+..\Common\Source\TCDebugLog.cpp : \
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	
+
+.\TCFServer.cpp : \
+	"..\Common\Headers\ErrorMonitorData.h"\
+	"..\Common\Headers\InputStream.h"\
+	"..\Common\Headers\mutex.h"\
+	"..\Common\Headers\ServerClient.h"\
+	"..\Common\Headers\shareddata.h"\
+	"..\Common\Headers\TCConstants.h"\
+	"..\Common\Headers\TCDebugLog.h"\
+	"..\Common\Headers\TCErrorConstants.h"\
+	".\BaseCom.h"\
+	".\BaseProtocol.h"\
+	".\Client.h"\
+	".\CommRegistryItem.h"\
+	".\Connection.h"\
+	".\MessageFile.h"\
+	".\ProtocolRegistryItem.h"\
+	".\Registry.h"\
+	".\ServerManager.h"\
+	
+
+.\resource.rc : \
+	".\resource.h"\
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/TCFServer.dsp	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,269 @@
+# Microsoft Developer Studio Project File - Name="TCFServer" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=TCFServer - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFServer.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFServer.mak" CFG="TCFServer - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFServer - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "TCFServer - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /subsystem:console /machine:I386
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy binary
+PostBuild_Cmds=copybinaries Release
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy binary
+PostBuild_Cmds=copybinaries Debug
+# End Special Build Tool
+
+!ENDIF 
+
+# Begin Target
+
+# Name "TCFServer - Win32 Release"
+# Name "TCFServer - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Client.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\CommRegistryItem.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Connection.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\ConnectionImpl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\ErrorMonitorData.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\InputStream.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\MessageFile.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\mutex.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\ProtocolRegistryItem.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Registry.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\RegistryImpl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\ServerClient.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\ServerManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\shareddata.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Source\TCDebugLog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TCFServer.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\BaseCom.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\BaseProtocol.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Client.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\CommRegistryItem.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Connection.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ConnectionImpl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\ErrorMonitorData.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\InputStream.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\MessageFile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ProtocolRegistryItem.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Registry.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\RegistryImpl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\ServerClient.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ServerManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\shareddata.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\TCConstants.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\TCDebugLog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Common\Headers\TCErrorConstants.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\resource.rc
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\ReadMe.txt
+# End Source File
+# End Target
+# End Project
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/TCFServer.mak	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,618 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on TCFServer.dsp
+!IF "$(CFG)" == ""
+CFG=TCFServer - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to TCFServer - Win32 Debug.
+!ENDIF 
+
+!IF "$(CFG)" != "TCFServer - Win32 Release" && "$(CFG)" != "TCFServer - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "TCFServer.mak" CFG="TCFServer - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "TCFServer - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "TCFServer - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFServer.exe"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\Client.obj"
+	-@erase "$(INTDIR)\CommRegistryItem.obj"
+	-@erase "$(INTDIR)\Connection.obj"
+	-@erase "$(INTDIR)\ConnectionImpl.obj"
+	-@erase "$(INTDIR)\ErrorMonitorData.obj"
+	-@erase "$(INTDIR)\InputStream.obj"
+	-@erase "$(INTDIR)\MessageFile.obj"
+	-@erase "$(INTDIR)\mutex.obj"
+	-@erase "$(INTDIR)\ProtocolRegistryItem.obj"
+	-@erase "$(INTDIR)\Registry.obj"
+	-@erase "$(INTDIR)\RegistryImpl.obj"
+	-@erase "$(INTDIR)\resource.res"
+	-@erase "$(INTDIR)\ServerClient.obj"
+	-@erase "$(INTDIR)\ServerManager.obj"
+	-@erase "$(INTDIR)\shareddata.obj"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\TCDebugLog.obj"
+	-@erase "$(INTDIR)\TCFServer.obj"
+	-@erase "$(INTDIR)\TCFServer.pch"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(OUTDIR)\TCFServer.exe"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\TCFServer.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\resource.res" /d "NDEBUG" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFServer.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\TCFServer.pdb" /machine:I386 /out:"$(OUTDIR)\TCFServer.exe" 
+LINK32_OBJS= \
+	"$(INTDIR)\Client.obj" \
+	"$(INTDIR)\CommRegistryItem.obj" \
+	"$(INTDIR)\Connection.obj" \
+	"$(INTDIR)\ConnectionImpl.obj" \
+	"$(INTDIR)\ErrorMonitorData.obj" \
+	"$(INTDIR)\InputStream.obj" \
+	"$(INTDIR)\MessageFile.obj" \
+	"$(INTDIR)\mutex.obj" \
+	"$(INTDIR)\ProtocolRegistryItem.obj" \
+	"$(INTDIR)\Registry.obj" \
+	"$(INTDIR)\RegistryImpl.obj" \
+	"$(INTDIR)\ServerClient.obj" \
+	"$(INTDIR)\ServerManager.obj" \
+	"$(INTDIR)\shareddata.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCDebugLog.obj" \
+	"$(INTDIR)\TCFServer.obj" \
+	"$(INTDIR)\resource.res"
+
+"$(OUTDIR)\TCFServer.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy binary
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFServer.exe"
+   copybinaries Release
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\TCFServer.exe" "$(OUTDIR)\TCFServer.bsc"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\Client.obj"
+	-@erase "$(INTDIR)\Client.sbr"
+	-@erase "$(INTDIR)\CommRegistryItem.obj"
+	-@erase "$(INTDIR)\CommRegistryItem.sbr"
+	-@erase "$(INTDIR)\Connection.obj"
+	-@erase "$(INTDIR)\Connection.sbr"
+	-@erase "$(INTDIR)\ConnectionImpl.obj"
+	-@erase "$(INTDIR)\ConnectionImpl.sbr"
+	-@erase "$(INTDIR)\ErrorMonitorData.obj"
+	-@erase "$(INTDIR)\ErrorMonitorData.sbr"
+	-@erase "$(INTDIR)\InputStream.obj"
+	-@erase "$(INTDIR)\InputStream.sbr"
+	-@erase "$(INTDIR)\MessageFile.obj"
+	-@erase "$(INTDIR)\MessageFile.sbr"
+	-@erase "$(INTDIR)\mutex.obj"
+	-@erase "$(INTDIR)\mutex.sbr"
+	-@erase "$(INTDIR)\ProtocolRegistryItem.obj"
+	-@erase "$(INTDIR)\ProtocolRegistryItem.sbr"
+	-@erase "$(INTDIR)\Registry.obj"
+	-@erase "$(INTDIR)\Registry.sbr"
+	-@erase "$(INTDIR)\RegistryImpl.obj"
+	-@erase "$(INTDIR)\RegistryImpl.sbr"
+	-@erase "$(INTDIR)\resource.res"
+	-@erase "$(INTDIR)\ServerClient.obj"
+	-@erase "$(INTDIR)\ServerClient.sbr"
+	-@erase "$(INTDIR)\ServerManager.obj"
+	-@erase "$(INTDIR)\ServerManager.sbr"
+	-@erase "$(INTDIR)\shareddata.obj"
+	-@erase "$(INTDIR)\shareddata.sbr"
+	-@erase "$(INTDIR)\StdAfx.obj"
+	-@erase "$(INTDIR)\StdAfx.sbr"
+	-@erase "$(INTDIR)\TCDebugLog.obj"
+	-@erase "$(INTDIR)\TCDebugLog.sbr"
+	-@erase "$(INTDIR)\TCFServer.obj"
+	-@erase "$(INTDIR)\TCFServer.pch"
+	-@erase "$(INTDIR)\TCFServer.sbr"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(INTDIR)\vc60.pdb"
+	-@erase "$(OUTDIR)\TCFServer.bsc"
+	-@erase "$(OUTDIR)\TCFServer.exe"
+	-@erase "$(OUTDIR)\TCFServer.ilk"
+	-@erase "$(OUTDIR)\TCFServer.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFServer.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\resource.res" /d "_DEBUG" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\TCFServer.bsc" 
+BSC32_SBRS= \
+	"$(INTDIR)\Client.sbr" \
+	"$(INTDIR)\CommRegistryItem.sbr" \
+	"$(INTDIR)\Connection.sbr" \
+	"$(INTDIR)\ConnectionImpl.sbr" \
+	"$(INTDIR)\ErrorMonitorData.sbr" \
+	"$(INTDIR)\InputStream.sbr" \
+	"$(INTDIR)\MessageFile.sbr" \
+	"$(INTDIR)\mutex.sbr" \
+	"$(INTDIR)\ProtocolRegistryItem.sbr" \
+	"$(INTDIR)\Registry.sbr" \
+	"$(INTDIR)\RegistryImpl.sbr" \
+	"$(INTDIR)\ServerClient.sbr" \
+	"$(INTDIR)\ServerManager.sbr" \
+	"$(INTDIR)\shareddata.sbr" \
+	"$(INTDIR)\StdAfx.sbr" \
+	"$(INTDIR)\TCDebugLog.sbr" \
+	"$(INTDIR)\TCFServer.sbr"
+
+"$(OUTDIR)\TCFServer.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
+    $(BSC32) @<<
+  $(BSC32_FLAGS) $(BSC32_SBRS)
+<<
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\TCFServer.pdb" /debug /machine:I386 /out:"$(OUTDIR)\TCFServer.exe" /pdbtype:sept 
+LINK32_OBJS= \
+	"$(INTDIR)\Client.obj" \
+	"$(INTDIR)\CommRegistryItem.obj" \
+	"$(INTDIR)\Connection.obj" \
+	"$(INTDIR)\ConnectionImpl.obj" \
+	"$(INTDIR)\ErrorMonitorData.obj" \
+	"$(INTDIR)\InputStream.obj" \
+	"$(INTDIR)\MessageFile.obj" \
+	"$(INTDIR)\mutex.obj" \
+	"$(INTDIR)\ProtocolRegistryItem.obj" \
+	"$(INTDIR)\Registry.obj" \
+	"$(INTDIR)\RegistryImpl.obj" \
+	"$(INTDIR)\ServerClient.obj" \
+	"$(INTDIR)\ServerManager.obj" \
+	"$(INTDIR)\shareddata.obj" \
+	"$(INTDIR)\StdAfx.obj" \
+	"$(INTDIR)\TCDebugLog.obj" \
+	"$(INTDIR)\TCFServer.obj" \
+	"$(INTDIR)\resource.res"
+
+"$(OUTDIR)\TCFServer.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+PostBuild_Desc=copy binary
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\TCFServer.exe" "$(OUTDIR)\TCFServer.bsc"
+   copybinaries Debug
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("TCFServer.dep")
+!INCLUDE "TCFServer.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "TCFServer.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "TCFServer - Win32 Release" || "$(CFG)" == "TCFServer - Win32 Debug"
+SOURCE=.\Client.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\Client.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\Client.obj"	"$(INTDIR)\Client.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ENDIF 
+
+SOURCE=.\CommRegistryItem.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\CommRegistryItem.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\CommRegistryItem.obj"	"$(INTDIR)\CommRegistryItem.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ENDIF 
+
+SOURCE=.\Connection.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\Connection.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\Connection.obj"	"$(INTDIR)\Connection.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ENDIF 
+
+SOURCE=.\ConnectionImpl.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\ConnectionImpl.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\ConnectionImpl.obj"	"$(INTDIR)\ConnectionImpl.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\ErrorMonitorData.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\ErrorMonitorData.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\ErrorMonitorData.obj"	"$(INTDIR)\ErrorMonitorData.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\InputStream.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\InputStream.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\InputStream.obj"	"$(INTDIR)\InputStream.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF 
+
+SOURCE=.\MessageFile.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\MessageFile.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\MessageFile.obj"	"$(INTDIR)\MessageFile.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\mutex.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\mutex.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\mutex.obj"	"$(INTDIR)\mutex.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF 
+
+SOURCE=.\ProtocolRegistryItem.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\ProtocolRegistryItem.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\ProtocolRegistryItem.obj"	"$(INTDIR)\ProtocolRegistryItem.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ENDIF 
+
+SOURCE=.\Registry.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\Registry.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\Registry.obj"	"$(INTDIR)\Registry.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ENDIF 
+
+SOURCE=.\RegistryImpl.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\RegistryImpl.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\RegistryImpl.obj"	"$(INTDIR)\RegistryImpl.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\ServerClient.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\ServerClient.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\ServerClient.obj"	"$(INTDIR)\ServerClient.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF 
+
+SOURCE=.\ServerManager.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\ServerManager.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\ServerManager.obj"	"$(INTDIR)\ServerManager.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\shareddata.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\shareddata.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\shareddata.obj"	"$(INTDIR)\shareddata.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF 
+
+SOURCE=.\StdAfx.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+CPP_SWITCHES=/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\TCFServer.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\TCFServer.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+CPP_SWITCHES=/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\TCFServer.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
+
+"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\StdAfx.sbr"	"$(INTDIR)\TCFServer.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=..\Common\Source\TCDebugLog.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\TCDebugLog.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\TCDebugLog.obj"	"$(INTDIR)\TCDebugLog.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF 
+
+SOURCE=.\TCFServer.cpp
+
+!IF  "$(CFG)" == "TCFServer - Win32 Release"
+
+
+"$(INTDIR)\TCFServer.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ELSEIF  "$(CFG)" == "TCFServer - Win32 Debug"
+
+
+"$(INTDIR)\TCFServer.obj"	"$(INTDIR)\TCFServer.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TCFServer.pch"
+
+
+!ENDIF 
+
+SOURCE=.\resource.rc
+
+"$(INTDIR)\resource.res" : $(SOURCE) "$(INTDIR)"
+	$(RSC) $(RSC_PROJ) $(SOURCE)
+
+
+
+!ENDIF 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/TCFServer.plg	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,811 @@
+<html>
+<body>
+<pre>
+<h1>Build Log</h1>
+<h3>
+--------------------Configuration: TCFClient - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating command line "rc.exe /l 0x409 /fo"Release/resource.res" /d "NDEBUG" "C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\resource.rc"" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP331.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"Release/TCFClient.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\ClientManager.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\ErrorMonitorData.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\InputStream.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\ServerClient.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\shareddata.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\TCAPIConnectionJni.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\TCFClient.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\TCFCppApi.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP331.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP332.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /Fp"Release/TCFClient.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP332.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP333.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib shlwapi.lib /nologo /dll /incremental:no /pdb:"Release/TCFClient.pdb" /map:"Release/TCFClient.map" /machine:I386 /out:"Release/TCFClient.dll" /implib:"Release/TCFClient.lib" 
+.\Release\ClientManager.obj
+.\Release\ErrorMonitorData.obj
+.\Release\InputStream.obj
+.\Release\mutex.obj
+.\Release\ServerClient.obj
+.\Release\shareddata.obj
+.\Release\StdAfx.obj
+.\Release\TCAPIConnectionJni.obj
+.\Release\TCDebugLog.obj
+.\Release\TCFClient.obj
+.\Release\TCFCppApi.obj
+.\Release\resource.res
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP333.tmp"
+<h3>Output Window</h3>
+Compiling resources...
+Compiling...
+StdAfx.cpp
+Compiling...
+ClientManager.cpp
+ErrorMonitorData.cpp
+InputStream.cpp
+mutex.cpp
+ServerClient.cpp
+shareddata.cpp
+TCAPIConnectionJni.cpp
+TCDebugLog.cpp
+TCFClient.cpp
+TCFCppApi.cpp
+Generating Code...
+Linking...
+   Creating library Release/TCFClient.lib and object Release/TCFClient.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP337.bat" with contents
+[
+@echo off
+copybinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP337.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFClient.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFClient - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating command line "rc.exe /l 0x409 /fo"Debug/resource.res" /d "_DEBUG" "C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\resource.rc"" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP338.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"Debug/" /Fp"Debug/TCFClient.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\ClientManager.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\ErrorMonitorData.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\InputStream.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\ServerClient.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\shareddata.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\TCAPIConnectionJni.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\TCFClient.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\TCFCppApi.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP338.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP339.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I ".\jdk1.5.0_10\include" /I ".\jdk1.5.0_10\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCLIENT_EXPORTS" /FR"Debug/" /Fp"Debug/TCFClient.pch" /Yc"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFClient\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP339.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP33A.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib shlwapi.lib /nologo /dll /incremental:yes /pdb:"Debug/TCFClient.pdb" /map:"Debug/TCFClient.map" /debug /machine:I386 /out:"Debug/TCFClient.dll" /implib:"Debug/TCFClient.lib" /pdbtype:sept 
+.\Debug\ClientManager.obj
+.\Debug\ErrorMonitorData.obj
+.\Debug\InputStream.obj
+.\Debug\mutex.obj
+.\Debug\ServerClient.obj
+.\Debug\shareddata.obj
+.\Debug\StdAfx.obj
+.\Debug\TCAPIConnectionJni.obj
+.\Debug\TCDebugLog.obj
+.\Debug\TCFClient.obj
+.\Debug\TCFCppApi.obj
+.\Debug\resource.res
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP33A.tmp"
+<h3>Output Window</h3>
+Compiling resources...
+Compiling...
+StdAfx.cpp
+Compiling...
+ClientManager.cpp
+ErrorMonitorData.cpp
+InputStream.cpp
+mutex.cpp
+ServerClient.cpp
+shareddata.cpp
+TCAPIConnectionJni.cpp
+TCDebugLog.cpp
+TCFClient.cpp
+TCFCppApi.cpp
+Generating Code...
+Linking...
+   Creating library Debug/TCFClient.lib and object Debug/TCFClient.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP33E.bat" with contents
+[
+@echo off
+copybinaries Debug
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP33E.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFClient.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFCommSerial - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP33F.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"Release/TCFCommSerial.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\BaseCom.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommSerial\RealSerialComm.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommSerial\TCFCommSerial.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP33F.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP340.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"Release/TCFCommSerial.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommSerial\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP340.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP341.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/TCFCommSerial.pdb" /map:"Release/TCFCommSerial.map" /machine:I386 /out:"Release/TCFCommSerial.dll" /implib:"Release/TCFCommSerial.lib" 
+.\Release\BaseCom.obj
+.\Release\mutex.obj
+.\Release\RealSerialComm.obj
+.\Release\StdAfx.obj
+.\Release\TCDebugLog.obj
+.\Release\TCFCommSerial.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP341.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseCom.cpp
+mutex.cpp
+RealSerialComm.cpp
+TCDebugLog.cpp
+TCFCommSerial.cpp
+Generating Code...
+Linking...
+   Creating library Release/TCFCommSerial.lib and object Release/TCFCommSerial.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP345.bat" with contents
+[
+@echo off
+copyBinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP345.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommSerial.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFCommSerial - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP346.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"Debug/TCFCommSerial.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\BaseCom.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommSerial\RealSerialComm.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommSerial\TCFCommSerial.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP346.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP347.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMSERIAL_EXPORTS" /Fp"Debug/TCFCommSerial.pch" /Yc"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommSerial\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP347.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP348.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"Debug/TCFCommSerial.pdb" /map:"Debug/TCFCommSerial.map" /debug /machine:I386 /out:"Debug/TCFCommSerial.dll" /implib:"Debug/TCFCommSerial.lib" /pdbtype:sept 
+.\Debug\BaseCom.obj
+.\Debug\mutex.obj
+.\Debug\RealSerialComm.obj
+.\Debug\StdAfx.obj
+.\Debug\TCDebugLog.obj
+.\Debug\TCFCommSerial.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP348.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseCom.cpp
+mutex.cpp
+RealSerialComm.cpp
+TCDebugLog.cpp
+TCFCommSerial.cpp
+Generating Code...
+Linking...
+   Creating library Debug/TCFCommSerial.lib and object Debug/TCFCommSerial.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP34C.bat" with contents
+[
+@echo off
+copyBinaries Debug
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP34C.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommSerial.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFCommTCP - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP34D.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /Fp"Release/TCFCommTCP.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\BaseCom.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommTCP\TCFCommTCP.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommTCP\TcpComm.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP34D.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP34E.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /Fp"Release/TCFCommTCP.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommTCP\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP34E.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP34F.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /dll /incremental:no /pdb:"Release/TCFCommTCP.pdb" /map:"Release/TCFCommTCP.map" /machine:I386 /out:"Release/TCFCommTCP.dll" /implib:"Release/TCFCommTCP.lib" 
+.\Release\BaseCom.obj
+.\Release\mutex.obj
+.\Release\StdAfx.obj
+.\Release\TCDebugLog.obj
+.\Release\TCFCommTCP.obj
+.\Release\TcpComm.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP34F.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseCom.cpp
+mutex.cpp
+TCDebugLog.cpp
+TCFCommTCP.cpp
+TcpComm.cpp
+Generating Code...
+Linking...
+   Creating library Release/TCFCommTCP.lib and object Release/TCFCommTCP.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP353.bat" with contents
+[
+@echo off
+copybinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP353.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommTCP.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFCommTCP - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP354.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /FR"Debug/" /Fp"Debug/TCFCommTCP.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\BaseCom.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommTCP\TCFCommTCP.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommTCP\TcpComm.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP354.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP355.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /I "..\Common\Headers" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMTCP_EXPORTS" /FR"Debug/" /Fp"Debug/TCFCommTCP.pch" /Yc"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommTCP\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP355.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP356.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /dll /incremental:yes /pdb:"Debug/TCFCommTCP.pdb" /map:"Debug/TCFCommTCP.map" /debug /machine:I386 /out:"Debug/TCFCommTCP.dll" /implib:"Debug/TCFCommTCP.lib" /pdbtype:sept 
+.\Debug\BaseCom.obj
+.\Debug\mutex.obj
+.\Debug\StdAfx.obj
+.\Debug\TCDebugLog.obj
+.\Debug\TCFCommTCP.obj
+.\Debug\TcpComm.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP356.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseCom.cpp
+mutex.cpp
+TCDebugLog.cpp
+TCFCommTCP.cpp
+TcpComm.cpp
+Generating Code...
+Linking...
+   Creating library Debug/TCFCommTCP.lib and object Debug/TCFCommTCP.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP35A.bat" with contents
+[
+@echo off
+copybinaries Debug
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP35A.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommTCP.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFCommVirtualSerial - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP35B.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"Release/TCFCommVirtualSerial.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\BaseCom.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommSerial\RealSerialComm.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommVirtualSerial\TCFCommVirtualSerial.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommVirtualSerial\VirtualSerialComm.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP35B.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP35C.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"Release/TCFCommVirtualSerial.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommVirtualSerial\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP35C.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP35D.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/TCFCommVirtualSerial.pdb" /map:"Release/TCFCommVirtualSerial.map" /machine:I386 /out:"Release/TCFCommVirtualSerial.dll" /implib:"Release/TCFCommVirtualSerial.lib" 
+.\Release\BaseCom.obj
+.\Release\mutex.obj
+.\Release\RealSerialComm.obj
+.\Release\StdAfx.obj
+.\Release\TCDebugLog.obj
+.\Release\TCFCommVirtualSerial.obj
+.\Release\VirtualSerialComm.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP35D.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseCom.cpp
+mutex.cpp
+RealSerialComm.cpp
+TCDebugLog.cpp
+TCFCommVirtualSerial.cpp
+VirtualSerialComm.cpp
+Generating Code...
+Linking...
+   Creating library Release/TCFCommVirtualSerial.lib and object Release/TCFCommVirtualSerial.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP361.bat" with contents
+[
+@echo off
+copyBinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP361.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommVirtualSerial.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFCommVirtualSerial - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP362.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"Debug/TCFCommVirtualSerial.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\BaseCom.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommSerial\RealSerialComm.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommVirtualSerial\TCFCommVirtualSerial.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommVirtualSerial\VirtualSerialComm.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP362.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP363.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFCommSerial" /I "..\Common\Headers" /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFCOMMVIRTUALSERIAL_EXPORTS" /Fp"Debug/TCFCommVirtualSerial.pch" /Yc"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFCommVirtualSerial\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP363.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP364.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"Debug/TCFCommVirtualSerial.pdb" /map:"Debug/TCFCommVirtualSerial.map" /debug /machine:I386 /out:"Debug/TCFCommVirtualSerial.dll" /implib:"Debug/TCFCommVirtualSerial.lib" /pdbtype:sept 
+.\Debug\BaseCom.obj
+.\Debug\mutex.obj
+.\Debug\RealSerialComm.obj
+.\Debug\StdAfx.obj
+.\Debug\TCDebugLog.obj
+.\Debug\TCFCommVirtualSerial.obj
+.\Debug\VirtualSerialComm.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP364.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseCom.cpp
+mutex.cpp
+RealSerialComm.cpp
+TCDebugLog.cpp
+TCFCommVirtualSerial.cpp
+VirtualSerialComm.cpp
+Generating Code...
+Linking...
+   Creating library Debug/TCFCommVirtualSerial.lib and object Debug/TCFCommVirtualSerial.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP368.bat" with contents
+[
+@echo off
+copyBinaries Debug
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP368.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFCommVirtualSerial.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFProtOST - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP369.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Fp"Release/TCFProtOST.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\BaseProtocol.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFProtOST\OSTProtocol.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFProtOST\TCFProtOST.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP369.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP36A.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\TCFServer" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Fp"Release/TCFProtOST.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFProtOST\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP36A.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP36B.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/TCFProtOST.pdb" /map:"Release/TCFProtOST.map" /machine:I386 /out:"Release/TCFProtOST.dll" /implib:"Release/TCFProtOST.lib" 
+.\Release\BaseProtocol.obj
+.\Release\OSTProtocol.obj
+.\Release\StdAfx.obj
+.\Release\TCFProtOST.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP36B.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseProtocol.cpp
+OSTProtocol.cpp
+TCFProtOST.cpp
+Generating Code...
+Linking...
+   Creating library Release/TCFProtOST.lib and object Release/TCFProtOST.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP36F.bat" with contents
+[
+@echo off
+copyBinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP36F.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFProtOST.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFProtOST - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP370.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Fp"Debug/TCFProtOST.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\BaseProtocol.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFProtOST\OSTProtocol.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFProtOST\TCFProtOST.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP370.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP371.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\TCFServer" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TCFPROTOST_EXPORTS" /Fp"Debug/TCFProtOST.pch" /Yc"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFProtOST\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP371.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP372.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"Debug/TCFProtOST.pdb" /map:"Debug/TCFProtOST.map" /debug /machine:I386 /out:"Debug/TCFProtOST.dll" /implib:"Debug/TCFProtOST.lib" /pdbtype:sept 
+.\Debug\BaseProtocol.obj
+.\Debug\OSTProtocol.obj
+.\Debug\StdAfx.obj
+.\Debug\TCFProtOST.obj
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP372.tmp"
+<h3>Output Window</h3>
+Compiling...
+StdAfx.cpp
+Compiling...
+BaseProtocol.cpp
+OSTProtocol.cpp
+TCFProtOST.cpp
+Generating Code...
+Linking...
+   Creating library Debug/TCFProtOST.lib and object Debug/TCFProtOST.exp
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP377.bat" with contents
+[
+@echo off
+copyBinaries Debug
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP377.bat"
+copy libs
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+        1 file(s) copied.
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFProtOST.dll - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFServer - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating command line "rc.exe /l 0x409 /fo"Release/resource.res" /d "NDEBUG" "C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\resource.rc"" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP378.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Release/TCFServer.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\Client.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\CommRegistryItem.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\Connection.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\ConnectionImpl.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\ErrorMonitorData.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\InputStream.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\MessageFile.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\ProtocolRegistryItem.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\Registry.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\RegistryImpl.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\ServerClient.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\ServerManager.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\shareddata.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\TCFServer.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP378.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP379.tmp" with contents
+[
+/nologo /Zp2 /MT /W3 /GX /O2 /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Release/TCFServer.pch" /Yc"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP379.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP37A.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /subsystem:console /incremental:no /pdb:"Release/TCFServer.pdb" /machine:I386 /out:"Release/TCFServer.exe" 
+.\Release\Client.obj
+.\Release\CommRegistryItem.obj
+.\Release\Connection.obj
+.\Release\ConnectionImpl.obj
+.\Release\ErrorMonitorData.obj
+.\Release\InputStream.obj
+.\Release\MessageFile.obj
+.\Release\mutex.obj
+.\Release\ProtocolRegistryItem.obj
+.\Release\Registry.obj
+.\Release\RegistryImpl.obj
+.\Release\ServerClient.obj
+.\Release\ServerManager.obj
+.\Release\shareddata.obj
+.\Release\StdAfx.obj
+.\Release\TCDebugLog.obj
+.\Release\TCFServer.obj
+.\Release\resource.res
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP37A.tmp"
+<h3>Output Window</h3>
+Compiling resources...
+Compiling...
+StdAfx.cpp
+Compiling...
+Client.cpp
+CommRegistryItem.cpp
+Connection.cpp
+ConnectionImpl.cpp
+ErrorMonitorData.cpp
+InputStream.cpp
+MessageFile.cpp
+mutex.cpp
+ProtocolRegistryItem.cpp
+Registry.cpp
+RegistryImpl.cpp
+ServerClient.cpp
+ServerManager.cpp
+shareddata.cpp
+TCDebugLog.cpp
+TCFServer.cpp
+Generating Code...
+Linking...
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP37C.bat" with contents
+[
+@echo off
+copybinaries Release
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP37C.bat"
+copy binary
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFServer.exe - 0 error(s), 0 warning(s)
+<h3>
+--------------------Configuration: TCFServer - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating command line "rc.exe /l 0x409 /fo"Debug/resource.res" /d "_DEBUG" "C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\resource.rc"" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP37D.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"Debug/" /Fp"Debug/TCFServer.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\Client.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\CommRegistryItem.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\Connection.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\ConnectionImpl.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\ErrorMonitorData.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\InputStream.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\MessageFile.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\mutex.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\ProtocolRegistryItem.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\Registry.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\RegistryImpl.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\ServerClient.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\ServerManager.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\shareddata.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\Common\Source\TCDebugLog.cpp"
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\TCFServer.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP37D.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP37E.tmp" with contents
+[
+/nologo /Zp2 /MTd /W3 /Gm /GX /ZI /Od /I "..\Common\Headers" /I "..\Common\Source" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"Debug/" /Fp"Debug/TCFServer.pch" /Yc"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\dev2.1hgworkspace\carbidecpp\connectivity\com.nokia.tcf\native\TCFNative\TCFServer\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP37E.tmp" 
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP37F.tmp" with contents
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib shlwapi.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/TCFServer.pdb" /debug /machine:I386 /out:"Debug/TCFServer.exe" /pdbtype:sept 
+.\Debug\Client.obj
+.\Debug\CommRegistryItem.obj
+.\Debug\Connection.obj
+.\Debug\ConnectionImpl.obj
+.\Debug\ErrorMonitorData.obj
+.\Debug\InputStream.obj
+.\Debug\MessageFile.obj
+.\Debug\mutex.obj
+.\Debug\ProtocolRegistryItem.obj
+.\Debug\Registry.obj
+.\Debug\RegistryImpl.obj
+.\Debug\ServerClient.obj
+.\Debug\ServerManager.obj
+.\Debug\shareddata.obj
+.\Debug\StdAfx.obj
+.\Debug\TCDebugLog.obj
+.\Debug\TCFServer.obj
+.\Debug\resource.res
+]
+Creating command line "link.exe @C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP37F.tmp"
+<h3>Output Window</h3>
+Compiling resources...
+Compiling...
+StdAfx.cpp
+Compiling...
+Client.cpp
+CommRegistryItem.cpp
+Connection.cpp
+ConnectionImpl.cpp
+ErrorMonitorData.cpp
+InputStream.cpp
+MessageFile.cpp
+mutex.cpp
+ProtocolRegistryItem.cpp
+Registry.cpp
+RegistryImpl.cpp
+ServerClient.cpp
+ServerManager.cpp
+shareddata.cpp
+TCDebugLog.cpp
+TCFServer.cpp
+Generating Code...
+Linking...
+Creating temporary file "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP381.bat" with contents
+[
+@echo off
+copybinaries Debug
+]
+Creating command line "C:\DOCUME~1\chpeckha\LOCALS~1\Temp\RSP381.bat"
+copy binary
+Copy binaries to ..\..\..\os\win32\x86
+        1 file(s) copied.
+
+
+
+<h3>Results</h3>
+TCFServer.exe - 0 error(s), 0 warning(s)
+</pre>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/copyBinaries.cmd	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,3 @@
+echo off
+echo Copy binaries to ..\..\..\os\win32\x86
+copy /V %1\TCFServer.exe ..\..\..\os\win32\x86
Binary file connectivity/com.nokia.tcf/native/TCFNative/TCFServer/resource.aps has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/resource.h	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by resource.rc
+//
+#define IDS_VERSION                     1
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        102
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/resource.rc	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,120 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 2,0,0,0
+ PRODUCTVERSION 2,0,0,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904b0"
+        BEGIN
+            VALUE "Comments", "\0"
+            VALUE "CompanyName", "Nokia\0"
+            VALUE "FileDescription", "Target Communication Framework Server\0"
+            VALUE "FileVersion", "2, 0, 0, 0\0"
+            VALUE "InternalName", "TCFServer\0"
+            VALUE "LegalCopyright", "Copyright © 2008\0"
+            VALUE "LegalTrademarks", "\0"
+            VALUE "OriginalFilename", "TCFServer.exe\0"
+            VALUE "PrivateBuild", "\0"
+            VALUE "ProductName", "Nokia TCFServer\0"
+            VALUE "ProductVersion", "2, 0, 0, 0\0"
+            VALUE "SpecialBuild", "\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+#endif    // !_MAC
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_VERSION             "2.0.0.0"
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
--- a/connectivity/com.nokia.tcf/src/com/nokia/tcf/api/ITCConnection.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.tcf/src/com/nokia/tcf/api/ITCConnection.java	Sat Apr 25 12:54:10 2009 -0500
@@ -29,14 +29,6 @@
 public interface ITCConnection {
 	
 	/**
-	 * Connection types
-	 */
-	public final int MEDIA_REALTCP = 2;
-	public final int MEDIA_REALSERIAL = 3;
-	public final int MEDIA_VIRTUALSERIAL = 4;
-	public final int MEDIA_USB = 5;
-
-	/**
 	 * Default retry interval and retry timeout (in seconds)
 	 */
 	public final long DEFAULT_COMM_ERROR_RETRY_INTERVAL = 1; // 1 second
@@ -51,7 +43,7 @@
 	 * Return connection type
 	 * @return
 	 */
-	public int getConnectionType();
+	public String getConnectionType();
 	/**
 	 * Get the current retry interval in seconds
 	 * @return
@@ -67,7 +59,7 @@
 	 * @param inConnectionType
 	 * @return IStatus
 	 */
-	public IStatus setConnectionType(int inConnectionType);
+	public IStatus setConnectionType(String inConnectionType);
 	
 	/**
 	 * Set the retry interval after a comm error in seconds. The default is 1 second. 
--- a/connectivity/com.nokia.tcf/src/com/nokia/tcf/impl/TCAPIConnection.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.tcf/src/com/nokia/tcf/impl/TCAPIConnection.java	Sat Apr 25 12:54:10 2009 -0500
@@ -19,34 +19,15 @@
  */
 package com.nokia.tcf.impl;
 
+import com.nokia.tcf.Activator;
+import com.nokia.tcf.api.*;
+
+import org.eclipse.core.runtime.*;
+
 import java.io.File;
 import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.text.MessageFormat;
 
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.osgi.service.datalocation.Location;
-
-import com.nokia.tcf.api.ITCAPIConnection;
-import com.nokia.tcf.api.ITCConnection;
-import com.nokia.tcf.api.ITCErrorListener;
-import com.nokia.tcf.api.ITCMessage;
-import com.nokia.tcf.api.ITCRealSerialConnection;
-import com.nokia.tcf.api.ITCRealTCPConnection;
-import com.nokia.tcf.api.ITCVirtualSerialConnection;
-import com.nokia.tcf.api.TCFClassFactory;
-import com.nokia.tcf.api.ITCMessageIds;
-import com.nokia.tcf.api.ITCMessageInputStream;
-import com.nokia.tcf.api.ITCMessageOptions;
-import com.nokia.tcf.api.ITCVersion;
-import com.nokia.tcf.Activator;
-import com.nokia.tcf.api.TCErrorConstants;
-
 public class TCAPIConnection implements ITCAPIConnection {
 
 	static {
@@ -70,11 +51,11 @@
 		}
 	}
 	private TCErrorListenerList<ITCErrorListener> errorListenerList;
-	private ITCCookie cookie;		// this client's handle to native
-	private ITCMessageIds messageIds; // this client's message ids
-	private TCMessageInputStream inputStream; // this client's message input stream (not using message file)
+	protected ITCCookie cookie;		// this client's handle to native
+	protected ITCMessageIds messageIds; // this client's message ids
+	protected TCMessageInputStream inputStream; // this client's message input stream (not using message file)
 	protected ITCMessageOptions messageOptions; // this client's message options
-	private TCFMonitorThread monitorThread; // the client's native monitor
+	protected TCFMonitorThread monitorThread; // the client's native monitor
 	public boolean stopTCFMonitorThread;	//  stream monitor start/stop flag
 	protected IStatus statusOK;
 	protected ITCConnection connection; // the client's connection
@@ -132,15 +113,15 @@
 	}
 	protected IStatus checkConnectionType(ITCConnection inConnection) {
 		IStatus status = statusOK;
-		int type = inConnection.getConnectionType();
-		if (type == ITCConnection.MEDIA_VIRTUALSERIAL) {
+		String type = inConnection.getConnectionType();
+		if (type.compareToIgnoreCase("virtualserial") == 0) {
 			ITCVirtualSerialConnection c = (ITCVirtualSerialConnection)inConnection;
 			String p = c.getComPort();
 			if (p == null) {
 				status = new Status(Status.ERROR, Activator.PLUGIN_ID, (int)TCErrorConstants.TCAPI_ERR_MISSING_MEDIA_DATA, 
 						TCErrorConstants.getErrorMessage(TCErrorConstants.TCAPI_ERR_MISSING_MEDIA_DATA), null);
 			}
-		} else if (type == ITCConnection.MEDIA_REALTCP) {
+		} else if (type.compareToIgnoreCase("tcp") == 0) {
 			ITCRealTCPConnection c = (ITCRealTCPConnection)inConnection;
 			String ip = c.getIpAddress();
 			String p = c.getPort();
@@ -148,7 +129,7 @@
 				status = new Status(Status.ERROR, Activator.PLUGIN_ID, (int)TCErrorConstants.TCAPI_ERR_MISSING_MEDIA_DATA, 
 						TCErrorConstants.getErrorMessage(TCErrorConstants.TCAPI_ERR_MISSING_MEDIA_DATA), null);
 			}
-		} else if (type == ITCConnection.MEDIA_REALSERIAL) {
+		} else if (type.compareToIgnoreCase("serial") == 0) {
 			ITCRealSerialConnection c = (ITCRealSerialConnection)inConnection;
 			long err = checkRealSerialSettings(c);
 			if (err != TCErrorConstants.TCAPI_ERR_NONE) {
@@ -339,7 +320,7 @@
 		}
 		return status;
 	}
-	protected IStatus finishConnect(int type, String[] settings, 
+	protected IStatus finishConnect(String type, String[] settings, 
 			ITCConnection inConnection, ITCMessageOptions inMessageOptions, ITCMessageIds inMessageIds) {
 		IStatus status = statusOK;
 		// connect
@@ -467,29 +448,24 @@
 		
 		IStatus status = checkConnectOptions(inConnection, inMessageOptions, inMessageIds);
 		String[] settings = null;
-		int type = 0;
+		String type = null;
 
 		// do connect
 		if (status.isOK()) {
 			settings = null;
 			type = inConnection.getConnectionType();
-			switch(type) {
-			case ITCConnection.MEDIA_REALTCP: {
+			if (type.compareToIgnoreCase("tcp") == 0) {
 				settings = new String[3];
 				ITCRealTCPConnection t = (ITCRealTCPConnection)inConnection;
 				settings[0] = t.getIpAddress();
 				settings[1] = t.getPort();
 				settings[2] = t.getDecodeFormat().toLowerCase();
-				break;
-			}
-			case ITCConnection.MEDIA_VIRTUALSERIAL: {
+			} else if (type.compareToIgnoreCase("virtualserial") == 0) {
 				settings = new String[2];
 				ITCVirtualSerialConnection s = (ITCVirtualSerialConnection)inConnection;
 				settings[0] = s.getComPort();
 				settings[1] = s.getDecodeFormat().toLowerCase();
-				break;
-			}
-			case ITCConnection.MEDIA_REALSERIAL: {
+			} else if (type.compareToIgnoreCase("serial") == 0) {
 				settings = new String[7];
 				ITCRealSerialConnection s = (ITCRealSerialConnection)inConnection;
 				settings[0] = s.getComPort();
@@ -499,20 +475,15 @@
 				settings[4] = s.getStopBits();
 				settings[5] = s.getFlowControl();
 				settings[6] = s.getDecodeFormat().toLowerCase();
-				break;
-			}
-			case ITCConnection.MEDIA_USB: {
+			} else if (type.compareToIgnoreCase("usb") == 0) {
 				settings = new String[1];
-				break;
-			}
-			default:
-				// Add other connection types here - error already checked in checkConnection()
-				break;
+			} else {
+				// Add other connections here
 			}
 		}
 		return finishConnect(type, settings, inConnection, inMessageOptions, inMessageIds);
 	}
-	private void ensureWritableFile(String filePath) throws IOException {
+	protected void ensureWritableFile(String filePath) throws IOException {
 		// ensure file path points to a writable regular file
 		IPath path = new Path(filePath);
 		File file = path.toFile();
@@ -628,32 +599,11 @@
 			connections = new ITCConnection[(int)numberConnections];
 			for (int inIndex = 0; inIndex < numberConnections; inIndex++)
 			{
-				int[] type = new int[1];
+				String[] type = new String[1];
 				ret = nativeGetTypeOfConnection(inIndex, type);
-				switch ((int)type[0]) {
-				case (int)ITCConnection.MEDIA_VIRTUALSERIAL: {
+				if (type[0].compareToIgnoreCase("virtualserial") == 0) {
 					ITCVirtualSerialConnection outConnection = (ITCVirtualSerialConnection)TCFClassFactory.createITCVirtualSerialConnection(null);
-					int[] outType = new int[1];
-					long[] outOptions = new long[3];
-					String[] outSettings = new String[1];
-					ret = nativeGetConnectionSettings(inIndex, outType, outOptions, outSettings);
-					if (ret == TCErrorConstants.TCAPI_ERR_NONE) {
-						outConnection.setConnectionType(outType[0]);
-						outConnection.setRetryInterval(outOptions[0]);
-						outConnection.setRetryTimeout(outOptions[1]);
-						outConnection.setDecodeFormat(convertDecodeFormat(outOptions[2]));
-						outConnection.setComPort(outSettings[0]);
-						
-						connections[inIndex] = outConnection;
-					} else {
-						// error processing from nativeGetConnectionSettings
-						status = new Status(Status.ERROR,Activator.PLUGIN_ID, (int)ret, TCErrorConstants.getErrorMessage(ret), null);
-					}
-					break;
-				}
-				case (int)ITCConnection.MEDIA_REALTCP: {
-					ITCRealTCPConnection outConnection = (ITCRealTCPConnection)TCFClassFactory.createITCRealTCPConnection(null, null);
-					int[] outType = new int[1];
+					String[] outType = new String[1];
 					long[] outOptions = new long[3];
 					String[] outSettings = new String[2];
 					ret = nativeGetConnectionSettings(inIndex, outType, outOptions, outSettings);
@@ -661,66 +611,66 @@
 						outConnection.setConnectionType(outType[0]);
 						outConnection.setRetryInterval(outOptions[0]);
 						outConnection.setRetryTimeout(outOptions[1]);
-						outConnection.setDecodeFormat(convertDecodeFormat(outOptions[2]));
-						outConnection.setIpAddress(outSettings[0]);
-						outConnection.setPort(outSettings[1]);
+						outConnection.setComPort(outSettings[0]);
+						outConnection.setDecodeFormat(outSettings[1]);
 						
 						connections[inIndex] = outConnection;
 					} else {
 						// error processing from nativeGetConnectionSettings
 						status = new Status(Status.ERROR,Activator.PLUGIN_ID, (int)ret, TCErrorConstants.getErrorMessage(ret), null);
 					}
-					break;
-				}
-				case (int)ITCConnection.MEDIA_REALSERIAL: {
+				} else if (type[0].compareToIgnoreCase("serial") == 0) {
 					ITCRealSerialConnection outConnection = (ITCRealSerialConnection)TCFClassFactory.createITCRealSerialConnection(null);
-					int[] outType = new int[1];
+					String[] outType = new String[1];
 					long[] outOptions = new long[6];
-					String[] outSettings = new String[6];
+					String[] outSettings = new String[7];
 					ret = nativeGetConnectionSettings(inIndex, outType, outOptions, outSettings);
 					if (ret == TCErrorConstants.TCAPI_ERR_NONE) {
 						outConnection.setConnectionType(outType[0]);
 						outConnection.setRetryInterval(outOptions[0]);
 						outConnection.setRetryTimeout(outOptions[1]);
-						outConnection.setDecodeFormat(convertDecodeFormat(outOptions[2]));
 						outConnection.setComPort(outSettings[0]);
 						outConnection.setBaudRate(outSettings[1]);
 						outConnection.setDataBits(outSettings[2]);
 						outConnection.setParity(outSettings[3]);
 						outConnection.setStopBits(outSettings[4]);
 						outConnection.setFlowControl(outSettings[5]);
+						outConnection.setDecodeFormat(outSettings[6]);
 						
 						connections[inIndex] = outConnection;
 					} else {
 						// error processing from nativeGetConnectionSettings
 						status = new Status(Status.ERROR,Activator.PLUGIN_ID, (int)ret, TCErrorConstants.getErrorMessage(ret), null);
 					}
-					break;
-				}
-				case (int)ITCConnection.MEDIA_USB: {
-					break;
-				}
-				default:
+				} else if (type[0].compareToIgnoreCase("tcp") == 0) {
+					ITCRealTCPConnection outConnection = (ITCRealTCPConnection)TCFClassFactory.createITCRealTCPConnection(null, null);
+					String[] outType = new String[1];
+					long[] outOptions = new long[3];
+					String[] outSettings = new String[3];
+					ret = nativeGetConnectionSettings(inIndex, outType, outOptions, outSettings);
+					if (ret == TCErrorConstants.TCAPI_ERR_NONE) {
+						outConnection.setConnectionType(outType[0]);
+						outConnection.setRetryInterval(outOptions[0]);
+						outConnection.setRetryTimeout(outOptions[1]);
+						outConnection.setIpAddress(outSettings[0]);
+						outConnection.setPort(outSettings[1]);
+						outConnection.setDecodeFormat(outSettings[2]);
+						
+						connections[inIndex] = outConnection;
+					} else {
+						// error processing from nativeGetConnectionSettings
+						status = new Status(Status.ERROR,Activator.PLUGIN_ID, (int)ret, TCErrorConstants.getErrorMessage(ret), null);
+					}
+				} else if (type[0].compareToIgnoreCase("usb") == 0) {
+					// Finish this sometime when real USB is used on PC
+				} else {
 					// Add other connection types here
-					break;
 				}
 			}
 		}
 		return connections;
 	}
 
-	protected String convertDecodeFormat(long decodeFormat) {
-		if (decodeFormat == 1) {
-			return "platsim";
-		}
-		if (decodeFormat == 2) {
-			return "ost";
-		}
-		if (decodeFormat == 3) {
-			return "rawtrk";
-		}
-		return "ost";
-	}
 	/* (non-Javadoc)
 	 * @see com.nokia.tcf.api.ITCAPIConnection#getInputStream()
 	 */
@@ -775,10 +725,10 @@
 
 					long[] formattingOptions = new long[5];
 					formattingOptions[0] = 0;
-					formattingOptions[1] = messageOptions.getMessageEncodeFormat();
-					formattingOptions[2] = messageOptions.getOSTVersion();
-					formattingOptions[3] = inMessage.getMyMessageId();
-					formattingOptions[4] = (inMessage.isUseMyMessageId() == true) ? 1 : 0;
+					formattingOptions[1] = messageOptions.getMessageEncodeFormat(); // add protocol or not
+					formattingOptions[2] = messageOptions.getOSTVersion();			// OST version byte to use if OST
+					formattingOptions[3] = inMessage.getMyMessageId();				// message ID to use of adding protocol
+					formattingOptions[4] = (inMessage.isUseMyMessageId() == true) ? 1 : 0; // use my ID or not
 					String[] settings = new String[1];
 					settings[0] = connection.getDecodeFormat().toLowerCase();
 					try {
@@ -895,7 +845,7 @@
 		}
 		return status;
 	}
-	protected IStatus doTestConnection(int type, String[] settings, ITCConnection inConnection) {
+	protected IStatus doTestConnection(String type, String[] settings, ITCConnection inConnection) {
 		IStatus status = statusOK;
 		// test connection
 		long[] options = new long[3];
@@ -914,10 +864,8 @@
 	public IStatus testConnection(ITCConnection inConnection) {
 		IStatus status = statusOK;
 		String[] settings = null;
-		int type = inConnection.getConnectionType();
-		switch(type) {
-		case ITCConnection.MEDIA_REALSERIAL:
-		{
+		String type = inConnection.getConnectionType();
+		if (type.compareToIgnoreCase("serial") == 0) {
 			settings = new String[7];
 			ITCRealSerialConnection s = (ITCRealSerialConnection)inConnection;
 			settings[0] = s.getComPort();
@@ -927,36 +875,25 @@
 			settings[4] = s.getStopBits();
 			settings[5] = s.getFlowControl();
 			settings[6] = s.getDecodeFormat().toLowerCase();
-		}
-			break;
-		case ITCConnection.MEDIA_REALTCP:
-		{
+		} else if (type.compareToIgnoreCase("tcp") == 0) {
 			settings = new String[3];
 			ITCRealTCPConnection s = (ITCRealTCPConnection)inConnection;
 			settings[0] = s.getIpAddress();
 			settings[1] = s.getPort();
 			settings[2] = s.getDecodeFormat().toLowerCase();
-		}	
-			break;
-		case ITCConnection.MEDIA_USB:
-		{
+		} else if (type.compareToIgnoreCase("usb") == 0) {
 			settings = new String[1];
-		}
-			break;
-		case ITCConnection.MEDIA_VIRTUALSERIAL:
-		{
+			// finish this sometime when real USB is used on PC
+		} else if (type.compareToIgnoreCase("virtualserial") == 0) {
 			settings = new String[2];
 			ITCVirtualSerialConnection s = (ITCVirtualSerialConnection)inConnection;
 			settings[0] = s.getComPort();
 			settings[1] = s.getDecodeFormat().toLowerCase();
-		}
-			break;
-		default:
+		} else {
+			// add new connections here
 			long err = TCErrorConstants.TCAPI_ERR_MEDIA_NOT_SUPPORTED;
 			status = new Status(Status.ERROR, Activator.PLUGIN_ID, (int)err, TCErrorConstants.getErrorMessage((int)err), null);
-			break;
 		}
-		
 		if (status.isOK()) {
 			status = doTestConnection(type, settings, inConnection);
 /*			// test connection
@@ -989,17 +926,17 @@
 
 	// natives
 	// connect/disconnect
-	private native long nativeConnect(int inType, long[] inOptions, String[] inSettings, long[] inMessageOptions, String inFilePath, long[] outClientId);
-	private native long nativeDisconnect(long inClientId); 
+	protected native long nativeConnect(String inType, long[] inOptions, String[] inSettings, long[] inMessageOptions, String inFilePath, long[] outClientId);
+	protected native long nativeDisconnect(long inClientId); 
 	// connections
 	protected native long nativeGetNumberConnections(long[] outNumber);
-	protected native long nativeGetTypeOfConnection(long inIndex, int[] outType);
-	protected native long nativeGetConnectionSettings(long inIndex, int[] outType, long[] outOptions, String[] outSettings);
+	protected native long nativeGetTypeOfConnection(long inIndex, String[] outType);
+	protected native long nativeGetConnectionSettings(long inIndex, String[] outType, long[] outOptions, String[] outSettings);
 	// port handling errors
 	public native boolean nativePollError(long inClienId, int[] outErrorCode, boolean[] outHasOSErrorCode, long[] outOSErrorCode);
 	// versions
-	private native long nativeGetNumberVersionEntities(long inClientId);
-	private native long nativeGetVersion(long inClientId, long inNumToGet, String[] outVersion);
+	protected native long nativeGetNumberVersionEntities(long inClientId);
+	protected native long nativeGetVersion(long inClientId, long inNumToGet, String[] outVersion);
 	// input stream
 	public native long nativePollInputStream(long inClientId, long[] outNumberTotalMessages);
 	public native long nativePollInputStream2(long inClientId, long inNumberMessagesToPeek, long[] outNumberMessagesPeeked, long[] outNumberBytesPeeked);
@@ -1008,17 +945,17 @@
 	public native long nativeOpenInputStream(long inClientId, String inBaseFilePath, long inInputStreamSize, boolean inOverFlowToFile);
 	public native long nativeCloseInputStream(long inClientId);
 	// message file
-	private native long nativeClearFile(long inClientId);
+	protected native long nativeClearFile(long inClientId);
 	// send message
-	private native long nativeSendMessage(long inClientId, long[] inFormattingOptions, String[] inSettings, byte[] inMessage);
+	protected native long nativeSendMessage(long inClientId, long[] inFormattingOptions, String[] inSettings, byte[] inMessage);
 	// register message IDs
-	private native long nativeSetMessageIds(long inClientId, byte[] inMessageIds);
+	protected native long nativeSetMessageIds(long inClientId, byte[] inMessageIds);
 	// start/stop processing
-	private native long nativeStart(long inClientId);
-	private native long nativeStop(long inClientId);
+	protected native long nativeStart(long inClientId);
+	protected native long nativeStop(long inClientId);
 	// test connections
-	private native long nativeTestConnection(int inType, long[] inOptions, String[] inSettings);
-	private native long nativeTestConnection(long inClientId);
+	protected native long nativeTestConnection(String inType, long[] inOptions, String[] inSettings);
+	protected native long nativeTestConnection(long inClientId);
 	// start/stop server - done from plugin activator start/stop methods
 	public native long nativeStartServer();
 	public native long nativeStopServer();
--- a/connectivity/com.nokia.tcf/src/com/nokia/tcf/impl/TCBaseConnection.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.tcf/src/com/nokia/tcf/impl/TCBaseConnection.java	Sat Apr 25 12:54:10 2009 -0500
@@ -28,7 +28,7 @@
 
 public abstract class TCBaseConnection implements ITCConnection {
 
-	private int connectionType;
+	private String connectionType;
 	private long retryInterval;
 	private long retryTimeout;
 	protected String decodeFormat;
@@ -38,10 +38,10 @@
 	 * @param retryTimeout
 	 * @param decodeFormat
 	 */
-	public TCBaseConnection(int connectionType, long retryInterval,
+	public TCBaseConnection(String connectionType, long retryInterval,
 			long retryTimeout, String decodeFormat) {
 		super();
-		this.connectionType = connectionType;
+		this.connectionType = connectionType.toLowerCase();
 		this.retryInterval = retryInterval;
 		this.retryTimeout = retryTimeout;
 		this.decodeFormat = decodeFormat;
@@ -50,9 +50,9 @@
 	/**
 	 * @param connectionType
 	 */
-	public TCBaseConnection(int connectionType) {
+	public TCBaseConnection(String connectionType) {
 		super();
-		this.connectionType = connectionType;
+		this.connectionType = connectionType.toLowerCase();
 		this.retryInterval = DEFAULT_COMM_ERROR_RETRY_INTERVAL;
 		this.retryTimeout = DEFAULT_COMM_ERROR_RETRY_TIMEOUT;
 		this.decodeFormat = "ost";
@@ -63,10 +63,10 @@
 	 * @param retryInterval
 	 * @param retryTimeout
 	 */
-	public TCBaseConnection(int connectionType, long retryInterval,
+	public TCBaseConnection(String connectionType, long retryInterval,
 			long retryTimeout) {
 		super();
-		this.connectionType = connectionType;
+		this.connectionType = connectionType.toLowerCase();
 		this.retryInterval = retryInterval;
 		this.retryTimeout = retryTimeout;
 		this.decodeFormat = "ost";
@@ -80,7 +80,7 @@
 	/* (non-Javadoc)
 	 * @see com.nokia.tcf.api.ITCConnection#getConnectionType()
 	 */
-	public int getConnectionType() {
+	public String getConnectionType() {
 		return this.connectionType;
 	}
 
@@ -101,9 +101,9 @@
 	/* (non-Javadoc)
 	 * @see com.nokia.tcf.api.ITCConnection#setConnectionType(int)
 	 */
-	public IStatus setConnectionType(int inConnectionType) {
+	public IStatus setConnectionType(String inConnectionType) {
 		IStatus status = new Status(Status.OK, Activator.PLUGIN_ID, (int)TCErrorConstants.TCAPI_ERR_NONE, "OK", null);
-		connectionType = inConnectionType;
+		connectionType = inConnectionType.toLowerCase();
 		return status;
 	}
 
@@ -145,14 +145,7 @@
 	 */
 	public IStatus setDecodeFormat(String inDecodeFormat) {
 		IStatus status = new Status(Status.OK, Activator.PLUGIN_ID, (int)TCErrorConstants.TCAPI_ERR_NONE, "OK", null);
-		if ((inDecodeFormat.compareToIgnoreCase("platsim") == 0) ||
-				(inDecodeFormat.compareToIgnoreCase("ost") == 0) ||
-				(inDecodeFormat.compareToIgnoreCase("rawtrk") == 0)) {
-			decodeFormat = inDecodeFormat;
-		} else {
-			status  = new Status(Status.ERROR, Activator.PLUGIN_ID, (int)TCErrorConstants.TCAPI_ERR_INVALID_DECODE_FORMAT, "Error", null);
-			decodeFormat = "ost";
-		}
+		decodeFormat = inDecodeFormat;
 		return status;
 	}
 
--- a/connectivity/com.nokia.tcf/src/com/nokia/tcf/impl/TCRealSerialConnection.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.tcf/src/com/nokia/tcf/impl/TCRealSerialConnection.java	Sat Apr 25 12:54:10 2009 -0500
@@ -42,7 +42,7 @@
 	 * All serial parameters are defaulted.
 	 */
 	public TCRealSerialConnection() {
-		super(MEDIA_REALSERIAL);
+		super("serial");
 		comPort = DEFAULT_COM_PORT;
 		baudRate = DEFAULT_BAUD;
 		parity = DEFAULT_PARITY;
@@ -59,7 +59,7 @@
 	 * @param inComPort
 	 */
 	public TCRealSerialConnection(String inComPort) {
-		super(MEDIA_REALSERIAL);
+		super("serial");
 		comPort = inComPort;
 		baudRate = DEFAULT_BAUD;
 		parity = DEFAULT_PARITY;
@@ -79,7 +79,7 @@
 	 */
 	public TCRealSerialConnection(String inComPort, long retryInterval,
 			long retryTimeout) {
-		super(MEDIA_REALSERIAL, retryInterval, retryTimeout);
+		super("serial", retryInterval, retryTimeout);
 		comPort = inComPort;
 		baudRate = DEFAULT_BAUD;
 		parity = DEFAULT_PARITY;
@@ -98,7 +98,7 @@
 	 * @param inBaudRate
 	 */
 	public TCRealSerialConnection(String inComPort, String inBaudRate) {
-		super(MEDIA_REALSERIAL);
+		super("serial");
 		comPort = inComPort;
 		baudRate = inBaudRate;
 		parity = DEFAULT_PARITY;
--- a/connectivity/com.nokia.tcf/src/com/nokia/tcf/impl/TCRealTCPConnection.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.tcf/src/com/nokia/tcf/impl/TCRealTCPConnection.java	Sat Apr 25 12:54:10 2009 -0500
@@ -40,7 +40,7 @@
 	 * @param inIpPort
 	 */
 	public TCRealTCPConnection(String inIpAddress, String inPort) {
-		super(MEDIA_REALTCP);
+		super("tcp");
 		ipAddress = inIpAddress;
 		ipPort = inPort;
 		decodeFormat = "ost";
@@ -56,7 +56,7 @@
 	 * @param retryTimeout
 	 */
 	public TCRealTCPConnection(String inIpAddress, String inIpPort, long retryInterval, long retryTimeout) {
-		super(MEDIA_REALTCP, retryInterval, retryTimeout);
+		super("tcp", retryInterval, retryTimeout);
 		ipAddress = inIpAddress;
 		ipPort = inIpPort;
 		decodeFormat = "ost";
--- a/connectivity/com.nokia.tcf/src/com/nokia/tcf/impl/TCVirtualSerialConnection.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/connectivity/com.nokia.tcf/src/com/nokia/tcf/impl/TCVirtualSerialConnection.java	Sat Apr 25 12:54:10 2009 -0500
@@ -34,7 +34,7 @@
 	 *  Create Virtual Serial connection with default COM port. Retry periods are defaulted.
 	 */
 	public TCVirtualSerialConnection() {
-		super(MEDIA_VIRTUALSERIAL);
+		super("virtualserial");
 		this.comPort = ITCVirtualSerialConnection.DEFAULT_COM_PORT;
 		decodeFormat = "ost";
 	}
@@ -48,7 +48,7 @@
 	 */
 	public TCVirtualSerialConnection(long retryInterval,
 			long retryTimeout) {
-		super(MEDIA_VIRTUALSERIAL, retryInterval, retryTimeout);
+		super("virtualserial", retryInterval, retryTimeout);
 		this.comPort = ITCVirtualSerialConnection.DEFAULT_COM_PORT;
 		decodeFormat = "ost";
 	}
@@ -59,7 +59,7 @@
 	 * @param inPort
 	 */
 	public TCVirtualSerialConnection(String inPort) {
-		super(MEDIA_VIRTUALSERIAL);
+		super("virtualserial");
 		this.comPort = inPort;
 		decodeFormat = "ost";
 	}
Binary file core/carbide_releases/readme/background_carbide.jpg has changed
--- a/core/carbide_releases/readme/readme_sdks.html	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/carbide_releases/readme/readme_sdks.html	Sat Apr 25 12:54:10 2009 -0500
@@ -1,69 +1,65 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>SDK Support in Carbide.c++</title>
-<style type="text/css">
-<!--
-body { background-image: url(background_carbide.jpg);}
-.style1 {font-size: x-small}
-.style2 {font-family: "Courier New", Courier, mono}
-.style3 {color: #FF0000; font-weight: bold}
-.style4 {font-weight: bold}
-.style5 {color: #FFFFFF; }
--->
-</style>
-</head>
-
-<body >
-
-<h2>You're not done installing just yet... </h2>
-<p>Release: 2.0.3<br>
-  Revised:&nbsp;Feb 2009</p>
-<p>Read the <b>Release Notes</b> and <b>What's New</b> for the latest infomation about this product. In Carbide.c++ simply click  <b>Help &gt; Help Contents &gt; Carbide Help</b>.</p>
-<p>To complete your installation and start Symbian C++ application development, you <span class="style3">must</span>  install the following: </p>
-<table width="80%"  border="0">
-  <tr>
-    <td height="30" valign="bottom"><h3 class="style4">Installing Perl </h3></td>
-  </tr>
-  <tr>
-    <td height="71" bgcolor="#ffffff">
-    <p>The Carbide.c++ tools require a copy of Perl to run  build scripts:</p>
-	<b>Perl</b> (<a href="http://www.activestate.com">www.activestate.com</a>)
-  <ul>
-        <li><A href="ftp://ftp.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.635-MSWin32-x86.msi">ActivePerl-5.6.1.635</a> (5.6.1 is required by Symbian tools, later versions will not work) </li>
-    </ul></td>
-  </tr>
-</table>
-<table width="80%"  border="0">
-  <tr>
-    <td height="30" valign="bottom"><h3 class="style4">Installing SDKs</h3></td>
-  </tr>
-  <tr>
-    <td bgcolor="#ffffff">
-		<p>Also, you must  install at least one of the following  SDKs to develop Symbian applications:
-</p>
-		<p><b>NOTE</b> Carbide.c++ requires SDKs built to support  <span class="style2">WINSCW</span> format. </p>
-		<p><strong>S60 Platform SDKs</strong> (<a href="http://forum.nokia.com/info/sw.nokia.com/id/4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html">forum.nokia.com/main/resources/tools_and_sdks/carbide/</a>) </p>
-	      <ul>
-	        <li>S60 5th Edition
-	        <li>S60 3rd Edition, FP2 
-	        <li>S60 3rd Edition, FP1
-	        <li>S60 3rd Edition, MR 
-            </ul>
-	<p><strong>Qt SDKs</strong> (<a href="http://www.trolltech.com/">www.trolltech.com</a>) </p>
-      <ul>
-        <li>Qt SDK for S60        
-      </ul>
-      <p><strong>UIQ SDKs</strong> (<a href="http://developer.uiq.com/">developer.uiq.com</a>) </p>
-      <ul>
-        <li>UIQ 3.1        
-        <li>UIQ 3.0        
-      </ul></td>
-  </tr>
-</table>
-<hr size="1" noshade>
-<p class="footer style1" >Copyright &copy;2006-2008 Nokia Corporation</p>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>SDK Support in Carbide.c++</title>
+<style type="text/css">
+<!--
+.style6 {font-weight: bold}
+-->
+</style>
+</head>
+
+<body background="background_carbide.jpg">
+
+<h2>You're not done installing just yet... </h2>
+<p>Release: 2.1.0<br>
+  Revised:&nbsp;April 2009</p>
+<p>Read the <b>Release Notes</b> and <b>Bug Fixes</b> for the latest infomation about this product. In Carbide.c++ simply click the <b>Help &gt; Help Contents &gt; Carbide.c++ User Guide</b> to find the pages.</p>
+<p>To complete your installation and start Symbian C++ application development, you <span class="style3">must</span>  install the following: </p>
+<table width="80%"  border="0">
+  <tr>
+    <td height="30" valign="bottom"><h3 class="style4">Installing Perl </h3></td>
+  </tr>
+  <tr>
+    <td height="71" bgcolor="#ffffff">
+    <p>The Carbide.c++ tools require a copy of Perl to run  build scripts:</p>
+	<b>Perl</b> (<a href="http://www.activestate.com">www.activestate.com</a>)
+  <ul>
+        <li><A href="ftp://ftp.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.635-MSWin32-x86.msi">ActivePerl-5.6.1.635</a> (5.6.1 is required by Symbian tools, later versions will not work) </li>
+    </ul></td>
+  </tr>
+</table>
+<table width="80%"  border="0">
+  <tr>
+    <td height="30" valign="bottom"><h3 class="style4">Installing SDKs</h3></td>
+  </tr>
+  <tr>
+    <td bgcolor="#ffffff">
+		<p>Also, you must  install at least one of the following  SDKs to develop Symbian applications:
+</p>
+		<p><b>NOTE</b> Carbide.c++ requires SDKs built to support  <span class="style2">WINSCW</span> format. </p>
+		<p><strong>S60 Platform SDKs</strong> (<a href="http://forum.nokia.com/info/sw.nokia.com/id/4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html">forum.nokia.com/main/resources/tools_and_sdks/carbide/</a>) </p>
+	      <ul>
+	        <li>S60 5th Edition
+	        <li>S60 3rd Edition, FP2 
+	        <li>S60 3rd Edition, FP1
+	        <li>S60 3rd Edition, MR 
+            </ul>
+	<p><strong>Qt SDKs</strong> (<a href="http://www.trolltech.com/">www.trolltech.com</a>) </p>
+      <ul>
+        <li>Qt SDK for S60        
+      </ul>
+      <p><strong>UIQ SDKs</strong> (<a href="http://developer.uiq.com/">developer.uiq.com</a>) </p>
+      <ul>
+        <li>UIQ 3.1        
+        <li>UIQ 3.0        
+      </ul></td>
+  </tr>
+</table>
+<p>&nbsp;</p>
+<div id="footer"><span class="style6">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>
+License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></span></div>
+</body>
+</html>
--- a/core/com.nokia.carbide.cpp-feature/feature.xml	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp-feature/feature.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -2,7 +2,7 @@
 <feature
       id="com.nokia.carbide.cpp"
       label="%featureName"
-      version="2.0.3.qualifier"
+      version="2.1.0.qualifier"
       provider-name="Nokia"
       plugin="com.nokia.carbide.cpp"
       image="Carbide_Image.png">
--- a/core/com.nokia.carbide.cpp.codescanner.tests/src/com/nokia/carbide/cpp/codescanner/tests/CSConfigManagerTest.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner.tests/src/com/nokia/carbide/cpp/codescanner/tests/CSConfigManagerTest.java	Sat Apr 25 12:54:10 2009 -0500
@@ -171,6 +171,7 @@
 		assertTrue(settings.get(CSPreferenceConstants.RULE_SEVERITIES).length() > 0);
 		assertTrue(settings.get(CSPreferenceConstants.RULES_ENABLED).length() > 0);
 		assertTrue(settings.get(CSPreferenceConstants.CCLASSIGNORE).length() > 0);
+		assertTrue(settings.get(CSPreferenceConstants.ICONS).length() == 0);
 		assertTrue(settings.get(CSPreferenceConstants.LFUNCTIONIGNORE).length() > 0);
 		assertTrue(settings.get(CSPreferenceConstants.LONGLINES_LENGTH).length() > 0);
 		assertTrue(settings.get(CSPreferenceConstants.OPENIGNORE).length() > 0);
@@ -194,6 +195,7 @@
 		assertTrue(store.getString(CSPreferenceConstants.RULE_SEVERITIES).length() > 0);
 		assertTrue(store.getString(CSPreferenceConstants.RULES_ENABLED).length() > 0);
 		assertTrue(store.getString(CSPreferenceConstants.CCLASSIGNORE).length() > 0);
+		assertTrue(store.getString(CSPreferenceConstants.ICONS).length() >= 0);
 		assertTrue(store.getString(CSPreferenceConstants.LFUNCTIONIGNORE).length() > 0);
 		assertTrue(store.getString(CSPreferenceConstants.LONGLINES_LENGTH).length() > 0);
 		assertTrue(store.getString(CSPreferenceConstants.OPENIGNORE).length() > 0);
--- a/core/com.nokia.carbide.cpp.codescanner.tests/src/com/nokia/carbide/cpp/codescanner/tests/CSConfigSettingsTest.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner.tests/src/com/nokia/carbide/cpp/codescanner/tests/CSConfigSettingsTest.java	Sat Apr 25 12:54:10 2009 -0500
@@ -309,13 +309,27 @@
 		assertTrue(result.equals("secret"));
 	}
 
+	public void testGetScriptIcons() throws Exception {
+		String result = "";
+		result = this.configSettings.getScriptIcons();
+		assertNull(result);
+	}
+
+	public void testSetScriptIcons() throws Exception {
+		this.configSettings.setScriptIcons("myicon.png");
+		String result = "";
+		result = this.configSettings.getScriptIcons();
+		assertNotNull(result);
+		assertTrue(result.equals("myicon.png"));
+	}
+
 	public void testGetScriptLFunctionIgnore() throws Exception {
 		String result = "";
 		result = this.configSettings.getScriptLFunctionIgnore();
 		assertTrue(result.length() > 0);
 	}
 
-	public void testSetLFunctionCClassIgnore() throws Exception {
+	public void testSetScriptLFunctionIgnore() throws Exception {
 		this.configSettings.setScriptLFunctionIgnore("RunL|MyfuncL");
 		String result = "";
 		result = this.configSettings.getScriptLFunctionIgnore();
Binary file core/com.nokia.carbide.cpp.codescanner/Tools/codescanner.exe has changed
--- a/core/com.nokia.carbide.cpp.codescanner/Tools/release_notes.txt	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/Tools/release_notes.txt	Sat Apr 25 12:54:10 2009 -0500
@@ -1,6 +1,71 @@
+# #################################################################
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Symbian Foundation License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# #################################################################
+
 Nokia CodeScanner Command Line Tool Release Notes
 =================================================
 
+Version 2.1.2
+=============
+- Added new IAD rule to check flag usage. IA must not use R&D flags 
+nor feature flags via preprocessor statements in the source code. 
+This means bldvariant.hrh and productvariant.hrh should not be used.
+This new rule is set to low severity in the "Other" category by 
+default. It can be configured by adding a <flags> script element 
+in the configuration file. 
+Example :
+<codescannerConfig>
+  <scripts>
+    <flags category="other" 
+           enable="true" 
+           severity="low"/>
+  </scripts>
+</codescannerConfig>
+
+- Added new IAD rule to check Central Repository usage. IA cannot 
+assume that the Central Repository is set up fully. This means the 
+return value of CRepository::get() cannot be ignored.
+This new rule is set to low severity in the "Other" category by 
+default. It can be configured by adding a <crepository> script 
+element in the configuration file. 
+Example :
+<codescannerConfig>
+  <scripts>
+    <crepository category="other" 
+                 enable="true" 
+                 severity="low"/>
+  </scripts>
+</codescannerConfig>
+
+- Added new IAD rule to check customizable icons. Due to device 
+customization requirements, IA must not remove any customization 
+done by the variant team. This means IA cannot include customizable 
+icons.
+This new rule is set to low severity in the "Other" category by 
+default. It can be configured by adding a <customizableicons> 
+script element in the configuration file. Names of icons can be 
+specified in the <iconsRE> element.
+Example :
+<codescannerConfig>
+  <scripts>
+    <customizableicons category="other" 
+                       enable="true" 
+                       severity="low">
+      <iconsRE>iconA.bmp|iconB.svg|iconC</iconsRE>
+    </customizableicons>
+  </scripts>
+</codescannerConfig>
+
+
 Version 2.1.1
 =============
 - Added support for user-defined rules. This can be done by
@@ -18,17 +83,16 @@
     </customrule>
   </customrules>
 </codescannerConfig>
-Please refer to the document "CodeScanner XML Configuration File 
-Specification" (CodeScanner_XML_ConfigFile_Spec.doc) for more
-information on this new element.
+More information on the syntax of this new element can be found in 
+the document "CodeScanner_XML_ConfigFile_Spec.doc".
 
 - When scanning with low severity rules, CodeScanner now 
 generates informative messages instead of warnings when the 
 StdOut output format is selected.
 
 - Added support to disable individual error/warning via
-CodeScanner command embedded in comments. The format of this
-command : 
+CodeScanner commands embedded in comments. The command has the 
+following format : 
   codescanner(::<rule name>)+
 Example :
 void CTestCase::Foo()
@@ -59,6 +123,9 @@
   </scripts>
 </codescannerConfig>
 
+-Updated the function parser in CodeScanner to filter out constant 
+initialization.
+
 - Updated active object checking rule to ignore After() from 
 RTimer type member variables.
 
@@ -413,14 +480,3 @@
 python2.5-2.5.1/Lib/wsgiref.egg-info
 
 Please refer to the document "python 2_5_1 licenses.txt" for licensing info.
-
-
-This version of CodeScanner is intended for Nokia internal use only.
-
-Please report any problems found to : 
-support.carbide@nokia.com
-
-
-Stephen Chong
-Nokia Corporation
-stephen.chong@nokia.com
--- a/core/com.nokia.carbide.cpp.codescanner/book.css	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/book.css	Sat Apr 25 12:54:10 2009 -0500
@@ -1,184 +1,184 @@
-/*	
-	Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-	All rights reserved. 
-	License: http://www.eclipse.org/legal/epl-v10.html
-*/
-
-/*	Add whitespace around entire display to avoid crowding edges of view 	*/
-/* 	20070523-Removed top margin size to close gap between location breadcrumbs and page title	*/
-html {
-	margin: 2px 10px 10px 10px;
-	}
-
-/* 	Set default font to serif style, 12-pt and plain	*/
-body, p, table {
-	font-family: Georgia, "Times New Roman", Times, serif;
-	font-size: 13px;
-	font-weight: normal;
-}
-
-/*	Use sans-serif fonts for all title styles	*/
-h1, h2, h3, h4, h5, h6, strong, em {
-	font-family: Helvetica, sans-serif;
-	color: #000000;	
-	}
-
-h1	{ font-size:20px }
-h2	{ font-size:18px }
-h3	{ font-size:16px }
-h4	{ font-size:14px }
-h5	{ font-size:13px }
-h6	{ font-size:12px }
-
-/*	For headlines at the top of a view, add space	*/
-/*	20090224-changed green fade to gold header image	*/
-h1, h2, h3 {
-	background-image: url(html/images/brand/gold_header.png);
-	background-repeat: no-repeat;
-	padding:10px 0px 10px 12px;	
-	}
-
-li	{
-	margin-bottom:8px;	
-	margin-top:8px;
-	}
-
-/*	Footer includes space and a gray line above the company logo	*/
-#footer {
-	padding-top:10px;
-	margin-top:20px;
-	border-top:1px solid #999;
-	font-family: Helvetica, sans-serif;
-	font-size: 11px;
-	color:#333;
-	}
-
-.listing	{
-	font-family: "Courier New", Courier, mono;
-	color: #000000;
-	background-color: #FFFFCC;
-	margin: 5px 0px;
-	}
-		
-.code, pre	{
-	font-family: "Courier New", Courier, mono;
-	font-size: 13px;
-	color: #000000;
-	}
-
-.step	{
-	/* background-color: #EEE; */
-	/* margin: 10px 0px; */
-	color: #111;
-	/* border-bottom:2px solid #EEE; */
-	}
-	
-.substep	{
-	background-color: #EEE;
-	}
-	
-	
-/*	Figure/Listing/Table titles are centered and gray	*/
-p.table {
-	color: #999;
-	font-weight: bold;
-	padding-top: 5px;
-	}
-
-table	{
-	border: solid #999 1px;
-	table-layout: auto;
-	font-size: 13px;
-	}
-
-td, th	{
-	border: solid #999 1px;
-	padding: 5px;
-	vertical-align:top;
-	}
-	
-/*	20070522-replaced gray with green background to match gradiant color for title	*/
-th	{
-	background-color:#FDDD1F;	/* background-color:#acd79b;
-	background-color:#999;
-	color:#FFF; */
-	}
-
-div.ol.p	{
-	margin-left: 3em;
-	}
-
-/* Make all ordered/unordered list items appear in bold gray */
-div ol > li, div ul > li {
-	font-weight:bold;
-	color: #333;
-	}
-
-div ol > p, div ul > p, div li > p {
-	font-weight:normal;
-	}
-	
-/* Make all H4 and H5 items appear in bold gray against a light green background */
-div h5, div h4	{
-	padding:5px 0px 5px 12px;
-	background-color:#FFFF66;
-	/* background-color: #EEE; */
-	font-weight:bold;
-	color: #000000;
-	}
-	
-	
-/*	Notes stand out using a light top & bottom borders with dark gray text	*/
-p.note {
-	/* color: #03C; */
-	/* background-color: #FFFF99; */
-	color: #333;
-	padding: 5px;
-	margin-left: 1em;
-	margin-right: 1em;
-	border-top: solid #BBB thin;
-	border-bottom: solid #BBB thin;
-	}
-
-	
-/*	Figure/Listing/Table titles are centered and gray	*/
-p.figure {
-	color: #333;
-	text-align: center;
-	font-weight: bold;
-	}
-
-/*	highly visible red background and white text for things that need fixing before release	*/
-/*  SHOULD NOT BE PRESENT IN RELEASED PRODUCTS */
-.fix	{
-	background-color: red;
-	font-weight: bold;
-	color: white;
-	}
-
-.question	{
-	font-style:italic;
-	font-weight:bold;
-	color: #555;
-	}
-	
-.titleSmall {
-	font-family: Helvetica, sans-serif;
-	font-size: 11px;
-	}
-
-	
-.plain {
-	font-family: Helvetica, sans-serif;
-	font-size: 12px;
-	font-style: normal;
-	line-height: normal;
-	font-weight: normal;
-	font-variant: normal;
-	color: #000000;
-	text-decoration: none;
-	}
-
-a:link 		{ color: #0033CC }
-a:visited	{ color: #555555 }
-a:hover 	{ color: #0033CC }
+/*	
+	Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+	All rights reserved. 
+	License: http://www.eclipse.org/legal/epl-v10.html
+*/
+
+/*	Add whitespace around entire display to avoid crowding edges of view 	*/
+/* 	20070523-Removed top margin size to close gap between location breadcrumbs and page title	*/
+html {
+	margin: 2px 10px 10px 10px;
+	}
+
+/* 	Set default font to serif style, 12-pt and plain	*/
+body, p, table {
+	font-family: Georgia, "Times New Roman", Times, serif;
+	font-size: 13px;
+	font-weight: normal;
+}
+
+/*	Use sans-serif fonts for all title styles	*/
+h1, h2, h3, h4, h5, h6, strong, em {
+	font-family: Helvetica, sans-serif;
+	color: #000000;	
+	}
+
+h1	{ font-size:20px }
+h2	{ font-size:18px }
+h3	{ font-size:16px }
+h4	{ font-size:14px }
+h5	{ font-size:13px }
+h6	{ font-size:12px }
+
+/*	For headlines at the top of a view, add space	*/
+/*	20090224-changed green fade to gold header image	*/
+h1, h2, h3 {
+	background-image: url(html/images/brand/gold_header.png);
+	background-repeat: no-repeat;
+	padding:10px 0px 10px 12px;	
+	}
+
+li	{
+	margin-bottom:8px;	
+	margin-top:8px;
+	}
+
+/*	Footer includes space and a gray line above the company logo	*/
+#footer {
+	padding-top:10px;
+	margin-top:20px;
+	border-top:1px solid #999;
+	font-family: Helvetica, sans-serif;
+	font-size: 11px;
+	color:#333;
+	}
+
+.listing	{
+	font-family: "Courier New", Courier, mono;
+	color: #000000;
+	background-color: #FFFFCC;
+	margin: 5px 0px;
+	}
+		
+.code, pre	{
+	font-family: "Courier New", Courier, mono;
+	font-size: 13px;
+	color: #000000;
+	}
+
+.step	{
+	/* background-color: #EEE; */
+	/* margin: 10px 0px; */
+	color: #111;
+	/* border-bottom:2px solid #EEE; */
+	}
+	
+.substep	{
+	background-color: #EEE;
+	}
+	
+	
+/*	Figure/Listing/Table titles are centered and gray	*/
+p.table {
+	color: #999;
+	font-weight: bold;
+	padding-top: 5px;
+	}
+
+table	{
+	border: solid #999 1px;
+	table-layout: auto;
+	font-size: 13px;
+	}
+
+td, th	{
+	border: solid #999 1px;
+	padding: 5px;
+	vertical-align:top;
+	}
+	
+/*	20070522-replaced gray with green background to match gradiant color for title	*/
+th	{
+	background-color:#FDDD1F;	/* background-color:#acd79b;
+	background-color:#999;
+	color:#FFF; */
+	}
+
+div.ol.p	{
+	margin-left: 3em;
+	}
+
+/* Make all ordered/unordered list items appear in bold gray */
+div ol > li, div ul > li {
+	font-weight:bold;
+	color: #333;
+	}
+
+div ol > p, div ul > p, div li > p {
+	font-weight:normal;
+	}
+	
+/* Make all H4 and H5 items appear in bold gray against a light green background */
+div h5, div h4	{
+	padding:5px 0px 5px 12px;
+	background-color:#FFFF66;
+	/* background-color: #EEE; */
+	font-weight:bold;
+	color: #000000;
+	}
+	
+	
+/*	Notes stand out using a light top & bottom borders with dark gray text	*/
+p.note {
+	/* color: #03C; */
+	/* background-color: #FFFF99; */
+	color: #333;
+	padding: 5px;
+	margin-left: 1em;
+	margin-right: 1em;
+	border-top: solid #BBB thin;
+	border-bottom: solid #BBB thin;
+	}
+
+	
+/*	Figure/Listing/Table titles are centered and gray	*/
+p.figure {
+	color: #333;
+	text-align: center;
+	font-weight: bold;
+	}
+
+/*	highly visible red background and white text for things that need fixing before release	*/
+/*  SHOULD NOT BE PRESENT IN RELEASED PRODUCTS */
+.fix	{
+	background-color: red;
+	font-weight: bold;
+	color: white;
+	}
+
+.question	{
+	font-style:italic;
+	font-weight:bold;
+	color: #555;
+	}
+	
+.titleSmall {
+	font-family: Helvetica, sans-serif;
+	font-size: 10px;
+	}
+
+	
+.plain {
+	font-family: Helvetica, sans-serif;
+	font-size: 12px;
+	font-style: normal;
+	line-height: normal;
+	font-weight: normal;
+	font-variant: normal;
+	color: #000000;
+	text-decoration: none;
+	}
+
+a:link 		{ color: #0033CC }
+a:visited	{ color: #555555 }
+a:hover 	{ color: #0033CC }
--- a/core/com.nokia.carbide.cpp.codescanner/html/codescanner.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/html/codescanner.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -1,32 +1,31 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<html>
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-	<title>CodeScanner User Guide</title>
-    <link href="../book.css" rel="stylesheet" type="text/css">
-	<style>
-		table, td, th { border: 0px none #FFF; }
-	</style>
-</head>
-
-<body background="images/brand/background_carbide.jpg" >
-<p>&nbsp;</p>
-<table width="530" border="0" align="center" cellpadding="0" cellspacing="5" bgcolor="#FFFFFF" >
-  <tr>
-    <td width="215"><img src="images/brand/about_cpp.png" width="225" height="200"></td>
-    <td width="294" valign="bottom"><p align="right"><b><img src="images/brand/brandmark_cpp.gif" width="106" height="52"></b></p>
-      <p align="right">&nbsp;</p>
-      <p align="right">&nbsp;</p>
-      <p align="right">&nbsp;</p>
-      <p class="titleSmall">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></p>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2"><h1 align="center">CodeScanner User Guide</h1>
-    <p align="center" class="titleSmall">Version 2.1.1; February, 2009</p></td>
-  </tr>
-</table>
-<p align="center">&nbsp;</p>
-</body>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<title>CodeScanner User Guide</title>
+    <link href="../book.css" rel="stylesheet" type="text/css">
+	<style>
+		table, td, th { border: 0px none #FFF; }
+	</style>
+</head>
+
+<body background="images/brand/background_carbide.jpg" >
+<p>&nbsp;</p>
+<table width="530" border="0" align="center" cellpadding="0" cellspacing="5" bgcolor="#FFFFFF" >
+  <tr>
+    <td width="215"><img src="images/brand/about_cpp.png" width="225" height="200"></td>
+    <td width="294" valign="bottom"><p align="right"><b><img src="images/brand/brandmark_cpp.gif" width="106" height="52"></b></p>
+      <p align="right">&nbsp;</p>
+      <p align="right">&nbsp;</p>
+      <p class="titleSmall">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></p>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2"><h1 align="center">CodeScanner User Guide</h1>
+    <p align="center" class="titleSmall">Version 2.1.3; April, 2009</p></td>
+  </tr>
+</table>
+<p align="center">&nbsp;</p>
+</body>
 </html>
\ No newline at end of file
--- a/core/com.nokia.carbide.cpp.codescanner/html/customizing_cs.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/html/customizing_cs.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -1,294 +1,299 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head>
-<title>Customizing CodeScanner Rules</title>
-<link rel="StyleSheet" href="../book.css" type="text/css"/>
-<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
-</head>
-   <body>
-   <div class="Head1">
-<h2>Customizing CodeScanner Rules</h2>
-</div>
-   <p> The CodeScanner command line tool currently accepts an XML configuration file, which controls scanning behavior, like the file types to ignore and which rules to apply. Using the elements contained here makes it possible to customize the scanning rules to include new rules unique to your development environment.</p>
-   <p>This page describes the format of CodeScanner config file (<span class="code">codescannerconfig.xml</span>), which is used for the following purposes: </p>
-   <ul>
-     <li>Controls scanning behavior of the CodeScanner command line tool</li>
-     <li> Importing/exporting rules and file types from CodeScanner preference pages in Carbide.c++ IDE </li>
-   </ul>
-   <h2>CODESCANNERCONFIG.XML File</h2>
-   <p>The CodeScanner config file is an XML formatted file created by CodeScanner when a scan is performed or when the CodeScaner preference settings are <a href="pref_codescanner_01.htm">exported</a>. The file  contains the following elements: </p>
-   <ul>
-     <li><a href="#ARG_Element">Arguments</a> element &ndash; specifies the arguments to be passed to CodeScanner</li>
-     <li><a href="#SRC_Element">Sources</a> element &ndash; specifies the file types to be ignored by CodeScanner</li>
-     <li><a href="#SCRIPT_Element">Scripts</a> element &ndash; specifies the rules to be applied by CodeScanner</li>
-     <li><a href="#SEV_Element">Severities</a> element &ndash; specifies the severity levels of rules to be applied by CodeScanner</li>
-     <li><a href="#CAT_Element">Categories</a> element &ndash; specifies the categories of rules to be applied by CodeScanner</li>
-     <li><a href="#RULE_Element">CustomRules</a> element &ndash; specifies user defined rules to be applied by CodeScanner</li>
-   </ul>
-   <h4><a name="ARG_Element" id="ARG_Element"></a>Arguments Element</h4>
-   <p>Each Arguments element contains one or more of the following arguments: </p>
-   <ul>
-     <li><b>Input</b> element (<span class="code">&lt;input&gt;</span>, <span class="code">&lt;/input&gt;</span>) &ndash; Specify an additional directory or file to scan. </li>
-     <li><b>Outputformat</b> element (<span class="code">&lt;outputformat&gt;</span>, <span class="code">&lt;/outputformat&gt;</span>) &ndash; Specify the output format(s) of the results generated by CodeScanner. Currently the following output formats are supported: 
-       <ul>
-         <li>html &ndash; generate HTML report</li>
-         <li> xml &ndash; generate an XML report</li>
-         <li> std &ndash; generate messages in standard console output</li>
-       </ul>
-     </li>
-     <li><b>LXR</b> element (<span class="code">&lt;lxr&gt;</span>, <span class="code">&lt;/lxr&gt;</span>) &ndash;  Specify the URL to an LXR site. When this argument is present, CodeScanner  generates links to the specified LXR site instead of the local file system. </li>
-     <li><b>LXR version</b> element (<span class="code">&lt;lxrversion&gt;</span>, <span class="code">&lt;/lxrversion&gt;</span>) &ndash; Specify the LXR version when generating links to an LXR site. </li>
-     <li><b>Timestampedoutput</b> element (<span class="code">&lt;timestampedoutput&gt;</span>, <span class="code">&lt;/timestampedoutput&gt;</span>) &ndash; Specify whether to generate results in a time-stamped output directory. Supported values are on and off. </li>
-   </ul>
-   <p>An example of an Arguments element: </p>
-   <p class="listing">&lt;arguments&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;input&gt;C:\Symbian\9.2\Epoc32\include&lt;/input&gt;<br />
-    &nbsp;&nbsp;&nbsp;&nbsp;&lt;input&gt;C:\CodeScanner_Tests\includes&lt;/input&gt;   <br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;lxr&gt;http://s60lxr/source/&lt;/lxr&gt;   <br />
-     &nbsp;&nbsp;&nbsp;
-   &lt;lxrversion&gt;S60_3_2_200736&lt;/lxrversion&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;outputformat&gt;html|std&lt;/outputformat&gt;   <br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;timestampedoutput&gt;on&lt;/timestampedoutput&gt; <br />
-   &lt;/arguments&gt; </p>
-   <h4><a name="SRC_Element" id="ARG_Element2"></a>Sources Element</h4>
-   <p>Each Sources element can contain one or more Excludes elements. </p>
-   <ul>
-     <li><b>Excludes</b> element (<span class="code">&lt;excludes&gt;</span>, <span class="code">&lt;/excludes&gt;</span>) &ndash; Each Excludes element contains a string, which is a regular expression that specifies a file type to be ignored by CodeScanner. </li>
-   </ul>
-   <p>An example of a Sources element: </p>
-   <p class="listing">&lt;sources&gt;     <br />
-     &nbsp;&nbsp;&nbsp;&nbsp;&lt;exclude&gt;.*\.avi&lt;/exclude&gt;     <br />
-     &nbsp;&nbsp;&nbsp;&nbsp;&lt;exclude&gt;.*\.bmp&lt;/exclude&gt;     <br />
-     &nbsp;&nbsp;&nbsp;&nbsp;&lt;exclude&gt;.*\.jpg&lt;/exclude&gt;     <br />
-     &nbsp;&nbsp;&nbsp;&nbsp;&lt;exclude&gt;.*\\test\\.*&lt;/exclude&gt; <br />
-   &lt;/sources&gt; </p>
-   <h4><a name="SCRIPT_Element" id="ARG_Element3"></a>Scripts Element</h4>
-   <p>Each Scripts element can contain one or more Script elements, each of which corresponds to a CodeScanner script (each script applies a CodeScanner rule): </p>
-   <ul>
-     <li><b>Script</b> element The name of each Script element matches the name of the corresponding rule, e.g. baseconstruct, forbiddenwords, magicnumbers. Each Script element has the following attributes: 
-       <ul>
-         <li>enable (boolean) &ndash; specifies whether a script is enabled by CodeScanner</li>
-         <li>severity (string) &ndash; specifies the severity level of a script</li>
-         <li>category (string) &ndash; specifies the category of a script</li>
-       </ul>In addition, certain script elements also have special child element or attribute: 
-     </li>
-       <ul>
-         <li><b>wordsRE</b> element (<span class="code">&lt;wordsRE&gt;</span>, <span class="code">&lt;/wordsRE&gt;</span>) &ndash; Specify the child element of the forbiddenwords script element. The wordsRE element contains a string, which is a regular expression that specifies the forbidden words detected by the forbiddenwords script.</li>
-         <li><b>length</b> attribute &ndash; Attribute of the longlines script element. The length attribute is a string that specifies the maximum length of a line of code, beyond which the longlines script flags as a problem. </li>
-         <li><b>LFunctionIgnoreRE</b> element (<span class="code">&lt;LFunctionIgnoreRE&gt;</span>, <span class="code">&lt;/LFunctionIgnoreRE&gt;</span>) &ndash; Specify the child element of the LFunctionCantLeave script element. The LFunctionIgnoreRE element contains a string, which is a regular expression that specifies the L-functions to be ignored by the LFunctionCantLeave script when checking for L-functions inside cannot leave. </li>
-         <li><b>cclassIgnoreRE</b> element (<span class="code">&lt;cclassIgnoreRE&gt;</span>, <span class="code">&lt;/cclassIgnoreRE&gt;</span>) &ndash; Specify the child element of the missingcclass script element. The cclassIgnoreRE element contains a string, which is a regular expression that specifies the classes to be ignored by the missingcclass script when checking for C classes not inheriting from other C classes.</li>
-         <li><b>openIgnoreRE</b> element (<span class="code">&lt;openIgnoreRE&gt;</span>, <span class="code">&lt;/openIgnoreRE&gt;</span>) &ndash; Specify the child element of this open script element. The openIgnoreRE element contains a string, which is a regular expression that specifies the classes or objects to be ignored by the open script when checking for ignored return type from Open(). </li>
-         <li><b>worryRE</b> element (<span class="code">&lt;worryRE&gt;</span>, <span class="code">&lt;/ worryRE&gt;</span>) &ndash; Child element of the worryingcomments script element. The worryRE element contains a string, which is a regular expression that specifies the worrying comments detected by the worryingcomments script. </li>
-     </ul>     
-   </ul>
-   <p>Complete list of currently supported Script elements with default attributes: </p>
-   <p class="listing">&lt;scripts&gt;<br />
-     <br />
-&lt;accessArrayElementWithoutCheck category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;<br />
-&lt;accessArrayElementWithoutCheck2 category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;activestart category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;activestop category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;arraypassing category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;arrayptrcleanup category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;assertdebuginvariant category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;<br />
-<br />
-&lt;baddefines category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;baseconstruct category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;<br />
-<br />
-&lt;callActiveObjectWithoutCheckingOrStopping category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   &lt;changenotification category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;cleanup category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;commentcode category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;connect category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;ConnectAndDontCloseMemberVariable category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   &lt;constnames category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;consttdescptr category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;controlornull category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;ctltargettype category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-<br />
-&lt;debugrom category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;declarename category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;deleteMemberVariable category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;destructor category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;doubleSemiColon category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;driveletters category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;eikbuttons category=&quot;localisation&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;eikonenvstatic category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;enummembers category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;enumnames category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;exportinline category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;exportpurevirtual category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-<br />
-&lt;foff category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;forbiddenwords category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;&gt;       <br />
-&nbsp;&nbsp;&nbsp;&nbsp;&lt;wordsRE&gt;Epoc|Nokia Mobile Phones|NMP|(^|\s)S60&lt;/wordsRE&gt;   <br />
-&lt;/forbiddenwords&gt;<br />
-&lt;forgottoputptroncleanupstack category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;friend category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;goto category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;ifassignments category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;ifpreprocessor category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;inheritanceorder category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;intleaves category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;jmp category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;leave category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;LeaveNoError category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;leavingoperators category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;LFunctionCantLeave category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;&gt;       &lt;LFunctionIgnoreRE&gt;RunL&lt;/LFunctionIgnoreRE&gt;   &lt;/LFunctionCantLeave&gt;   <br />
-&lt;longlines category=&quot;codingstandards&quot; enable=&quot;true&quot; length=&quot;160&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;magicnumbers category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;mclassdestructor category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;memberlc category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;membervariablecallld category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;missingcancel category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;missingcclass category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;&gt;       &nbsp;&nbsp;&nbsp;&nbsp;&lt;cclassIgnoreRE&gt;CBase&lt;/cclassIgnoreRE&gt;   <br />
-&lt;/missingcclass&gt;   <br />
-&lt;mmpsourcepath category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;multilangrsc category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;multipledeclarations category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;multipleinheritance category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;mydocs category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-<br />
-&lt;namespace category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;newlreferences category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;noleavetrap category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;nonconsthbufc category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;nonconsttdesc category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;nonleavenew category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;nonunicodeskins category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;null category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;open category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;&gt;       &nbsp;&nbsp;&nbsp;&nbsp;&lt;openIgnoreRE&gt;RDesReadStream|RDesWriteStream&lt;/openIgnoreRE&gt;<br />
-&lt;/open&gt;   <br />
-<br />
-&lt;pointertoarrays category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;pragmadisable category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;pragmamessage category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;pragmaother category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;privateinheritance category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;pushaddrvar category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;pushmember category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-<br />
-&lt;readresource category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;resourcenotoncleanupstack category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;resourcesonheap category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   &lt;returndescriptoroutofscope category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;rfs category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;rssnames category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;stringliterals category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;stringsinresourcefiles category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;struct category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;tcclasses category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;tclassdestructor category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;todocomments category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;trapcleanup category=&quot;panic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
-&lt;trapeleave category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;traprunl category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;trspassing category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-<br />
-&lt;uids category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;uncompressedaif category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;uncompressedbmp category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;unicodesource category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;userafter category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
-&lt;userfree category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;userWaitForRequest category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;variablenames category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-&lt;voidparameter category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
-<br />
-&lt;worryingcomments category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;&gt;       &nbsp;&nbsp;&nbsp;&nbsp;&lt;worryRE&gt;\!|\?|[Zz]{3}|kludge|workaround|\scrap|hack&lt;/worryRE&gt;   <br />
-&lt;/worryingcomments&gt;<br />
-<br />
-<span class="listing">&lt;/scripts&gt; </span></p>
-   <h4><a name="SEV_Element" id="ARG_Element4"></a>Severities Element</h4>
-   <p>Each Severities element can contain one or more Severity elements, each of which corresponds to a severity level: </p>
-   <ul>
-     <li><b>Severity</b> element The name of each Severity element matches the name of the corresponding severity level. Each Severity element has the following attribute: 
-       <ul>
-         <li>enable (boolean) &ndash; Specifies whether scripts of a particular severity level are enabled by CodeScanner.</li>
-       </ul>
-     </li>
-   </ul>
-   <p> Complete list of currently supported Severity elements: </p>
-   <p class="listing">&lt;severities&gt;<br />
-    &nbsp;&nbsp;&nbsp;&nbsp;&lt;high enable=&rdquo;true&rdquo;/&gt;     <br />
-      &nbsp;&nbsp;&nbsp;
-   &lt;medium enable=&rdquo;true&rdquo;/&gt;     <br />
-    &nbsp;&nbsp;&nbsp;&nbsp;&lt;low enable=&rdquo;false&rdquo;/&gt;<br />
-   &lt;/severities&gt; </p>
-   <h4><a name="CAT_Element" id="ARG_Element5"></a>Categories Element </h4>
-   <p>Each Categories element can contain one or more Category elements, each of which corresponds to a category of CodeScanner scripts: </p>
-   <ul>
-     <li><b>Category</b> element The name of each Category element matches the name of the corresponding script category. Each Category element has the following attribute: 
-       <ul>
-         <li>enable (boolean) &ndash; Specifies whether scripts of a particular category are enabled by CodeScanner. </li>
-       </ul>
-     </li>
-   </ul>
-   <p>Complete list of currently supported Category elements: </p>
-   <p class="listing">&lt;categories&gt;     <br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;legal enable=&quot;true&quot;/&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;panic enable=&rdquo;true&rdquo;&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;canpanic enable=&quot;true&quot;/&gt;     <br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;functionality enable=&rdquo;true&rdquo;/&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;localisation enable=&quot;true&quot;/&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;performance enable=&rdquo;true&rdquo;&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;codingstandards enable=&quot;true&quot;/&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;documentation enable=&rdquo;false&rdquo;/&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;codereview enable=&rdquo;false&rdquo;/&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;other enable=&quot;true&quot;/&gt; <br />
-   &lt;/categories&gt;</p>
-   <h4><a name="RULE_Element" id="ARG_Element6"></a>Customrules Element </h4>
-   <p>Each custom rules element can contain one or more custom rule elements, each of which defines a custom rule to be applied by CodeScanner during scanning operation: </p>
-   <ul>
-     <li><b>Custom</b> rule element (<span class="code">&lt;customrule&gt;</span>, <span class="code">&lt;/customrule&gt;</span>) </li>
-   </ul>
-   <p>Each custom rule element contains the following elements: </p>
-   <ul>
-     <li><b>Name</b> element (<span class="code">&lt;name&gt;</span>, <span class="code">&lt;/name&gt;</span>) &ndash; The name element specifies the name used by CodeScanner internally to identify a custom rule. A custom rule element can only have one name element.</li>
-     <li> <b>Keyword</b> element (<span class="code">&lt;keyword&gt;</span>, <span class="code">&lt;/keyword&gt;</span>) &ndash; A keyword element specifies a keyword to use when applying a custom rule. A custom rule element can have multiple keyword elements. <br />
-       <br /> 
-       A keyword element also has the following attribute: 
-       <ul>
-         <li>type(string) &ndash; specifies the type of a keyword. Here is a list of currently supported keyword types:
-           <ul>
-             <li>baseclass (name of the base class from the declaration of a sub-class) </li>
-             <li>call (name of a called method) </li>
-             <li>class (name used in the declaration/definition of a class) </li>
-             <li>comment (keyword from a comment) </li>
-             <li>generic (keyword used in generic search, i.e. look for anything that matches the keyword) </li>
-             <li>local (name used in the definition of a local variable)</li>
-             <li>macro (name used in the definition of a macro) </li>
-             <li>member (name used in the definition of a data member)</li>
-             <li> method (name used in the declaration/definition of a method) </li>
-             <li>parameter (name of a resource statement parameter) </li>
-           </ul>
-         </li>
-       </ul>
-     </li>
-     <li><b>File type</b> element (<span class="code">&lt;filetype&gt;</span>, <span class="code">&lt;/filetype&gt;</span>) &ndash; A file type element specifies a file extension type to  scan when applying a custom rule. A custom rule element can have multiple file type elements.  This element is required.</li>
-     <li><b>Severity</b> element (<span class="code">&lt;severity&gt;</span>, <span class="code">&lt;/severity&gt;</span>) &ndash; A severity element specifies the severity level of a custom rule: high, medium or low. A custom rule element can have only one severity element.</li>
-     <li><b>Title</b> element (<span class="code">&lt;title&gt;</span>,<span class="code"> &lt;/title&gt;</span>) &ndash; A title element specifies a title message associated with a custom rule. This is used as the title of HTML report or stdout warning/error message generated when applying a custom rule. A custom rule element can have only one title element.</li>
-     <li><b>Description</b> element (<span class="code">&lt;description&gt;</span>, <span class="code">&lt;/description&gt;</span>) &ndash; A description element specifies a detailed description of a custom rule. This is used when generating HTML reports or warning/error messages for stdout when applying a custom rule. A custom rule element can have zero or one description element.</li>
-     <li><b>Link</b> element (<span class="code">&lt;link&gt;</span>, <span class="code">&lt;/link&gt;</span>) &ndash; A link element specifies any external link associated with a custom rule. This is used when generating HTML reports or warning/error messages for stdout when applying a custom rule. A custom rule element can have zero or one link element. </li>
-   </ul>
-   <p>An example of CustomRules element: </p>
-   <p class="listing">&lt;customrules&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;customrule&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;myOwnRule&lt;/name&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;keyword type=&rdquo;class&rdquo;&gt;CMyOwnClass&lt;/keyword&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filetype&gt;h&lt;/filetype&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;severity&gt;low&lt;/severity&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;My own little CodeScanner rule&lt;/title&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;Locate the definition of CMyOwnClass::MyFunction()&lt;/description&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link&gt;http://www.myownsite.nokia.com&lt;/link&gt;<br />
-   &nbsp;&nbsp;&nbsp;&nbsp;&lt;/customrule&gt;<br />
-   &lt;/customrules&gt;</p>
-   <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br />License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-</body>
-   </html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head>
+<title>Customizing CodeScanner Rules</title>
+<link rel="StyleSheet" href="../book.css" type="text/css"/>
+<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
+</head>
+   <body>
+   <div class="Head1">
+<h2>Customizing CodeScanner Rules</h2>
+</div>
+   <p> The CodeScanner command line tool currently accepts an XML configuration file, which controls scanning behavior, like the file types to ignore and which rules to apply. Using the elements contained here makes it possible to customize the scanning rules to include new rules unique to your development environment.</p>
+   <p>This page describes the format of CodeScanner config file (<span class="code">codescannerconfig.xml</span>), which is used for the following purposes: </p>
+   <ul>
+     <li>Controls scanning behavior of the CodeScanner command line tool</li>
+     <li> Importing/exporting rules and file types from CodeScanner preference pages in Carbide.c++ IDE </li>
+   </ul>
+   <h2>CODESCANNERCONFIG.XML File</h2>
+   <p>The CodeScanner config file is an XML formatted file created by CodeScanner when a scan is performed or when the CodeScaner preference settings are <a href="pref_codescanner_01.htm">exported</a>. The file  contains the following elements: </p>
+   <ul>
+     <li><a href="#ARG_Element">Arguments</a> element &ndash; specifies the arguments to be passed to CodeScanner</li>
+     <li><a href="#SRC_Element">Sources</a> element &ndash; specifies the file types to be ignored by CodeScanner</li>
+     <li><a href="#SCRIPT_Element">Scripts</a> element &ndash; specifies the rules to be applied by CodeScanner</li>
+     <li><a href="#SEV_Element">Severities</a> element &ndash; specifies the severity levels of rules to be applied by CodeScanner</li>
+     <li><a href="#CAT_Element">Categories</a> element &ndash; specifies the categories of rules to be applied by CodeScanner</li>
+     <li><a href="#RULE_Element">CustomRules</a> element &ndash; specifies user defined rules to be applied by CodeScanner</li>
+   </ul>
+   <h4><a name="ARG_Element" id="ARG_Element"></a>Arguments Element</h4>
+   <p>Each Arguments element contains one or more of the following arguments: </p>
+   <ul>
+     <li><b>Input</b> element (<span class="code">&lt;input&gt;</span>, <span class="code">&lt;/input&gt;</span>) &ndash; Specify an additional directory or file to scan. </li>
+     <li><b>Outputformat</b> element (<span class="code">&lt;outputformat&gt;</span>, <span class="code">&lt;/outputformat&gt;</span>) &ndash; Specify the output format(s) of the results generated by CodeScanner. Currently the following output formats are supported: 
+       <ul>
+         <li>html &ndash; generate HTML report</li>
+         <li> xml &ndash; generate an XML report</li>
+         <li> std &ndash; generate messages in standard console output</li>
+       </ul>
+     </li>
+     <li><b>LXR</b> element (<span class="code">&lt;lxr&gt;</span>, <span class="code">&lt;/lxr&gt;</span>) &ndash;  Specify the URL to an LXR site. When this argument is present, CodeScanner  generates links to the specified LXR site instead of the local file system. </li>
+     <li><b>LXR version</b> element (<span class="code">&lt;lxrversion&gt;</span>, <span class="code">&lt;/lxrversion&gt;</span>) &ndash; Specify the LXR version when generating links to an LXR site. </li>
+     <li><b>Timestampedoutput</b> element (<span class="code">&lt;timestampedoutput&gt;</span>, <span class="code">&lt;/timestampedoutput&gt;</span>) &ndash; Specify whether to generate results in a time-stamped output directory. Supported values are on and off. </li>
+   </ul>
+   <p>An example of an Arguments element: </p>
+   <p class="listing">&lt;arguments&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;input&gt;C:\Symbian\9.2\Epoc32\include&lt;/input&gt;<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&lt;input&gt;C:\CodeScanner_Tests\includes&lt;/input&gt;   <br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;lxr&gt;http://s60lxr/source/&lt;/lxr&gt;   <br />
+     &nbsp;&nbsp;&nbsp;
+   &lt;lxrversion&gt;S60_3_2_200736&lt;/lxrversion&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;outputformat&gt;html|std&lt;/outputformat&gt;   <br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;timestampedoutput&gt;on&lt;/timestampedoutput&gt; <br />
+   &lt;/arguments&gt; </p>
+   <h4><a name="SRC_Element" id="ARG_Element2"></a>Sources Element</h4>
+   <p>Each Sources element can contain one or more Excludes elements. </p>
+   <ul>
+     <li><b>Excludes</b> element (<span class="code">&lt;excludes&gt;</span>, <span class="code">&lt;/excludes&gt;</span>) &ndash; Each Excludes element contains a string, which is a regular expression that specifies a file type to be ignored by CodeScanner. </li>
+   </ul>
+   <p>An example of a Sources element: </p>
+   <p class="listing">&lt;sources&gt;     <br />
+     &nbsp;&nbsp;&nbsp;&nbsp;&lt;exclude&gt;.*\.avi&lt;/exclude&gt;     <br />
+     &nbsp;&nbsp;&nbsp;&nbsp;&lt;exclude&gt;.*\.bmp&lt;/exclude&gt;     <br />
+     &nbsp;&nbsp;&nbsp;&nbsp;&lt;exclude&gt;.*\.jpg&lt;/exclude&gt;     <br />
+     &nbsp;&nbsp;&nbsp;&nbsp;&lt;exclude&gt;.*\\test\\.*&lt;/exclude&gt; <br />
+   &lt;/sources&gt; </p>
+   <h4><a name="SCRIPT_Element" id="ARG_Element3"></a>Scripts Element</h4>
+   <p>Each Scripts element can contain one or more Script elements, each of which corresponds to a CodeScanner script (each script applies a CodeScanner rule): </p>
+   <ul>
+     <li><b>Script</b> element The name of each Script element matches the name of the corresponding rule, e.g. baseconstruct, forbiddenwords, magicnumbers. Each Script element has the following attributes: 
+       <ul>
+         <li>enable (boolean) &ndash; specifies whether a script is enabled by CodeScanner</li>
+         <li>severity (string) &ndash; specifies the severity level of a script</li>
+         <li>category (string) &ndash; specifies the category of a script</li>
+       </ul>In addition, certain script elements also have special child element or attribute: 
+     </li>
+       <ul>
+         <li><b>wordsRE</b> element (<span class="code">&lt;wordsRE&gt;</span>, <span class="code">&lt;/wordsRE&gt;</span>) &ndash; Specify the child element of the forbiddenwords script element. The wordsRE element contains a string, which is a regular expression that specifies the forbidden words detected by the forbiddenwords script.</li>
+         <li><b>length</b> attribute &ndash; Attribute of the longlines script element. The length attribute is a string that specifies the maximum length of a line of code, beyond which the longlines script flags as a problem. </li>
+         <li><b>LFunctionIgnoreRE</b> element (<span class="code">&lt;LFunctionIgnoreRE&gt;</span>, <span class="code">&lt;/LFunctionIgnoreRE&gt;</span>) &ndash; Specify the child element of the LFunctionCantLeave script element. The LFunctionIgnoreRE element contains a string, which is a regular expression that specifies the L-functions to be ignored by the LFunctionCantLeave script when checking for L-functions inside cannot leave. </li>
+         <li><b>cclassIgnoreRE</b> element (<span class="code">&lt;cclassIgnoreRE&gt;</span>, <span class="code">&lt;/cclassIgnoreRE&gt;</span>) &ndash; Specify the child element of the missingcclass script element. The cclassIgnoreRE element contains a string, which is a regular expression that specifies the classes to be ignored by the missingcclass script when checking for C classes not inheriting from other C classes.</li>
+         <li><b>openIgnoreRE</b> element (<span class="code">&lt;openIgnoreRE&gt;</span>, <span class="code">&lt;/openIgnoreRE&gt;</span>) &ndash; Specify the child element of this open script element. The openIgnoreRE element contains a string, which is a regular expression that specifies the classes or objects to be ignored by the open script when checking for ignored return type from Open(). </li>
+         <li><b>worryRE</b> element (<span class="code">&lt;worryRE&gt;</span>, <span class="code">&lt;/ worryRE&gt;</span>) &ndash; Child element of the worryingcomments script element. The worryRE element contains a string, which is a regular expression that specifies the worrying comments detected by the worryingcomments script. </li>
+     </ul>     
+   </ul>
+   <p>Complete list of currently supported Script elements with default attributes: </p>
+   <p class="listing">&lt;scripts&gt;<br />
+     <br />
+&lt;accessArrayElementWithoutCheck category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;<br />
+&lt;accessArrayElementWithoutCheck2 category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;activestart category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;activestop category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;arraypassing category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;arrayptrcleanup category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;assertdebuginvariant category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;<br />
+<br />
+&lt;baddefines category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;baseconstruct category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;<br />
+<br />
+&lt;callActiveObjectWithoutCheckingOrStopping category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   &lt;changenotification category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;cleanup category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;commentcode category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;connect category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+&lt;ConnectAndDontCloseMemberVariable category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   &lt;constnames category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;consttdescptr category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;controlornull category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br>
+&lt;crepository category=&quot;other&quot;                   enable=&quot;true&quot;                   severity=&quot;low&quot;/&gt;<br />
+&lt;ctltargettype category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;customizableicons category=&quot;other&quot;                         enable=&quot;true&quot;                         severity=&quot;low&quot;&gt;<br>
+	&nbsp;&nbsp;&nbsp;&nbsp;&lt;iconsRE&gt;iconA.bmp|iconB.svg|iconC&lt;/iconsRE&gt;     <br>
+	&lt;/customizableicons&gt;<br>
+<br />
+&lt;debugrom category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;declarename category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;deleteMemberVariable category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+&lt;destructor category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+&lt;doubleSemiColon category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;driveletters category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;eikbuttons category=&quot;localisation&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;eikonenvstatic category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;enummembers category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;enumnames category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;exportinline category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;exportpurevirtual category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+  <br />
+&lt;flags category=&quot;other&quot;             enable=&quot;true&quot;             severity=&quot;low&quot;/&gt;<br>
+&lt;foff category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;forbiddenwords category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;&gt;       <br />
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;wordsRE&gt;Epoc|Nokia Mobile Phones|NMP|(^|\s)S60&lt;/wordsRE&gt;   <br />
+&lt;/forbiddenwords&gt;<br />
+&lt;forgottoputptroncleanupstack category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;friend category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;goto category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;ifassignments category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;ifpreprocessor category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;inheritanceorder category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+&lt;intleaves category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;jmp category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;leave category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+&lt;LeaveNoError category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;leavingoperators category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;LFunctionCantLeave category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;&gt;       &lt;LFunctionIgnoreRE&gt;RunL&lt;/LFunctionIgnoreRE&gt;   &lt;/LFunctionCantLeave&gt;   <br />
+&lt;longlines category=&quot;codingstandards&quot; enable=&quot;true&quot; length=&quot;160&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;magicnumbers category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;mclassdestructor category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;memberlc category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+&lt;membervariablecallld category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;missingcancel category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;missingcclass category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;&gt;       &nbsp;&nbsp;&nbsp;&nbsp;&lt;cclassIgnoreRE&gt;CBase&lt;/cclassIgnoreRE&gt;   <br />
+&lt;/missingcclass&gt;   <br />
+&lt;mmpsourcepath category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;multilangrsc category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;multipledeclarations category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;multipleinheritance category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;mydocs category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+  <br />
+&lt;namespace category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;newlreferences category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;noleavetrap category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;nonconsthbufc category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;nonconsttdesc category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;nonleavenew category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;nonunicodeskins category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;null category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;open category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;&gt;       &nbsp;&nbsp;&nbsp;&nbsp;&lt;openIgnoreRE&gt;RDesReadStream|RDesWriteStream&lt;/openIgnoreRE&gt;<br />
+&lt;/open&gt;   <br />
+  <br />
+&lt;pointertoarrays category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;pragmadisable category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;pragmamessage category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;pragmaother category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;privateinheritance category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;pushaddrvar category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+&lt;pushmember category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+  <br />
+&lt;readresource category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+&lt;resourcenotoncleanupstack category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;resourcesonheap category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   &lt;returndescriptoroutofscope category=&quot;canpanic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+&lt;rfs category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;rssnames category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;stringliterals category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;stringsinresourcefiles category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;struct category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;tcclasses category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;tclassdestructor category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;todocomments category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;trapcleanup category=&quot;panic&quot; enable=&quot;true&quot; severity=&quot;high&quot;/&gt;   <br />
+&lt;trapeleave category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;traprunl category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;trspassing category=&quot;functionality&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+  <br />
+&lt;uids category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;uncompressedaif category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;uncompressedbmp category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;unicodesource category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;userafter category=&quot;performance&quot; enable=&quot;true&quot; severity=&quot;medium&quot;/&gt;   <br />
+&lt;userfree category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;userWaitForRequest category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;variablenames category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+&lt;voidparameter category=&quot;codingstandards&quot; enable=&quot;true&quot; severity=&quot;low&quot;/&gt;   <br />
+  <br />
+&lt;worryingcomments category=&quot;codereview&quot; enable=&quot;true&quot; severity=&quot;low&quot;&gt;       &nbsp;&nbsp;&nbsp;&nbsp;&lt;worryRE&gt;\!|\?|[Zz]{3}|kludge|workaround|\scrap|hack&lt;/worryRE&gt;   <br />
+&lt;/worryingcomments&gt;<br />
+  <br />
+  <span class="listing">&lt;/scripts&gt; </span></p>
+   <h4><a name="SEV_Element" id="ARG_Element4"></a>Severities Element</h4>
+   <p>Each Severities element can contain one or more Severity elements, each of which corresponds to a severity level: </p>
+   <ul>
+     <li><b>Severity</b> element The name of each Severity element matches the name of the corresponding severity level. Each Severity element has the following attribute: 
+       <ul>
+         <li>enable (boolean) &ndash; Specifies whether scripts of a particular severity level are enabled by CodeScanner.</li>
+       </ul>
+     </li>
+   </ul>
+   <p> Complete list of currently supported Severity elements: </p>
+   <p class="listing">&lt;severities&gt;<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&lt;high enable=&rdquo;true&rdquo;/&gt;     <br />
+      &nbsp;&nbsp;&nbsp;
+   &lt;medium enable=&rdquo;true&rdquo;/&gt;     <br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&lt;low enable=&rdquo;false&rdquo;/&gt;<br />
+   &lt;/severities&gt; </p>
+   <h4><a name="CAT_Element" id="ARG_Element5"></a>Categories Element </h4>
+   <p>Each Categories element can contain one or more Category elements, each of which corresponds to a category of CodeScanner scripts: </p>
+   <ul>
+     <li><b>Category</b> element The name of each Category element matches the name of the corresponding script category. Each Category element has the following attribute: 
+       <ul>
+         <li>enable (boolean) &ndash; Specifies whether scripts of a particular category are enabled by CodeScanner. </li>
+       </ul>
+     </li>
+   </ul>
+   <p>Complete list of currently supported Category elements: </p>
+   <p class="listing">&lt;categories&gt;     <br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;legal enable=&quot;true&quot;/&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;panic enable=&rdquo;true&rdquo;&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;canpanic enable=&quot;true&quot;/&gt;     <br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;functionality enable=&rdquo;true&rdquo;/&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;localisation enable=&quot;true&quot;/&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;performance enable=&rdquo;true&rdquo;&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;codingstandards enable=&quot;true&quot;/&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;documentation enable=&rdquo;false&rdquo;/&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;codereview enable=&rdquo;false&rdquo;/&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;other enable=&quot;true&quot;/&gt; <br />
+   &lt;/categories&gt;</p>
+   <h4><a name="RULE_Element" id="ARG_Element6"></a>Customrules Element </h4>
+   <p>Each custom rules element can contain one or more custom rule elements, each of which defines a custom rule to be applied by CodeScanner during scanning operation: </p>
+   <ul>
+     <li><b>Custom</b> rule element (<span class="code">&lt;customrule&gt;</span>, <span class="code">&lt;/customrule&gt;</span>) </li>
+   </ul>
+   <p>Each custom rule element contains the following elements: </p>
+   <ul>
+     <li><b>Name</b> element (<span class="code">&lt;name&gt;</span>, <span class="code">&lt;/name&gt;</span>) &ndash; The name element specifies the name used by CodeScanner internally to identify a custom rule. A custom rule element can only have one name element.</li>
+     <li> <b>Keyword</b> element (<span class="code">&lt;keyword&gt;</span>, <span class="code">&lt;/keyword&gt;</span>) &ndash; A keyword element specifies a keyword to use when applying a custom rule. A custom rule element can have multiple keyword elements. <br />
+       <br /> 
+       A keyword element also has the following attribute: 
+       <ul>
+         <li>type(string) &ndash; specifies the type of a keyword. Here is a list of currently supported keyword types:
+           <ul>
+             <li>baseclass (name of the base class from the declaration of a sub-class) </li>
+             <li>call (name of a called method) </li>
+             <li>class (name used in the declaration/definition of a class) </li>
+             <li>comment (keyword from a comment) </li>
+             <li>generic (keyword used in generic search, i.e. look for anything that matches the keyword) </li>
+             <li>local (name used in the definition of a local variable)</li>
+             <li>macro (name used in the definition of a macro) </li>
+             <li>member (name used in the definition of a data member)</li>
+             <li> method (name used in the declaration/definition of a method) </li>
+             <li>parameter (name of a resource statement parameter) </li>
+           </ul>
+         </li>
+       </ul>
+     </li>
+     <li><b>File type</b> element (<span class="code">&lt;filetype&gt;</span>, <span class="code">&lt;/filetype&gt;</span>) &ndash; A file type element specifies a file extension type to  scan when applying a custom rule. A custom rule element can have multiple file type elements.  This element is required.</li>
+     <li><b>Severity</b> element (<span class="code">&lt;severity&gt;</span>, <span class="code">&lt;/severity&gt;</span>) &ndash; A severity element specifies the severity level of a custom rule: high, medium or low. A custom rule element can have only one severity element.</li>
+     <li><b>Title</b> element (<span class="code">&lt;title&gt;</span>,<span class="code"> &lt;/title&gt;</span>) &ndash; A title element specifies a title message associated with a custom rule. This is used as the title of HTML report or stdout warning/error message generated when applying a custom rule. A custom rule element can have only one title element.</li>
+     <li><b>Description</b> element (<span class="code">&lt;description&gt;</span>, <span class="code">&lt;/description&gt;</span>) &ndash; A description element specifies a detailed description of a custom rule. This is used when generating HTML reports or warning/error messages for stdout when applying a custom rule. A custom rule element can have zero or one description element.</li>
+     <li><b>Link</b> element (<span class="code">&lt;link&gt;</span>, <span class="code">&lt;/link&gt;</span>) &ndash; A link element specifies any external link associated with a custom rule. This is used when generating HTML reports or warning/error messages for stdout when applying a custom rule. A custom rule element can have zero or one link element. </li>
+   </ul>
+   <p>An example of CustomRules element: </p>
+   <p class="listing">&lt;customrules&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;customrule&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;myOwnRule&lt;/name&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;keyword type=&rdquo;class&rdquo;&gt;CMyOwnClass&lt;/keyword&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filetype&gt;h&lt;/filetype&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;severity&gt;low&lt;/severity&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;My own little CodeScanner rule&lt;/title&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;Locate the definition of CMyOwnClass::MyFunction()&lt;/description&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link&gt;http://www.myownsite.nokia.com&lt;/link&gt;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&lt;/customrule&gt;<br />
+   &lt;/customrules&gt;</p>
+   <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br />License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+</body>
+   </html>
    
\ No newline at end of file
Binary file core/com.nokia.carbide.cpp.codescanner/html/images/brand/about_cpp.png has changed
Binary file core/com.nokia.carbide.cpp.codescanner/html/images/brand/background_carbide.jpg has changed
--- a/core/com.nokia.carbide.cpp.codescanner/html/release_notes.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/html/release_notes.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -1,85 +1,97 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type"
- content="text/html; charset=ISO-8859-1">
-<title>Release Notes</title>
-<link href="../book.css" rel="stylesheet" type="text/css">
-</head>
-<body bgcolor="#FFFFFF">
-<h2>CodeScanner Release Notes v2.1.2</h2>
-<ul>
-  <li> <a href="#Changes_from_Previous_Releases">Changes from Previous Releases</a></li>
-  <li><a href="#whatsNew">What's new </a></li>
-  <li><a href="#pi_bugs">Fixed bugs and workarounds</a></li>
-  <li><a href="#support">Technical support</a></li>
-</ul>
-<h3><a name="Changes_from_Previous_Releases"></a>Changes from Previous Releases</h3>
-<ul>
-  <li>Added support for  <a href="pref_codescaner_01.htm">Knowledge Base Scanning</a>, the ability to scan code and detect possible  API issues related to a specific SDK, for example when porting to a new Touch UI SDK. For each SDK, specific porting information is defined as a set of rules specified in  XML files. CodeScanner can merge these into the existing set of CodeScanner rules for   scanning operations. The results are displayed in the <strong>Console</strong> view and as information markers  in source code.</li>
-</ul>
-<h4>2.1.1</h4>
-<ul>
-  <li>Added support for user-defined rules. This can be done by adding a <span class="code">&lt;customrules&gt;</span> element to the configuration file.</li>
-  <li>When scanning with low severity rules, CodeScanner now generates informative messages instead of warnings when the StdOut output format is selected.</li>
-  <li>Added support to disable individual error/warning via CodeScanner command embedded in comments. </li>
-  <li>Added new rule to check whether Cancel() function is called in active object's destructor.<br>
-  </li>
-  <li>Updated active object checking rule to ignore After() from RTimer type member variables.</li>
-  <li>Updated to skip excluded folders specified in configuration file when generating component summary reports.</li>
-</ul>
-<h4>2.1.0</h4>
-<ul>
-  <li>Updated to skip excluded folders specified in configuration file when generating component summary reports.</li>
-  <li>Updated configuration file format to allow passing arguments to CodeScanner. One can now add an &lt;arguments&gt; element to the <br>
-    configuration file.</li>
-  <li>Added new rule to check stack-based resource objects not put on the cleanup stack.</li>
-  <li> Added new rule to check inheritance order of M and C classes. <br>
-  </li>
-  <li>Updated rule for L-functions that cannot leave. It is now possible to specify functions to be ignored by this rule in the<br>
-    configuration file. This is done by adding a &lt;LFunctionIgnoreRE&gt; element to the &lt;LFunctionCantLeave&gt; script element.<br>
-  </li>
-  <li>Updated description of rule for badly-named enum members.</li>
-  <li>Updated NULL equality check rule to ignore pointer comparisons with NULL inside various __ASSERT_XXX() macros.</li>
-  <li>Removed duplicate rule for hard-coded external drive letters. <br>
-  </li>
-  <li>Improved rule for accessing array element by [] without checking range.<br>
-  </li>
-</ul>
-<h4>2.0.9</h4>
-<ul>
-  <li> Updated check for Open() to allow assignment of return value on a different line.</li>
-</ul>
-<h4>2.0.8</h4>
-<ul>
-  <li>Updated check for C class not inheriting from another C class.</li>
-  <li>Updated check for ignored Open() return value.</li>
-  <li>Fixed a bug where some scripts cannot be disabled from the configuration file.</li>
-</ul>
-<h4>2.0.7</h4>
-<ul>
-  <li>  Updated standard console output to include severity level and category information in the error/warning messages.
-  </li>
-  <li>Incorporated Psyco module to improve scanning performance. Please refer to the document &quot;MIT license.txt&quot; for licensing info.</li>
-</ul>
-<h3><a name="whatsNew" id="whatsNew"></a>What's New </h3>
-<ul>
-  
-  <li><a href="optimizing_cs.htm">Added</a> support to disable individual error/warning messages via CodeScanner command in comments.</li>
-  <li>Added support to scan code for porting issues related to new SDKs. </li>
-</ul>
-<h3><a name="pi_bugs"></a>Fixed bugs and workarounds</h3>
-<ul>
-  <li>Complete list of CodeScanner <a href="bugs_fixed.htm">bugs fixed</a></li>
-</ul>
-<p>Workarounds for known issues:</p>
-<ul>
-  <li><i>none to mention </i></li>
-</ul>
-<h3><a name="support" id="support"></a>Technical support </h3>
-<p>The following support services are available:</p>
-<ul><li>Customer feedback - send your comments and suggestions to <a href="mailto:feedback.carbide@nokia.com">feedback.carbide@nokia.com</a></li>
-</ul>
-<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="content-type"
+ content="text/html; charset=ISO-8859-1">
+<title>Release Notes</title>
+<link href="../book.css" rel="stylesheet" type="text/css">
+</head>
+<body bgcolor="#FFFFFF">
+<h2>CodeScanner Release Notes v2.1.3</h2>
+<ul>
+  <li> <a href="#Changes_from_Previous_Releases">Changes from Previous Releases</a></li>
+  <li><a href="#whatsNew">What's new </a></li>
+  <li><a href="#pi_bugs">Fixed bugs and workarounds</a></li>
+  <li><a href="#support">Technical support</a></li>
+</ul>
+<h3><a name="Changes_from_Previous_Releases"></a>Changes from Previous Releases</h3>
+<ul>
+  
+  <li>Added support for the following IAD user-defined <a href="customizing_cs.htm">rules</a>. The new rules include:
+    <ul>
+      
+      <li><span class="code">&lt;flags&gt;</span> - new IAD rule to check flag usage</li>
+      <li><span class="code">&lt;crepository&gt; </span>- new IAD rule to check Central Repository usage</li>
+      <li><span class="code">&lt;customizableicons&gt; </span>- new IAD rule to check customizable icons</li>
+    </ul>
+  </li>
+</ul>
+<h4>2.1.2</h4>
+<ul>
+  <li>Added support for  <a href="pref_codescaner_01.htm">Knowledge Base Scanning</a>, the ability to scan code and detect possible  API issues related to a specific SDK, for example when porting to a new Touch UI SDK. For each SDK, specific porting information is defined as a set of rules specified in  XML files. CodeScanner can merge these into the existing set of CodeScanner rules for   scanning operations. The results are displayed in the <strong>Console</strong> view and as information markers  in source code.</li>
+</ul>
+<h4>2.1.1</h4>
+<ul>
+  <li>Added support for user-defined rules. This can be done by adding a <span class="code">&lt;customrules&gt;</span> element to the configuration file.</li>
+  <li>When scanning with low severity rules, CodeScanner now generates informative messages instead of warnings when the StdOut output format is selected.</li>
+  <li>Added support to disable individual error/warning via CodeScanner command embedded in comments. </li>
+  <li>Added new rule to check whether Cancel() function is called in active object's destructor.<br>
+  </li>
+  <li>Updated active object checking rule to ignore After() from RTimer type member variables.</li>
+  <li>Updated to skip excluded folders specified in configuration file when generating component summary reports.</li>
+</ul>
+<h4>2.1.0</h4>
+<ul>
+  <li>Updated to skip excluded folders specified in configuration file when generating component summary reports.</li>
+  <li>Updated configuration file format to allow passing arguments to CodeScanner. One can now add an &lt;arguments&gt; element to the <br>
+    configuration file.</li>
+  <li>Added new rule to check stack-based resource objects not put on the cleanup stack.</li>
+  <li> Added new rule to check inheritance order of M and C classes. <br>
+  </li>
+  <li>Updated rule for L-functions that cannot leave. It is now possible to specify functions to be ignored by this rule in the<br>
+    configuration file. This is done by adding a &lt;LFunctionIgnoreRE&gt; element to the &lt;LFunctionCantLeave&gt; script element.<br>
+  </li>
+  <li>Updated description of rule for badly-named enum members.</li>
+  <li>Updated NULL equality check rule to ignore pointer comparisons with NULL inside various __ASSERT_XXX() macros.</li>
+  <li>Removed duplicate rule for hard-coded external drive letters. <br>
+  </li>
+  <li>Improved rule for accessing array element by [] without checking range.<br>
+  </li>
+</ul>
+<h4>2.0.9</h4>
+<ul>
+  <li> Updated check for Open() to allow assignment of return value on a different line.</li>
+</ul>
+<h4>2.0.8</h4>
+<ul>
+  <li>Updated check for C class not inheriting from another C class.</li>
+  <li>Updated check for ignored Open() return value.</li>
+  <li>Fixed a bug where some scripts cannot be disabled from the configuration file.</li>
+</ul>
+<h4>2.0.7</h4>
+<ul>
+  <li>  Updated standard console output to include severity level and category information in the error/warning messages.
+  </li>
+  <li>Incorporated Psyco module to improve scanning performance. Please refer to the document &quot;MIT license.txt&quot; for licensing info.</li>
+</ul>
+<h3><a name="whatsNew" id="whatsNew"></a>What's New </h3>
+<ul>
+  
+  <li><a href="optimizing_cs.htm">Added</a> support to disable individual error/warning messages via CodeScanner command in comments.</li>
+  <li>Added support to scan code for porting issues related to new SDKs. </li>
+</ul>
+<h3><a name="pi_bugs"></a>Fixed bugs and workarounds</h3>
+<ul>
+  <li>Complete list of CodeScanner <a href="bugs_fixed.htm">bugs fixed</a></li>
+</ul>
+<p>Workarounds for known issues:</p>
+<ul>
+  <li><i>none to mention </i></li>
+</ul>
+<h3><a name="support" id="support"></a>Technical support </h3>
+<p>The following support services are available:</p>
+<ul><li>Customer feedback - send your comments and suggestions to <a href="mailto:feedback.carbide@nokia.com">feedback.carbide@nokia.com</a></li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+</body>
+</html>
--- a/core/com.nokia.carbide.cpp.codescanner/schema/CSConfig.ecore	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/schema/CSConfig.ecore	Sat Apr 25 12:54:10 2009 -0500
@@ -813,6 +813,37 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CrepositoryType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="crepository_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//CategoryType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="category"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="enable" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="enable"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="severity" eType="#//SeverityType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="severity"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CtltargettypeType">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="ctltargettype_._type"/>
@@ -844,6 +875,45 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CustomizableiconsType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="customizableicons_._type"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="iconsRE" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="iconsRE"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//CategoryType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="category"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="enable" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="enable"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="severity" eType="#//SeverityType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="severity"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CustomrulesType">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="customrules_._type"/>
@@ -1309,6 +1379,15 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="crepository" upperBound="-2"
+        eType="#//CrepositoryType" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="crepository"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ctltargettype" upperBound="-2"
         eType="#//CtltargettypeType" volatile="true" transient="true" derived="true"
         containment="true" resolveProxies="false">
@@ -1318,6 +1397,15 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="customizableicons" upperBound="-2"
+        eType="#//CustomizableiconsType" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="customizableicons"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="customrule" upperBound="-2"
         eType="#//CustomruleType" volatile="true" transient="true" derived="true"
         containment="true" resolveProxies="false">
@@ -1489,6 +1577,15 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="flags" upperBound="-2"
+        eType="#//FlagsType" volatile="true" transient="true" derived="true" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="flags"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="foff" upperBound="-2" eType="#//FoffType"
         volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1549,6 +1646,15 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="iconsRE" unique="false"
+        upperBound="-2" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"
+        volatile="true" transient="true" derived="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="iconsRE"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ifassignments" upperBound="-2"
         eType="#//IfassignmentsType" volatile="true" transient="true" derived="true"
         containment="true" resolveProxies="false">
@@ -2622,6 +2728,37 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FlagsType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="flags_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//CategoryType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="category"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="enable" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="enable"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="severity" eType="#//SeverityType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="severity"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FoffType">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="foff_._type"/>
@@ -4464,6 +4601,14 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="crepository" eType="#//CrepositoryType"
+        volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="crepository"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ctltargettype" eType="#//CtltargettypeType"
         volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -4472,6 +4617,14 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="customizableicons" eType="#//CustomizableiconsType"
+        volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="customizableicons"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="debugrom" eType="#//DebugromType"
         volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -4576,6 +4729,14 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="flags" eType="#//FlagsType"
+        volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="flags"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="foff" eType="#//FoffType"
         volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
--- a/core/com.nokia.carbide.cpp.codescanner/schema/CSConfig.genmodel	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/schema/CSConfig.genmodel	Sat Apr 25 12:54:10 2009 -0500
@@ -2,10 +2,8 @@
 <genmodel:GenModel xmi:version="2.0"
     xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
     xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/com.nokia.carbide.cpp.codescanner/src"
-    modelPluginID="com.nokia.carbide.cpp.codescanner" modelName="CSConfig" editPluginClass="com.nokia.carbide.cpp.codescanner.gen.CSConfig.provider.CSConfigEditPlugin"
-    editorPluginClass="com.nokia.carbide.cpp.codescanner.gen.CSConfig.presentation.CSConfigEditorPlugin"
-    testSuiteClass="com.nokia.carbide.cpp.codescanner.tests.gen.CSConfigAllTests"
-    importerID="org.eclipse.xsd.ecore.importer" complianceLevel="5.0">
+    modelPluginID="com.nokia.carbide.cpp.codescanner" modelName="CSConfig" importerID="org.eclipse.xsd.ecore.importer"
+    complianceLevel="5.0" copyrightFields="false">
   <foreignModel>CSConfig.xsd</foreignModel>
   <genPackages prefix="CSConfig" basePackage="com.nokia.carbide.cpp.internal.codescanner.gen"
       resource="XML" disposableProviderFactory="true" loadInitialization="true" literalsInterface="false"
@@ -155,11 +153,22 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//ControlornullType/enable"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//ControlornullType/severity"/>
     </genClasses>
+    <genClasses ecoreClass="CSConfig.ecore#//CrepositoryType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//CrepositoryType/category"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//CrepositoryType/enable"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//CrepositoryType/severity"/>
+    </genClasses>
     <genClasses ecoreClass="CSConfig.ecore#//CtltargettypeType">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//CtltargettypeType/category"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//CtltargettypeType/enable"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//CtltargettypeType/severity"/>
     </genClasses>
+    <genClasses ecoreClass="CSConfig.ecore#//CustomizableiconsType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//CustomizableiconsType/iconsRE"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//CustomizableiconsType/category"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//CustomizableiconsType/enable"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//CustomizableiconsType/severity"/>
+    </genClasses>
     <genClasses ecoreClass="CSConfig.ecore#//CustomrulesType">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//CustomrulesType/customrule"/>
     </genClasses>
@@ -224,7 +233,9 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/constnames"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/consttdescptr"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/controlornull"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/crepository"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/ctltargettype"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/customizableicons"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/customrule"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/customrules"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/debugrom"/>
@@ -244,6 +255,7 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/exportpurevirtual"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/externaldriveletters"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//DocumentRoot/filetype"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/flags"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/foff"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/forbiddenwords"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/forgottoputptroncleanupstack"/>
@@ -251,6 +263,7 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/functionality"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/goto"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/high"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//DocumentRoot/iconsRE"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/ifassignments"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/ifpreprocessor"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CSConfig.ecore#//DocumentRoot/inheritanceorder"/>
@@ -386,6 +399,11 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//ExternaldrivelettersType/enable"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//ExternaldrivelettersType/severity"/>
     </genClasses>
+    <genClasses ecoreClass="CSConfig.ecore#//FlagsType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//FlagsType/category"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//FlagsType/enable"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//FlagsType/severity"/>
+    </genClasses>
     <genClasses ecoreClass="CSConfig.ecore#//FoffType">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//FoffType/category"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CSConfig.ecore#//FoffType/enable"/>
@@ -682,7 +700,9 @@
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/constnames"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/consttdescptr"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/controlornull"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/crepository"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/ctltargettype"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/customizableicons"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/debugrom"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/declarename"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/deleteMemberVariable"/>
@@ -696,6 +716,7 @@
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/exportinline"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/exportpurevirtual"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/externaldriveletters"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/flags"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/foff"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/forbiddenwords"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference CSConfig.ecore#//ScriptsType/forgottoputptroncleanupstack"/>
--- a/core/com.nokia.carbide.cpp.codescanner/schema/CSConfig.xsd	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/schema/CSConfig.xsd	Sat Apr 25 12:54:10 2009 -0500
@@ -185,7 +185,9 @@
 				<xs:element minOccurs="0" ref="constnames"/>
 				<xs:element minOccurs="0" ref="consttdescptr"/>
 				<xs:element minOccurs="0" ref="controlornull"/>
+				<xs:element minOccurs="0" ref="crepository"/>
 				<xs:element minOccurs="0" ref="ctltargettype"/>
+				<xs:element minOccurs="0" ref="customizableicons"/>
 				<xs:element minOccurs="0" ref="debugrom"/>
 				<xs:element minOccurs="0" ref="declarename"/>
 				<xs:element minOccurs="0" ref="deleteMemberVariable"/>
@@ -199,6 +201,7 @@
 				<xs:element minOccurs="0" ref="exportinline"/>
 				<xs:element minOccurs="0" ref="exportpurevirtual"/>
 				<xs:element minOccurs="0" ref="externaldriveletters"/>
+				<xs:element minOccurs="0" ref="flags"/>
 				<xs:element minOccurs="0" ref="foff"/>
 				<xs:element minOccurs="0" ref="forbiddenwords"/>
 				<xs:element minOccurs="0" ref="forgottoputptroncleanupstack"/>
@@ -633,6 +636,7 @@
 			<xs:attribute ref="category"/>
 		</xs:complexType>
 	</xs:element>
+	<xs:element name="iconsRE" type="xs:string"/>
 	<xs:element name="high">
 		<xs:complexType>
 			<xs:attribute name="enable" type="xs:boolean" use="required"/>
@@ -681,6 +685,13 @@
 			<xs:attribute ref="category"/>
 		</xs:complexType>
 	</xs:element>
+	<xs:element name="flags">
+		<xs:complexType>
+			<xs:attribute name="enable" type="xs:boolean" use="required"/>
+			<xs:attribute ref="severity"/>
+			<xs:attribute ref="category"/>
+		</xs:complexType>
+	</xs:element>
 	<xs:element name="filetype" type="xs:string"/>
 	<xs:element name="externaldriveletters">
 		<xs:complexType>
@@ -800,6 +811,16 @@
 			</xs:sequence>
 		</xs:complexType>
 	</xs:element>
+	<xs:element name="customizableicons">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="iconsRE"/>
+			</xs:sequence>
+			<xs:attribute name="enable" type="xs:boolean" use="required"/>
+			<xs:attribute ref="severity"/>
+			<xs:attribute ref="category"/>
+		</xs:complexType>
+	</xs:element>
 	<xs:element name="ctltargettype">
 		<xs:complexType>
 			<xs:attribute name="enable" type="xs:boolean" use="required"/>
@@ -807,6 +828,13 @@
 			<xs:attribute ref="category"/>
 		</xs:complexType>
 	</xs:element>
+	<xs:element name="crepository">
+		<xs:complexType>
+			<xs:attribute name="enable" type="xs:boolean" use="required"/>
+			<xs:attribute ref="severity"/>
+			<xs:attribute ref="category"/>
+		</xs:complexType>
+	</xs:element>
 	<xs:element name="controlornull">
 		<xs:complexType>
 			<xs:attribute name="enable" type="xs:boolean" use="required"/>
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/config/CSConfigManager.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/config/CSConfigManager.java	Sat Apr 25 12:54:10 2009 -0500
@@ -323,6 +323,11 @@
 
 		configSettings.setScriptCClassIgnore(pageSettings.get(CSPreferenceConstants.CCLASSIGNORE));
 		configSettings.setScriptForbiddenWords(pageSettings.get(CSPreferenceConstants.FORBIDEENWORDS));
+		String icons = pageSettings.get(CSPreferenceConstants.ICONS);
+		if (icons.length() == 0) {
+			icons = null;
+		}
+		configSettings.setScriptIcons(icons);
 		configSettings.setScriptLFunctionIgnore(pageSettings.get(CSPreferenceConstants.LFUNCTIONIGNORE));
 		configSettings.setScriptLongLinesLength(pageSettings.getInt(CSPreferenceConstants.LONGLINES_LENGTH));
 		configSettings.setScriptOpenIgnore(pageSettings.get(CSPreferenceConstants.OPENIGNORE));
@@ -405,6 +410,11 @@
 
 		configSettings.setScriptCClassIgnore(store.getString(CSPreferenceConstants.CCLASSIGNORE));
 		configSettings.setScriptForbiddenWords(store.getString(CSPreferenceConstants.FORBIDEENWORDS));
+		String icons = store.getString(CSPreferenceConstants.ICONS);
+		if (icons != null && icons.length() == 0) {
+			icons = null;
+		}
+		configSettings.setScriptIcons(icons);
 		configSettings.setScriptLFunctionIgnore(store.getString(CSPreferenceConstants.LFUNCTIONIGNORE));
 		configSettings.setScriptLongLinesLength(store.getInt(CSPreferenceConstants.LONGLINES_LENGTH));
 		configSettings.setScriptOpenIgnore(store.getString(CSPreferenceConstants.OPENIGNORE));
@@ -477,6 +487,7 @@
 
     		settings.put(CSPreferenceConstants.CCLASSIGNORE, getCClassIgnoreFromConfig(configSettings));
     		settings.put(CSPreferenceConstants.FORBIDEENWORDS, getForbiddenWordsFromConfig(configSettings));
+    		settings.put(CSPreferenceConstants.ICONS, getIconsFromConfig(configSettings));
     		settings.put(CSPreferenceConstants.LFUNCTIONIGNORE, getLFunctionIgnoreFromConfig(configSettings));
     		settings.put(CSPreferenceConstants.LONGLINES_LENGTH, getLongLinesLengthFromConfig(configSettings));
     		settings.put(CSPreferenceConstants.OPENIGNORE, getOpenIgnoreFromConfig(configSettings));
@@ -540,6 +551,7 @@
 
     		store.setValue(CSPreferenceConstants.CCLASSIGNORE, getCClassIgnoreFromConfig(configSettings));
     		store.setValue(CSPreferenceConstants.FORBIDEENWORDS, getForbiddenWordsFromConfig(configSettings));
+    		store.setValue(CSPreferenceConstants.ICONS, getIconsFromConfig(configSettings));
     		store.setValue(CSPreferenceConstants.LFUNCTIONIGNORE, getLFunctionIgnoreFromConfig(configSettings));
     		store.setValue(CSPreferenceConstants.LONGLINES_LENGTH, getLongLinesLengthFromConfig(configSettings));
         	store.setValue(CSPreferenceConstants.OPENIGNORE, getOpenIgnoreFromConfig(configSettings));
@@ -610,6 +622,23 @@
 	}
 
 	/**
+	 * Get the customizable icons list from from a CodeScanner configuration settings. 
+	 * If the list does not exist in, get it from the default configuration settings.
+	 * @param configSettings - CodeScanner configuration settings to be read
+	 * @return customizable icons list as a string
+	 */
+	private String getIconsFromConfig(CSConfigSettings configSettings) {
+		String value = configSettings.getScriptIcons();
+		if (value == null) {
+			value = getDefaultConfig().getScriptIcons();
+		}
+		if (value == null) {
+			value = "";
+		}
+		return value;
+	}
+
+	/**
 	 * Get the L-function ignore list from from a CodeScanner configuration settings. 
 	 * If the list does not exist in, get it from the default configuration settings.
 	 * @param configSettings - CodeScanner configuration settings to be read
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/config/CSConfigSettings.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/config/CSConfigSettings.java	Sat Apr 25 12:54:10 2009 -0500
@@ -340,8 +340,12 @@
 				return this.csConfig.getScripts().getConsttdescptr();
 			case script_controlornull:
 				return this.csConfig.getScripts().getControlornull();
+			case script_crepository:
+				return this.csConfig.getScripts().getCrepository();
 			case script_ctltargettype:
 				return this.csConfig.getScripts().getCtltargettype();
+			case script_customizableicons:
+				return this.csConfig.getScripts().getCustomizableicons();
 			case script_debugrom:
 				return this.csConfig.getScripts().getDebugrom();
 			case script_declarename:
@@ -366,8 +370,8 @@
 				return this.csConfig.getScripts().getExportinline();
 			case script_exportpurevirtual:
 				return this.csConfig.getScripts().getExportpurevirtual();
-//			case script_externaldriveletters:
-//				return this.csConfig.getScripts().getExternaldriveletters();
+			case script_flags:
+				return this.csConfig.getScripts().getFlags();
 			case script_foff:
 				return this.csConfig.getScripts().getFoff();
 			case script_forbiddenwords:
@@ -553,8 +557,12 @@
 				return this.csConfig.getScripts().getConsttdescptr().isEnable();
 			case script_controlornull:
 				return this.csConfig.getScripts().getControlornull().isEnable();
+			case script_crepository:
+				return this.csConfig.getScripts().getCrepository().isEnable();
 			case script_ctltargettype:
 				return this.csConfig.getScripts().getCtltargettype().isEnable();
+			case script_customizableicons:
+				return this.csConfig.getScripts().getCustomizableicons().isEnable();
 			case script_debugrom:
 				return this.csConfig.getScripts().getDebugrom().isEnable();
 			case script_declarename:
@@ -579,8 +587,8 @@
 				return this.csConfig.getScripts().getExportinline().isEnable();
 			case script_exportpurevirtual:
 				return this.csConfig.getScripts().getExportpurevirtual().isEnable();
-//			case script_externaldriveletters:
-//				return this.csConfig.getScripts().getExternaldriveletters().isEnable();
+			case script_flags:
+				return this.csConfig.getScripts().getFlags().isEnable();
 			case script_foff:
 				return this.csConfig.getScripts().getFoff().isEnable();
 			case script_forbiddenwords:
@@ -784,9 +792,15 @@
 			case script_controlornull:
 				this.csConfig.getScripts().getControlornull().setEnable(value);
 				break;
+			case script_crepository:
+				this.csConfig.getScripts().getCrepository().setEnable(value);
+				break;
 			case script_ctltargettype:
 				this.csConfig.getScripts().getCtltargettype().setEnable(value);
 				break;
+			case script_customizableicons:
+				this.csConfig.getScripts().getCustomizableicons().setEnable(value);
+				break;
 			case script_debugrom:
 				this.csConfig.getScripts().getDebugrom().setEnable(value);
 				break;
@@ -823,9 +837,9 @@
 			case script_exportpurevirtual:
 				this.csConfig.getScripts().getExportpurevirtual().setEnable(value);
 				break;
-//			case script_externaldriveletters:
-//				this.csConfig.getScripts().getExternaldriveletters().setEnable(value);
-//				break;
+			case script_flags:
+				this.csConfig.getScripts().getFlags().setEnable(value);
+				break;
 			case script_foff:
 				this.csConfig.getScripts().getFoff().setEnable(value);
 				break;
@@ -1079,8 +1093,12 @@
 				return this.csConfig.getScripts().getConsttdescptr().getCategory().toString();
 			case script_controlornull:
 				return this.csConfig.getScripts().getControlornull().getCategory().toString();
+			case script_crepository:
+				return this.csConfig.getScripts().getCrepository().getCategory().toString();
 			case script_ctltargettype:
 				return this.csConfig.getScripts().getCtltargettype().getCategory().toString();
+			case script_customizableicons:
+				return this.csConfig.getScripts().getCustomizableicons().getCategory().toString();
 			case script_debugrom:
 				return this.csConfig.getScripts().getDebugrom().getCategory().toString();
 			case script_declarename:
@@ -1105,8 +1123,8 @@
 				return this.csConfig.getScripts().getExportinline().getCategory().toString();
 			case script_exportpurevirtual:
 				return this.csConfig.getScripts().getExportpurevirtual().getCategory().toString();
-//			case script_externaldriveletters:
-//				return this.csConfig.getScripts().getExternaldriveletters().getCategory().toString();
+			case script_flags:
+				return this.csConfig.getScripts().getFlags().getCategory().toString();
 			case script_foff:
 				return this.csConfig.getScripts().getFoff().getCategory().toString();
 			case script_forbiddenwords:
@@ -1311,9 +1329,15 @@
 			case script_controlornull:
 				this.csConfig.getScripts().getControlornull().setCategory(category);
 				break;
+			case script_crepository:
+				this.csConfig.getScripts().getCrepository().setCategory(category);
+				break;
 			case script_ctltargettype:
 				this.csConfig.getScripts().getCtltargettype().setCategory(category);
 				break;
+			case script_customizableicons:
+				this.csConfig.getScripts().getCustomizableicons().setCategory(category);
+				break;
 			case script_debugrom:
 				this.csConfig.getScripts().getDebugrom().setCategory(category);
 				break;
@@ -1350,9 +1374,9 @@
 			case script_exportpurevirtual:
 				this.csConfig.getScripts().getExportpurevirtual().setCategory(category);
 				break;
-//			case script_externaldriveletters:
-//				this.csConfig.getScripts().getExternaldriveletters().setCategory(category);
-//				break;
+			case script_flags:
+				this.csConfig.getScripts().getFlags().setCategory(category);
+				break;
 			case script_foff:
 				this.csConfig.getScripts().getFoff().setCategory(category);
 				break;
@@ -1606,8 +1630,12 @@
 				return this.csConfig.getScripts().getConsttdescptr().getSeverity().toString();
 			case script_controlornull:
 				return this.csConfig.getScripts().getControlornull().getSeverity().toString();
+			case script_crepository:
+				return this.csConfig.getScripts().getCrepository().getSeverity().toString();
 			case script_ctltargettype:
 				return this.csConfig.getScripts().getCtltargettype().getSeverity().toString();
+			case script_customizableicons:
+				return this.csConfig.getScripts().getCustomizableicons().getSeverity().toString();
 			case script_debugrom:
 				return this.csConfig.getScripts().getDebugrom().getSeverity().toString();
 			case script_declarename:
@@ -1632,8 +1660,8 @@
 				return this.csConfig.getScripts().getExportinline().getSeverity().toString();
 			case script_exportpurevirtual:
 				return this.csConfig.getScripts().getExportpurevirtual().getSeverity().toString();
-//			case script_externaldriveletters:
-//				return this.csConfig.getScripts().getExternaldriveletters().getSeverity().toString();
+			case script_flags:
+				return this.csConfig.getScripts().getFlags().getSeverity().toString();
 			case script_foff:
 				return this.csConfig.getScripts().getFoff().getSeverity().toString();
 			case script_forbiddenwords:
@@ -1838,9 +1866,15 @@
 			case script_controlornull:
 				this.csConfig.getScripts().getControlornull().setSeverity(severity);
 				break;
+			case script_crepository:
+				this.csConfig.getScripts().getCrepository().setSeverity(severity);
+				break;
 			case script_ctltargettype:
 				this.csConfig.getScripts().getCtltargettype().setSeverity(severity);
 				break;
+			case script_customizableicons:
+				this.csConfig.getScripts().getCustomizableicons().setSeverity(severity);
+				break;
 			case script_debugrom:
 				this.csConfig.getScripts().getDebugrom().setSeverity(severity);
 				break;
@@ -1877,9 +1911,9 @@
 			case script_exportpurevirtual:
 				this.csConfig.getScripts().getExportpurevirtual().setSeverity(severity);
 				break;
-//			case script_externaldriveletters:
-//				this.csConfig.getScripts().getExternaldriveletters().setSeverity(severity);
-//				break;
+			case script_flags:
+				this.csConfig.getScripts().getFlags().setSeverity(severity);
+				break;
 			case script_foff:
 				this.csConfig.getScripts().getFoff().setSeverity(severity);
 				break;
@@ -2123,6 +2157,22 @@
 	}
 
 	/**
+	 * Retrieve the iconsRE value of the customizableicons script
+	 * @return iconsRE
+	 */
+	public String getScriptIcons() {
+		return this.csConfig.getScripts().getCustomizableicons().getIconsRE();
+	}
+
+	/**
+	 * Set the iconsRE value of the customizableicons script
+	 * @param value - new iconsRE value
+	 */
+	public void setScriptIcons(String value)	 {
+		this.csConfig.getScripts().getCustomizableicons().setIconsRE(value);
+	}
+
+	/**
 	 * Retrieve the LFunctionIgnoreRE value of the LFunctionCantLeave script
 	 * @return LFunctionIgnoreRE
 	 */
@@ -2483,12 +2533,25 @@
 		script_Controlornull.setSeverity(SeverityType.HIGH);
 		scripts.setControlornull(script_Controlornull);
 
+		CrepositoryType script_Crepository = CSConfigFactory.eINSTANCE.createCrepositoryType();
+		script_Crepository.setCategory(CategoryType.OTHER);
+		script_Crepository.setEnable(true);
+		script_Crepository.setSeverity(SeverityType.LOW);
+		scripts.setCrepository(script_Crepository);
+
 		CtltargettypeType script_Ctltargettype = CSConfigFactory.eINSTANCE.createCtltargettypeType();
 		script_Ctltargettype.setCategory(CategoryType.FUNCTIONALITY);
 		script_Ctltargettype.setEnable(true);
 		script_Ctltargettype.setSeverity(SeverityType.MEDIUM);
 		scripts.setCtltargettype(script_Ctltargettype);
 
+		CustomizableiconsType script_Customizableicons = CSConfigFactory.eINSTANCE.createCustomizableiconsType();
+		script_Customizableicons.setCategory(CategoryType.OTHER);
+		script_Customizableicons.setEnable(true);
+		script_Customizableicons.setSeverity(SeverityType.LOW);
+		//script_Customizableicons.setIconsRE("");
+		scripts.setCustomizableicons(script_Customizableicons);
+
 		DebugromType script_Debugrom = CSConfigFactory.eINSTANCE.createDebugromType();
 		script_Debugrom.setCategory(CategoryType.PERFORMANCE);
 		script_Debugrom.setEnable(true);
@@ -2561,11 +2624,11 @@
 		script_Exportpurevirtual.setSeverity(SeverityType.MEDIUM);
 		scripts.setExportpurevirtual(script_Exportpurevirtual);
 
-//		ExternaldrivelettersType script_Externaldriveletters = CSConfigFactory.eINSTANCE.createExternaldrivelettersType();
-//		script_Externaldriveletters.setCategory(CategoryType.CANPANIC);
-//		script_Externaldriveletters.setEnable(true);
-//		script_Externaldriveletters.setSeverity(SeverityType.HIGH);
-//		scripts.setExternaldriveletters(script_Externaldriveletters);
+		FlagsType script_Flags = CSConfigFactory.eINSTANCE.createFlagsType();
+		script_Flags.setCategory(CategoryType.OTHER);
+		script_Flags.setEnable(true);
+		script_Flags.setSeverity(SeverityType.LOW);
+		scripts.setFlags(script_Flags);
 
 		FoffType script_Foff = CSConfigFactory.eINSTANCE.createFoffType();
 		script_Foff.setCategory(CategoryType.CODEREVIEW);
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/config/CSRule.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/config/CSRule.java	Sat Apr 25 12:54:10 2009 -0500
@@ -123,8 +123,12 @@
 			return Messages.getString("CSRule.Consttdescptr");
 		case script_controlornull:
 			return Messages.getString("CSRule.Controlornull");
+		case script_crepository:
+			return Messages.getString("CSRule.Crepository");
 		case script_ctltargettype:
 			return Messages.getString("CSRule.Ctltargettype");
+		case script_customizableicons:
+			return Messages.getString("CSRule.Customizableicons");
 		case script_debugrom:
 			return Messages.getString("CSRule.Debugrom");
 		case script_declarename:
@@ -149,8 +153,8 @@
 			return Messages.getString("CSRule.Exportinline");
 		case script_exportpurevirtual:
 			return Messages.getString("CSRule.Exportpurevirtual");
-//		case script_externaldriveletters:
-//			return Messages.getString("CSRule.Externaldriveletters");
+		case script_flags:
+			return Messages.getString("CSRule.Flags");
 		case script_foff:
 			return Messages.getString("CSRule.Foff");
 		case script_forbiddenwords:
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/config/CSScript.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/config/CSScript.java	Sat Apr 25 12:54:10 2009 -0500
@@ -40,7 +40,9 @@
 	script_constnames("constnames"),
 	script_consttdescptr("consttdescptr"),
 	script_controlornull("controlornull"),
+	script_crepository("crepository"),
 	script_ctltargettype("ctltargettype"),
+	script_customizableicons("customizableicons"),
 	script_debugrom("debugrom"),
 	script_declarename("declarename"),
 	script_deleteMemberVariable("deleteMemberVariable"),
@@ -53,7 +55,7 @@
 	script_enumnames("enumnames"),
 	script_exportinline("exportinline"),
 	script_exportpurevirtual("exportpurevirtual"),
-	//script_externaldriveletters("externaldriveletters"),
+	script_flags("flags"),
 	script_foff("foff"),
 	script_forbiddenwords("forbiddenwords"),
 	script_forgottoputptroncleanupstack("forgottoputptroncleanupstack"),
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/CSConfigFactory.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/CSConfigFactory.java	Sat Apr 25 12:54:10 2009 -0500
@@ -253,6 +253,15 @@
 	ControlornullType createControlornullType();
 
 	/**
+	 * Returns a new object of class '<em>Crepository Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Crepository Type</em>'.
+	 * @generated
+	 */
+	CrepositoryType createCrepositoryType();
+
+	/**
 	 * Returns a new object of class '<em>Ctltargettype Type</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -262,6 +271,15 @@
 	CtltargettypeType createCtltargettypeType();
 
 	/**
+	 * Returns a new object of class '<em>Customizableicons Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Customizableicons Type</em>'.
+	 * @generated
+	 */
+	CustomizableiconsType createCustomizableiconsType();
+
+	/**
 	 * Returns a new object of class '<em>Customrules Type</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -415,6 +433,15 @@
 	ExternaldrivelettersType createExternaldrivelettersType();
 
 	/**
+	 * Returns a new object of class '<em>Flags Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Flags Type</em>'.
+	 * @generated
+	 */
+	FlagsType createFlagsType();
+
+	/**
 	 * Returns a new object of class '<em>Foff Type</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/CSConfigPackage.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/CSConfigPackage.java	Sat Apr 25 12:54:10 2009 -0500
@@ -1232,6 +1232,52 @@
 	int CONTROLORNULL_TYPE_FEATURE_COUNT = 3;
 
 	/**
+	 * The meta object id for the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CrepositoryTypeImpl <em>Crepository Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CrepositoryTypeImpl
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getCrepositoryType()
+	 * @generated
+	 */
+	int CREPOSITORY_TYPE = 24;
+
+	/**
+	 * The feature id for the '<em><b>Category</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CREPOSITORY_TYPE__CATEGORY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Enable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CREPOSITORY_TYPE__ENABLE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CREPOSITORY_TYPE__SEVERITY = 2;
+
+	/**
+	 * The number of structural features of the '<em>Crepository Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CREPOSITORY_TYPE_FEATURE_COUNT = 3;
+
+	/**
 	 * The meta object id for the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CtltargettypeTypeImpl <em>Ctltargettype Type</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1239,7 +1285,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getCtltargettypeType()
 	 * @generated
 	 */
-	int CTLTARGETTYPE_TYPE = 24;
+	int CTLTARGETTYPE_TYPE = 25;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -1278,6 +1324,61 @@
 	int CTLTARGETTYPE_TYPE_FEATURE_COUNT = 3;
 
 	/**
+	 * The meta object id for the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CustomizableiconsTypeImpl <em>Customizableicons Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CustomizableiconsTypeImpl
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getCustomizableiconsType()
+	 * @generated
+	 */
+	int CUSTOMIZABLEICONS_TYPE = 26;
+
+	/**
+	 * The feature id for the '<em><b>Icons RE</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOMIZABLEICONS_TYPE__ICONS_RE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Category</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOMIZABLEICONS_TYPE__CATEGORY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Enable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOMIZABLEICONS_TYPE__ENABLE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOMIZABLEICONS_TYPE__SEVERITY = 3;
+
+	/**
+	 * The number of structural features of the '<em>Customizableicons Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOMIZABLEICONS_TYPE_FEATURE_COUNT = 4;
+
+	/**
 	 * The meta object id for the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CustomrulesTypeImpl <em>Customrules Type</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1285,7 +1386,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getCustomrulesType()
 	 * @generated
 	 */
-	int CUSTOMRULES_TYPE = 25;
+	int CUSTOMRULES_TYPE = 27;
 
 	/**
 	 * The feature id for the '<em><b>Customrule</b></em>' containment reference list.
@@ -1313,7 +1414,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getCustomruleType()
 	 * @generated
 	 */
-	int CUSTOMRULE_TYPE = 26;
+	int CUSTOMRULE_TYPE = 28;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -1395,7 +1496,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getDebugromType()
 	 * @generated
 	 */
-	int DEBUGROM_TYPE = 27;
+	int DEBUGROM_TYPE = 29;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -1441,7 +1542,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getDeclarenameType()
 	 * @generated
 	 */
-	int DECLARENAME_TYPE = 28;
+	int DECLARENAME_TYPE = 30;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -1487,7 +1588,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getDeleteMemberVariableType()
 	 * @generated
 	 */
-	int DELETE_MEMBER_VARIABLE_TYPE = 29;
+	int DELETE_MEMBER_VARIABLE_TYPE = 31;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -1533,7 +1634,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getDestructorType()
 	 * @generated
 	 */
-	int DESTRUCTOR_TYPE = 30;
+	int DESTRUCTOR_TYPE = 32;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -1579,7 +1680,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getDocumentationType()
 	 * @generated
 	 */
-	int DOCUMENTATION_TYPE = 31;
+	int DOCUMENTATION_TYPE = 33;
 
 	/**
 	 * The feature id for the '<em><b>Enable</b></em>' attribute.
@@ -1607,7 +1708,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getDocumentRoot()
 	 * @generated
 	 */
-	int DOCUMENT_ROOT = 32;
+	int DOCUMENT_ROOT = 34;
 
 	/**
 	 * The feature id for the '<em><b>Mixed</b></em>' attribute list.
@@ -1862,13 +1963,31 @@
 	int DOCUMENT_ROOT__CONTROLORNULL = 27;
 
 	/**
+	 * The feature id for the '<em><b>Crepository</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CREPOSITORY = 28;
+
+	/**
 	 * The feature id for the '<em><b>Ctltargettype</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__CTLTARGETTYPE = 28;
+	int DOCUMENT_ROOT__CTLTARGETTYPE = 29;
+
+	/**
+	 * The feature id for the '<em><b>Customizableicons</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CUSTOMIZABLEICONS = 30;
 
 	/**
 	 * The feature id for the '<em><b>Customrule</b></em>' containment reference.
@@ -1877,7 +1996,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__CUSTOMRULE = 29;
+	int DOCUMENT_ROOT__CUSTOMRULE = 31;
 
 	/**
 	 * The feature id for the '<em><b>Customrules</b></em>' containment reference.
@@ -1886,7 +2005,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__CUSTOMRULES = 30;
+	int DOCUMENT_ROOT__CUSTOMRULES = 32;
 
 	/**
 	 * The feature id for the '<em><b>Debugrom</b></em>' containment reference.
@@ -1895,7 +2014,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__DEBUGROM = 31;
+	int DOCUMENT_ROOT__DEBUGROM = 33;
 
 	/**
 	 * The feature id for the '<em><b>Declarename</b></em>' containment reference.
@@ -1904,7 +2023,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__DECLARENAME = 32;
+	int DOCUMENT_ROOT__DECLARENAME = 34;
 
 	/**
 	 * The feature id for the '<em><b>Delete Member Variable</b></em>' containment reference.
@@ -1913,7 +2032,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__DELETE_MEMBER_VARIABLE = 33;
+	int DOCUMENT_ROOT__DELETE_MEMBER_VARIABLE = 35;
 
 	/**
 	 * The feature id for the '<em><b>Description</b></em>' attribute.
@@ -1922,7 +2041,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__DESCRIPTION = 34;
+	int DOCUMENT_ROOT__DESCRIPTION = 36;
 
 	/**
 	 * The feature id for the '<em><b>Destructor</b></em>' containment reference.
@@ -1931,7 +2050,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__DESTRUCTOR = 35;
+	int DOCUMENT_ROOT__DESTRUCTOR = 37;
 
 	/**
 	 * The feature id for the '<em><b>Documentation</b></em>' containment reference.
@@ -1940,7 +2059,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__DOCUMENTATION = 36;
+	int DOCUMENT_ROOT__DOCUMENTATION = 38;
 
 	/**
 	 * The feature id for the '<em><b>Double Semi Colon</b></em>' containment reference.
@@ -1949,7 +2068,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__DOUBLE_SEMI_COLON = 37;
+	int DOCUMENT_ROOT__DOUBLE_SEMI_COLON = 39;
 
 	/**
 	 * The feature id for the '<em><b>Driveletters</b></em>' containment reference.
@@ -1958,7 +2077,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__DRIVELETTERS = 38;
+	int DOCUMENT_ROOT__DRIVELETTERS = 40;
 
 	/**
 	 * The feature id for the '<em><b>Eikbuttons</b></em>' containment reference.
@@ -1967,7 +2086,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__EIKBUTTONS = 39;
+	int DOCUMENT_ROOT__EIKBUTTONS = 41;
 
 	/**
 	 * The feature id for the '<em><b>Eikonenvstatic</b></em>' containment reference.
@@ -1976,7 +2095,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__EIKONENVSTATIC = 40;
+	int DOCUMENT_ROOT__EIKONENVSTATIC = 42;
 
 	/**
 	 * The feature id for the '<em><b>Enummembers</b></em>' containment reference.
@@ -1985,7 +2104,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__ENUMMEMBERS = 41;
+	int DOCUMENT_ROOT__ENUMMEMBERS = 43;
 
 	/**
 	 * The feature id for the '<em><b>Enumnames</b></em>' containment reference.
@@ -1994,7 +2113,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__ENUMNAMES = 42;
+	int DOCUMENT_ROOT__ENUMNAMES = 44;
 
 	/**
 	 * The feature id for the '<em><b>Exclude</b></em>' attribute.
@@ -2003,7 +2122,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__EXCLUDE = 43;
+	int DOCUMENT_ROOT__EXCLUDE = 45;
 
 	/**
 	 * The feature id for the '<em><b>Exportinline</b></em>' containment reference.
@@ -2012,7 +2131,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__EXPORTINLINE = 44;
+	int DOCUMENT_ROOT__EXPORTINLINE = 46;
 
 	/**
 	 * The feature id for the '<em><b>Exportpurevirtual</b></em>' containment reference.
@@ -2021,7 +2140,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__EXPORTPUREVIRTUAL = 45;
+	int DOCUMENT_ROOT__EXPORTPUREVIRTUAL = 47;
 
 	/**
 	 * The feature id for the '<em><b>Externaldriveletters</b></em>' containment reference.
@@ -2030,7 +2149,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__EXTERNALDRIVELETTERS = 46;
+	int DOCUMENT_ROOT__EXTERNALDRIVELETTERS = 48;
 
 	/**
 	 * The feature id for the '<em><b>Filetype</b></em>' attribute.
@@ -2039,7 +2158,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__FILETYPE = 47;
+	int DOCUMENT_ROOT__FILETYPE = 49;
+
+	/**
+	 * The feature id for the '<em><b>Flags</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__FLAGS = 50;
 
 	/**
 	 * The feature id for the '<em><b>Foff</b></em>' containment reference.
@@ -2048,7 +2176,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__FOFF = 48;
+	int DOCUMENT_ROOT__FOFF = 51;
 
 	/**
 	 * The feature id for the '<em><b>Forbiddenwords</b></em>' containment reference.
@@ -2057,7 +2185,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__FORBIDDENWORDS = 49;
+	int DOCUMENT_ROOT__FORBIDDENWORDS = 52;
 
 	/**
 	 * The feature id for the '<em><b>Forgottoputptroncleanupstack</b></em>' containment reference.
@@ -2066,7 +2194,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__FORGOTTOPUTPTRONCLEANUPSTACK = 50;
+	int DOCUMENT_ROOT__FORGOTTOPUTPTRONCLEANUPSTACK = 53;
 
 	/**
 	 * The feature id for the '<em><b>Friend</b></em>' containment reference.
@@ -2075,7 +2203,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__FRIEND = 51;
+	int DOCUMENT_ROOT__FRIEND = 54;
 
 	/**
 	 * The feature id for the '<em><b>Functionality</b></em>' containment reference.
@@ -2084,7 +2212,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__FUNCTIONALITY = 52;
+	int DOCUMENT_ROOT__FUNCTIONALITY = 55;
 
 	/**
 	 * The feature id for the '<em><b>Goto</b></em>' containment reference.
@@ -2093,7 +2221,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__GOTO = 53;
+	int DOCUMENT_ROOT__GOTO = 56;
 
 	/**
 	 * The feature id for the '<em><b>High</b></em>' containment reference.
@@ -2102,7 +2230,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__HIGH = 54;
+	int DOCUMENT_ROOT__HIGH = 57;
+
+	/**
+	 * The feature id for the '<em><b>Icons RE</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ICONS_RE = 58;
 
 	/**
 	 * The feature id for the '<em><b>Ifassignments</b></em>' containment reference.
@@ -2111,7 +2248,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__IFASSIGNMENTS = 55;
+	int DOCUMENT_ROOT__IFASSIGNMENTS = 59;
 
 	/**
 	 * The feature id for the '<em><b>Ifpreprocessor</b></em>' containment reference.
@@ -2120,7 +2257,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__IFPREPROCESSOR = 56;
+	int DOCUMENT_ROOT__IFPREPROCESSOR = 60;
 
 	/**
 	 * The feature id for the '<em><b>Inheritanceorder</b></em>' containment reference.
@@ -2129,7 +2266,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__INHERITANCEORDER = 57;
+	int DOCUMENT_ROOT__INHERITANCEORDER = 61;
 
 	/**
 	 * The feature id for the '<em><b>Input</b></em>' attribute.
@@ -2138,7 +2275,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__INPUT = 58;
+	int DOCUMENT_ROOT__INPUT = 62;
 
 	/**
 	 * The feature id for the '<em><b>Intleaves</b></em>' containment reference.
@@ -2147,7 +2284,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__INTLEAVES = 59;
+	int DOCUMENT_ROOT__INTLEAVES = 63;
 
 	/**
 	 * The feature id for the '<em><b>Jmp</b></em>' containment reference.
@@ -2156,7 +2293,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__JMP = 60;
+	int DOCUMENT_ROOT__JMP = 64;
 
 	/**
 	 * The feature id for the '<em><b>Keyword</b></em>' containment reference.
@@ -2165,7 +2302,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__KEYWORD = 61;
+	int DOCUMENT_ROOT__KEYWORD = 65;
 
 	/**
 	 * The feature id for the '<em><b>Leave</b></em>' containment reference.
@@ -2174,7 +2311,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LEAVE = 62;
+	int DOCUMENT_ROOT__LEAVE = 66;
 
 	/**
 	 * The feature id for the '<em><b>Leave No Error</b></em>' containment reference.
@@ -2183,7 +2320,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LEAVE_NO_ERROR = 63;
+	int DOCUMENT_ROOT__LEAVE_NO_ERROR = 67;
 
 	/**
 	 * The feature id for the '<em><b>Leavingoperators</b></em>' containment reference.
@@ -2192,7 +2329,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LEAVINGOPERATORS = 64;
+	int DOCUMENT_ROOT__LEAVINGOPERATORS = 68;
 
 	/**
 	 * The feature id for the '<em><b>Legal</b></em>' containment reference.
@@ -2201,7 +2338,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LEGAL = 65;
+	int DOCUMENT_ROOT__LEGAL = 69;
 
 	/**
 	 * The feature id for the '<em><b>LFunction Cant Leave</b></em>' containment reference.
@@ -2210,7 +2347,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LFUNCTION_CANT_LEAVE = 66;
+	int DOCUMENT_ROOT__LFUNCTION_CANT_LEAVE = 70;
 
 	/**
 	 * The feature id for the '<em><b>LFunction Ignore RE</b></em>' attribute.
@@ -2219,7 +2356,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LFUNCTION_IGNORE_RE = 67;
+	int DOCUMENT_ROOT__LFUNCTION_IGNORE_RE = 71;
 
 	/**
 	 * The feature id for the '<em><b>Link</b></em>' attribute.
@@ -2228,7 +2365,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LINK = 68;
+	int DOCUMENT_ROOT__LINK = 72;
 
 	/**
 	 * The feature id for the '<em><b>Localisation</b></em>' containment reference.
@@ -2237,7 +2374,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LOCALISATION = 69;
+	int DOCUMENT_ROOT__LOCALISATION = 73;
 
 	/**
 	 * The feature id for the '<em><b>Longlines</b></em>' containment reference.
@@ -2246,7 +2383,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LONGLINES = 70;
+	int DOCUMENT_ROOT__LONGLINES = 74;
 
 	/**
 	 * The feature id for the '<em><b>Low</b></em>' containment reference.
@@ -2255,7 +2392,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LOW = 71;
+	int DOCUMENT_ROOT__LOW = 75;
 
 	/**
 	 * The feature id for the '<em><b>Lxr</b></em>' attribute.
@@ -2264,7 +2401,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LXR = 72;
+	int DOCUMENT_ROOT__LXR = 76;
 
 	/**
 	 * The feature id for the '<em><b>Lxrversion</b></em>' attribute.
@@ -2273,7 +2410,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__LXRVERSION = 73;
+	int DOCUMENT_ROOT__LXRVERSION = 77;
 
 	/**
 	 * The feature id for the '<em><b>Magicnumbers</b></em>' containment reference.
@@ -2282,7 +2419,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MAGICNUMBERS = 74;
+	int DOCUMENT_ROOT__MAGICNUMBERS = 78;
 
 	/**
 	 * The feature id for the '<em><b>Mclassdestructor</b></em>' containment reference.
@@ -2291,7 +2428,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MCLASSDESTRUCTOR = 75;
+	int DOCUMENT_ROOT__MCLASSDESTRUCTOR = 79;
 
 	/**
 	 * The feature id for the '<em><b>Medium</b></em>' containment reference.
@@ -2300,7 +2437,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MEDIUM = 76;
+	int DOCUMENT_ROOT__MEDIUM = 80;
 
 	/**
 	 * The feature id for the '<em><b>Memberlc</b></em>' containment reference.
@@ -2309,7 +2446,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MEMBERLC = 77;
+	int DOCUMENT_ROOT__MEMBERLC = 81;
 
 	/**
 	 * The feature id for the '<em><b>Membervariablecallld</b></em>' containment reference.
@@ -2318,7 +2455,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MEMBERVARIABLECALLLD = 78;
+	int DOCUMENT_ROOT__MEMBERVARIABLECALLLD = 82;
 
 	/**
 	 * The feature id for the '<em><b>Missingcancel</b></em>' containment reference.
@@ -2327,7 +2464,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MISSINGCANCEL = 79;
+	int DOCUMENT_ROOT__MISSINGCANCEL = 83;
 
 	/**
 	 * The feature id for the '<em><b>Missingcclass</b></em>' containment reference.
@@ -2336,7 +2473,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MISSINGCCLASS = 80;
+	int DOCUMENT_ROOT__MISSINGCCLASS = 84;
 
 	/**
 	 * The feature id for the '<em><b>Mmpsourcepath</b></em>' containment reference.
@@ -2345,7 +2482,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MMPSOURCEPATH = 81;
+	int DOCUMENT_ROOT__MMPSOURCEPATH = 85;
 
 	/**
 	 * The feature id for the '<em><b>Multilangrsc</b></em>' containment reference.
@@ -2354,7 +2491,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MULTILANGRSC = 82;
+	int DOCUMENT_ROOT__MULTILANGRSC = 86;
 
 	/**
 	 * The feature id for the '<em><b>Multipledeclarations</b></em>' containment reference.
@@ -2363,7 +2500,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MULTIPLEDECLARATIONS = 83;
+	int DOCUMENT_ROOT__MULTIPLEDECLARATIONS = 87;
 
 	/**
 	 * The feature id for the '<em><b>Multipleinheritance</b></em>' containment reference.
@@ -2372,7 +2509,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MULTIPLEINHERITANCE = 84;
+	int DOCUMENT_ROOT__MULTIPLEINHERITANCE = 88;
 
 	/**
 	 * The feature id for the '<em><b>Mydocs</b></em>' containment reference.
@@ -2381,7 +2518,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__MYDOCS = 85;
+	int DOCUMENT_ROOT__MYDOCS = 89;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -2390,7 +2527,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__NAME = 86;
+	int DOCUMENT_ROOT__NAME = 90;
 
 	/**
 	 * The feature id for the '<em><b>Namespace</b></em>' containment reference.
@@ -2399,7 +2536,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__NAMESPACE = 87;
+	int DOCUMENT_ROOT__NAMESPACE = 91;
 
 	/**
 	 * The feature id for the '<em><b>Newlreferences</b></em>' containment reference.
@@ -2408,7 +2545,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__NEWLREFERENCES = 88;
+	int DOCUMENT_ROOT__NEWLREFERENCES = 92;
 
 	/**
 	 * The feature id for the '<em><b>Noleavetrap</b></em>' containment reference.
@@ -2417,7 +2554,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__NOLEAVETRAP = 89;
+	int DOCUMENT_ROOT__NOLEAVETRAP = 93;
 
 	/**
 	 * The feature id for the '<em><b>Nonconsthbufc</b></em>' containment reference.
@@ -2426,7 +2563,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__NONCONSTHBUFC = 90;
+	int DOCUMENT_ROOT__NONCONSTHBUFC = 94;
 
 	/**
 	 * The feature id for the '<em><b>Nonconsttdesc</b></em>' containment reference.
@@ -2435,7 +2572,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__NONCONSTTDESC = 91;
+	int DOCUMENT_ROOT__NONCONSTTDESC = 95;
 
 	/**
 	 * The feature id for the '<em><b>Nonleavenew</b></em>' containment reference.
@@ -2444,7 +2581,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__NONLEAVENEW = 92;
+	int DOCUMENT_ROOT__NONLEAVENEW = 96;
 
 	/**
 	 * The feature id for the '<em><b>Nonunicodeskins</b></em>' containment reference.
@@ -2453,7 +2590,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__NONUNICODESKINS = 93;
+	int DOCUMENT_ROOT__NONUNICODESKINS = 97;
 
 	/**
 	 * The feature id for the '<em><b>Null</b></em>' containment reference.
@@ -2462,7 +2599,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__NULL = 94;
+	int DOCUMENT_ROOT__NULL = 98;
 
 	/**
 	 * The feature id for the '<em><b>Open</b></em>' containment reference.
@@ -2471,7 +2608,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__OPEN = 95;
+	int DOCUMENT_ROOT__OPEN = 99;
 
 	/**
 	 * The feature id for the '<em><b>Open Ignore RE</b></em>' attribute.
@@ -2480,7 +2617,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__OPEN_IGNORE_RE = 96;
+	int DOCUMENT_ROOT__OPEN_IGNORE_RE = 100;
 
 	/**
 	 * The feature id for the '<em><b>Other</b></em>' containment reference.
@@ -2489,7 +2626,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__OTHER = 97;
+	int DOCUMENT_ROOT__OTHER = 101;
 
 	/**
 	 * The feature id for the '<em><b>Outputformat</b></em>' attribute.
@@ -2498,7 +2635,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__OUTPUTFORMAT = 98;
+	int DOCUMENT_ROOT__OUTPUTFORMAT = 102;
 
 	/**
 	 * The feature id for the '<em><b>Panic</b></em>' containment reference.
@@ -2507,7 +2644,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__PANIC = 99;
+	int DOCUMENT_ROOT__PANIC = 103;
 
 	/**
 	 * The feature id for the '<em><b>Performance</b></em>' containment reference.
@@ -2516,7 +2653,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__PERFORMANCE = 100;
+	int DOCUMENT_ROOT__PERFORMANCE = 104;
 
 	/**
 	 * The feature id for the '<em><b>Pointertoarrays</b></em>' containment reference.
@@ -2525,7 +2662,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__POINTERTOARRAYS = 101;
+	int DOCUMENT_ROOT__POINTERTOARRAYS = 105;
 
 	/**
 	 * The feature id for the '<em><b>Pragmadisable</b></em>' containment reference.
@@ -2534,7 +2671,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__PRAGMADISABLE = 102;
+	int DOCUMENT_ROOT__PRAGMADISABLE = 106;
 
 	/**
 	 * The feature id for the '<em><b>Pragmamessage</b></em>' containment reference.
@@ -2543,7 +2680,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__PRAGMAMESSAGE = 103;
+	int DOCUMENT_ROOT__PRAGMAMESSAGE = 107;
 
 	/**
 	 * The feature id for the '<em><b>Pragmaother</b></em>' containment reference.
@@ -2552,7 +2689,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__PRAGMAOTHER = 104;
+	int DOCUMENT_ROOT__PRAGMAOTHER = 108;
 
 	/**
 	 * The feature id for the '<em><b>Privateinheritance</b></em>' containment reference.
@@ -2561,7 +2698,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__PRIVATEINHERITANCE = 105;
+	int DOCUMENT_ROOT__PRIVATEINHERITANCE = 109;
 
 	/**
 	 * The feature id for the '<em><b>Pushaddrvar</b></em>' containment reference.
@@ -2570,7 +2707,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__PUSHADDRVAR = 106;
+	int DOCUMENT_ROOT__PUSHADDRVAR = 110;
 
 	/**
 	 * The feature id for the '<em><b>Pushmember</b></em>' containment reference.
@@ -2579,7 +2716,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__PUSHMEMBER = 107;
+	int DOCUMENT_ROOT__PUSHMEMBER = 111;
 
 	/**
 	 * The feature id for the '<em><b>Readresource</b></em>' containment reference.
@@ -2588,7 +2725,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__READRESOURCE = 108;
+	int DOCUMENT_ROOT__READRESOURCE = 112;
 
 	/**
 	 * The feature id for the '<em><b>Resourcenotoncleanupstack</b></em>' containment reference.
@@ -2597,7 +2734,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__RESOURCENOTONCLEANUPSTACK = 109;
+	int DOCUMENT_ROOT__RESOURCENOTONCLEANUPSTACK = 113;
 
 	/**
 	 * The feature id for the '<em><b>Resourcesonheap</b></em>' containment reference.
@@ -2606,7 +2743,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__RESOURCESONHEAP = 110;
+	int DOCUMENT_ROOT__RESOURCESONHEAP = 114;
 
 	/**
 	 * The feature id for the '<em><b>Returndescriptoroutofscope</b></em>' containment reference.
@@ -2615,7 +2752,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__RETURNDESCRIPTOROUTOFSCOPE = 111;
+	int DOCUMENT_ROOT__RETURNDESCRIPTOROUTOFSCOPE = 115;
 
 	/**
 	 * The feature id for the '<em><b>Rfs</b></em>' containment reference.
@@ -2624,7 +2761,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__RFS = 112;
+	int DOCUMENT_ROOT__RFS = 116;
 
 	/**
 	 * The feature id for the '<em><b>Rssnames</b></em>' containment reference.
@@ -2633,7 +2770,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__RSSNAMES = 113;
+	int DOCUMENT_ROOT__RSSNAMES = 117;
 
 	/**
 	 * The feature id for the '<em><b>Scripts</b></em>' containment reference.
@@ -2642,7 +2779,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__SCRIPTS = 114;
+	int DOCUMENT_ROOT__SCRIPTS = 118;
 
 	/**
 	 * The feature id for the '<em><b>Severities</b></em>' containment reference.
@@ -2651,16 +2788,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__SEVERITIES = 115;
-
-	/**
-	 * The feature id for the '<em><b>Severity</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DOCUMENT_ROOT__SEVERITY = 116;
+	int DOCUMENT_ROOT__SEVERITIES = 119;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SEVERITY = 120;
 
 	/**
 	 * The feature id for the '<em><b>Sources</b></em>' containment reference.
@@ -2669,7 +2806,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__SOURCES = 117;
+	int DOCUMENT_ROOT__SOURCES = 121;
 
 	/**
 	 * The feature id for the '<em><b>Stringliterals</b></em>' containment reference.
@@ -2678,7 +2815,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__STRINGLITERALS = 118;
+	int DOCUMENT_ROOT__STRINGLITERALS = 122;
 
 	/**
 	 * The feature id for the '<em><b>Stringsinresourcefiles</b></em>' containment reference.
@@ -2687,7 +2824,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__STRINGSINRESOURCEFILES = 119;
+	int DOCUMENT_ROOT__STRINGSINRESOURCEFILES = 123;
 
 	/**
 	 * The feature id for the '<em><b>Struct</b></em>' containment reference.
@@ -2696,7 +2833,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__STRUCT = 120;
+	int DOCUMENT_ROOT__STRUCT = 124;
 
 	/**
 	 * The feature id for the '<em><b>Tcclasses</b></em>' containment reference.
@@ -2705,7 +2842,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__TCCLASSES = 121;
+	int DOCUMENT_ROOT__TCCLASSES = 125;
 
 	/**
 	 * The feature id for the '<em><b>Tclassdestructor</b></em>' containment reference.
@@ -2714,7 +2851,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__TCLASSDESTRUCTOR = 122;
+	int DOCUMENT_ROOT__TCLASSDESTRUCTOR = 126;
 
 	/**
 	 * The feature id for the '<em><b>Timestampedoutput</b></em>' attribute.
@@ -2723,7 +2860,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__TIMESTAMPEDOUTPUT = 123;
+	int DOCUMENT_ROOT__TIMESTAMPEDOUTPUT = 127;
 
 	/**
 	 * The feature id for the '<em><b>Title</b></em>' attribute.
@@ -2732,7 +2869,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__TITLE = 124;
+	int DOCUMENT_ROOT__TITLE = 128;
 
 	/**
 	 * The feature id for the '<em><b>Todocomments</b></em>' containment reference.
@@ -2741,7 +2878,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__TODOCOMMENTS = 125;
+	int DOCUMENT_ROOT__TODOCOMMENTS = 129;
 
 	/**
 	 * The feature id for the '<em><b>Trapcleanup</b></em>' containment reference.
@@ -2750,7 +2887,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__TRAPCLEANUP = 126;
+	int DOCUMENT_ROOT__TRAPCLEANUP = 130;
 
 	/**
 	 * The feature id for the '<em><b>Trapeleave</b></em>' containment reference.
@@ -2759,7 +2896,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__TRAPELEAVE = 127;
+	int DOCUMENT_ROOT__TRAPELEAVE = 131;
 
 	/**
 	 * The feature id for the '<em><b>Traprunl</b></em>' containment reference.
@@ -2768,7 +2905,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__TRAPRUNL = 128;
+	int DOCUMENT_ROOT__TRAPRUNL = 132;
 
 	/**
 	 * The feature id for the '<em><b>Trspassing</b></em>' containment reference.
@@ -2777,7 +2914,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__TRSPASSING = 129;
+	int DOCUMENT_ROOT__TRSPASSING = 133;
 
 	/**
 	 * The feature id for the '<em><b>Uids</b></em>' containment reference.
@@ -2786,7 +2923,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__UIDS = 130;
+	int DOCUMENT_ROOT__UIDS = 134;
 
 	/**
 	 * The feature id for the '<em><b>Uncompressedaif</b></em>' containment reference.
@@ -2795,7 +2932,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__UNCOMPRESSEDAIF = 131;
+	int DOCUMENT_ROOT__UNCOMPRESSEDAIF = 135;
 
 	/**
 	 * The feature id for the '<em><b>Uncompressedbmp</b></em>' containment reference.
@@ -2804,7 +2941,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__UNCOMPRESSEDBMP = 132;
+	int DOCUMENT_ROOT__UNCOMPRESSEDBMP = 136;
 
 	/**
 	 * The feature id for the '<em><b>Unicodesource</b></em>' containment reference.
@@ -2813,7 +2950,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__UNICODESOURCE = 133;
+	int DOCUMENT_ROOT__UNICODESOURCE = 137;
 
 	/**
 	 * The feature id for the '<em><b>Userafter</b></em>' containment reference.
@@ -2822,7 +2959,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__USERAFTER = 134;
+	int DOCUMENT_ROOT__USERAFTER = 138;
 
 	/**
 	 * The feature id for the '<em><b>Userfree</b></em>' containment reference.
@@ -2831,7 +2968,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__USERFREE = 135;
+	int DOCUMENT_ROOT__USERFREE = 139;
 
 	/**
 	 * The feature id for the '<em><b>User Wait For Request</b></em>' containment reference.
@@ -2840,7 +2977,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__USER_WAIT_FOR_REQUEST = 136;
+	int DOCUMENT_ROOT__USER_WAIT_FOR_REQUEST = 140;
 
 	/**
 	 * The feature id for the '<em><b>Variablenames</b></em>' containment reference.
@@ -2849,7 +2986,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__VARIABLENAMES = 137;
+	int DOCUMENT_ROOT__VARIABLENAMES = 141;
 
 	/**
 	 * The feature id for the '<em><b>Voidparameter</b></em>' containment reference.
@@ -2858,7 +2995,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__VOIDPARAMETER = 138;
+	int DOCUMENT_ROOT__VOIDPARAMETER = 142;
 
 	/**
 	 * The feature id for the '<em><b>Words RE</b></em>' attribute.
@@ -2867,7 +3004,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__WORDS_RE = 139;
+	int DOCUMENT_ROOT__WORDS_RE = 143;
 
 	/**
 	 * The feature id for the '<em><b>Worryingcomments</b></em>' containment reference.
@@ -2876,7 +3013,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__WORRYINGCOMMENTS = 140;
+	int DOCUMENT_ROOT__WORRYINGCOMMENTS = 144;
 
 	/**
 	 * The feature id for the '<em><b>Worry RE</b></em>' attribute.
@@ -2885,16 +3022,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__WORRY_RE = 141;
-
-	/**
-	 * The feature id for the '<em><b>Category</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DOCUMENT_ROOT__CATEGORY = 142;
+	int DOCUMENT_ROOT__WORRY_RE = 145;
+
+	/**
+	 * The feature id for the '<em><b>Category</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CATEGORY = 146;
 
 	/**
 	 * The feature id for the '<em><b>Severity1</b></em>' attribute.
@@ -2903,7 +3040,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT__SEVERITY1 = 143;
+	int DOCUMENT_ROOT__SEVERITY1 = 147;
 
 	/**
 	 * The number of structural features of the '<em>Document Root</em>' class.
@@ -2912,7 +3049,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DOCUMENT_ROOT_FEATURE_COUNT = 144;
+	int DOCUMENT_ROOT_FEATURE_COUNT = 148;
 
 	/**
 	 * The meta object id for the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DoubleSemiColonTypeImpl <em>Double Semi Colon Type</em>}' class.
@@ -2922,7 +3059,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getDoubleSemiColonType()
 	 * @generated
 	 */
-	int DOUBLE_SEMI_COLON_TYPE = 33;
+	int DOUBLE_SEMI_COLON_TYPE = 35;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -2968,7 +3105,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getDrivelettersType()
 	 * @generated
 	 */
-	int DRIVELETTERS_TYPE = 34;
+	int DRIVELETTERS_TYPE = 36;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3014,7 +3151,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getEikbuttonsType()
 	 * @generated
 	 */
-	int EIKBUTTONS_TYPE = 35;
+	int EIKBUTTONS_TYPE = 37;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3060,7 +3197,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getEikonenvstaticType()
 	 * @generated
 	 */
-	int EIKONENVSTATIC_TYPE = 36;
+	int EIKONENVSTATIC_TYPE = 38;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3106,7 +3243,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getEnummembersType()
 	 * @generated
 	 */
-	int ENUMMEMBERS_TYPE = 37;
+	int ENUMMEMBERS_TYPE = 39;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3152,7 +3289,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getEnumnamesType()
 	 * @generated
 	 */
-	int ENUMNAMES_TYPE = 38;
+	int ENUMNAMES_TYPE = 40;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3198,7 +3335,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getExportinlineType()
 	 * @generated
 	 */
-	int EXPORTINLINE_TYPE = 39;
+	int EXPORTINLINE_TYPE = 41;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3244,7 +3381,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getExportpurevirtualType()
 	 * @generated
 	 */
-	int EXPORTPUREVIRTUAL_TYPE = 40;
+	int EXPORTPUREVIRTUAL_TYPE = 42;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3290,7 +3427,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getExternaldrivelettersType()
 	 * @generated
 	 */
-	int EXTERNALDRIVELETTERS_TYPE = 41;
+	int EXTERNALDRIVELETTERS_TYPE = 43;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3329,6 +3466,52 @@
 	int EXTERNALDRIVELETTERS_TYPE_FEATURE_COUNT = 3;
 
 	/**
+	 * The meta object id for the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.FlagsTypeImpl <em>Flags Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.FlagsTypeImpl
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getFlagsType()
+	 * @generated
+	 */
+	int FLAGS_TYPE = 44;
+
+	/**
+	 * The feature id for the '<em><b>Category</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLAGS_TYPE__CATEGORY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Enable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLAGS_TYPE__ENABLE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLAGS_TYPE__SEVERITY = 2;
+
+	/**
+	 * The number of structural features of the '<em>Flags Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLAGS_TYPE_FEATURE_COUNT = 3;
+
+	/**
 	 * The meta object id for the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.FoffTypeImpl <em>Foff Type</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -3336,7 +3519,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getFoffType()
 	 * @generated
 	 */
-	int FOFF_TYPE = 42;
+	int FOFF_TYPE = 45;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3382,7 +3565,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getForbiddenwordsType()
 	 * @generated
 	 */
-	int FORBIDDENWORDS_TYPE = 43;
+	int FORBIDDENWORDS_TYPE = 46;
 
 	/**
 	 * The feature id for the '<em><b>Words RE</b></em>' attribute.
@@ -3437,7 +3620,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getForgottoputptroncleanupstackType()
 	 * @generated
 	 */
-	int FORGOTTOPUTPTRONCLEANUPSTACK_TYPE = 44;
+	int FORGOTTOPUTPTRONCLEANUPSTACK_TYPE = 47;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3483,7 +3666,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getFriendType()
 	 * @generated
 	 */
-	int FRIEND_TYPE = 45;
+	int FRIEND_TYPE = 48;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3529,7 +3712,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getFunctionalityType()
 	 * @generated
 	 */
-	int FUNCTIONALITY_TYPE = 46;
+	int FUNCTIONALITY_TYPE = 49;
 
 	/**
 	 * The feature id for the '<em><b>Enable</b></em>' attribute.
@@ -3557,7 +3740,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getGotoType()
 	 * @generated
 	 */
-	int GOTO_TYPE = 47;
+	int GOTO_TYPE = 50;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3603,7 +3786,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getHighType()
 	 * @generated
 	 */
-	int HIGH_TYPE = 48;
+	int HIGH_TYPE = 51;
 
 	/**
 	 * The feature id for the '<em><b>Enable</b></em>' attribute.
@@ -3631,7 +3814,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getIfassignmentsType()
 	 * @generated
 	 */
-	int IFASSIGNMENTS_TYPE = 49;
+	int IFASSIGNMENTS_TYPE = 52;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3677,7 +3860,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getIfpreprocessorType()
 	 * @generated
 	 */
-	int IFPREPROCESSOR_TYPE = 50;
+	int IFPREPROCESSOR_TYPE = 53;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3723,7 +3906,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getInheritanceorderType()
 	 * @generated
 	 */
-	int INHERITANCEORDER_TYPE = 51;
+	int INHERITANCEORDER_TYPE = 54;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3769,7 +3952,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getIntleavesType()
 	 * @generated
 	 */
-	int INTLEAVES_TYPE = 52;
+	int INTLEAVES_TYPE = 55;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3815,7 +3998,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getJmpType()
 	 * @generated
 	 */
-	int JMP_TYPE = 53;
+	int JMP_TYPE = 56;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3861,7 +4044,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getKeywordType()
 	 * @generated
 	 */
-	int KEYWORD_TYPE = 54;
+	int KEYWORD_TYPE = 57;
 
 	/**
 	 * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -3898,7 +4081,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getLeaveNoErrorType()
 	 * @generated
 	 */
-	int LEAVE_NO_ERROR_TYPE = 55;
+	int LEAVE_NO_ERROR_TYPE = 58;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3944,7 +4127,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getLeaveType()
 	 * @generated
 	 */
-	int LEAVE_TYPE = 56;
+	int LEAVE_TYPE = 59;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -3990,7 +4173,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getLeavingoperatorsType()
 	 * @generated
 	 */
-	int LEAVINGOPERATORS_TYPE = 57;
+	int LEAVINGOPERATORS_TYPE = 60;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4036,7 +4219,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getLegalType()
 	 * @generated
 	 */
-	int LEGAL_TYPE = 58;
+	int LEGAL_TYPE = 61;
 
 	/**
 	 * The feature id for the '<em><b>Enable</b></em>' attribute.
@@ -4064,7 +4247,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getLFunctionCantLeaveType()
 	 * @generated
 	 */
-	int LFUNCTION_CANT_LEAVE_TYPE = 59;
+	int LFUNCTION_CANT_LEAVE_TYPE = 62;
 
 	/**
 	 * The feature id for the '<em><b>LFunction Ignore RE</b></em>' attribute.
@@ -4119,7 +4302,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getLocalisationType()
 	 * @generated
 	 */
-	int LOCALISATION_TYPE = 60;
+	int LOCALISATION_TYPE = 63;
 
 	/**
 	 * The feature id for the '<em><b>Enable</b></em>' attribute.
@@ -4147,7 +4330,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getLonglinesType()
 	 * @generated
 	 */
-	int LONGLINES_TYPE = 61;
+	int LONGLINES_TYPE = 64;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4202,7 +4385,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getLowType()
 	 * @generated
 	 */
-	int LOW_TYPE = 62;
+	int LOW_TYPE = 65;
 
 	/**
 	 * The feature id for the '<em><b>Enable</b></em>' attribute.
@@ -4230,7 +4413,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMagicnumbersType()
 	 * @generated
 	 */
-	int MAGICNUMBERS_TYPE = 63;
+	int MAGICNUMBERS_TYPE = 66;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4276,7 +4459,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMclassdestructorType()
 	 * @generated
 	 */
-	int MCLASSDESTRUCTOR_TYPE = 64;
+	int MCLASSDESTRUCTOR_TYPE = 67;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4322,7 +4505,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMediumType()
 	 * @generated
 	 */
-	int MEDIUM_TYPE = 65;
+	int MEDIUM_TYPE = 68;
 
 	/**
 	 * The feature id for the '<em><b>Enable</b></em>' attribute.
@@ -4350,7 +4533,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMemberlcType()
 	 * @generated
 	 */
-	int MEMBERLC_TYPE = 66;
+	int MEMBERLC_TYPE = 69;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4396,7 +4579,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMembervariablecallldType()
 	 * @generated
 	 */
-	int MEMBERVARIABLECALLLD_TYPE = 67;
+	int MEMBERVARIABLECALLLD_TYPE = 70;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4442,7 +4625,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMissingcancelType()
 	 * @generated
 	 */
-	int MISSINGCANCEL_TYPE = 68;
+	int MISSINGCANCEL_TYPE = 71;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4488,7 +4671,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMissingcclassType()
 	 * @generated
 	 */
-	int MISSINGCCLASS_TYPE = 69;
+	int MISSINGCCLASS_TYPE = 72;
 
 	/**
 	 * The feature id for the '<em><b>Cclass Ignore RE</b></em>' attribute.
@@ -4543,7 +4726,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMmpsourcepathType()
 	 * @generated
 	 */
-	int MMPSOURCEPATH_TYPE = 70;
+	int MMPSOURCEPATH_TYPE = 73;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4589,7 +4772,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMultilangrscType()
 	 * @generated
 	 */
-	int MULTILANGRSC_TYPE = 71;
+	int MULTILANGRSC_TYPE = 74;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4635,7 +4818,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMultipledeclarationsType()
 	 * @generated
 	 */
-	int MULTIPLEDECLARATIONS_TYPE = 72;
+	int MULTIPLEDECLARATIONS_TYPE = 75;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4681,7 +4864,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMultipleinheritanceType()
 	 * @generated
 	 */
-	int MULTIPLEINHERITANCE_TYPE = 73;
+	int MULTIPLEINHERITANCE_TYPE = 76;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4727,7 +4910,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getMydocsType()
 	 * @generated
 	 */
-	int MYDOCS_TYPE = 74;
+	int MYDOCS_TYPE = 77;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4773,7 +4956,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getNamespaceType()
 	 * @generated
 	 */
-	int NAMESPACE_TYPE = 75;
+	int NAMESPACE_TYPE = 78;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4819,7 +5002,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getNewlreferencesType()
 	 * @generated
 	 */
-	int NEWLREFERENCES_TYPE = 76;
+	int NEWLREFERENCES_TYPE = 79;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4865,7 +5048,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getNoleavetrapType()
 	 * @generated
 	 */
-	int NOLEAVETRAP_TYPE = 77;
+	int NOLEAVETRAP_TYPE = 80;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4911,7 +5094,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getNonconsthbufcType()
 	 * @generated
 	 */
-	int NONCONSTHBUFC_TYPE = 78;
+	int NONCONSTHBUFC_TYPE = 81;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -4957,7 +5140,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getNonconsttdescType()
 	 * @generated
 	 */
-	int NONCONSTTDESC_TYPE = 79;
+	int NONCONSTTDESC_TYPE = 82;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5003,7 +5186,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getNonleavenewType()
 	 * @generated
 	 */
-	int NONLEAVENEW_TYPE = 80;
+	int NONLEAVENEW_TYPE = 83;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5049,7 +5232,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getNonunicodeskinsType()
 	 * @generated
 	 */
-	int NONUNICODESKINS_TYPE = 81;
+	int NONUNICODESKINS_TYPE = 84;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5095,7 +5278,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getNullType()
 	 * @generated
 	 */
-	int NULL_TYPE = 82;
+	int NULL_TYPE = 85;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5141,7 +5324,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getOpenType()
 	 * @generated
 	 */
-	int OPEN_TYPE = 83;
+	int OPEN_TYPE = 86;
 
 	/**
 	 * The feature id for the '<em><b>Open Ignore RE</b></em>' attribute.
@@ -5196,7 +5379,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getOtherType()
 	 * @generated
 	 */
-	int OTHER_TYPE = 84;
+	int OTHER_TYPE = 87;
 
 	/**
 	 * The feature id for the '<em><b>Enable</b></em>' attribute.
@@ -5224,7 +5407,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getPanicType()
 	 * @generated
 	 */
-	int PANIC_TYPE = 85;
+	int PANIC_TYPE = 88;
 
 	/**
 	 * The feature id for the '<em><b>Enable</b></em>' attribute.
@@ -5252,7 +5435,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getPerformanceType()
 	 * @generated
 	 */
-	int PERFORMANCE_TYPE = 86;
+	int PERFORMANCE_TYPE = 89;
 
 	/**
 	 * The feature id for the '<em><b>Enable</b></em>' attribute.
@@ -5280,7 +5463,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getPointertoarraysType()
 	 * @generated
 	 */
-	int POINTERTOARRAYS_TYPE = 87;
+	int POINTERTOARRAYS_TYPE = 90;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5326,7 +5509,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getPragmadisableType()
 	 * @generated
 	 */
-	int PRAGMADISABLE_TYPE = 88;
+	int PRAGMADISABLE_TYPE = 91;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5372,7 +5555,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getPragmamessageType()
 	 * @generated
 	 */
-	int PRAGMAMESSAGE_TYPE = 89;
+	int PRAGMAMESSAGE_TYPE = 92;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5418,7 +5601,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getPragmaotherType()
 	 * @generated
 	 */
-	int PRAGMAOTHER_TYPE = 90;
+	int PRAGMAOTHER_TYPE = 93;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5464,7 +5647,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getPrivateinheritanceType()
 	 * @generated
 	 */
-	int PRIVATEINHERITANCE_TYPE = 91;
+	int PRIVATEINHERITANCE_TYPE = 94;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5510,7 +5693,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getPushaddrvarType()
 	 * @generated
 	 */
-	int PUSHADDRVAR_TYPE = 92;
+	int PUSHADDRVAR_TYPE = 95;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5556,7 +5739,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getPushmemberType()
 	 * @generated
 	 */
-	int PUSHMEMBER_TYPE = 93;
+	int PUSHMEMBER_TYPE = 96;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5602,7 +5785,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getReadresourceType()
 	 * @generated
 	 */
-	int READRESOURCE_TYPE = 94;
+	int READRESOURCE_TYPE = 97;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5648,7 +5831,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getResourcenotoncleanupstackType()
 	 * @generated
 	 */
-	int RESOURCENOTONCLEANUPSTACK_TYPE = 95;
+	int RESOURCENOTONCLEANUPSTACK_TYPE = 98;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5694,7 +5877,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getResourcesonheapType()
 	 * @generated
 	 */
-	int RESOURCESONHEAP_TYPE = 96;
+	int RESOURCESONHEAP_TYPE = 99;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5740,7 +5923,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getReturndescriptoroutofscopeType()
 	 * @generated
 	 */
-	int RETURNDESCRIPTOROUTOFSCOPE_TYPE = 97;
+	int RETURNDESCRIPTOROUTOFSCOPE_TYPE = 100;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5786,7 +5969,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getRfsType()
 	 * @generated
 	 */
-	int RFS_TYPE = 98;
+	int RFS_TYPE = 101;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5832,7 +6015,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getRssnamesType()
 	 * @generated
 	 */
-	int RSSNAMES_TYPE = 99;
+	int RSSNAMES_TYPE = 102;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -5878,7 +6061,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getScriptsType()
 	 * @generated
 	 */
-	int SCRIPTS_TYPE = 100;
+	int SCRIPTS_TYPE = 103;
 
 	/**
 	 * The feature id for the '<em><b>Mixed</b></em>' attribute list.
@@ -6052,13 +6235,31 @@
 	int SCRIPTS_TYPE__CONTROLORNULL = 18;
 
 	/**
+	 * The feature id for the '<em><b>Crepository</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SCRIPTS_TYPE__CREPOSITORY = 19;
+
+	/**
 	 * The feature id for the '<em><b>Ctltargettype</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__CTLTARGETTYPE = 19;
+	int SCRIPTS_TYPE__CTLTARGETTYPE = 20;
+
+	/**
+	 * The feature id for the '<em><b>Customizableicons</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SCRIPTS_TYPE__CUSTOMIZABLEICONS = 21;
 
 	/**
 	 * The feature id for the '<em><b>Debugrom</b></em>' containment reference.
@@ -6067,7 +6268,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__DEBUGROM = 20;
+	int SCRIPTS_TYPE__DEBUGROM = 22;
 
 	/**
 	 * The feature id for the '<em><b>Declarename</b></em>' containment reference.
@@ -6076,7 +6277,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__DECLARENAME = 21;
+	int SCRIPTS_TYPE__DECLARENAME = 23;
 
 	/**
 	 * The feature id for the '<em><b>Delete Member Variable</b></em>' containment reference.
@@ -6085,7 +6286,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__DELETE_MEMBER_VARIABLE = 22;
+	int SCRIPTS_TYPE__DELETE_MEMBER_VARIABLE = 24;
 
 	/**
 	 * The feature id for the '<em><b>Destructor</b></em>' containment reference.
@@ -6094,7 +6295,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__DESTRUCTOR = 23;
+	int SCRIPTS_TYPE__DESTRUCTOR = 25;
 
 	/**
 	 * The feature id for the '<em><b>Double Semi Colon</b></em>' containment reference.
@@ -6103,7 +6304,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__DOUBLE_SEMI_COLON = 24;
+	int SCRIPTS_TYPE__DOUBLE_SEMI_COLON = 26;
 
 	/**
 	 * The feature id for the '<em><b>Driveletters</b></em>' containment reference.
@@ -6112,7 +6313,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__DRIVELETTERS = 25;
+	int SCRIPTS_TYPE__DRIVELETTERS = 27;
 
 	/**
 	 * The feature id for the '<em><b>Eikbuttons</b></em>' containment reference.
@@ -6121,7 +6322,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__EIKBUTTONS = 26;
+	int SCRIPTS_TYPE__EIKBUTTONS = 28;
 
 	/**
 	 * The feature id for the '<em><b>Eikonenvstatic</b></em>' containment reference.
@@ -6130,7 +6331,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__EIKONENVSTATIC = 27;
+	int SCRIPTS_TYPE__EIKONENVSTATIC = 29;
 
 	/**
 	 * The feature id for the '<em><b>Enummembers</b></em>' containment reference.
@@ -6139,7 +6340,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__ENUMMEMBERS = 28;
+	int SCRIPTS_TYPE__ENUMMEMBERS = 30;
 
 	/**
 	 * The feature id for the '<em><b>Enumnames</b></em>' containment reference.
@@ -6148,7 +6349,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__ENUMNAMES = 29;
+	int SCRIPTS_TYPE__ENUMNAMES = 31;
 
 	/**
 	 * The feature id for the '<em><b>Exportinline</b></em>' containment reference.
@@ -6157,7 +6358,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__EXPORTINLINE = 30;
+	int SCRIPTS_TYPE__EXPORTINLINE = 32;
 
 	/**
 	 * The feature id for the '<em><b>Exportpurevirtual</b></em>' containment reference.
@@ -6166,7 +6367,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__EXPORTPUREVIRTUAL = 31;
+	int SCRIPTS_TYPE__EXPORTPUREVIRTUAL = 33;
 
 	/**
 	 * The feature id for the '<em><b>Externaldriveletters</b></em>' containment reference.
@@ -6175,7 +6376,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__EXTERNALDRIVELETTERS = 32;
+	int SCRIPTS_TYPE__EXTERNALDRIVELETTERS = 34;
+
+	/**
+	 * The feature id for the '<em><b>Flags</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SCRIPTS_TYPE__FLAGS = 35;
 
 	/**
 	 * The feature id for the '<em><b>Foff</b></em>' containment reference.
@@ -6184,7 +6394,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__FOFF = 33;
+	int SCRIPTS_TYPE__FOFF = 36;
 
 	/**
 	 * The feature id for the '<em><b>Forbiddenwords</b></em>' containment reference.
@@ -6193,7 +6403,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__FORBIDDENWORDS = 34;
+	int SCRIPTS_TYPE__FORBIDDENWORDS = 37;
 
 	/**
 	 * The feature id for the '<em><b>Forgottoputptroncleanupstack</b></em>' containment reference.
@@ -6202,7 +6412,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__FORGOTTOPUTPTRONCLEANUPSTACK = 35;
+	int SCRIPTS_TYPE__FORGOTTOPUTPTRONCLEANUPSTACK = 38;
 
 	/**
 	 * The feature id for the '<em><b>Friend</b></em>' containment reference.
@@ -6211,7 +6421,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__FRIEND = 36;
+	int SCRIPTS_TYPE__FRIEND = 39;
 
 	/**
 	 * The feature id for the '<em><b>Goto</b></em>' containment reference.
@@ -6220,7 +6430,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__GOTO = 37;
+	int SCRIPTS_TYPE__GOTO = 40;
 
 	/**
 	 * The feature id for the '<em><b>Ifassignments</b></em>' containment reference.
@@ -6229,7 +6439,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__IFASSIGNMENTS = 38;
+	int SCRIPTS_TYPE__IFASSIGNMENTS = 41;
 
 	/**
 	 * The feature id for the '<em><b>Ifpreprocessor</b></em>' containment reference.
@@ -6238,7 +6448,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__IFPREPROCESSOR = 39;
+	int SCRIPTS_TYPE__IFPREPROCESSOR = 42;
 
 	/**
 	 * The feature id for the '<em><b>Inheritanceorder</b></em>' containment reference.
@@ -6247,7 +6457,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__INHERITANCEORDER = 40;
+	int SCRIPTS_TYPE__INHERITANCEORDER = 43;
 
 	/**
 	 * The feature id for the '<em><b>Intleaves</b></em>' containment reference.
@@ -6256,7 +6466,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__INTLEAVES = 41;
+	int SCRIPTS_TYPE__INTLEAVES = 44;
 
 	/**
 	 * The feature id for the '<em><b>Jmp</b></em>' containment reference.
@@ -6265,7 +6475,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__JMP = 42;
+	int SCRIPTS_TYPE__JMP = 45;
 
 	/**
 	 * The feature id for the '<em><b>Leave</b></em>' containment reference.
@@ -6274,7 +6484,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__LEAVE = 43;
+	int SCRIPTS_TYPE__LEAVE = 46;
 
 	/**
 	 * The feature id for the '<em><b>Leave No Error</b></em>' containment reference.
@@ -6283,7 +6493,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__LEAVE_NO_ERROR = 44;
+	int SCRIPTS_TYPE__LEAVE_NO_ERROR = 47;
 
 	/**
 	 * The feature id for the '<em><b>Leavingoperators</b></em>' containment reference.
@@ -6292,7 +6502,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__LEAVINGOPERATORS = 45;
+	int SCRIPTS_TYPE__LEAVINGOPERATORS = 48;
 
 	/**
 	 * The feature id for the '<em><b>LFunction Cant Leave</b></em>' containment reference.
@@ -6301,7 +6511,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__LFUNCTION_CANT_LEAVE = 46;
+	int SCRIPTS_TYPE__LFUNCTION_CANT_LEAVE = 49;
 
 	/**
 	 * The feature id for the '<em><b>Longlines</b></em>' containment reference.
@@ -6310,7 +6520,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__LONGLINES = 47;
+	int SCRIPTS_TYPE__LONGLINES = 50;
 
 	/**
 	 * The feature id for the '<em><b>Magicnumbers</b></em>' containment reference.
@@ -6319,7 +6529,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MAGICNUMBERS = 48;
+	int SCRIPTS_TYPE__MAGICNUMBERS = 51;
 
 	/**
 	 * The feature id for the '<em><b>Mclassdestructor</b></em>' containment reference.
@@ -6328,7 +6538,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MCLASSDESTRUCTOR = 49;
+	int SCRIPTS_TYPE__MCLASSDESTRUCTOR = 52;
 
 	/**
 	 * The feature id for the '<em><b>Memberlc</b></em>' containment reference.
@@ -6337,7 +6547,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MEMBERLC = 50;
+	int SCRIPTS_TYPE__MEMBERLC = 53;
 
 	/**
 	 * The feature id for the '<em><b>Membervariablecallld</b></em>' containment reference.
@@ -6346,7 +6556,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MEMBERVARIABLECALLLD = 51;
+	int SCRIPTS_TYPE__MEMBERVARIABLECALLLD = 54;
 
 	/**
 	 * The feature id for the '<em><b>Missingcancel</b></em>' containment reference.
@@ -6355,7 +6565,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MISSINGCANCEL = 52;
+	int SCRIPTS_TYPE__MISSINGCANCEL = 55;
 
 	/**
 	 * The feature id for the '<em><b>Missingcclass</b></em>' containment reference.
@@ -6364,7 +6574,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MISSINGCCLASS = 53;
+	int SCRIPTS_TYPE__MISSINGCCLASS = 56;
 
 	/**
 	 * The feature id for the '<em><b>Mmpsourcepath</b></em>' containment reference.
@@ -6373,7 +6583,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MMPSOURCEPATH = 54;
+	int SCRIPTS_TYPE__MMPSOURCEPATH = 57;
 
 	/**
 	 * The feature id for the '<em><b>Multilangrsc</b></em>' containment reference.
@@ -6382,7 +6592,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MULTILANGRSC = 55;
+	int SCRIPTS_TYPE__MULTILANGRSC = 58;
 
 	/**
 	 * The feature id for the '<em><b>Multipledeclarations</b></em>' containment reference.
@@ -6391,7 +6601,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MULTIPLEDECLARATIONS = 56;
+	int SCRIPTS_TYPE__MULTIPLEDECLARATIONS = 59;
 
 	/**
 	 * The feature id for the '<em><b>Multipleinheritance</b></em>' containment reference.
@@ -6400,7 +6610,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MULTIPLEINHERITANCE = 57;
+	int SCRIPTS_TYPE__MULTIPLEINHERITANCE = 60;
 
 	/**
 	 * The feature id for the '<em><b>Mydocs</b></em>' containment reference.
@@ -6409,7 +6619,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__MYDOCS = 58;
+	int SCRIPTS_TYPE__MYDOCS = 61;
 
 	/**
 	 * The feature id for the '<em><b>Namespace</b></em>' containment reference.
@@ -6418,7 +6628,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__NAMESPACE = 59;
+	int SCRIPTS_TYPE__NAMESPACE = 62;
 
 	/**
 	 * The feature id for the '<em><b>Newlreferences</b></em>' containment reference.
@@ -6427,7 +6637,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__NEWLREFERENCES = 60;
+	int SCRIPTS_TYPE__NEWLREFERENCES = 63;
 
 	/**
 	 * The feature id for the '<em><b>Noleavetrap</b></em>' containment reference.
@@ -6436,7 +6646,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__NOLEAVETRAP = 61;
+	int SCRIPTS_TYPE__NOLEAVETRAP = 64;
 
 	/**
 	 * The feature id for the '<em><b>Nonconsthbufc</b></em>' containment reference.
@@ -6445,7 +6655,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__NONCONSTHBUFC = 62;
+	int SCRIPTS_TYPE__NONCONSTHBUFC = 65;
 
 	/**
 	 * The feature id for the '<em><b>Nonconsttdesc</b></em>' containment reference.
@@ -6454,7 +6664,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__NONCONSTTDESC = 63;
+	int SCRIPTS_TYPE__NONCONSTTDESC = 66;
 
 	/**
 	 * The feature id for the '<em><b>Nonleavenew</b></em>' containment reference.
@@ -6463,7 +6673,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__NONLEAVENEW = 64;
+	int SCRIPTS_TYPE__NONLEAVENEW = 67;
 
 	/**
 	 * The feature id for the '<em><b>Nonunicodeskins</b></em>' containment reference.
@@ -6472,7 +6682,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__NONUNICODESKINS = 65;
+	int SCRIPTS_TYPE__NONUNICODESKINS = 68;
 
 	/**
 	 * The feature id for the '<em><b>Null</b></em>' containment reference.
@@ -6481,7 +6691,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__NULL = 66;
+	int SCRIPTS_TYPE__NULL = 69;
 
 	/**
 	 * The feature id for the '<em><b>Open</b></em>' containment reference.
@@ -6490,7 +6700,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__OPEN = 67;
+	int SCRIPTS_TYPE__OPEN = 70;
 
 	/**
 	 * The feature id for the '<em><b>Pointertoarrays</b></em>' containment reference.
@@ -6499,7 +6709,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__POINTERTOARRAYS = 68;
+	int SCRIPTS_TYPE__POINTERTOARRAYS = 71;
 
 	/**
 	 * The feature id for the '<em><b>Pragmadisable</b></em>' containment reference.
@@ -6508,7 +6718,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__PRAGMADISABLE = 69;
+	int SCRIPTS_TYPE__PRAGMADISABLE = 72;
 
 	/**
 	 * The feature id for the '<em><b>Pragmamessage</b></em>' containment reference.
@@ -6517,7 +6727,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__PRAGMAMESSAGE = 70;
+	int SCRIPTS_TYPE__PRAGMAMESSAGE = 73;
 
 	/**
 	 * The feature id for the '<em><b>Pragmaother</b></em>' containment reference.
@@ -6526,7 +6736,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__PRAGMAOTHER = 71;
+	int SCRIPTS_TYPE__PRAGMAOTHER = 74;
 
 	/**
 	 * The feature id for the '<em><b>Privateinheritance</b></em>' containment reference.
@@ -6535,7 +6745,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__PRIVATEINHERITANCE = 72;
+	int SCRIPTS_TYPE__PRIVATEINHERITANCE = 75;
 
 	/**
 	 * The feature id for the '<em><b>Pushaddrvar</b></em>' containment reference.
@@ -6544,7 +6754,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__PUSHADDRVAR = 73;
+	int SCRIPTS_TYPE__PUSHADDRVAR = 76;
 
 	/**
 	 * The feature id for the '<em><b>Pushmember</b></em>' containment reference.
@@ -6553,7 +6763,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__PUSHMEMBER = 74;
+	int SCRIPTS_TYPE__PUSHMEMBER = 77;
 
 	/**
 	 * The feature id for the '<em><b>Readresource</b></em>' containment reference.
@@ -6562,7 +6772,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__READRESOURCE = 75;
+	int SCRIPTS_TYPE__READRESOURCE = 78;
 
 	/**
 	 * The feature id for the '<em><b>Resourcenotoncleanupstack</b></em>' containment reference.
@@ -6571,7 +6781,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__RESOURCENOTONCLEANUPSTACK = 76;
+	int SCRIPTS_TYPE__RESOURCENOTONCLEANUPSTACK = 79;
 
 	/**
 	 * The feature id for the '<em><b>Resourcesonheap</b></em>' containment reference.
@@ -6580,7 +6790,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__RESOURCESONHEAP = 77;
+	int SCRIPTS_TYPE__RESOURCESONHEAP = 80;
 
 	/**
 	 * The feature id for the '<em><b>Returndescriptoroutofscope</b></em>' containment reference.
@@ -6589,7 +6799,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__RETURNDESCRIPTOROUTOFSCOPE = 78;
+	int SCRIPTS_TYPE__RETURNDESCRIPTOROUTOFSCOPE = 81;
 
 	/**
 	 * The feature id for the '<em><b>Rfs</b></em>' containment reference.
@@ -6598,7 +6808,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__RFS = 79;
+	int SCRIPTS_TYPE__RFS = 82;
 
 	/**
 	 * The feature id for the '<em><b>Rssnames</b></em>' containment reference.
@@ -6607,7 +6817,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__RSSNAMES = 80;
+	int SCRIPTS_TYPE__RSSNAMES = 83;
 
 	/**
 	 * The feature id for the '<em><b>Stringliterals</b></em>' containment reference.
@@ -6616,7 +6826,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__STRINGLITERALS = 81;
+	int SCRIPTS_TYPE__STRINGLITERALS = 84;
 
 	/**
 	 * The feature id for the '<em><b>Stringsinresourcefiles</b></em>' containment reference.
@@ -6625,7 +6835,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__STRINGSINRESOURCEFILES = 82;
+	int SCRIPTS_TYPE__STRINGSINRESOURCEFILES = 85;
 
 	/**
 	 * The feature id for the '<em><b>Struct</b></em>' containment reference.
@@ -6634,7 +6844,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__STRUCT = 83;
+	int SCRIPTS_TYPE__STRUCT = 86;
 
 	/**
 	 * The feature id for the '<em><b>Tcclasses</b></em>' containment reference.
@@ -6643,7 +6853,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__TCCLASSES = 84;
+	int SCRIPTS_TYPE__TCCLASSES = 87;
 
 	/**
 	 * The feature id for the '<em><b>Tclassdestructor</b></em>' containment reference.
@@ -6652,7 +6862,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__TCLASSDESTRUCTOR = 85;
+	int SCRIPTS_TYPE__TCLASSDESTRUCTOR = 88;
 
 	/**
 	 * The feature id for the '<em><b>Todocomments</b></em>' containment reference.
@@ -6661,7 +6871,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__TODOCOMMENTS = 86;
+	int SCRIPTS_TYPE__TODOCOMMENTS = 89;
 
 	/**
 	 * The feature id for the '<em><b>Trapcleanup</b></em>' containment reference.
@@ -6670,7 +6880,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__TRAPCLEANUP = 87;
+	int SCRIPTS_TYPE__TRAPCLEANUP = 90;
 
 	/**
 	 * The feature id for the '<em><b>Trapeleave</b></em>' containment reference.
@@ -6679,7 +6889,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__TRAPELEAVE = 88;
+	int SCRIPTS_TYPE__TRAPELEAVE = 91;
 
 	/**
 	 * The feature id for the '<em><b>Traprunl</b></em>' containment reference.
@@ -6688,7 +6898,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__TRAPRUNL = 89;
+	int SCRIPTS_TYPE__TRAPRUNL = 92;
 
 	/**
 	 * The feature id for the '<em><b>Trspassing</b></em>' containment reference.
@@ -6697,7 +6907,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__TRSPASSING = 90;
+	int SCRIPTS_TYPE__TRSPASSING = 93;
 
 	/**
 	 * The feature id for the '<em><b>Uids</b></em>' containment reference.
@@ -6706,7 +6916,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__UIDS = 91;
+	int SCRIPTS_TYPE__UIDS = 94;
 
 	/**
 	 * The feature id for the '<em><b>Uncompressedaif</b></em>' containment reference.
@@ -6715,7 +6925,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__UNCOMPRESSEDAIF = 92;
+	int SCRIPTS_TYPE__UNCOMPRESSEDAIF = 95;
 
 	/**
 	 * The feature id for the '<em><b>Uncompressedbmp</b></em>' containment reference.
@@ -6724,7 +6934,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__UNCOMPRESSEDBMP = 93;
+	int SCRIPTS_TYPE__UNCOMPRESSEDBMP = 96;
 
 	/**
 	 * The feature id for the '<em><b>Unicodesource</b></em>' containment reference.
@@ -6733,7 +6943,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__UNICODESOURCE = 94;
+	int SCRIPTS_TYPE__UNICODESOURCE = 97;
 
 	/**
 	 * The feature id for the '<em><b>Userafter</b></em>' containment reference.
@@ -6742,7 +6952,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__USERAFTER = 95;
+	int SCRIPTS_TYPE__USERAFTER = 98;
 
 	/**
 	 * The feature id for the '<em><b>Userfree</b></em>' containment reference.
@@ -6751,7 +6961,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__USERFREE = 96;
+	int SCRIPTS_TYPE__USERFREE = 99;
 
 	/**
 	 * The feature id for the '<em><b>User Wait For Request</b></em>' containment reference.
@@ -6760,7 +6970,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__USER_WAIT_FOR_REQUEST = 97;
+	int SCRIPTS_TYPE__USER_WAIT_FOR_REQUEST = 100;
 
 	/**
 	 * The feature id for the '<em><b>Variablenames</b></em>' containment reference.
@@ -6769,7 +6979,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__VARIABLENAMES = 98;
+	int SCRIPTS_TYPE__VARIABLENAMES = 101;
 
 	/**
 	 * The feature id for the '<em><b>Voidparameter</b></em>' containment reference.
@@ -6778,7 +6988,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__VOIDPARAMETER = 99;
+	int SCRIPTS_TYPE__VOIDPARAMETER = 102;
 
 	/**
 	 * The feature id for the '<em><b>Worryingcomments</b></em>' containment reference.
@@ -6787,7 +6997,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE__WORRYINGCOMMENTS = 100;
+	int SCRIPTS_TYPE__WORRYINGCOMMENTS = 103;
 
 	/**
 	 * The number of structural features of the '<em>Scripts Type</em>' class.
@@ -6796,7 +7006,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SCRIPTS_TYPE_FEATURE_COUNT = 101;
+	int SCRIPTS_TYPE_FEATURE_COUNT = 104;
 
 	/**
 	 * The meta object id for the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.SeveritiesTypeImpl <em>Severities Type</em>}' class.
@@ -6806,7 +7016,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getSeveritiesType()
 	 * @generated
 	 */
-	int SEVERITIES_TYPE = 101;
+	int SEVERITIES_TYPE = 104;
 
 	/**
 	 * The feature id for the '<em><b>High</b></em>' containment reference.
@@ -6852,7 +7062,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getSourcesType()
 	 * @generated
 	 */
-	int SOURCES_TYPE = 102;
+	int SOURCES_TYPE = 105;
 
 	/**
 	 * The feature id for the '<em><b>Exclude</b></em>' attribute list.
@@ -6880,7 +7090,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getStringliteralsType()
 	 * @generated
 	 */
-	int STRINGLITERALS_TYPE = 103;
+	int STRINGLITERALS_TYPE = 106;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -6926,7 +7136,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getStringsinresourcefilesType()
 	 * @generated
 	 */
-	int STRINGSINRESOURCEFILES_TYPE = 104;
+	int STRINGSINRESOURCEFILES_TYPE = 107;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -6972,7 +7182,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getStructType()
 	 * @generated
 	 */
-	int STRUCT_TYPE = 105;
+	int STRUCT_TYPE = 108;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7018,7 +7228,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getTcclassesType()
 	 * @generated
 	 */
-	int TCCLASSES_TYPE = 106;
+	int TCCLASSES_TYPE = 109;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7064,7 +7274,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getTclassdestructorType()
 	 * @generated
 	 */
-	int TCLASSDESTRUCTOR_TYPE = 107;
+	int TCLASSDESTRUCTOR_TYPE = 110;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7110,7 +7320,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getTodocommentsType()
 	 * @generated
 	 */
-	int TODOCOMMENTS_TYPE = 108;
+	int TODOCOMMENTS_TYPE = 111;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7156,7 +7366,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getTrapcleanupType()
 	 * @generated
 	 */
-	int TRAPCLEANUP_TYPE = 109;
+	int TRAPCLEANUP_TYPE = 112;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7202,7 +7412,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getTrapeleaveType()
 	 * @generated
 	 */
-	int TRAPELEAVE_TYPE = 110;
+	int TRAPELEAVE_TYPE = 113;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7248,7 +7458,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getTraprunlType()
 	 * @generated
 	 */
-	int TRAPRUNL_TYPE = 111;
+	int TRAPRUNL_TYPE = 114;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7294,7 +7504,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getTrspassingType()
 	 * @generated
 	 */
-	int TRSPASSING_TYPE = 112;
+	int TRSPASSING_TYPE = 115;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7340,7 +7550,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getUidsType()
 	 * @generated
 	 */
-	int UIDS_TYPE = 113;
+	int UIDS_TYPE = 116;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7386,7 +7596,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getUncompressedaifType()
 	 * @generated
 	 */
-	int UNCOMPRESSEDAIF_TYPE = 114;
+	int UNCOMPRESSEDAIF_TYPE = 117;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7432,7 +7642,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getUncompressedbmpType()
 	 * @generated
 	 */
-	int UNCOMPRESSEDBMP_TYPE = 115;
+	int UNCOMPRESSEDBMP_TYPE = 118;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7478,7 +7688,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getUnicodesourceType()
 	 * @generated
 	 */
-	int UNICODESOURCE_TYPE = 116;
+	int UNICODESOURCE_TYPE = 119;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7524,7 +7734,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getUserafterType()
 	 * @generated
 	 */
-	int USERAFTER_TYPE = 117;
+	int USERAFTER_TYPE = 120;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7570,7 +7780,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getUserfreeType()
 	 * @generated
 	 */
-	int USERFREE_TYPE = 118;
+	int USERFREE_TYPE = 121;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7616,7 +7826,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getUserWaitForRequestType()
 	 * @generated
 	 */
-	int USER_WAIT_FOR_REQUEST_TYPE = 119;
+	int USER_WAIT_FOR_REQUEST_TYPE = 122;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7662,7 +7872,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getVariablenamesType()
 	 * @generated
 	 */
-	int VARIABLENAMES_TYPE = 120;
+	int VARIABLENAMES_TYPE = 123;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7708,7 +7918,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getVoidparameterType()
 	 * @generated
 	 */
-	int VOIDPARAMETER_TYPE = 121;
+	int VOIDPARAMETER_TYPE = 124;
 
 	/**
 	 * The feature id for the '<em><b>Category</b></em>' attribute.
@@ -7754,7 +7964,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getWorryingcommentsType()
 	 * @generated
 	 */
-	int WORRYINGCOMMENTS_TYPE = 122;
+	int WORRYINGCOMMENTS_TYPE = 125;
 
 	/**
 	 * The feature id for the '<em><b>Worry RE</b></em>' attribute.
@@ -7809,7 +8019,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getCategoryType()
 	 * @generated
 	 */
-	int CATEGORY_TYPE = 123;
+	int CATEGORY_TYPE = 126;
 
 	/**
 	 * The meta object id for the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType <em>Severity Type</em>}' enum.
@@ -7819,7 +8029,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getSeverityType()
 	 * @generated
 	 */
-	int SEVERITY_TYPE = 124;
+	int SEVERITY_TYPE = 127;
 
 	/**
 	 * The meta object id for the '<em>Category Type Object</em>' data type.
@@ -7829,7 +8039,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getCategoryTypeObject()
 	 * @generated
 	 */
-	int CATEGORY_TYPE_OBJECT = 125;
+	int CATEGORY_TYPE_OBJECT = 128;
 
 	/**
 	 * The meta object id for the '<em>Severity Type Object</em>' data type.
@@ -7839,7 +8049,7 @@
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CSConfigPackageImpl#getSeverityTypeObject()
 	 * @generated
 	 */
-	int SEVERITY_TYPE_OBJECT = 126;
+	int SEVERITY_TYPE_OBJECT = 129;
 
 
 	/**
@@ -8941,6 +9151,49 @@
 	EAttribute getControlornullType_Severity();
 
 	/**
+	 * Returns the meta object for class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType <em>Crepository Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Crepository Type</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType
+	 * @generated
+	 */
+	EClass getCrepositoryType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getCategory <em>Category</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Category</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getCategory()
+	 * @see #getCrepositoryType()
+	 * @generated
+	 */
+	EAttribute getCrepositoryType_Category();
+
+	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#isEnable <em>Enable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Enable</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#isEnable()
+	 * @see #getCrepositoryType()
+	 * @generated
+	 */
+	EAttribute getCrepositoryType_Enable();
+
+	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getSeverity <em>Severity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Severity</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getSeverity()
+	 * @see #getCrepositoryType()
+	 * @generated
+	 */
+	EAttribute getCrepositoryType_Severity();
+
+	/**
 	 * Returns the meta object for class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CtltargettypeType <em>Ctltargettype Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -8984,6 +9237,60 @@
 	EAttribute getCtltargettypeType_Severity();
 
 	/**
+	 * Returns the meta object for class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType <em>Customizableicons Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Customizableicons Type</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType
+	 * @generated
+	 */
+	EClass getCustomizableiconsType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getIconsRE <em>Icons RE</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Icons RE</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getIconsRE()
+	 * @see #getCustomizableiconsType()
+	 * @generated
+	 */
+	EAttribute getCustomizableiconsType_IconsRE();
+
+	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getCategory <em>Category</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Category</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getCategory()
+	 * @see #getCustomizableiconsType()
+	 * @generated
+	 */
+	EAttribute getCustomizableiconsType_Category();
+
+	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#isEnable <em>Enable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Enable</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#isEnable()
+	 * @see #getCustomizableiconsType()
+	 * @generated
+	 */
+	EAttribute getCustomizableiconsType_Enable();
+
+	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getSeverity <em>Severity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Severity</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getSeverity()
+	 * @see #getCustomizableiconsType()
+	 * @generated
+	 */
+	EAttribute getCustomizableiconsType_Severity();
+
+	/**
 	 * Returns the meta object for class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomrulesType <em>Customrules Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -9603,6 +9910,17 @@
 	EReference getDocumentRoot_Controlornull();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCrepository <em>Crepository</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Crepository</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCrepository()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EReference getDocumentRoot_Crepository();
+
+	/**
 	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCtltargettype <em>Ctltargettype</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -9614,6 +9932,17 @@
 	EReference getDocumentRoot_Ctltargettype();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCustomizableicons <em>Customizableicons</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Customizableicons</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCustomizableicons()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EReference getDocumentRoot_Customizableicons();
+
+	/**
 	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCustomrule <em>Customrule</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -9823,6 +10152,17 @@
 	EAttribute getDocumentRoot_Filetype();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getFlags <em>Flags</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Flags</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getFlags()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EReference getDocumentRoot_Flags();
+
+	/**
 	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getFoff <em>Foff</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -9900,6 +10240,17 @@
 	EReference getDocumentRoot_High();
 
 	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getIconsRE <em>Icons RE</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Icons RE</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getIconsRE()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EAttribute getDocumentRoot_IconsRE();
+
+	/**
 	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getIfassignments <em>Ifassignments</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -11266,6 +11617,49 @@
 	EAttribute getExternaldrivelettersType_Severity();
 
 	/**
+	 * Returns the meta object for class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType <em>Flags Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Flags Type</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType
+	 * @generated
+	 */
+	EClass getFlagsType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getCategory <em>Category</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Category</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getCategory()
+	 * @see #getFlagsType()
+	 * @generated
+	 */
+	EAttribute getFlagsType_Category();
+
+	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#isEnable <em>Enable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Enable</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#isEnable()
+	 * @see #getFlagsType()
+	 * @generated
+	 */
+	EAttribute getFlagsType_Enable();
+
+	/**
+	 * Returns the meta object for the attribute '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getSeverity <em>Severity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Severity</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getSeverity()
+	 * @see #getFlagsType()
+	 * @generated
+	 */
+	EAttribute getFlagsType_Severity();
+
+	/**
 	 * Returns the meta object for class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FoffType <em>Foff Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -13825,6 +14219,17 @@
 	EReference getScriptsType_Controlornull();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getCrepository <em>Crepository</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Crepository</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getCrepository()
+	 * @see #getScriptsType()
+	 * @generated
+	 */
+	EReference getScriptsType_Crepository();
+
+	/**
 	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getCtltargettype <em>Ctltargettype</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -13836,6 +14241,17 @@
 	EReference getScriptsType_Ctltargettype();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getCustomizableicons <em>Customizableicons</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Customizableicons</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getCustomizableicons()
+	 * @see #getScriptsType()
+	 * @generated
+	 */
+	EReference getScriptsType_Customizableicons();
+
+	/**
 	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getDebugrom <em>Debugrom</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -13979,6 +14395,17 @@
 	EReference getScriptsType_Externaldriveletters();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getFlags <em>Flags</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Flags</em>'.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getFlags()
+	 * @see #getScriptsType()
+	 * @generated
+	 */
+	EReference getScriptsType_Flags();
+
+	/**
 	 * Returns the meta object for the containment reference '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getFoff <em>Foff</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -15687,7 +16114,7 @@
 	 * <!-- end-user-doc -->
 	 * @return the meta object for data type '<em>Category Type Object</em>'.
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType
-	 * @model instanceClass="com.nokia.carbide.cpp.codescanner.gen.CSConfig.CategoryType"
+	 * @model instanceClass="com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType"
 	 *        extendedMetaData="name='category_._type:Object' baseType='category_._type'"
 	 * @generated
 	 */
@@ -15699,7 +16126,7 @@
 	 * <!-- end-user-doc -->
 	 * @return the meta object for data type '<em>Severity Type Object</em>'.
 	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType
-	 * @model instanceClass="com.nokia.carbide.cpp.codescanner.gen.CSConfig.SeverityType"
+	 * @model instanceClass="com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType"
 	 *        extendedMetaData="name='severity_._type:Object' baseType='severity_._type'"
 	 * @generated
 	 */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/CrepositoryType.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,209 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+package com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Crepository Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getCategory <em>Category</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#isEnable <em>Enable</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getCrepositoryType()
+ * @model extendedMetaData="name='crepository_._type' kind='empty'"
+ * @generated
+ */
+public interface CrepositoryType extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Category</b></em>' attribute.
+	 * The literals are from the enumeration {@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Category</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Category</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType
+	 * @see #isSetCategory()
+	 * @see #unsetCategory()
+	 * @see #setCategory(CategoryType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getCrepositoryType_Category()
+	 * @model unsettable="true"
+	 *        extendedMetaData="kind='attribute' name='category' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	CategoryType getCategory();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getCategory <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Category</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType
+	 * @see #isSetCategory()
+	 * @see #unsetCategory()
+	 * @see #getCategory()
+	 * @generated
+	 */
+	void setCategory(CategoryType value);
+
+	/**
+	 * Unsets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getCategory <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetCategory()
+	 * @see #getCategory()
+	 * @see #setCategory(CategoryType)
+	 * @generated
+	 */
+	void unsetCategory();
+
+	/**
+	 * Returns whether the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getCategory <em>Category</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Category</em>' attribute is set.
+	 * @see #unsetCategory()
+	 * @see #getCategory()
+	 * @see #setCategory(CategoryType)
+	 * @generated
+	 */
+	boolean isSetCategory();
+
+	/**
+	 * Returns the value of the '<em><b>Enable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Enable</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Enable</em>' attribute.
+	 * @see #isSetEnable()
+	 * @see #unsetEnable()
+	 * @see #setEnable(boolean)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getCrepositoryType_Enable()
+	 * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean" required="true"
+	 *        extendedMetaData="kind='attribute' name='enable' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	boolean isEnable();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#isEnable <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Enable</em>' attribute.
+	 * @see #isSetEnable()
+	 * @see #unsetEnable()
+	 * @see #isEnable()
+	 * @generated
+	 */
+	void setEnable(boolean value);
+
+	/**
+	 * Unsets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#isEnable <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetEnable()
+	 * @see #isEnable()
+	 * @see #setEnable(boolean)
+	 * @generated
+	 */
+	void unsetEnable();
+
+	/**
+	 * Returns whether the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#isEnable <em>Enable</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Enable</em>' attribute is set.
+	 * @see #unsetEnable()
+	 * @see #isEnable()
+	 * @see #setEnable(boolean)
+	 * @generated
+	 */
+	boolean isSetEnable();
+
+	/**
+	 * Returns the value of the '<em><b>Severity</b></em>' attribute.
+	 * The literals are from the enumeration {@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Severity</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Severity</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType
+	 * @see #isSetSeverity()
+	 * @see #unsetSeverity()
+	 * @see #setSeverity(SeverityType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getCrepositoryType_Severity()
+	 * @model unsettable="true"
+	 *        extendedMetaData="kind='attribute' name='severity' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	SeverityType getSeverity();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getSeverity <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Severity</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType
+	 * @see #isSetSeverity()
+	 * @see #unsetSeverity()
+	 * @see #getSeverity()
+	 * @generated
+	 */
+	void setSeverity(SeverityType value);
+
+	/**
+	 * Unsets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getSeverity <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetSeverity()
+	 * @see #getSeverity()
+	 * @see #setSeverity(SeverityType)
+	 * @generated
+	 */
+	void unsetSeverity();
+
+	/**
+	 * Returns whether the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType#getSeverity <em>Severity</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Severity</em>' attribute is set.
+	 * @see #unsetSeverity()
+	 * @see #getSeverity()
+	 * @see #setSeverity(SeverityType)
+	 * @generated
+	 */
+	boolean isSetSeverity();
+
+} // CrepositoryType
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/CustomizableiconsType.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,237 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+package com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Customizableicons Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getIconsRE <em>Icons RE</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getCategory <em>Category</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#isEnable <em>Enable</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getCustomizableiconsType()
+ * @model extendedMetaData="name='customizableicons_._type' kind='elementOnly'"
+ * @generated
+ */
+public interface CustomizableiconsType extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Icons RE</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Icons RE</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Icons RE</em>' attribute.
+	 * @see #setIconsRE(String)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getCustomizableiconsType_IconsRE()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='iconsRE' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	String getIconsRE();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getIconsRE <em>Icons RE</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Icons RE</em>' attribute.
+	 * @see #getIconsRE()
+	 * @generated
+	 */
+	void setIconsRE(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Category</b></em>' attribute.
+	 * The literals are from the enumeration {@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Category</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Category</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType
+	 * @see #isSetCategory()
+	 * @see #unsetCategory()
+	 * @see #setCategory(CategoryType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getCustomizableiconsType_Category()
+	 * @model unsettable="true"
+	 *        extendedMetaData="kind='attribute' name='category' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	CategoryType getCategory();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getCategory <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Category</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType
+	 * @see #isSetCategory()
+	 * @see #unsetCategory()
+	 * @see #getCategory()
+	 * @generated
+	 */
+	void setCategory(CategoryType value);
+
+	/**
+	 * Unsets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getCategory <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetCategory()
+	 * @see #getCategory()
+	 * @see #setCategory(CategoryType)
+	 * @generated
+	 */
+	void unsetCategory();
+
+	/**
+	 * Returns whether the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getCategory <em>Category</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Category</em>' attribute is set.
+	 * @see #unsetCategory()
+	 * @see #getCategory()
+	 * @see #setCategory(CategoryType)
+	 * @generated
+	 */
+	boolean isSetCategory();
+
+	/**
+	 * Returns the value of the '<em><b>Enable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Enable</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Enable</em>' attribute.
+	 * @see #isSetEnable()
+	 * @see #unsetEnable()
+	 * @see #setEnable(boolean)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getCustomizableiconsType_Enable()
+	 * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean" required="true"
+	 *        extendedMetaData="kind='attribute' name='enable' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	boolean isEnable();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#isEnable <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Enable</em>' attribute.
+	 * @see #isSetEnable()
+	 * @see #unsetEnable()
+	 * @see #isEnable()
+	 * @generated
+	 */
+	void setEnable(boolean value);
+
+	/**
+	 * Unsets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#isEnable <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetEnable()
+	 * @see #isEnable()
+	 * @see #setEnable(boolean)
+	 * @generated
+	 */
+	void unsetEnable();
+
+	/**
+	 * Returns whether the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#isEnable <em>Enable</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Enable</em>' attribute is set.
+	 * @see #unsetEnable()
+	 * @see #isEnable()
+	 * @see #setEnable(boolean)
+	 * @generated
+	 */
+	boolean isSetEnable();
+
+	/**
+	 * Returns the value of the '<em><b>Severity</b></em>' attribute.
+	 * The literals are from the enumeration {@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Severity</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Severity</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType
+	 * @see #isSetSeverity()
+	 * @see #unsetSeverity()
+	 * @see #setSeverity(SeverityType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getCustomizableiconsType_Severity()
+	 * @model unsettable="true"
+	 *        extendedMetaData="kind='attribute' name='severity' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	SeverityType getSeverity();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getSeverity <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Severity</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType
+	 * @see #isSetSeverity()
+	 * @see #unsetSeverity()
+	 * @see #getSeverity()
+	 * @generated
+	 */
+	void setSeverity(SeverityType value);
+
+	/**
+	 * Unsets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getSeverity <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetSeverity()
+	 * @see #getSeverity()
+	 * @see #setSeverity(SeverityType)
+	 * @generated
+	 */
+	void unsetSeverity();
+
+	/**
+	 * Returns whether the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType#getSeverity <em>Severity</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Severity</em>' attribute is set.
+	 * @see #unsetSeverity()
+	 * @see #getSeverity()
+	 * @see #setSeverity(SeverityType)
+	 * @generated
+	 */
+	boolean isSetSeverity();
+
+} // CustomizableiconsType
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/DocumentRoot.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/DocumentRoot.java	Sat Apr 25 12:54:10 2009 -0500
@@ -59,7 +59,9 @@
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getConstnames <em>Constnames</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getConsttdescptr <em>Consttdescptr</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getControlornull <em>Controlornull</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCrepository <em>Crepository</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCtltargettype <em>Ctltargettype</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCustomizableicons <em>Customizableicons</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCustomrule <em>Customrule</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCustomrules <em>Customrules</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getDebugrom <em>Debugrom</em>}</li>
@@ -79,6 +81,7 @@
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getExportpurevirtual <em>Exportpurevirtual</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getExternaldriveletters <em>Externaldriveletters</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getFiletype <em>Filetype</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getFlags <em>Flags</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getFoff <em>Foff</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getForbiddenwords <em>Forbiddenwords</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getForgottoputptroncleanupstack <em>Forgottoputptroncleanupstack</em>}</li>
@@ -86,6 +89,7 @@
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getFunctionality <em>Functionality</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getGoto <em>Goto</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getHigh <em>High</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getIconsRE <em>Icons RE</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getIfassignments <em>Ifassignments</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getIfpreprocessor <em>Ifpreprocessor</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getInheritanceorder <em>Inheritanceorder</em>}</li>
@@ -912,6 +916,33 @@
 	void setControlornull(ControlornullType value);
 
 	/**
+	 * Returns the value of the '<em><b>Crepository</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Crepository</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Crepository</em>' containment reference.
+	 * @see #setCrepository(CrepositoryType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getDocumentRoot_Crepository()
+	 * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='crepository' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	CrepositoryType getCrepository();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCrepository <em>Crepository</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Crepository</em>' containment reference.
+	 * @see #getCrepository()
+	 * @generated
+	 */
+	void setCrepository(CrepositoryType value);
+
+	/**
 	 * Returns the value of the '<em><b>Ctltargettype</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
@@ -939,6 +970,33 @@
 	void setCtltargettype(CtltargettypeType value);
 
 	/**
+	 * Returns the value of the '<em><b>Customizableicons</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Customizableicons</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Customizableicons</em>' containment reference.
+	 * @see #setCustomizableicons(CustomizableiconsType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getDocumentRoot_Customizableicons()
+	 * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='customizableicons' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	CustomizableiconsType getCustomizableicons();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getCustomizableicons <em>Customizableicons</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Customizableicons</em>' containment reference.
+	 * @see #getCustomizableicons()
+	 * @generated
+	 */
+	void setCustomizableicons(CustomizableiconsType value);
+
+	/**
 	 * Returns the value of the '<em><b>Customrule</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
@@ -1452,6 +1510,33 @@
 	void setFiletype(String value);
 
 	/**
+	 * Returns the value of the '<em><b>Flags</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Flags</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Flags</em>' containment reference.
+	 * @see #setFlags(FlagsType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getDocumentRoot_Flags()
+	 * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='flags' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	FlagsType getFlags();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getFlags <em>Flags</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Flags</em>' containment reference.
+	 * @see #getFlags()
+	 * @generated
+	 */
+	void setFlags(FlagsType value);
+
+	/**
 	 * Returns the value of the '<em><b>Foff</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
@@ -1641,6 +1726,33 @@
 	void setHigh(HighType value);
 
 	/**
+	 * Returns the value of the '<em><b>Icons RE</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Icons RE</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Icons RE</em>' attribute.
+	 * @see #setIconsRE(String)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getDocumentRoot_IconsRE()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" upper="-2" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='iconsRE' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	String getIconsRE();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot#getIconsRE <em>Icons RE</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Icons RE</em>' attribute.
+	 * @see #getIconsRE()
+	 * @generated
+	 */
+	void setIconsRE(String value);
+
+	/**
 	 * Returns the value of the '<em><b>Ifassignments</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/FlagsType.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,209 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+package com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Flags Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getCategory <em>Category</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#isEnable <em>Enable</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getFlagsType()
+ * @model extendedMetaData="name='flags_._type' kind='empty'"
+ * @generated
+ */
+public interface FlagsType extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Category</b></em>' attribute.
+	 * The literals are from the enumeration {@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Category</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Category</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType
+	 * @see #isSetCategory()
+	 * @see #unsetCategory()
+	 * @see #setCategory(CategoryType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getFlagsType_Category()
+	 * @model unsettable="true"
+	 *        extendedMetaData="kind='attribute' name='category' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	CategoryType getCategory();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getCategory <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Category</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType
+	 * @see #isSetCategory()
+	 * @see #unsetCategory()
+	 * @see #getCategory()
+	 * @generated
+	 */
+	void setCategory(CategoryType value);
+
+	/**
+	 * Unsets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getCategory <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetCategory()
+	 * @see #getCategory()
+	 * @see #setCategory(CategoryType)
+	 * @generated
+	 */
+	void unsetCategory();
+
+	/**
+	 * Returns whether the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getCategory <em>Category</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Category</em>' attribute is set.
+	 * @see #unsetCategory()
+	 * @see #getCategory()
+	 * @see #setCategory(CategoryType)
+	 * @generated
+	 */
+	boolean isSetCategory();
+
+	/**
+	 * Returns the value of the '<em><b>Enable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Enable</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Enable</em>' attribute.
+	 * @see #isSetEnable()
+	 * @see #unsetEnable()
+	 * @see #setEnable(boolean)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getFlagsType_Enable()
+	 * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean" required="true"
+	 *        extendedMetaData="kind='attribute' name='enable' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	boolean isEnable();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#isEnable <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Enable</em>' attribute.
+	 * @see #isSetEnable()
+	 * @see #unsetEnable()
+	 * @see #isEnable()
+	 * @generated
+	 */
+	void setEnable(boolean value);
+
+	/**
+	 * Unsets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#isEnable <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetEnable()
+	 * @see #isEnable()
+	 * @see #setEnable(boolean)
+	 * @generated
+	 */
+	void unsetEnable();
+
+	/**
+	 * Returns whether the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#isEnable <em>Enable</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Enable</em>' attribute is set.
+	 * @see #unsetEnable()
+	 * @see #isEnable()
+	 * @see #setEnable(boolean)
+	 * @generated
+	 */
+	boolean isSetEnable();
+
+	/**
+	 * Returns the value of the '<em><b>Severity</b></em>' attribute.
+	 * The literals are from the enumeration {@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Severity</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Severity</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType
+	 * @see #isSetSeverity()
+	 * @see #unsetSeverity()
+	 * @see #setSeverity(SeverityType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getFlagsType_Severity()
+	 * @model unsettable="true"
+	 *        extendedMetaData="kind='attribute' name='severity' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	SeverityType getSeverity();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getSeverity <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Severity</em>' attribute.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType
+	 * @see #isSetSeverity()
+	 * @see #unsetSeverity()
+	 * @see #getSeverity()
+	 * @generated
+	 */
+	void setSeverity(SeverityType value);
+
+	/**
+	 * Unsets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getSeverity <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetSeverity()
+	 * @see #getSeverity()
+	 * @see #setSeverity(SeverityType)
+	 * @generated
+	 */
+	void unsetSeverity();
+
+	/**
+	 * Returns whether the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType#getSeverity <em>Severity</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Severity</em>' attribute is set.
+	 * @see #unsetSeverity()
+	 * @see #getSeverity()
+	 * @see #setSeverity(SeverityType)
+	 * @generated
+	 */
+	boolean isSetSeverity();
+
+} // FlagsType
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/ScriptsType.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/ScriptsType.java	Sat Apr 25 12:54:10 2009 -0500
@@ -48,7 +48,9 @@
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getConstnames <em>Constnames</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getConsttdescptr <em>Consttdescptr</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getControlornull <em>Controlornull</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getCrepository <em>Crepository</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getCtltargettype <em>Ctltargettype</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getCustomizableicons <em>Customizableicons</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getDebugrom <em>Debugrom</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getDeclarename <em>Declarename</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getDeleteMemberVariable <em>Delete Member Variable</em>}</li>
@@ -62,6 +64,7 @@
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getExportinline <em>Exportinline</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getExportpurevirtual <em>Exportpurevirtual</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getExternaldriveletters <em>Externaldriveletters</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getFlags <em>Flags</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getFoff <em>Foff</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getForbiddenwords <em>Forbiddenwords</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getForgottoputptroncleanupstack <em>Forgottoputptroncleanupstack</em>}</li>
@@ -642,6 +645,33 @@
 	void setControlornull(ControlornullType value);
 
 	/**
+	 * Returns the value of the '<em><b>Crepository</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Crepository</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Crepository</em>' containment reference.
+	 * @see #setCrepository(CrepositoryType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getScriptsType_Crepository()
+	 * @model containment="true" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='crepository' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	CrepositoryType getCrepository();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getCrepository <em>Crepository</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Crepository</em>' containment reference.
+	 * @see #getCrepository()
+	 * @generated
+	 */
+	void setCrepository(CrepositoryType value);
+
+	/**
 	 * Returns the value of the '<em><b>Ctltargettype</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
@@ -669,6 +699,33 @@
 	void setCtltargettype(CtltargettypeType value);
 
 	/**
+	 * Returns the value of the '<em><b>Customizableicons</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Customizableicons</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Customizableicons</em>' containment reference.
+	 * @see #setCustomizableicons(CustomizableiconsType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getScriptsType_Customizableicons()
+	 * @model containment="true" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='customizableicons' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	CustomizableiconsType getCustomizableicons();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getCustomizableicons <em>Customizableicons</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Customizableicons</em>' containment reference.
+	 * @see #getCustomizableicons()
+	 * @generated
+	 */
+	void setCustomizableicons(CustomizableiconsType value);
+
+	/**
 	 * Returns the value of the '<em><b>Debugrom</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
@@ -1020,6 +1077,33 @@
 	void setExternaldriveletters(ExternaldrivelettersType value);
 
 	/**
+	 * Returns the value of the '<em><b>Flags</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Flags</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Flags</em>' containment reference.
+	 * @see #setFlags(FlagsType)
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage#getScriptsType_Flags()
+	 * @model containment="true" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='flags' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	FlagsType getFlags();
+
+	/**
+	 * Sets the value of the '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType#getFlags <em>Flags</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Flags</em>' containment reference.
+	 * @see #getFlags()
+	 * @generated
+	 */
+	void setFlags(FlagsType value);
+
+	/**
 	 * Returns the value of the '<em><b>Foff</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/CSConfig.ecore	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/CSConfig.ecore	Sat Apr 25 12:54:10 2009 -0500
@@ -813,6 +813,37 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CrepositoryType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="crepository_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//CategoryType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="category"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="enable" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="enable"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="severity" eType="#//SeverityType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="severity"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CtltargettypeType">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="ctltargettype_._type"/>
@@ -844,6 +875,45 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CustomizableiconsType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="customizableicons_._type"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="iconsRE" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="iconsRE"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//CategoryType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="category"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="enable" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="enable"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="severity" eType="#//SeverityType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="severity"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CustomrulesType">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="customrules_._type"/>
@@ -1309,6 +1379,15 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="crepository" upperBound="-2"
+        eType="#//CrepositoryType" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="crepository"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ctltargettype" upperBound="-2"
         eType="#//CtltargettypeType" volatile="true" transient="true" derived="true"
         containment="true" resolveProxies="false">
@@ -1318,6 +1397,15 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="customizableicons" upperBound="-2"
+        eType="#//CustomizableiconsType" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="customizableicons"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="customrule" upperBound="-2"
         eType="#//CustomruleType" volatile="true" transient="true" derived="true"
         containment="true" resolveProxies="false">
@@ -1489,6 +1577,15 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="flags" upperBound="-2"
+        eType="#//FlagsType" volatile="true" transient="true" derived="true" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="flags"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="foff" upperBound="-2" eType="#//FoffType"
         volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1549,6 +1646,15 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="iconsRE" unique="false"
+        upperBound="-2" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"
+        volatile="true" transient="true" derived="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="iconsRE"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ifassignments" upperBound="-2"
         eType="#//IfassignmentsType" volatile="true" transient="true" derived="true"
         containment="true" resolveProxies="false">
@@ -2622,6 +2728,37 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FlagsType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="flags_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//CategoryType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="category"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="enable" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="enable"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="severity" eType="#//SeverityType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="severity"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FoffType">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="foff_._type"/>
@@ -4464,6 +4601,14 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="crepository" eType="#//CrepositoryType"
+        volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="crepository"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ctltargettype" eType="#//CtltargettypeType"
         volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -4472,6 +4617,14 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="customizableicons" eType="#//CustomizableiconsType"
+        volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="customizableicons"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="debugrom" eType="#//DebugromType"
         volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -4576,6 +4729,14 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="flags" eType="#//FlagsType"
+        volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="flags"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="foff" eType="#//FoffType"
         volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/CSConfigFactoryImpl.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/CSConfigFactoryImpl.java	Sat Apr 25 12:54:10 2009 -0500
@@ -96,7 +96,9 @@
 			case CSConfigPackage.CONSTNAMES_TYPE: return createConstnamesType();
 			case CSConfigPackage.CONSTTDESCPTR_TYPE: return createConsttdescptrType();
 			case CSConfigPackage.CONTROLORNULL_TYPE: return createControlornullType();
+			case CSConfigPackage.CREPOSITORY_TYPE: return createCrepositoryType();
 			case CSConfigPackage.CTLTARGETTYPE_TYPE: return createCtltargettypeType();
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE: return createCustomizableiconsType();
 			case CSConfigPackage.CUSTOMRULES_TYPE: return createCustomrulesType();
 			case CSConfigPackage.CUSTOMRULE_TYPE: return createCustomruleType();
 			case CSConfigPackage.DEBUGROM_TYPE: return createDebugromType();
@@ -114,6 +116,7 @@
 			case CSConfigPackage.EXPORTINLINE_TYPE: return createExportinlineType();
 			case CSConfigPackage.EXPORTPUREVIRTUAL_TYPE: return createExportpurevirtualType();
 			case CSConfigPackage.EXTERNALDRIVELETTERS_TYPE: return createExternaldrivelettersType();
+			case CSConfigPackage.FLAGS_TYPE: return createFlagsType();
 			case CSConfigPackage.FOFF_TYPE: return createFoffType();
 			case CSConfigPackage.FORBIDDENWORDS_TYPE: return createForbiddenwordsType();
 			case CSConfigPackage.FORGOTTOPUTPTRONCLEANUPSTACK_TYPE: return createForgottoputptroncleanupstackType();
@@ -487,6 +490,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public CrepositoryType createCrepositoryType() {
+		CrepositoryTypeImpl crepositoryType = new CrepositoryTypeImpl();
+		return crepositoryType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public CtltargettypeType createCtltargettypeType() {
 		CtltargettypeTypeImpl ctltargettypeType = new CtltargettypeTypeImpl();
 		return ctltargettypeType;
@@ -497,6 +510,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public CustomizableiconsType createCustomizableiconsType() {
+		CustomizableiconsTypeImpl customizableiconsType = new CustomizableiconsTypeImpl();
+		return customizableiconsType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public CustomrulesType createCustomrulesType() {
 		CustomrulesTypeImpl customrulesType = new CustomrulesTypeImpl();
 		return customrulesType;
@@ -667,6 +690,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public FlagsType createFlagsType() {
+		FlagsTypeImpl flagsType = new FlagsTypeImpl();
+		return flagsType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public FoffType createFoffType() {
 		FoffTypeImpl foffType = new FoffTypeImpl();
 		return foffType;
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/CSConfigPackageImpl.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/CSConfigPackageImpl.java	Sat Apr 25 12:54:10 2009 -0500
@@ -230,6 +230,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass crepositoryTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EClass ctltargettypeTypeEClass = null;
 
 	/**
@@ -237,6 +244,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass customizableiconsTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EClass customrulesTypeEClass = null;
 
 	/**
@@ -356,6 +370,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass flagsTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EClass foffTypeEClass = null;
 
 	/**
@@ -2010,9 +2031,48 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EClass getCrepositoryType() {
+		if (crepositoryTypeEClass == null) {
+			crepositoryTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(26);
+		}
+		return crepositoryTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCrepositoryType_Category() {
+        return (EAttribute)getCrepositoryType().getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCrepositoryType_Enable() {
+        return (EAttribute)getCrepositoryType().getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCrepositoryType_Severity() {
+        return (EAttribute)getCrepositoryType().getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getCtltargettypeType() {
 		if (ctltargettypeTypeEClass == null) {
-			ctltargettypeTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(26);
+			ctltargettypeTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(27);
 		}
 		return ctltargettypeTypeEClass;
 	}
@@ -2049,9 +2109,57 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EClass getCustomizableiconsType() {
+		if (customizableiconsTypeEClass == null) {
+			customizableiconsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(28);
+		}
+		return customizableiconsTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCustomizableiconsType_IconsRE() {
+        return (EAttribute)getCustomizableiconsType().getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCustomizableiconsType_Category() {
+        return (EAttribute)getCustomizableiconsType().getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCustomizableiconsType_Enable() {
+        return (EAttribute)getCustomizableiconsType().getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCustomizableiconsType_Severity() {
+        return (EAttribute)getCustomizableiconsType().getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getCustomrulesType() {
 		if (customrulesTypeEClass == null) {
-			customrulesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(27);
+			customrulesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(29);
 		}
 		return customrulesTypeEClass;
 	}
@@ -2072,7 +2180,7 @@
 	 */
 	public EClass getCustomruleType() {
 		if (customruleTypeEClass == null) {
-			customruleTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(28);
+			customruleTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(30);
 		}
 		return customruleTypeEClass;
 	}
@@ -2147,7 +2255,7 @@
 	 */
 	public EClass getDebugromType() {
 		if (debugromTypeEClass == null) {
-			debugromTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(29);
+			debugromTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(31);
 		}
 		return debugromTypeEClass;
 	}
@@ -2186,7 +2294,7 @@
 	 */
 	public EClass getDeclarenameType() {
 		if (declarenameTypeEClass == null) {
-			declarenameTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(30);
+			declarenameTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(32);
 		}
 		return declarenameTypeEClass;
 	}
@@ -2225,7 +2333,7 @@
 	 */
 	public EClass getDeleteMemberVariableType() {
 		if (deleteMemberVariableTypeEClass == null) {
-			deleteMemberVariableTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(31);
+			deleteMemberVariableTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(33);
 		}
 		return deleteMemberVariableTypeEClass;
 	}
@@ -2264,7 +2372,7 @@
 	 */
 	public EClass getDestructorType() {
 		if (destructorTypeEClass == null) {
-			destructorTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(32);
+			destructorTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(34);
 		}
 		return destructorTypeEClass;
 	}
@@ -2303,7 +2411,7 @@
 	 */
 	public EClass getDocumentationType() {
 		if (documentationTypeEClass == null) {
-			documentationTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(33);
+			documentationTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(35);
 		}
 		return documentationTypeEClass;
 	}
@@ -2324,7 +2432,7 @@
 	 */
 	public EClass getDocumentRoot() {
 		if (documentRootEClass == null) {
-			documentRootEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(34);
+			documentRootEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(36);
 		}
 		return documentRootEClass;
 	}
@@ -2586,8 +2694,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getDocumentRoot_Crepository() {
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(28);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EReference getDocumentRoot_Ctltargettype() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(28);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(29);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDocumentRoot_Customizableicons() {
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(30);
 	}
 
 	/**
@@ -2596,7 +2722,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Customrule() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(29);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(31);
 	}
 
 	/**
@@ -2605,7 +2731,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Customrules() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(30);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(32);
 	}
 
 	/**
@@ -2614,7 +2740,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Debugrom() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(31);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(33);
 	}
 
 	/**
@@ -2623,7 +2749,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Declarename() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(32);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(34);
 	}
 
 	/**
@@ -2632,7 +2758,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_DeleteMemberVariable() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(33);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(35);
 	}
 
 	/**
@@ -2641,7 +2767,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Description() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(34);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(36);
 	}
 
 	/**
@@ -2650,7 +2776,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Destructor() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(35);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(37);
 	}
 
 	/**
@@ -2659,7 +2785,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Documentation() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(36);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(38);
 	}
 
 	/**
@@ -2668,7 +2794,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_DoubleSemiColon() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(37);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(39);
 	}
 
 	/**
@@ -2677,7 +2803,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Driveletters() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(38);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(40);
 	}
 
 	/**
@@ -2686,7 +2812,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Eikbuttons() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(39);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(41);
 	}
 
 	/**
@@ -2695,7 +2821,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Eikonenvstatic() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(40);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(42);
 	}
 
 	/**
@@ -2704,7 +2830,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Enummembers() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(41);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(43);
 	}
 
 	/**
@@ -2713,7 +2839,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Enumnames() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(42);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(44);
 	}
 
 	/**
@@ -2722,7 +2848,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Exclude() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(43);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(45);
 	}
 
 	/**
@@ -2731,7 +2857,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Exportinline() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(44);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(46);
 	}
 
 	/**
@@ -2740,7 +2866,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Exportpurevirtual() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(45);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(47);
 	}
 
 	/**
@@ -2749,7 +2875,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Externaldriveletters() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(46);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(48);
 	}
 
 	/**
@@ -2758,7 +2884,16 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Filetype() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(47);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(49);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDocumentRoot_Flags() {
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(50);
 	}
 
 	/**
@@ -2767,7 +2902,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Foff() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(48);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(51);
 	}
 
 	/**
@@ -2776,7 +2911,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Forbiddenwords() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(49);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(52);
 	}
 
 	/**
@@ -2785,7 +2920,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Forgottoputptroncleanupstack() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(50);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(53);
 	}
 
 	/**
@@ -2794,7 +2929,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Friend() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(51);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(54);
 	}
 
 	/**
@@ -2803,7 +2938,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Functionality() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(52);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(55);
 	}
 
 	/**
@@ -2812,7 +2947,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Goto() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(53);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(56);
 	}
 
 	/**
@@ -2821,7 +2956,16 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_High() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(54);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(57);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDocumentRoot_IconsRE() {
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(58);
 	}
 
 	/**
@@ -2830,7 +2974,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Ifassignments() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(55);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(59);
 	}
 
 	/**
@@ -2839,7 +2983,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Ifpreprocessor() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(56);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(60);
 	}
 
 	/**
@@ -2848,7 +2992,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Inheritanceorder() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(57);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(61);
 	}
 
 	/**
@@ -2857,7 +3001,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Input() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(58);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(62);
 	}
 
 	/**
@@ -2866,7 +3010,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Intleaves() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(59);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(63);
 	}
 
 	/**
@@ -2875,7 +3019,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Jmp() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(60);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(64);
 	}
 
 	/**
@@ -2884,7 +3028,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Keyword() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(61);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(65);
 	}
 
 	/**
@@ -2893,7 +3037,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Leave() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(62);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(66);
 	}
 
 	/**
@@ -2902,7 +3046,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_LeaveNoError() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(63);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(67);
 	}
 
 	/**
@@ -2911,7 +3055,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Leavingoperators() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(64);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(68);
 	}
 
 	/**
@@ -2920,7 +3064,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Legal() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(65);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(69);
 	}
 
 	/**
@@ -2929,7 +3073,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_LFunctionCantLeave() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(66);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(70);
 	}
 
 	/**
@@ -2938,7 +3082,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_LFunctionIgnoreRE() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(67);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(71);
 	}
 
 	/**
@@ -2947,7 +3091,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Link() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(68);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(72);
 	}
 
 	/**
@@ -2956,7 +3100,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Localisation() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(69);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(73);
 	}
 
 	/**
@@ -2965,7 +3109,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Longlines() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(70);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(74);
 	}
 
 	/**
@@ -2974,7 +3118,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Low() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(71);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(75);
 	}
 
 	/**
@@ -2983,7 +3127,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Lxr() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(72);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(76);
 	}
 
 	/**
@@ -2992,7 +3136,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Lxrversion() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(73);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(77);
 	}
 
 	/**
@@ -3001,7 +3145,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Magicnumbers() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(74);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(78);
 	}
 
 	/**
@@ -3010,7 +3154,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Mclassdestructor() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(75);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(79);
 	}
 
 	/**
@@ -3019,7 +3163,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Medium() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(76);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(80);
 	}
 
 	/**
@@ -3028,7 +3172,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Memberlc() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(77);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(81);
 	}
 
 	/**
@@ -3037,7 +3181,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Membervariablecallld() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(78);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(82);
 	}
 
 	/**
@@ -3046,7 +3190,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Missingcancel() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(79);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(83);
 	}
 
 	/**
@@ -3055,7 +3199,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Missingcclass() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(80);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(84);
 	}
 
 	/**
@@ -3064,7 +3208,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Mmpsourcepath() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(81);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(85);
 	}
 
 	/**
@@ -3073,7 +3217,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Multilangrsc() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(82);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(86);
 	}
 
 	/**
@@ -3082,7 +3226,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Multipledeclarations() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(83);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(87);
 	}
 
 	/**
@@ -3091,7 +3235,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Multipleinheritance() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(84);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(88);
 	}
 
 	/**
@@ -3100,7 +3244,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Mydocs() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(85);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(89);
 	}
 
 	/**
@@ -3109,7 +3253,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Name() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(86);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(90);
 	}
 
 	/**
@@ -3118,7 +3262,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Namespace() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(87);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(91);
 	}
 
 	/**
@@ -3127,7 +3271,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Newlreferences() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(88);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(92);
 	}
 
 	/**
@@ -3136,7 +3280,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Noleavetrap() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(89);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(93);
 	}
 
 	/**
@@ -3145,7 +3289,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Nonconsthbufc() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(90);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(94);
 	}
 
 	/**
@@ -3154,7 +3298,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Nonconsttdesc() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(91);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(95);
 	}
 
 	/**
@@ -3163,7 +3307,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Nonleavenew() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(92);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(96);
 	}
 
 	/**
@@ -3172,7 +3316,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Nonunicodeskins() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(93);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(97);
 	}
 
 	/**
@@ -3181,7 +3325,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Null() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(94);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(98);
 	}
 
 	/**
@@ -3190,7 +3334,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Open() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(95);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(99);
 	}
 
 	/**
@@ -3199,7 +3343,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_OpenIgnoreRE() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(96);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(100);
 	}
 
 	/**
@@ -3208,7 +3352,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Other() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(97);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(101);
 	}
 
 	/**
@@ -3217,7 +3361,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Outputformat() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(98);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(102);
 	}
 
 	/**
@@ -3226,7 +3370,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Panic() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(99);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(103);
 	}
 
 	/**
@@ -3235,7 +3379,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Performance() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(100);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(104);
 	}
 
 	/**
@@ -3244,7 +3388,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Pointertoarrays() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(101);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(105);
 	}
 
 	/**
@@ -3253,7 +3397,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Pragmadisable() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(102);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(106);
 	}
 
 	/**
@@ -3262,7 +3406,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Pragmamessage() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(103);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(107);
 	}
 
 	/**
@@ -3271,7 +3415,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Pragmaother() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(104);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(108);
 	}
 
 	/**
@@ -3280,7 +3424,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Privateinheritance() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(105);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(109);
 	}
 
 	/**
@@ -3289,7 +3433,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Pushaddrvar() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(106);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(110);
 	}
 
 	/**
@@ -3298,7 +3442,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Pushmember() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(107);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(111);
 	}
 
 	/**
@@ -3307,7 +3451,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Readresource() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(108);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(112);
 	}
 
 	/**
@@ -3316,7 +3460,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Resourcenotoncleanupstack() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(109);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(113);
 	}
 
 	/**
@@ -3325,7 +3469,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Resourcesonheap() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(110);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(114);
 	}
 
 	/**
@@ -3334,7 +3478,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Returndescriptoroutofscope() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(111);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(115);
 	}
 
 	/**
@@ -3343,7 +3487,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Rfs() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(112);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(116);
 	}
 
 	/**
@@ -3352,7 +3496,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Rssnames() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(113);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(117);
 	}
 
 	/**
@@ -3361,7 +3505,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Scripts() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(114);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(118);
 	}
 
 	/**
@@ -3370,7 +3514,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Severities() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(115);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(119);
 	}
 
 	/**
@@ -3379,7 +3523,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Sources() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(117);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(121);
 	}
 
 	/**
@@ -3388,7 +3532,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Stringliterals() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(118);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(122);
 	}
 
 	/**
@@ -3397,7 +3541,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Stringsinresourcefiles() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(119);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(123);
 	}
 
 	/**
@@ -3406,7 +3550,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Struct() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(120);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(124);
 	}
 
 	/**
@@ -3415,7 +3559,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Tcclasses() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(121);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(125);
 	}
 
 	/**
@@ -3424,7 +3568,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Tclassdestructor() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(122);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(126);
 	}
 
 	/**
@@ -3433,7 +3577,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Timestampedoutput() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(123);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(127);
 	}
 
 	/**
@@ -3442,7 +3586,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Title() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(124);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(128);
 	}
 
 	/**
@@ -3451,7 +3595,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Todocomments() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(125);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(129);
 	}
 
 	/**
@@ -3460,7 +3604,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Trapcleanup() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(126);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(130);
 	}
 
 	/**
@@ -3469,7 +3613,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Trapeleave() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(127);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(131);
 	}
 
 	/**
@@ -3478,7 +3622,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Traprunl() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(128);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(132);
 	}
 
 	/**
@@ -3487,7 +3631,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Trspassing() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(129);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(133);
 	}
 
 	/**
@@ -3496,7 +3640,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Uids() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(130);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(134);
 	}
 
 	/**
@@ -3505,7 +3649,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Uncompressedaif() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(131);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(135);
 	}
 
 	/**
@@ -3514,7 +3658,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Uncompressedbmp() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(132);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(136);
 	}
 
 	/**
@@ -3523,7 +3667,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Unicodesource() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(133);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(137);
 	}
 
 	/**
@@ -3532,7 +3676,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Userafter() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(134);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(138);
 	}
 
 	/**
@@ -3541,7 +3685,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Userfree() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(135);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(139);
 	}
 
 	/**
@@ -3550,7 +3694,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_UserWaitForRequest() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(136);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(140);
 	}
 
 	/**
@@ -3559,7 +3703,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Variablenames() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(137);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(141);
 	}
 
 	/**
@@ -3568,7 +3712,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Voidparameter() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(138);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(142);
 	}
 
 	/**
@@ -3577,7 +3721,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_WordsRE() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(139);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(143);
 	}
 
 	/**
@@ -3586,7 +3730,7 @@
 	 * @generated
 	 */
 	public EReference getDocumentRoot_Worryingcomments() {
-        return (EReference)getDocumentRoot().getEStructuralFeatures().get(140);
+        return (EReference)getDocumentRoot().getEStructuralFeatures().get(144);
 	}
 
 	/**
@@ -3595,7 +3739,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_WorryRE() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(141);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(145);
 	}
 
 	/**
@@ -3604,7 +3748,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Category() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(142);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(146);
 	}
 
 	/**
@@ -3613,7 +3757,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Severity1() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(143);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(147);
 	}
 
 	/**
@@ -3622,7 +3766,7 @@
 	 * @generated
 	 */
 	public EAttribute getDocumentRoot_Severity() {
-        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(116);
+        return (EAttribute)getDocumentRoot().getEStructuralFeatures().get(120);
 	}
 
 	/**
@@ -3632,7 +3776,7 @@
 	 */
 	public EClass getDoubleSemiColonType() {
 		if (doubleSemiColonTypeEClass == null) {
-			doubleSemiColonTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(35);
+			doubleSemiColonTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(37);
 		}
 		return doubleSemiColonTypeEClass;
 	}
@@ -3671,7 +3815,7 @@
 	 */
 	public EClass getDrivelettersType() {
 		if (drivelettersTypeEClass == null) {
-			drivelettersTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(36);
+			drivelettersTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(38);
 		}
 		return drivelettersTypeEClass;
 	}
@@ -3710,7 +3854,7 @@
 	 */
 	public EClass getEikbuttonsType() {
 		if (eikbuttonsTypeEClass == null) {
-			eikbuttonsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(37);
+			eikbuttonsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(39);
 		}
 		return eikbuttonsTypeEClass;
 	}
@@ -3749,7 +3893,7 @@
 	 */
 	public EClass getEikonenvstaticType() {
 		if (eikonenvstaticTypeEClass == null) {
-			eikonenvstaticTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(38);
+			eikonenvstaticTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(40);
 		}
 		return eikonenvstaticTypeEClass;
 	}
@@ -3788,7 +3932,7 @@
 	 */
 	public EClass getEnummembersType() {
 		if (enummembersTypeEClass == null) {
-			enummembersTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(39);
+			enummembersTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(41);
 		}
 		return enummembersTypeEClass;
 	}
@@ -3827,7 +3971,7 @@
 	 */
 	public EClass getEnumnamesType() {
 		if (enumnamesTypeEClass == null) {
-			enumnamesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(40);
+			enumnamesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(42);
 		}
 		return enumnamesTypeEClass;
 	}
@@ -3866,7 +4010,7 @@
 	 */
 	public EClass getExportinlineType() {
 		if (exportinlineTypeEClass == null) {
-			exportinlineTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(41);
+			exportinlineTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(43);
 		}
 		return exportinlineTypeEClass;
 	}
@@ -3905,7 +4049,7 @@
 	 */
 	public EClass getExportpurevirtualType() {
 		if (exportpurevirtualTypeEClass == null) {
-			exportpurevirtualTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(42);
+			exportpurevirtualTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(44);
 		}
 		return exportpurevirtualTypeEClass;
 	}
@@ -3944,7 +4088,7 @@
 	 */
 	public EClass getExternaldrivelettersType() {
 		if (externaldrivelettersTypeEClass == null) {
-			externaldrivelettersTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(43);
+			externaldrivelettersTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(45);
 		}
 		return externaldrivelettersTypeEClass;
 	}
@@ -3981,9 +4125,48 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EClass getFlagsType() {
+		if (flagsTypeEClass == null) {
+			flagsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(46);
+		}
+		return flagsTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFlagsType_Category() {
+        return (EAttribute)getFlagsType().getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFlagsType_Enable() {
+        return (EAttribute)getFlagsType().getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFlagsType_Severity() {
+        return (EAttribute)getFlagsType().getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getFoffType() {
 		if (foffTypeEClass == null) {
-			foffTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(44);
+			foffTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(47);
 		}
 		return foffTypeEClass;
 	}
@@ -4022,7 +4205,7 @@
 	 */
 	public EClass getForbiddenwordsType() {
 		if (forbiddenwordsTypeEClass == null) {
-			forbiddenwordsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(45);
+			forbiddenwordsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(48);
 		}
 		return forbiddenwordsTypeEClass;
 	}
@@ -4070,7 +4253,7 @@
 	 */
 	public EClass getForgottoputptroncleanupstackType() {
 		if (forgottoputptroncleanupstackTypeEClass == null) {
-			forgottoputptroncleanupstackTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(46);
+			forgottoputptroncleanupstackTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(49);
 		}
 		return forgottoputptroncleanupstackTypeEClass;
 	}
@@ -4109,7 +4292,7 @@
 	 */
 	public EClass getFriendType() {
 		if (friendTypeEClass == null) {
-			friendTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(47);
+			friendTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(50);
 		}
 		return friendTypeEClass;
 	}
@@ -4148,7 +4331,7 @@
 	 */
 	public EClass getFunctionalityType() {
 		if (functionalityTypeEClass == null) {
-			functionalityTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(48);
+			functionalityTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(51);
 		}
 		return functionalityTypeEClass;
 	}
@@ -4169,7 +4352,7 @@
 	 */
 	public EClass getGotoType() {
 		if (gotoTypeEClass == null) {
-			gotoTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(49);
+			gotoTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(52);
 		}
 		return gotoTypeEClass;
 	}
@@ -4208,7 +4391,7 @@
 	 */
 	public EClass getHighType() {
 		if (highTypeEClass == null) {
-			highTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(50);
+			highTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(53);
 		}
 		return highTypeEClass;
 	}
@@ -4229,7 +4412,7 @@
 	 */
 	public EClass getIfassignmentsType() {
 		if (ifassignmentsTypeEClass == null) {
-			ifassignmentsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(51);
+			ifassignmentsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(54);
 		}
 		return ifassignmentsTypeEClass;
 	}
@@ -4268,7 +4451,7 @@
 	 */
 	public EClass getIfpreprocessorType() {
 		if (ifpreprocessorTypeEClass == null) {
-			ifpreprocessorTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(52);
+			ifpreprocessorTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(55);
 		}
 		return ifpreprocessorTypeEClass;
 	}
@@ -4307,7 +4490,7 @@
 	 */
 	public EClass getInheritanceorderType() {
 		if (inheritanceorderTypeEClass == null) {
-			inheritanceorderTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(53);
+			inheritanceorderTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(56);
 		}
 		return inheritanceorderTypeEClass;
 	}
@@ -4346,7 +4529,7 @@
 	 */
 	public EClass getIntleavesType() {
 		if (intleavesTypeEClass == null) {
-			intleavesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(54);
+			intleavesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(57);
 		}
 		return intleavesTypeEClass;
 	}
@@ -4385,7 +4568,7 @@
 	 */
 	public EClass getJmpType() {
 		if (jmpTypeEClass == null) {
-			jmpTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(55);
+			jmpTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(58);
 		}
 		return jmpTypeEClass;
 	}
@@ -4424,7 +4607,7 @@
 	 */
 	public EClass getKeywordType() {
 		if (keywordTypeEClass == null) {
-			keywordTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(56);
+			keywordTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(59);
 		}
 		return keywordTypeEClass;
 	}
@@ -4454,7 +4637,7 @@
 	 */
 	public EClass getLeaveNoErrorType() {
 		if (leaveNoErrorTypeEClass == null) {
-			leaveNoErrorTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(57);
+			leaveNoErrorTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(60);
 		}
 		return leaveNoErrorTypeEClass;
 	}
@@ -4493,7 +4676,7 @@
 	 */
 	public EClass getLeaveType() {
 		if (leaveTypeEClass == null) {
-			leaveTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(58);
+			leaveTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(61);
 		}
 		return leaveTypeEClass;
 	}
@@ -4532,7 +4715,7 @@
 	 */
 	public EClass getLeavingoperatorsType() {
 		if (leavingoperatorsTypeEClass == null) {
-			leavingoperatorsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(59);
+			leavingoperatorsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(62);
 		}
 		return leavingoperatorsTypeEClass;
 	}
@@ -4571,7 +4754,7 @@
 	 */
 	public EClass getLegalType() {
 		if (legalTypeEClass == null) {
-			legalTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(60);
+			legalTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(63);
 		}
 		return legalTypeEClass;
 	}
@@ -4592,7 +4775,7 @@
 	 */
 	public EClass getLFunctionCantLeaveType() {
 		if (lFunctionCantLeaveTypeEClass == null) {
-			lFunctionCantLeaveTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(61);
+			lFunctionCantLeaveTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(64);
 		}
 		return lFunctionCantLeaveTypeEClass;
 	}
@@ -4640,7 +4823,7 @@
 	 */
 	public EClass getLocalisationType() {
 		if (localisationTypeEClass == null) {
-			localisationTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(62);
+			localisationTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(65);
 		}
 		return localisationTypeEClass;
 	}
@@ -4661,7 +4844,7 @@
 	 */
 	public EClass getLonglinesType() {
 		if (longlinesTypeEClass == null) {
-			longlinesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(63);
+			longlinesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(66);
 		}
 		return longlinesTypeEClass;
 	}
@@ -4709,7 +4892,7 @@
 	 */
 	public EClass getLowType() {
 		if (lowTypeEClass == null) {
-			lowTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(64);
+			lowTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(67);
 		}
 		return lowTypeEClass;
 	}
@@ -4730,7 +4913,7 @@
 	 */
 	public EClass getMagicnumbersType() {
 		if (magicnumbersTypeEClass == null) {
-			magicnumbersTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(65);
+			magicnumbersTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(68);
 		}
 		return magicnumbersTypeEClass;
 	}
@@ -4769,7 +4952,7 @@
 	 */
 	public EClass getMclassdestructorType() {
 		if (mclassdestructorTypeEClass == null) {
-			mclassdestructorTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(66);
+			mclassdestructorTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(69);
 		}
 		return mclassdestructorTypeEClass;
 	}
@@ -4808,7 +4991,7 @@
 	 */
 	public EClass getMediumType() {
 		if (mediumTypeEClass == null) {
-			mediumTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(67);
+			mediumTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(70);
 		}
 		return mediumTypeEClass;
 	}
@@ -4829,7 +5012,7 @@
 	 */
 	public EClass getMemberlcType() {
 		if (memberlcTypeEClass == null) {
-			memberlcTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(68);
+			memberlcTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(71);
 		}
 		return memberlcTypeEClass;
 	}
@@ -4868,7 +5051,7 @@
 	 */
 	public EClass getMembervariablecallldType() {
 		if (membervariablecallldTypeEClass == null) {
-			membervariablecallldTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(69);
+			membervariablecallldTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(72);
 		}
 		return membervariablecallldTypeEClass;
 	}
@@ -4907,7 +5090,7 @@
 	 */
 	public EClass getMissingcancelType() {
 		if (missingcancelTypeEClass == null) {
-			missingcancelTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(70);
+			missingcancelTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(73);
 		}
 		return missingcancelTypeEClass;
 	}
@@ -4946,7 +5129,7 @@
 	 */
 	public EClass getMissingcclassType() {
 		if (missingcclassTypeEClass == null) {
-			missingcclassTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(71);
+			missingcclassTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(74);
 		}
 		return missingcclassTypeEClass;
 	}
@@ -4994,7 +5177,7 @@
 	 */
 	public EClass getMmpsourcepathType() {
 		if (mmpsourcepathTypeEClass == null) {
-			mmpsourcepathTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(72);
+			mmpsourcepathTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(75);
 		}
 		return mmpsourcepathTypeEClass;
 	}
@@ -5033,7 +5216,7 @@
 	 */
 	public EClass getMultilangrscType() {
 		if (multilangrscTypeEClass == null) {
-			multilangrscTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(73);
+			multilangrscTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(76);
 		}
 		return multilangrscTypeEClass;
 	}
@@ -5072,7 +5255,7 @@
 	 */
 	public EClass getMultipledeclarationsType() {
 		if (multipledeclarationsTypeEClass == null) {
-			multipledeclarationsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(74);
+			multipledeclarationsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(77);
 		}
 		return multipledeclarationsTypeEClass;
 	}
@@ -5111,7 +5294,7 @@
 	 */
 	public EClass getMultipleinheritanceType() {
 		if (multipleinheritanceTypeEClass == null) {
-			multipleinheritanceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(75);
+			multipleinheritanceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(78);
 		}
 		return multipleinheritanceTypeEClass;
 	}
@@ -5150,7 +5333,7 @@
 	 */
 	public EClass getMydocsType() {
 		if (mydocsTypeEClass == null) {
-			mydocsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(76);
+			mydocsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(79);
 		}
 		return mydocsTypeEClass;
 	}
@@ -5189,7 +5372,7 @@
 	 */
 	public EClass getNamespaceType() {
 		if (namespaceTypeEClass == null) {
-			namespaceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(77);
+			namespaceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(80);
 		}
 		return namespaceTypeEClass;
 	}
@@ -5228,7 +5411,7 @@
 	 */
 	public EClass getNewlreferencesType() {
 		if (newlreferencesTypeEClass == null) {
-			newlreferencesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(78);
+			newlreferencesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(81);
 		}
 		return newlreferencesTypeEClass;
 	}
@@ -5267,7 +5450,7 @@
 	 */
 	public EClass getNoleavetrapType() {
 		if (noleavetrapTypeEClass == null) {
-			noleavetrapTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(79);
+			noleavetrapTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(82);
 		}
 		return noleavetrapTypeEClass;
 	}
@@ -5306,7 +5489,7 @@
 	 */
 	public EClass getNonconsthbufcType() {
 		if (nonconsthbufcTypeEClass == null) {
-			nonconsthbufcTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(80);
+			nonconsthbufcTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(83);
 		}
 		return nonconsthbufcTypeEClass;
 	}
@@ -5345,7 +5528,7 @@
 	 */
 	public EClass getNonconsttdescType() {
 		if (nonconsttdescTypeEClass == null) {
-			nonconsttdescTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(81);
+			nonconsttdescTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(84);
 		}
 		return nonconsttdescTypeEClass;
 	}
@@ -5384,7 +5567,7 @@
 	 */
 	public EClass getNonleavenewType() {
 		if (nonleavenewTypeEClass == null) {
-			nonleavenewTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(82);
+			nonleavenewTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(85);
 		}
 		return nonleavenewTypeEClass;
 	}
@@ -5423,7 +5606,7 @@
 	 */
 	public EClass getNonunicodeskinsType() {
 		if (nonunicodeskinsTypeEClass == null) {
-			nonunicodeskinsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(83);
+			nonunicodeskinsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(86);
 		}
 		return nonunicodeskinsTypeEClass;
 	}
@@ -5462,7 +5645,7 @@
 	 */
 	public EClass getNullType() {
 		if (nullTypeEClass == null) {
-			nullTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(84);
+			nullTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(87);
 		}
 		return nullTypeEClass;
 	}
@@ -5501,7 +5684,7 @@
 	 */
 	public EClass getOpenType() {
 		if (openTypeEClass == null) {
-			openTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(85);
+			openTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(88);
 		}
 		return openTypeEClass;
 	}
@@ -5549,7 +5732,7 @@
 	 */
 	public EClass getOtherType() {
 		if (otherTypeEClass == null) {
-			otherTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(86);
+			otherTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(89);
 		}
 		return otherTypeEClass;
 	}
@@ -5570,7 +5753,7 @@
 	 */
 	public EClass getPanicType() {
 		if (panicTypeEClass == null) {
-			panicTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(87);
+			panicTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(90);
 		}
 		return panicTypeEClass;
 	}
@@ -5591,7 +5774,7 @@
 	 */
 	public EClass getPerformanceType() {
 		if (performanceTypeEClass == null) {
-			performanceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(88);
+			performanceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(91);
 		}
 		return performanceTypeEClass;
 	}
@@ -5612,7 +5795,7 @@
 	 */
 	public EClass getPointertoarraysType() {
 		if (pointertoarraysTypeEClass == null) {
-			pointertoarraysTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(89);
+			pointertoarraysTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(92);
 		}
 		return pointertoarraysTypeEClass;
 	}
@@ -5651,7 +5834,7 @@
 	 */
 	public EClass getPragmadisableType() {
 		if (pragmadisableTypeEClass == null) {
-			pragmadisableTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(90);
+			pragmadisableTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(93);
 		}
 		return pragmadisableTypeEClass;
 	}
@@ -5690,7 +5873,7 @@
 	 */
 	public EClass getPragmamessageType() {
 		if (pragmamessageTypeEClass == null) {
-			pragmamessageTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(91);
+			pragmamessageTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(94);
 		}
 		return pragmamessageTypeEClass;
 	}
@@ -5729,7 +5912,7 @@
 	 */
 	public EClass getPragmaotherType() {
 		if (pragmaotherTypeEClass == null) {
-			pragmaotherTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(92);
+			pragmaotherTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(95);
 		}
 		return pragmaotherTypeEClass;
 	}
@@ -5768,7 +5951,7 @@
 	 */
 	public EClass getPrivateinheritanceType() {
 		if (privateinheritanceTypeEClass == null) {
-			privateinheritanceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(93);
+			privateinheritanceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(96);
 		}
 		return privateinheritanceTypeEClass;
 	}
@@ -5807,7 +5990,7 @@
 	 */
 	public EClass getPushaddrvarType() {
 		if (pushaddrvarTypeEClass == null) {
-			pushaddrvarTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(94);
+			pushaddrvarTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(97);
 		}
 		return pushaddrvarTypeEClass;
 	}
@@ -5846,7 +6029,7 @@
 	 */
 	public EClass getPushmemberType() {
 		if (pushmemberTypeEClass == null) {
-			pushmemberTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(95);
+			pushmemberTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(98);
 		}
 		return pushmemberTypeEClass;
 	}
@@ -5885,7 +6068,7 @@
 	 */
 	public EClass getReadresourceType() {
 		if (readresourceTypeEClass == null) {
-			readresourceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(96);
+			readresourceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(99);
 		}
 		return readresourceTypeEClass;
 	}
@@ -5924,7 +6107,7 @@
 	 */
 	public EClass getResourcenotoncleanupstackType() {
 		if (resourcenotoncleanupstackTypeEClass == null) {
-			resourcenotoncleanupstackTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(97);
+			resourcenotoncleanupstackTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(100);
 		}
 		return resourcenotoncleanupstackTypeEClass;
 	}
@@ -5963,7 +6146,7 @@
 	 */
 	public EClass getResourcesonheapType() {
 		if (resourcesonheapTypeEClass == null) {
-			resourcesonheapTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(98);
+			resourcesonheapTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(101);
 		}
 		return resourcesonheapTypeEClass;
 	}
@@ -6002,7 +6185,7 @@
 	 */
 	public EClass getReturndescriptoroutofscopeType() {
 		if (returndescriptoroutofscopeTypeEClass == null) {
-			returndescriptoroutofscopeTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(99);
+			returndescriptoroutofscopeTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(102);
 		}
 		return returndescriptoroutofscopeTypeEClass;
 	}
@@ -6041,7 +6224,7 @@
 	 */
 	public EClass getRfsType() {
 		if (rfsTypeEClass == null) {
-			rfsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(100);
+			rfsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(103);
 		}
 		return rfsTypeEClass;
 	}
@@ -6080,7 +6263,7 @@
 	 */
 	public EClass getRssnamesType() {
 		if (rssnamesTypeEClass == null) {
-			rssnamesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(101);
+			rssnamesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(104);
 		}
 		return rssnamesTypeEClass;
 	}
@@ -6119,7 +6302,7 @@
 	 */
 	public EClass getScriptsType() {
 		if (scriptsTypeEClass == null) {
-			scriptsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(102);
+			scriptsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(105);
 		}
 		return scriptsTypeEClass;
 	}
@@ -6300,8 +6483,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getScriptsType_Crepository() {
+        return (EReference)getScriptsType().getEStructuralFeatures().get(19);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EReference getScriptsType_Ctltargettype() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(19);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(20);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getScriptsType_Customizableicons() {
+        return (EReference)getScriptsType().getEStructuralFeatures().get(21);
 	}
 
 	/**
@@ -6310,7 +6511,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Debugrom() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(20);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(22);
 	}
 
 	/**
@@ -6319,7 +6520,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Declarename() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(21);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(23);
 	}
 
 	/**
@@ -6328,7 +6529,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_DeleteMemberVariable() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(22);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(24);
 	}
 
 	/**
@@ -6337,7 +6538,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Destructor() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(23);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(25);
 	}
 
 	/**
@@ -6346,7 +6547,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_DoubleSemiColon() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(24);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(26);
 	}
 
 	/**
@@ -6355,7 +6556,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Driveletters() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(25);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(27);
 	}
 
 	/**
@@ -6364,7 +6565,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Eikbuttons() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(26);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(28);
 	}
 
 	/**
@@ -6373,7 +6574,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Eikonenvstatic() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(27);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(29);
 	}
 
 	/**
@@ -6382,7 +6583,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Enummembers() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(28);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(30);
 	}
 
 	/**
@@ -6391,7 +6592,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Enumnames() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(29);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(31);
 	}
 
 	/**
@@ -6400,7 +6601,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Exportinline() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(30);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(32);
 	}
 
 	/**
@@ -6409,7 +6610,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Exportpurevirtual() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(31);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(33);
 	}
 
 	/**
@@ -6418,7 +6619,16 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Externaldriveletters() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(32);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(34);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getScriptsType_Flags() {
+        return (EReference)getScriptsType().getEStructuralFeatures().get(35);
 	}
 
 	/**
@@ -6427,7 +6637,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Foff() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(33);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(36);
 	}
 
 	/**
@@ -6436,7 +6646,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Forbiddenwords() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(34);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(37);
 	}
 
 	/**
@@ -6445,7 +6655,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Forgottoputptroncleanupstack() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(35);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(38);
 	}
 
 	/**
@@ -6454,7 +6664,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Friend() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(36);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(39);
 	}
 
 	/**
@@ -6463,7 +6673,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Goto() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(37);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(40);
 	}
 
 	/**
@@ -6472,7 +6682,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Ifassignments() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(38);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(41);
 	}
 
 	/**
@@ -6481,7 +6691,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Ifpreprocessor() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(39);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(42);
 	}
 
 	/**
@@ -6490,7 +6700,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Inheritanceorder() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(40);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(43);
 	}
 
 	/**
@@ -6499,7 +6709,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Intleaves() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(41);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(44);
 	}
 
 	/**
@@ -6508,7 +6718,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Jmp() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(42);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(45);
 	}
 
 	/**
@@ -6517,7 +6727,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Leave() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(43);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(46);
 	}
 
 	/**
@@ -6526,7 +6736,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_LeaveNoError() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(44);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(47);
 	}
 
 	/**
@@ -6535,7 +6745,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Leavingoperators() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(45);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(48);
 	}
 
 	/**
@@ -6544,7 +6754,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_LFunctionCantLeave() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(46);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(49);
 	}
 
 	/**
@@ -6553,7 +6763,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Longlines() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(47);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(50);
 	}
 
 	/**
@@ -6562,7 +6772,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Magicnumbers() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(48);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(51);
 	}
 
 	/**
@@ -6571,7 +6781,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Mclassdestructor() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(49);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(52);
 	}
 
 	/**
@@ -6580,7 +6790,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Memberlc() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(50);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(53);
 	}
 
 	/**
@@ -6589,7 +6799,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Membervariablecallld() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(51);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(54);
 	}
 
 	/**
@@ -6598,7 +6808,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Missingcancel() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(52);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(55);
 	}
 
 	/**
@@ -6607,7 +6817,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Missingcclass() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(53);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(56);
 	}
 
 	/**
@@ -6616,7 +6826,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Mmpsourcepath() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(54);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(57);
 	}
 
 	/**
@@ -6625,7 +6835,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Multilangrsc() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(55);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(58);
 	}
 
 	/**
@@ -6634,7 +6844,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Multipledeclarations() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(56);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(59);
 	}
 
 	/**
@@ -6643,7 +6853,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Multipleinheritance() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(57);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(60);
 	}
 
 	/**
@@ -6652,7 +6862,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Mydocs() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(58);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(61);
 	}
 
 	/**
@@ -6661,7 +6871,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Namespace() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(59);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(62);
 	}
 
 	/**
@@ -6670,7 +6880,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Newlreferences() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(60);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(63);
 	}
 
 	/**
@@ -6679,7 +6889,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Noleavetrap() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(61);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(64);
 	}
 
 	/**
@@ -6688,7 +6898,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Nonconsthbufc() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(62);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(65);
 	}
 
 	/**
@@ -6697,7 +6907,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Nonconsttdesc() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(63);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(66);
 	}
 
 	/**
@@ -6706,7 +6916,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Nonleavenew() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(64);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(67);
 	}
 
 	/**
@@ -6715,7 +6925,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Nonunicodeskins() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(65);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(68);
 	}
 
 	/**
@@ -6724,7 +6934,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Null() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(66);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(69);
 	}
 
 	/**
@@ -6733,7 +6943,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Open() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(67);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(70);
 	}
 
 	/**
@@ -6742,7 +6952,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Pointertoarrays() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(68);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(71);
 	}
 
 	/**
@@ -6751,7 +6961,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Pragmadisable() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(69);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(72);
 	}
 
 	/**
@@ -6760,7 +6970,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Pragmamessage() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(70);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(73);
 	}
 
 	/**
@@ -6769,7 +6979,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Pragmaother() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(71);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(74);
 	}
 
 	/**
@@ -6778,7 +6988,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Privateinheritance() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(72);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(75);
 	}
 
 	/**
@@ -6787,7 +6997,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Pushaddrvar() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(73);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(76);
 	}
 
 	/**
@@ -6796,7 +7006,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Pushmember() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(74);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(77);
 	}
 
 	/**
@@ -6805,7 +7015,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Readresource() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(75);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(78);
 	}
 
 	/**
@@ -6814,7 +7024,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Resourcenotoncleanupstack() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(76);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(79);
 	}
 
 	/**
@@ -6823,7 +7033,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Resourcesonheap() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(77);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(80);
 	}
 
 	/**
@@ -6832,7 +7042,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Returndescriptoroutofscope() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(78);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(81);
 	}
 
 	/**
@@ -6841,7 +7051,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Rfs() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(79);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(82);
 	}
 
 	/**
@@ -6850,7 +7060,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Rssnames() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(80);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(83);
 	}
 
 	/**
@@ -6859,7 +7069,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Stringliterals() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(81);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(84);
 	}
 
 	/**
@@ -6868,7 +7078,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Stringsinresourcefiles() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(82);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(85);
 	}
 
 	/**
@@ -6877,7 +7087,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Struct() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(83);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(86);
 	}
 
 	/**
@@ -6886,7 +7096,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Tcclasses() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(84);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(87);
 	}
 
 	/**
@@ -6895,7 +7105,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Tclassdestructor() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(85);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(88);
 	}
 
 	/**
@@ -6904,7 +7114,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Todocomments() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(86);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(89);
 	}
 
 	/**
@@ -6913,7 +7123,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Trapcleanup() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(87);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(90);
 	}
 
 	/**
@@ -6922,7 +7132,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Trapeleave() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(88);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(91);
 	}
 
 	/**
@@ -6931,7 +7141,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Traprunl() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(89);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(92);
 	}
 
 	/**
@@ -6940,7 +7150,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Trspassing() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(90);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(93);
 	}
 
 	/**
@@ -6949,7 +7159,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Uids() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(91);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(94);
 	}
 
 	/**
@@ -6958,7 +7168,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Uncompressedaif() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(92);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(95);
 	}
 
 	/**
@@ -6967,7 +7177,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Uncompressedbmp() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(93);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(96);
 	}
 
 	/**
@@ -6976,7 +7186,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Unicodesource() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(94);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(97);
 	}
 
 	/**
@@ -6985,7 +7195,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Userafter() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(95);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(98);
 	}
 
 	/**
@@ -6994,7 +7204,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Userfree() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(96);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(99);
 	}
 
 	/**
@@ -7003,7 +7213,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_UserWaitForRequest() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(97);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(100);
 	}
 
 	/**
@@ -7012,7 +7222,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Variablenames() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(98);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(101);
 	}
 
 	/**
@@ -7021,7 +7231,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Voidparameter() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(99);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(102);
 	}
 
 	/**
@@ -7030,7 +7240,7 @@
 	 * @generated
 	 */
 	public EReference getScriptsType_Worryingcomments() {
-        return (EReference)getScriptsType().getEStructuralFeatures().get(100);
+        return (EReference)getScriptsType().getEStructuralFeatures().get(103);
 	}
 
 	/**
@@ -7040,7 +7250,7 @@
 	 */
 	public EClass getSeveritiesType() {
 		if (severitiesTypeEClass == null) {
-			severitiesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(103);
+			severitiesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(106);
 		}
 		return severitiesTypeEClass;
 	}
@@ -7079,7 +7289,7 @@
 	 */
 	public EClass getSourcesType() {
 		if (sourcesTypeEClass == null) {
-			sourcesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(106);
+			sourcesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(109);
 		}
 		return sourcesTypeEClass;
 	}
@@ -7100,7 +7310,7 @@
 	 */
 	public EClass getStringliteralsType() {
 		if (stringliteralsTypeEClass == null) {
-			stringliteralsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(107);
+			stringliteralsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(110);
 		}
 		return stringliteralsTypeEClass;
 	}
@@ -7139,7 +7349,7 @@
 	 */
 	public EClass getStringsinresourcefilesType() {
 		if (stringsinresourcefilesTypeEClass == null) {
-			stringsinresourcefilesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(108);
+			stringsinresourcefilesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(111);
 		}
 		return stringsinresourcefilesTypeEClass;
 	}
@@ -7178,7 +7388,7 @@
 	 */
 	public EClass getStructType() {
 		if (structTypeEClass == null) {
-			structTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(109);
+			structTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(112);
 		}
 		return structTypeEClass;
 	}
@@ -7217,7 +7427,7 @@
 	 */
 	public EClass getTcclassesType() {
 		if (tcclassesTypeEClass == null) {
-			tcclassesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(110);
+			tcclassesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(113);
 		}
 		return tcclassesTypeEClass;
 	}
@@ -7256,7 +7466,7 @@
 	 */
 	public EClass getTclassdestructorType() {
 		if (tclassdestructorTypeEClass == null) {
-			tclassdestructorTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(111);
+			tclassdestructorTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(114);
 		}
 		return tclassdestructorTypeEClass;
 	}
@@ -7295,7 +7505,7 @@
 	 */
 	public EClass getTodocommentsType() {
 		if (todocommentsTypeEClass == null) {
-			todocommentsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(112);
+			todocommentsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(115);
 		}
 		return todocommentsTypeEClass;
 	}
@@ -7334,7 +7544,7 @@
 	 */
 	public EClass getTrapcleanupType() {
 		if (trapcleanupTypeEClass == null) {
-			trapcleanupTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(113);
+			trapcleanupTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(116);
 		}
 		return trapcleanupTypeEClass;
 	}
@@ -7373,7 +7583,7 @@
 	 */
 	public EClass getTrapeleaveType() {
 		if (trapeleaveTypeEClass == null) {
-			trapeleaveTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(114);
+			trapeleaveTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(117);
 		}
 		return trapeleaveTypeEClass;
 	}
@@ -7412,7 +7622,7 @@
 	 */
 	public EClass getTraprunlType() {
 		if (traprunlTypeEClass == null) {
-			traprunlTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(115);
+			traprunlTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(118);
 		}
 		return traprunlTypeEClass;
 	}
@@ -7451,7 +7661,7 @@
 	 */
 	public EClass getTrspassingType() {
 		if (trspassingTypeEClass == null) {
-			trspassingTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(116);
+			trspassingTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(119);
 		}
 		return trspassingTypeEClass;
 	}
@@ -7490,7 +7700,7 @@
 	 */
 	public EClass getUidsType() {
 		if (uidsTypeEClass == null) {
-			uidsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(117);
+			uidsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(120);
 		}
 		return uidsTypeEClass;
 	}
@@ -7529,7 +7739,7 @@
 	 */
 	public EClass getUncompressedaifType() {
 		if (uncompressedaifTypeEClass == null) {
-			uncompressedaifTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(118);
+			uncompressedaifTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(121);
 		}
 		return uncompressedaifTypeEClass;
 	}
@@ -7568,7 +7778,7 @@
 	 */
 	public EClass getUncompressedbmpType() {
 		if (uncompressedbmpTypeEClass == null) {
-			uncompressedbmpTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(119);
+			uncompressedbmpTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(122);
 		}
 		return uncompressedbmpTypeEClass;
 	}
@@ -7607,7 +7817,7 @@
 	 */
 	public EClass getUnicodesourceType() {
 		if (unicodesourceTypeEClass == null) {
-			unicodesourceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(120);
+			unicodesourceTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(123);
 		}
 		return unicodesourceTypeEClass;
 	}
@@ -7646,7 +7856,7 @@
 	 */
 	public EClass getUserafterType() {
 		if (userafterTypeEClass == null) {
-			userafterTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(121);
+			userafterTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(124);
 		}
 		return userafterTypeEClass;
 	}
@@ -7685,7 +7895,7 @@
 	 */
 	public EClass getUserfreeType() {
 		if (userfreeTypeEClass == null) {
-			userfreeTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(122);
+			userfreeTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(125);
 		}
 		return userfreeTypeEClass;
 	}
@@ -7724,7 +7934,7 @@
 	 */
 	public EClass getUserWaitForRequestType() {
 		if (userWaitForRequestTypeEClass == null) {
-			userWaitForRequestTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(123);
+			userWaitForRequestTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(126);
 		}
 		return userWaitForRequestTypeEClass;
 	}
@@ -7763,7 +7973,7 @@
 	 */
 	public EClass getVariablenamesType() {
 		if (variablenamesTypeEClass == null) {
-			variablenamesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(124);
+			variablenamesTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(127);
 		}
 		return variablenamesTypeEClass;
 	}
@@ -7802,7 +8012,7 @@
 	 */
 	public EClass getVoidparameterType() {
 		if (voidparameterTypeEClass == null) {
-			voidparameterTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(125);
+			voidparameterTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(128);
 		}
 		return voidparameterTypeEClass;
 	}
@@ -7841,7 +8051,7 @@
 	 */
 	public EClass getWorryingcommentsType() {
 		if (worryingcommentsTypeEClass == null) {
-			worryingcommentsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(126);
+			worryingcommentsTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(129);
 		}
 		return worryingcommentsTypeEClass;
 	}
@@ -7901,7 +8111,7 @@
 	 */
 	public EEnum getSeverityType() {
 		if (severityTypeEEnum == null) {
-			severityTypeEEnum = (EEnum)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(104);
+			severityTypeEEnum = (EEnum)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(107);
 		}
 		return severityTypeEEnum;
 	}
@@ -7925,7 +8135,7 @@
 	 */
 	public EDataType getSeverityTypeObject() {
 		if (severityTypeObjectEDataType == null) {
-			severityTypeObjectEDataType = (EDataType)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(105);
+			severityTypeObjectEDataType = (EDataType)EPackage.Registry.INSTANCE.getEPackage(CSConfigPackage.eNS_URI).getEClassifiers().get(108);
 		}
 		return severityTypeObjectEDataType;
 	}
@@ -8001,7 +8211,7 @@
 	@Override
 	protected void fixInstanceClass(EClassifier eClassifier) {
 		if (eClassifier.getInstanceClassName() == null) {
-			eClassifier.setInstanceClassName("com.nokia.carbide.cpp.codescanner.gen.CSConfig." + eClassifier.getName());
+			eClassifier.setInstanceClassName("com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig." + eClassifier.getName());
 			setGeneratedClassName(eClassifier);
 		}
 	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/CrepositoryTypeImpl.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,390 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+package com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl;
+
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Crepository Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CrepositoryTypeImpl#getCategory <em>Category</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CrepositoryTypeImpl#isEnable <em>Enable</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CrepositoryTypeImpl#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CrepositoryTypeImpl extends EObjectImpl implements CrepositoryType {
+	/**
+	 * The default value of the '{@link #getCategory() <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCategory()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final CategoryType CATEGORY_EDEFAULT = CategoryType.CANPANIC;
+
+	/**
+	 * The cached value of the '{@link #getCategory() <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCategory()
+	 * @generated
+	 * @ordered
+	 */
+	protected CategoryType category = CATEGORY_EDEFAULT;
+
+	/**
+	 * This is true if the Category attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean categoryESet;
+
+	/**
+	 * The default value of the '{@link #isEnable() <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isEnable()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ENABLE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isEnable() <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isEnable()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean enable = ENABLE_EDEFAULT;
+
+	/**
+	 * This is true if the Enable attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean enableESet;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SeverityType SEVERITY_EDEFAULT = SeverityType.HIGH;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected SeverityType severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * This is true if the Severity attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean severityESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CrepositoryTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CSConfigPackage.eINSTANCE.getCrepositoryType();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CategoryType getCategory() {
+		return category;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCategory(CategoryType newCategory) {
+		CategoryType oldCategory = category;
+		category = newCategory == null ? CATEGORY_EDEFAULT : newCategory;
+		boolean oldCategoryESet = categoryESet;
+		categoryESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CSConfigPackage.CREPOSITORY_TYPE__CATEGORY, oldCategory, category, !oldCategoryESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetCategory() {
+		CategoryType oldCategory = category;
+		boolean oldCategoryESet = categoryESet;
+		category = CATEGORY_EDEFAULT;
+		categoryESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, CSConfigPackage.CREPOSITORY_TYPE__CATEGORY, oldCategory, CATEGORY_EDEFAULT, oldCategoryESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetCategory() {
+		return categoryESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isEnable() {
+		return enable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEnable(boolean newEnable) {
+		boolean oldEnable = enable;
+		enable = newEnable;
+		boolean oldEnableESet = enableESet;
+		enableESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CSConfigPackage.CREPOSITORY_TYPE__ENABLE, oldEnable, enable, !oldEnableESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetEnable() {
+		boolean oldEnable = enable;
+		boolean oldEnableESet = enableESet;
+		enable = ENABLE_EDEFAULT;
+		enableESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, CSConfigPackage.CREPOSITORY_TYPE__ENABLE, oldEnable, ENABLE_EDEFAULT, oldEnableESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetEnable() {
+		return enableESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SeverityType getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(SeverityType newSeverity) {
+		SeverityType oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		boolean oldSeverityESet = severityESet;
+		severityESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CSConfigPackage.CREPOSITORY_TYPE__SEVERITY, oldSeverity, severity, !oldSeverityESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetSeverity() {
+		SeverityType oldSeverity = severity;
+		boolean oldSeverityESet = severityESet;
+		severity = SEVERITY_EDEFAULT;
+		severityESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, CSConfigPackage.CREPOSITORY_TYPE__SEVERITY, oldSeverity, SEVERITY_EDEFAULT, oldSeverityESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetSeverity() {
+		return severityESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CSConfigPackage.CREPOSITORY_TYPE__CATEGORY:
+				return getCategory();
+			case CSConfigPackage.CREPOSITORY_TYPE__ENABLE:
+				return isEnable() ? Boolean.TRUE : Boolean.FALSE;
+			case CSConfigPackage.CREPOSITORY_TYPE__SEVERITY:
+				return getSeverity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CSConfigPackage.CREPOSITORY_TYPE__CATEGORY:
+				setCategory((CategoryType)newValue);
+				return;
+			case CSConfigPackage.CREPOSITORY_TYPE__ENABLE:
+				setEnable(((Boolean)newValue).booleanValue());
+				return;
+			case CSConfigPackage.CREPOSITORY_TYPE__SEVERITY:
+				setSeverity((SeverityType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CSConfigPackage.CREPOSITORY_TYPE__CATEGORY:
+				unsetCategory();
+				return;
+			case CSConfigPackage.CREPOSITORY_TYPE__ENABLE:
+				unsetEnable();
+				return;
+			case CSConfigPackage.CREPOSITORY_TYPE__SEVERITY:
+				unsetSeverity();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CSConfigPackage.CREPOSITORY_TYPE__CATEGORY:
+				return isSetCategory();
+			case CSConfigPackage.CREPOSITORY_TYPE__ENABLE:
+				return isSetEnable();
+			case CSConfigPackage.CREPOSITORY_TYPE__SEVERITY:
+				return isSetSeverity();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (category: ");
+		if (categoryESet) result.append(category); else result.append("<unset>");
+		result.append(", enable: ");
+		if (enableESet) result.append(enable); else result.append("<unset>");
+		result.append(", severity: ");
+		if (severityESet) result.append(severity); else result.append("<unset>");
+		result.append(')');
+		return result.toString();
+	}
+
+} //CrepositoryTypeImpl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/CustomizableiconsTypeImpl.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,444 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+package com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl;
+
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Customizableicons Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CustomizableiconsTypeImpl#getIconsRE <em>Icons RE</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CustomizableiconsTypeImpl#getCategory <em>Category</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CustomizableiconsTypeImpl#isEnable <em>Enable</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.CustomizableiconsTypeImpl#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CustomizableiconsTypeImpl extends EObjectImpl implements CustomizableiconsType {
+	/**
+	 * The default value of the '{@link #getIconsRE() <em>Icons RE</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIconsRE()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ICONS_RE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getIconsRE() <em>Icons RE</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIconsRE()
+	 * @generated
+	 * @ordered
+	 */
+	protected String iconsRE = ICONS_RE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getCategory() <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCategory()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final CategoryType CATEGORY_EDEFAULT = CategoryType.CANPANIC;
+
+	/**
+	 * The cached value of the '{@link #getCategory() <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCategory()
+	 * @generated
+	 * @ordered
+	 */
+	protected CategoryType category = CATEGORY_EDEFAULT;
+
+	/**
+	 * This is true if the Category attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean categoryESet;
+
+	/**
+	 * The default value of the '{@link #isEnable() <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isEnable()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ENABLE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isEnable() <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isEnable()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean enable = ENABLE_EDEFAULT;
+
+	/**
+	 * This is true if the Enable attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean enableESet;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SeverityType SEVERITY_EDEFAULT = SeverityType.HIGH;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected SeverityType severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * This is true if the Severity attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean severityESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CustomizableiconsTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CSConfigPackage.eINSTANCE.getCustomizableiconsType();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getIconsRE() {
+		return iconsRE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIconsRE(String newIconsRE) {
+		String oldIconsRE = iconsRE;
+		iconsRE = newIconsRE;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ICONS_RE, oldIconsRE, iconsRE));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CategoryType getCategory() {
+		return category;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCategory(CategoryType newCategory) {
+		CategoryType oldCategory = category;
+		category = newCategory == null ? CATEGORY_EDEFAULT : newCategory;
+		boolean oldCategoryESet = categoryESet;
+		categoryESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CSConfigPackage.CUSTOMIZABLEICONS_TYPE__CATEGORY, oldCategory, category, !oldCategoryESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetCategory() {
+		CategoryType oldCategory = category;
+		boolean oldCategoryESet = categoryESet;
+		category = CATEGORY_EDEFAULT;
+		categoryESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, CSConfigPackage.CUSTOMIZABLEICONS_TYPE__CATEGORY, oldCategory, CATEGORY_EDEFAULT, oldCategoryESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetCategory() {
+		return categoryESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isEnable() {
+		return enable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEnable(boolean newEnable) {
+		boolean oldEnable = enable;
+		enable = newEnable;
+		boolean oldEnableESet = enableESet;
+		enableESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ENABLE, oldEnable, enable, !oldEnableESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetEnable() {
+		boolean oldEnable = enable;
+		boolean oldEnableESet = enableESet;
+		enable = ENABLE_EDEFAULT;
+		enableESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ENABLE, oldEnable, ENABLE_EDEFAULT, oldEnableESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetEnable() {
+		return enableESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SeverityType getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(SeverityType newSeverity) {
+		SeverityType oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		boolean oldSeverityESet = severityESet;
+		severityESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CSConfigPackage.CUSTOMIZABLEICONS_TYPE__SEVERITY, oldSeverity, severity, !oldSeverityESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetSeverity() {
+		SeverityType oldSeverity = severity;
+		boolean oldSeverityESet = severityESet;
+		severity = SEVERITY_EDEFAULT;
+		severityESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, CSConfigPackage.CUSTOMIZABLEICONS_TYPE__SEVERITY, oldSeverity, SEVERITY_EDEFAULT, oldSeverityESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetSeverity() {
+		return severityESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ICONS_RE:
+				return getIconsRE();
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__CATEGORY:
+				return getCategory();
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ENABLE:
+				return isEnable() ? Boolean.TRUE : Boolean.FALSE;
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__SEVERITY:
+				return getSeverity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ICONS_RE:
+				setIconsRE((String)newValue);
+				return;
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__CATEGORY:
+				setCategory((CategoryType)newValue);
+				return;
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ENABLE:
+				setEnable(((Boolean)newValue).booleanValue());
+				return;
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__SEVERITY:
+				setSeverity((SeverityType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ICONS_RE:
+				setIconsRE(ICONS_RE_EDEFAULT);
+				return;
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__CATEGORY:
+				unsetCategory();
+				return;
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ENABLE:
+				unsetEnable();
+				return;
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__SEVERITY:
+				unsetSeverity();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ICONS_RE:
+				return ICONS_RE_EDEFAULT == null ? iconsRE != null : !ICONS_RE_EDEFAULT.equals(iconsRE);
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__CATEGORY:
+				return isSetCategory();
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__ENABLE:
+				return isSetEnable();
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE__SEVERITY:
+				return isSetSeverity();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (iconsRE: ");
+		result.append(iconsRE);
+		result.append(", category: ");
+		if (categoryESet) result.append(category); else result.append("<unset>");
+		result.append(", enable: ");
+		if (enableESet) result.append(enable); else result.append("<unset>");
+		result.append(", severity: ");
+		if (severityESet) result.append(severity); else result.append("<unset>");
+		result.append(')');
+		return result.toString();
+	}
+
+} //CustomizableiconsTypeImpl
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/DocumentRootImpl.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/DocumentRootImpl.java	Sat Apr 25 12:54:10 2009 -0500
@@ -17,6 +17,135 @@
 
 package com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl;
 
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.AccessArrayElementWithoutCheck2Type;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.AccessArrayElementWithoutCheckType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ActivestartType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ActivestopType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ArgumentsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ArraypassingType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ArrayptrcleanupType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.AssertdebuginvariantType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.BaddefinesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.BaseconstructType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CallActiveObjectWithoutCheckingOrStoppingType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CanpanicType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoriesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ChangenotificationType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CleanupType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CodereviewType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CodescannerConfigType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CodingstandardsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CommentcodeType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ConnectAndDontCloseMemberVariableType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ConnectType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ConstnamesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ConsttdescptrType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ControlornullType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CtltargettypeType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomruleType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomrulesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DebugromType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DeclarenameType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DeleteMemberVariableType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DestructorType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentRoot;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DocumentationType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DoubleSemiColonType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DrivelettersType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.EikbuttonsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.EikonenvstaticType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.EnummembersType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.EnumnamesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ExportinlineType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ExportpurevirtualType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ExternaldrivelettersType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FoffType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ForbiddenwordsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ForgottoputptroncleanupstackType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FriendType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FunctionalityType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.GotoType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.HighType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.IfassignmentsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.IfpreprocessorType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.InheritanceorderType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.IntleavesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.JmpType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.KeywordType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LFunctionCantLeaveType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LeaveNoErrorType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LeaveType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LeavingoperatorsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LegalType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LocalisationType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LonglinesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LowType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MagicnumbersType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MclassdestructorType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MediumType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MemberlcType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MembervariablecallldType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MissingcancelType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MissingcclassType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MmpsourcepathType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MultilangrscType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MultipledeclarationsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MultipleinheritanceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MydocsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NamespaceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NewlreferencesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NoleavetrapType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NonconsthbufcType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NonconsttdescType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NonleavenewType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NonunicodeskinsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NullType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.OpenType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.OtherType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PanicType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PerformanceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PointertoarraysType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PragmadisableType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PragmamessageType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PragmaotherType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PrivateinheritanceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PushaddrvarType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PushmemberType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ReadresourceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ResourcenotoncleanupstackType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ResourcesonheapType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ReturndescriptoroutofscopeType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.RfsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.RssnamesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeveritiesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SourcesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.StringliteralsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.StringsinresourcefilesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.StructType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TcclassesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TclassdestructorType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TodocommentsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TrapcleanupType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TrapeleaveType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TraprunlType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TrspassingType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UidsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UncompressedaifType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UncompressedbmpType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UnicodesourceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UserWaitForRequestType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UserafterType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UserfreeType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.VariablenamesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.VoidparameterType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.WorryingcommentsType;
 import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.*;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -73,7 +202,9 @@
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getConstnames <em>Constnames</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getConsttdescptr <em>Consttdescptr</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getControlornull <em>Controlornull</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getCrepository <em>Crepository</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getCtltargettype <em>Ctltargettype</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getCustomizableicons <em>Customizableicons</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getCustomrule <em>Customrule</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getCustomrules <em>Customrules</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getDebugrom <em>Debugrom</em>}</li>
@@ -93,6 +224,7 @@
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getExportpurevirtual <em>Exportpurevirtual</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getExternaldriveletters <em>Externaldriveletters</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getFiletype <em>Filetype</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getFlags <em>Flags</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getFoff <em>Foff</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getForbiddenwords <em>Forbiddenwords</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getForgottoputptroncleanupstack <em>Forgottoputptroncleanupstack</em>}</li>
@@ -100,6 +232,7 @@
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getFunctionality <em>Functionality</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getGoto <em>Goto</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getHigh <em>High</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getIconsRE <em>Icons RE</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getIfassignments <em>Ifassignments</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getIfpreprocessor <em>Ifpreprocessor</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.DocumentRootImpl#getInheritanceorder <em>Inheritanceorder</em>}</li>
@@ -266,6 +399,16 @@
 	protected static final String FILETYPE_EDEFAULT = null;
 
 	/**
+	 * The default value of the '{@link #getIconsRE() <em>Icons RE</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIconsRE()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ICONS_RE_EDEFAULT = null;
+
+	/**
 	 * The default value of the '{@link #getInput() <em>Input</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1179,6 +1322,33 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public CrepositoryType getCrepository() {
+		return (CrepositoryType)getMixed().get(CSConfigPackage.eINSTANCE.getDocumentRoot_Crepository(), true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCrepository(CrepositoryType newCrepository, NotificationChain msgs) {
+		return ((FeatureMap.Internal)getMixed()).basicAdd(CSConfigPackage.eINSTANCE.getDocumentRoot_Crepository(), newCrepository, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCrepository(CrepositoryType newCrepository) {
+		((FeatureMap.Internal)getMixed()).set(CSConfigPackage.eINSTANCE.getDocumentRoot_Crepository(), newCrepository);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public CtltargettypeType getCtltargettype() {
 		return (CtltargettypeType)getMixed().get(CSConfigPackage.eINSTANCE.getDocumentRoot_Ctltargettype(), true);
 	}
@@ -1206,6 +1376,33 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public CustomizableiconsType getCustomizableicons() {
+		return (CustomizableiconsType)getMixed().get(CSConfigPackage.eINSTANCE.getDocumentRoot_Customizableicons(), true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCustomizableicons(CustomizableiconsType newCustomizableicons, NotificationChain msgs) {
+		return ((FeatureMap.Internal)getMixed()).basicAdd(CSConfigPackage.eINSTANCE.getDocumentRoot_Customizableicons(), newCustomizableicons, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCustomizableicons(CustomizableiconsType newCustomizableicons) {
+		((FeatureMap.Internal)getMixed()).set(CSConfigPackage.eINSTANCE.getDocumentRoot_Customizableicons(), newCustomizableicons);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public CustomruleType getCustomrule() {
 		return (CustomruleType)getMixed().get(CSConfigPackage.eINSTANCE.getDocumentRoot_Customrule(), true);
 	}
@@ -1692,6 +1889,33 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public FlagsType getFlags() {
+		return (FlagsType)getMixed().get(CSConfigPackage.eINSTANCE.getDocumentRoot_Flags(), true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFlags(FlagsType newFlags, NotificationChain msgs) {
+		return ((FeatureMap.Internal)getMixed()).basicAdd(CSConfigPackage.eINSTANCE.getDocumentRoot_Flags(), newFlags, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFlags(FlagsType newFlags) {
+		((FeatureMap.Internal)getMixed()).set(CSConfigPackage.eINSTANCE.getDocumentRoot_Flags(), newFlags);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public FoffType getFoff() {
 		return (FoffType)getMixed().get(CSConfigPackage.eINSTANCE.getDocumentRoot_Foff(), true);
 	}
@@ -1881,6 +2105,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public String getIconsRE() {
+		return (String)getMixed().get(CSConfigPackage.eINSTANCE.getDocumentRoot_IconsRE(), true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIconsRE(String newIconsRE) {
+		((FeatureMap.Internal)getMixed()).set(CSConfigPackage.eINSTANCE.getDocumentRoot_IconsRE(), newIconsRE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public IfassignmentsType getIfassignments() {
 		return (IfassignmentsType)getMixed().get(CSConfigPackage.eINSTANCE.getDocumentRoot_Ifassignments(), true);
 	}
@@ -4262,8 +4504,12 @@
 				return basicSetConsttdescptr(null, msgs);
 			case CSConfigPackage.DOCUMENT_ROOT__CONTROLORNULL:
 				return basicSetControlornull(null, msgs);
+			case CSConfigPackage.DOCUMENT_ROOT__CREPOSITORY:
+				return basicSetCrepository(null, msgs);
 			case CSConfigPackage.DOCUMENT_ROOT__CTLTARGETTYPE:
 				return basicSetCtltargettype(null, msgs);
+			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMIZABLEICONS:
+				return basicSetCustomizableicons(null, msgs);
 			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMRULE:
 				return basicSetCustomrule(null, msgs);
 			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMRULES:
@@ -4296,6 +4542,8 @@
 				return basicSetExportpurevirtual(null, msgs);
 			case CSConfigPackage.DOCUMENT_ROOT__EXTERNALDRIVELETTERS:
 				return basicSetExternaldriveletters(null, msgs);
+			case CSConfigPackage.DOCUMENT_ROOT__FLAGS:
+				return basicSetFlags(null, msgs);
 			case CSConfigPackage.DOCUMENT_ROOT__FOFF:
 				return basicSetFoff(null, msgs);
 			case CSConfigPackage.DOCUMENT_ROOT__FORBIDDENWORDS:
@@ -4529,8 +4777,12 @@
 				return getConsttdescptr();
 			case CSConfigPackage.DOCUMENT_ROOT__CONTROLORNULL:
 				return getControlornull();
+			case CSConfigPackage.DOCUMENT_ROOT__CREPOSITORY:
+				return getCrepository();
 			case CSConfigPackage.DOCUMENT_ROOT__CTLTARGETTYPE:
 				return getCtltargettype();
+			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMIZABLEICONS:
+				return getCustomizableicons();
 			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMRULE:
 				return getCustomrule();
 			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMRULES:
@@ -4569,6 +4821,8 @@
 				return getExternaldriveletters();
 			case CSConfigPackage.DOCUMENT_ROOT__FILETYPE:
 				return getFiletype();
+			case CSConfigPackage.DOCUMENT_ROOT__FLAGS:
+				return getFlags();
 			case CSConfigPackage.DOCUMENT_ROOT__FOFF:
 				return getFoff();
 			case CSConfigPackage.DOCUMENT_ROOT__FORBIDDENWORDS:
@@ -4583,6 +4837,8 @@
 				return getGoto();
 			case CSConfigPackage.DOCUMENT_ROOT__HIGH:
 				return getHigh();
+			case CSConfigPackage.DOCUMENT_ROOT__ICONS_RE:
+				return getIconsRE();
 			case CSConfigPackage.DOCUMENT_ROOT__IFASSIGNMENTS:
 				return getIfassignments();
 			case CSConfigPackage.DOCUMENT_ROOT__IFPREPROCESSOR:
@@ -4857,9 +5113,15 @@
 			case CSConfigPackage.DOCUMENT_ROOT__CONTROLORNULL:
 				setControlornull((ControlornullType)newValue);
 				return;
+			case CSConfigPackage.DOCUMENT_ROOT__CREPOSITORY:
+				setCrepository((CrepositoryType)newValue);
+				return;
 			case CSConfigPackage.DOCUMENT_ROOT__CTLTARGETTYPE:
 				setCtltargettype((CtltargettypeType)newValue);
 				return;
+			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMIZABLEICONS:
+				setCustomizableicons((CustomizableiconsType)newValue);
+				return;
 			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMRULE:
 				setCustomrule((CustomruleType)newValue);
 				return;
@@ -4917,6 +5179,9 @@
 			case CSConfigPackage.DOCUMENT_ROOT__FILETYPE:
 				setFiletype((String)newValue);
 				return;
+			case CSConfigPackage.DOCUMENT_ROOT__FLAGS:
+				setFlags((FlagsType)newValue);
+				return;
 			case CSConfigPackage.DOCUMENT_ROOT__FOFF:
 				setFoff((FoffType)newValue);
 				return;
@@ -4938,6 +5203,9 @@
 			case CSConfigPackage.DOCUMENT_ROOT__HIGH:
 				setHigh((HighType)newValue);
 				return;
+			case CSConfigPackage.DOCUMENT_ROOT__ICONS_RE:
+				setIconsRE((String)newValue);
+				return;
 			case CSConfigPackage.DOCUMENT_ROOT__IFASSIGNMENTS:
 				setIfassignments((IfassignmentsType)newValue);
 				return;
@@ -5301,9 +5569,15 @@
 			case CSConfigPackage.DOCUMENT_ROOT__CONTROLORNULL:
 				setControlornull((ControlornullType)null);
 				return;
+			case CSConfigPackage.DOCUMENT_ROOT__CREPOSITORY:
+				setCrepository((CrepositoryType)null);
+				return;
 			case CSConfigPackage.DOCUMENT_ROOT__CTLTARGETTYPE:
 				setCtltargettype((CtltargettypeType)null);
 				return;
+			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMIZABLEICONS:
+				setCustomizableicons((CustomizableiconsType)null);
+				return;
 			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMRULE:
 				setCustomrule((CustomruleType)null);
 				return;
@@ -5361,6 +5635,9 @@
 			case CSConfigPackage.DOCUMENT_ROOT__FILETYPE:
 				setFiletype(FILETYPE_EDEFAULT);
 				return;
+			case CSConfigPackage.DOCUMENT_ROOT__FLAGS:
+				setFlags((FlagsType)null);
+				return;
 			case CSConfigPackage.DOCUMENT_ROOT__FOFF:
 				setFoff((FoffType)null);
 				return;
@@ -5382,6 +5659,9 @@
 			case CSConfigPackage.DOCUMENT_ROOT__HIGH:
 				setHigh((HighType)null);
 				return;
+			case CSConfigPackage.DOCUMENT_ROOT__ICONS_RE:
+				setIconsRE(ICONS_RE_EDEFAULT);
+				return;
 			case CSConfigPackage.DOCUMENT_ROOT__IFASSIGNMENTS:
 				setIfassignments((IfassignmentsType)null);
 				return;
@@ -5717,8 +5997,12 @@
 				return getConsttdescptr() != null;
 			case CSConfigPackage.DOCUMENT_ROOT__CONTROLORNULL:
 				return getControlornull() != null;
+			case CSConfigPackage.DOCUMENT_ROOT__CREPOSITORY:
+				return getCrepository() != null;
 			case CSConfigPackage.DOCUMENT_ROOT__CTLTARGETTYPE:
 				return getCtltargettype() != null;
+			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMIZABLEICONS:
+				return getCustomizableicons() != null;
 			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMRULE:
 				return getCustomrule() != null;
 			case CSConfigPackage.DOCUMENT_ROOT__CUSTOMRULES:
@@ -5757,6 +6041,8 @@
 				return getExternaldriveletters() != null;
 			case CSConfigPackage.DOCUMENT_ROOT__FILETYPE:
 				return FILETYPE_EDEFAULT == null ? getFiletype() != null : !FILETYPE_EDEFAULT.equals(getFiletype());
+			case CSConfigPackage.DOCUMENT_ROOT__FLAGS:
+				return getFlags() != null;
 			case CSConfigPackage.DOCUMENT_ROOT__FOFF:
 				return getFoff() != null;
 			case CSConfigPackage.DOCUMENT_ROOT__FORBIDDENWORDS:
@@ -5771,6 +6057,8 @@
 				return getGoto() != null;
 			case CSConfigPackage.DOCUMENT_ROOT__HIGH:
 				return getHigh() != null;
+			case CSConfigPackage.DOCUMENT_ROOT__ICONS_RE:
+				return ICONS_RE_EDEFAULT == null ? getIconsRE() != null : !ICONS_RE_EDEFAULT.equals(getIconsRE());
 			case CSConfigPackage.DOCUMENT_ROOT__IFASSIGNMENTS:
 				return getIfassignments() != null;
 			case CSConfigPackage.DOCUMENT_ROOT__IFPREPROCESSOR:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/FlagsTypeImpl.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,390 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+package com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl;
+
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CategoryType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.SeverityType;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Flags Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.FlagsTypeImpl#getCategory <em>Category</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.FlagsTypeImpl#isEnable <em>Enable</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.FlagsTypeImpl#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FlagsTypeImpl extends EObjectImpl implements FlagsType {
+	/**
+	 * The default value of the '{@link #getCategory() <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCategory()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final CategoryType CATEGORY_EDEFAULT = CategoryType.CANPANIC;
+
+	/**
+	 * The cached value of the '{@link #getCategory() <em>Category</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCategory()
+	 * @generated
+	 * @ordered
+	 */
+	protected CategoryType category = CATEGORY_EDEFAULT;
+
+	/**
+	 * This is true if the Category attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean categoryESet;
+
+	/**
+	 * The default value of the '{@link #isEnable() <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isEnable()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ENABLE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isEnable() <em>Enable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isEnable()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean enable = ENABLE_EDEFAULT;
+
+	/**
+	 * This is true if the Enable attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean enableESet;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SeverityType SEVERITY_EDEFAULT = SeverityType.HIGH;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected SeverityType severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * This is true if the Severity attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean severityESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FlagsTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CSConfigPackage.eINSTANCE.getFlagsType();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CategoryType getCategory() {
+		return category;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCategory(CategoryType newCategory) {
+		CategoryType oldCategory = category;
+		category = newCategory == null ? CATEGORY_EDEFAULT : newCategory;
+		boolean oldCategoryESet = categoryESet;
+		categoryESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CSConfigPackage.FLAGS_TYPE__CATEGORY, oldCategory, category, !oldCategoryESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetCategory() {
+		CategoryType oldCategory = category;
+		boolean oldCategoryESet = categoryESet;
+		category = CATEGORY_EDEFAULT;
+		categoryESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, CSConfigPackage.FLAGS_TYPE__CATEGORY, oldCategory, CATEGORY_EDEFAULT, oldCategoryESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetCategory() {
+		return categoryESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isEnable() {
+		return enable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEnable(boolean newEnable) {
+		boolean oldEnable = enable;
+		enable = newEnable;
+		boolean oldEnableESet = enableESet;
+		enableESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CSConfigPackage.FLAGS_TYPE__ENABLE, oldEnable, enable, !oldEnableESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetEnable() {
+		boolean oldEnable = enable;
+		boolean oldEnableESet = enableESet;
+		enable = ENABLE_EDEFAULT;
+		enableESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, CSConfigPackage.FLAGS_TYPE__ENABLE, oldEnable, ENABLE_EDEFAULT, oldEnableESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetEnable() {
+		return enableESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SeverityType getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(SeverityType newSeverity) {
+		SeverityType oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		boolean oldSeverityESet = severityESet;
+		severityESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CSConfigPackage.FLAGS_TYPE__SEVERITY, oldSeverity, severity, !oldSeverityESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetSeverity() {
+		SeverityType oldSeverity = severity;
+		boolean oldSeverityESet = severityESet;
+		severity = SEVERITY_EDEFAULT;
+		severityESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, CSConfigPackage.FLAGS_TYPE__SEVERITY, oldSeverity, SEVERITY_EDEFAULT, oldSeverityESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetSeverity() {
+		return severityESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CSConfigPackage.FLAGS_TYPE__CATEGORY:
+				return getCategory();
+			case CSConfigPackage.FLAGS_TYPE__ENABLE:
+				return isEnable() ? Boolean.TRUE : Boolean.FALSE;
+			case CSConfigPackage.FLAGS_TYPE__SEVERITY:
+				return getSeverity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CSConfigPackage.FLAGS_TYPE__CATEGORY:
+				setCategory((CategoryType)newValue);
+				return;
+			case CSConfigPackage.FLAGS_TYPE__ENABLE:
+				setEnable(((Boolean)newValue).booleanValue());
+				return;
+			case CSConfigPackage.FLAGS_TYPE__SEVERITY:
+				setSeverity((SeverityType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CSConfigPackage.FLAGS_TYPE__CATEGORY:
+				unsetCategory();
+				return;
+			case CSConfigPackage.FLAGS_TYPE__ENABLE:
+				unsetEnable();
+				return;
+			case CSConfigPackage.FLAGS_TYPE__SEVERITY:
+				unsetSeverity();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CSConfigPackage.FLAGS_TYPE__CATEGORY:
+				return isSetCategory();
+			case CSConfigPackage.FLAGS_TYPE__ENABLE:
+				return isSetEnable();
+			case CSConfigPackage.FLAGS_TYPE__SEVERITY:
+				return isSetSeverity();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (category: ");
+		if (categoryESet) result.append(category); else result.append("<unset>");
+		result.append(", enable: ");
+		if (enableESet) result.append(enable); else result.append("<unset>");
+		result.append(", severity: ");
+		if (severityESet) result.append(severity); else result.append("<unset>");
+		result.append(')');
+		return result.toString();
+	}
+
+} //FlagsTypeImpl
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/ScriptsTypeImpl.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/impl/ScriptsTypeImpl.java	Sat Apr 25 12:54:10 2009 -0500
@@ -17,6 +17,111 @@
 
 package com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl;
 
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.AccessArrayElementWithoutCheck2Type;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.AccessArrayElementWithoutCheckType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ActivestartType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ActivestopType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ArraypassingType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ArrayptrcleanupType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.AssertdebuginvariantType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.BaddefinesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.BaseconstructType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CSConfigPackage;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CallActiveObjectWithoutCheckingOrStoppingType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ChangenotificationType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CleanupType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CommentcodeType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ConnectAndDontCloseMemberVariableType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ConnectType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ConstnamesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ConsttdescptrType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ControlornullType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CtltargettypeType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DebugromType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DeclarenameType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DeleteMemberVariableType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DestructorType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DoubleSemiColonType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.DrivelettersType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.EikbuttonsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.EikonenvstaticType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.EnummembersType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.EnumnamesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ExportinlineType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ExportpurevirtualType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ExternaldrivelettersType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FoffType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ForbiddenwordsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ForgottoputptroncleanupstackType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FriendType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.GotoType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.IfassignmentsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.IfpreprocessorType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.InheritanceorderType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.IntleavesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.JmpType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LFunctionCantLeaveType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LeaveNoErrorType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LeaveType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LeavingoperatorsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.LonglinesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MagicnumbersType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MclassdestructorType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MemberlcType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MembervariablecallldType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MissingcancelType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MissingcclassType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MmpsourcepathType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MultilangrscType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MultipledeclarationsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MultipleinheritanceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.MydocsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NamespaceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NewlreferencesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NoleavetrapType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NonconsthbufcType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NonconsttdescType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NonleavenewType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NonunicodeskinsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.NullType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.OpenType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PointertoarraysType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PragmadisableType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PragmamessageType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PragmaotherType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PrivateinheritanceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PushaddrvarType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.PushmemberType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ReadresourceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ResourcenotoncleanupstackType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ResourcesonheapType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ReturndescriptoroutofscopeType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.RfsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.RssnamesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.ScriptsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.StringliteralsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.StringsinresourcefilesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.StructType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TcclassesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TclassdestructorType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TodocommentsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TrapcleanupType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TrapeleaveType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TraprunlType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.TrspassingType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UidsType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UncompressedaifType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UncompressedbmpType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UnicodesourceType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UserWaitForRequestType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UserafterType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.UserfreeType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.VariablenamesType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.VoidparameterType;
+import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.WorryingcommentsType;
 import com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.*;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -56,7 +161,9 @@
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getConstnames <em>Constnames</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getConsttdescptr <em>Consttdescptr</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getControlornull <em>Controlornull</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getCrepository <em>Crepository</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getCtltargettype <em>Ctltargettype</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getCustomizableicons <em>Customizableicons</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getDebugrom <em>Debugrom</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getDeclarename <em>Declarename</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getDeleteMemberVariable <em>Delete Member Variable</em>}</li>
@@ -70,6 +177,7 @@
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getExportinline <em>Exportinline</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getExportpurevirtual <em>Exportpurevirtual</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getExternaldriveletters <em>Externaldriveletters</em>}</li>
+ *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getFlags <em>Flags</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getFoff <em>Foff</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getForbiddenwords <em>Forbiddenwords</em>}</li>
  *   <li>{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.impl.ScriptsTypeImpl#getForgottoputptroncleanupstack <em>Forgottoputptroncleanupstack</em>}</li>
@@ -676,6 +784,33 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public CrepositoryType getCrepository() {
+		return (CrepositoryType)getMixed().get(CSConfigPackage.eINSTANCE.getScriptsType_Crepository(), true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCrepository(CrepositoryType newCrepository, NotificationChain msgs) {
+		return ((FeatureMap.Internal)getMixed()).basicAdd(CSConfigPackage.eINSTANCE.getScriptsType_Crepository(), newCrepository, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCrepository(CrepositoryType newCrepository) {
+		((FeatureMap.Internal)getMixed()).set(CSConfigPackage.eINSTANCE.getScriptsType_Crepository(), newCrepository);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public CtltargettypeType getCtltargettype() {
 		return (CtltargettypeType)getMixed().get(CSConfigPackage.eINSTANCE.getScriptsType_Ctltargettype(), true);
 	}
@@ -703,6 +838,33 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public CustomizableiconsType getCustomizableicons() {
+		return (CustomizableiconsType)getMixed().get(CSConfigPackage.eINSTANCE.getScriptsType_Customizableicons(), true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCustomizableicons(CustomizableiconsType newCustomizableicons, NotificationChain msgs) {
+		return ((FeatureMap.Internal)getMixed()).basicAdd(CSConfigPackage.eINSTANCE.getScriptsType_Customizableicons(), newCustomizableicons, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCustomizableicons(CustomizableiconsType newCustomizableicons) {
+		((FeatureMap.Internal)getMixed()).set(CSConfigPackage.eINSTANCE.getScriptsType_Customizableicons(), newCustomizableicons);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public DebugromType getDebugrom() {
 		return (DebugromType)getMixed().get(CSConfigPackage.eINSTANCE.getScriptsType_Debugrom(), true);
 	}
@@ -1054,6 +1216,33 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public FlagsType getFlags() {
+		return (FlagsType)getMixed().get(CSConfigPackage.eINSTANCE.getScriptsType_Flags(), true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFlags(FlagsType newFlags, NotificationChain msgs) {
+		return ((FeatureMap.Internal)getMixed()).basicAdd(CSConfigPackage.eINSTANCE.getScriptsType_Flags(), newFlags, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFlags(FlagsType newFlags) {
+		((FeatureMap.Internal)getMixed()).set(CSConfigPackage.eINSTANCE.getScriptsType_Flags(), newFlags);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public FoffType getFoff() {
 		return (FoffType)getMixed().get(CSConfigPackage.eINSTANCE.getScriptsType_Foff(), true);
 	}
@@ -2931,8 +3120,12 @@
 				return basicSetConsttdescptr(null, msgs);
 			case CSConfigPackage.SCRIPTS_TYPE__CONTROLORNULL:
 				return basicSetControlornull(null, msgs);
+			case CSConfigPackage.SCRIPTS_TYPE__CREPOSITORY:
+				return basicSetCrepository(null, msgs);
 			case CSConfigPackage.SCRIPTS_TYPE__CTLTARGETTYPE:
 				return basicSetCtltargettype(null, msgs);
+			case CSConfigPackage.SCRIPTS_TYPE__CUSTOMIZABLEICONS:
+				return basicSetCustomizableicons(null, msgs);
 			case CSConfigPackage.SCRIPTS_TYPE__DEBUGROM:
 				return basicSetDebugrom(null, msgs);
 			case CSConfigPackage.SCRIPTS_TYPE__DECLARENAME:
@@ -2959,6 +3152,8 @@
 				return basicSetExportpurevirtual(null, msgs);
 			case CSConfigPackage.SCRIPTS_TYPE__EXTERNALDRIVELETTERS:
 				return basicSetExternaldriveletters(null, msgs);
+			case CSConfigPackage.SCRIPTS_TYPE__FLAGS:
+				return basicSetFlags(null, msgs);
 			case CSConfigPackage.SCRIPTS_TYPE__FOFF:
 				return basicSetFoff(null, msgs);
 			case CSConfigPackage.SCRIPTS_TYPE__FORBIDDENWORDS:
@@ -3146,8 +3341,12 @@
 				return getConsttdescptr();
 			case CSConfigPackage.SCRIPTS_TYPE__CONTROLORNULL:
 				return getControlornull();
+			case CSConfigPackage.SCRIPTS_TYPE__CREPOSITORY:
+				return getCrepository();
 			case CSConfigPackage.SCRIPTS_TYPE__CTLTARGETTYPE:
 				return getCtltargettype();
+			case CSConfigPackage.SCRIPTS_TYPE__CUSTOMIZABLEICONS:
+				return getCustomizableicons();
 			case CSConfigPackage.SCRIPTS_TYPE__DEBUGROM:
 				return getDebugrom();
 			case CSConfigPackage.SCRIPTS_TYPE__DECLARENAME:
@@ -3174,6 +3373,8 @@
 				return getExportpurevirtual();
 			case CSConfigPackage.SCRIPTS_TYPE__EXTERNALDRIVELETTERS:
 				return getExternaldriveletters();
+			case CSConfigPackage.SCRIPTS_TYPE__FLAGS:
+				return getFlags();
 			case CSConfigPackage.SCRIPTS_TYPE__FOFF:
 				return getFoff();
 			case CSConfigPackage.SCRIPTS_TYPE__FORBIDDENWORDS:
@@ -3379,9 +3580,15 @@
 			case CSConfigPackage.SCRIPTS_TYPE__CONTROLORNULL:
 				setControlornull((ControlornullType)newValue);
 				return;
+			case CSConfigPackage.SCRIPTS_TYPE__CREPOSITORY:
+				setCrepository((CrepositoryType)newValue);
+				return;
 			case CSConfigPackage.SCRIPTS_TYPE__CTLTARGETTYPE:
 				setCtltargettype((CtltargettypeType)newValue);
 				return;
+			case CSConfigPackage.SCRIPTS_TYPE__CUSTOMIZABLEICONS:
+				setCustomizableicons((CustomizableiconsType)newValue);
+				return;
 			case CSConfigPackage.SCRIPTS_TYPE__DEBUGROM:
 				setDebugrom((DebugromType)newValue);
 				return;
@@ -3421,6 +3628,9 @@
 			case CSConfigPackage.SCRIPTS_TYPE__EXTERNALDRIVELETTERS:
 				setExternaldriveletters((ExternaldrivelettersType)newValue);
 				return;
+			case CSConfigPackage.SCRIPTS_TYPE__FLAGS:
+				setFlags((FlagsType)newValue);
+				return;
 			case CSConfigPackage.SCRIPTS_TYPE__FOFF:
 				setFoff((FoffType)newValue);
 				return;
@@ -3694,9 +3904,15 @@
 			case CSConfigPackage.SCRIPTS_TYPE__CONTROLORNULL:
 				setControlornull((ControlornullType)null);
 				return;
+			case CSConfigPackage.SCRIPTS_TYPE__CREPOSITORY:
+				setCrepository((CrepositoryType)null);
+				return;
 			case CSConfigPackage.SCRIPTS_TYPE__CTLTARGETTYPE:
 				setCtltargettype((CtltargettypeType)null);
 				return;
+			case CSConfigPackage.SCRIPTS_TYPE__CUSTOMIZABLEICONS:
+				setCustomizableicons((CustomizableiconsType)null);
+				return;
 			case CSConfigPackage.SCRIPTS_TYPE__DEBUGROM:
 				setDebugrom((DebugromType)null);
 				return;
@@ -3736,6 +3952,9 @@
 			case CSConfigPackage.SCRIPTS_TYPE__EXTERNALDRIVELETTERS:
 				setExternaldriveletters((ExternaldrivelettersType)null);
 				return;
+			case CSConfigPackage.SCRIPTS_TYPE__FLAGS:
+				setFlags((FlagsType)null);
+				return;
 			case CSConfigPackage.SCRIPTS_TYPE__FOFF:
 				setFoff((FoffType)null);
 				return;
@@ -3990,8 +4209,12 @@
 				return getConsttdescptr() != null;
 			case CSConfigPackage.SCRIPTS_TYPE__CONTROLORNULL:
 				return getControlornull() != null;
+			case CSConfigPackage.SCRIPTS_TYPE__CREPOSITORY:
+				return getCrepository() != null;
 			case CSConfigPackage.SCRIPTS_TYPE__CTLTARGETTYPE:
 				return getCtltargettype() != null;
+			case CSConfigPackage.SCRIPTS_TYPE__CUSTOMIZABLEICONS:
+				return getCustomizableicons() != null;
 			case CSConfigPackage.SCRIPTS_TYPE__DEBUGROM:
 				return getDebugrom() != null;
 			case CSConfigPackage.SCRIPTS_TYPE__DECLARENAME:
@@ -4018,6 +4241,8 @@
 				return getExportpurevirtual() != null;
 			case CSConfigPackage.SCRIPTS_TYPE__EXTERNALDRIVELETTERS:
 				return getExternaldriveletters() != null;
+			case CSConfigPackage.SCRIPTS_TYPE__FLAGS:
+				return getFlags() != null;
 			case CSConfigPackage.SCRIPTS_TYPE__FOFF:
 				return getFoff() != null;
 			case CSConfigPackage.SCRIPTS_TYPE__FORBIDDENWORDS:
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/util/CSConfigAdapterFactory.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/util/CSConfigAdapterFactory.java	Sat Apr 25 12:54:10 2009 -0500
@@ -179,10 +179,18 @@
 				return createControlornullTypeAdapter();
 			}
 			@Override
+			public Adapter caseCrepositoryType(CrepositoryType object) {
+				return createCrepositoryTypeAdapter();
+			}
+			@Override
 			public Adapter caseCtltargettypeType(CtltargettypeType object) {
 				return createCtltargettypeTypeAdapter();
 			}
 			@Override
+			public Adapter caseCustomizableiconsType(CustomizableiconsType object) {
+				return createCustomizableiconsTypeAdapter();
+			}
+			@Override
 			public Adapter caseCustomrulesType(CustomrulesType object) {
 				return createCustomrulesTypeAdapter();
 			}
@@ -251,6 +259,10 @@
 				return createExternaldrivelettersTypeAdapter();
 			}
 			@Override
+			public Adapter caseFlagsType(FlagsType object) {
+				return createFlagsTypeAdapter();
+			}
+			@Override
 			public Adapter caseFoffType(FoffType object) {
 				return createFoffTypeAdapter();
 			}
@@ -931,6 +943,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType <em>Crepository Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CrepositoryType
+	 * @generated
+	 */
+	public Adapter createCrepositoryTypeAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CtltargettypeType <em>Ctltargettype Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
@@ -945,6 +971,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType <em>Customizableicons Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomizableiconsType
+	 * @generated
+	 */
+	public Adapter createCustomizableiconsTypeAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.CustomrulesType <em>Customrules Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
@@ -1183,6 +1223,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType <em>Flags Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FlagsType
+	 * @generated
+	 */
+	public Adapter createFlagsTypeAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link com.nokia.carbide.cpp.internal.codescanner.gen.CSConfig.FoffType <em>Foff Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/util/CSConfigSwitch.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/gen/CSConfig/util/CSConfigSwitch.java	Sat Apr 25 12:54:10 2009 -0500
@@ -242,12 +242,24 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case CSConfigPackage.CREPOSITORY_TYPE: {
+				CrepositoryType crepositoryType = (CrepositoryType)theEObject;
+				T result = caseCrepositoryType(crepositoryType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case CSConfigPackage.CTLTARGETTYPE_TYPE: {
 				CtltargettypeType ctltargettypeType = (CtltargettypeType)theEObject;
 				T result = caseCtltargettypeType(ctltargettypeType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case CSConfigPackage.CUSTOMIZABLEICONS_TYPE: {
+				CustomizableiconsType customizableiconsType = (CustomizableiconsType)theEObject;
+				T result = caseCustomizableiconsType(customizableiconsType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case CSConfigPackage.CUSTOMRULES_TYPE: {
 				CustomrulesType customrulesType = (CustomrulesType)theEObject;
 				T result = caseCustomrulesType(customrulesType);
@@ -350,6 +362,12 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case CSConfigPackage.FLAGS_TYPE: {
+				FlagsType flagsType = (FlagsType)theEObject;
+				T result = caseFlagsType(flagsType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case CSConfigPackage.FOFF_TYPE: {
 				FoffType foffType = (FoffType)theEObject;
 				T result = caseFoffType(foffType);
@@ -1201,6 +1219,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Crepository Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Crepository Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCrepositoryType(CrepositoryType object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Ctltargettype Type</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
@@ -1216,6 +1249,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Customizableicons Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Customizableicons Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCustomizableiconsType(CustomizableiconsType object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Customrules Type</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
@@ -1471,6 +1519,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Flags Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Flags Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFlagsType(FlagsType object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Foff Type</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/messages.properties	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/messages.properties	Sat Apr 25 12:54:10 2009 -0500
@@ -72,6 +72,7 @@
 RulesTabPage.RulesTableCategoriesLabel=Categories
 RulesTabPage.RulesTableSeveritiesLabel=Severities
 RulesTabPage.EditForbiddenWordsLabel=Forbidden words :
+RulesTabPage.EditIconsLabel=Icons:
 RulesTabPage.EditLFunctionCantLeaveLabel=LFunction ignore :
 RulesTabPage.EditLongLinesLabel=Long lines length :
 RulesTabPage.EditMissingCClassLabel=C Class ignore :
@@ -102,7 +103,9 @@
 CSRule.Constnames=A badly-named constant will make the source code harder to maintain and make defects more likely.
 CSRule.Consttdescptr=Using const descriptor pointer as an argument. For example: use 'const TDesC&' instead of 'const TDesC*'.
 CSRule.Controlornull=You should always check the return value of ControlOrNull() for NULL before attempting to access it.
+CSRule.Crepository=Independent application cannot assume that the Central Repository is set up fully. This means the return value of CRepository::get() cannot be ignored.
 CSRule.Ctltargettype=The ctl targettype should not be used. Instead, use DLL and explicitly refer to the Control Panel\u2019s DEF file.
+CSRule.Customizableicons=Due to device customization requirements, independent application must not remove any customization done by the variant team. This means customizable icons cannot be used.
 CSRule.Debugrom=Debug versions of components in the ROM mean that ROM space is being taken up with debugging information or that logging is still being output. Only release versions should be in the ROM.
 CSRule.Declarename=The __DECLARE_NAME macro is historical and serves no purpose anymore and should be removed.
 CSRule.DeleteMemberVariable=The Member variable was deleted incorrectly by not assigning it to NULL or another value to prevent accidental access of the deleted object.
@@ -115,7 +118,7 @@
 CSRule.Enumnames=Badly-named enums make the code harder to maintain and may cause defects.
 CSRule.Exportinline=Exporting inline functions can cause those that link to the DLL to fail to build. Exporting functions limits future changes due to considerations of binary-compatibility.
 CSRule.Exportpurevirtual=The exporting of pure virtual functions is not recommended by Symbian.
-#CSRule.Externaldriveletters=External drive letters should not be hard-coded as the external drive may change between platforms and releases. This ownership confusion can lead to classes being deleted erroneously and leaks occurring.
+CSRule.Flags=Independent application must not use R&D flags nor feature flags via preprocessor statements in the source code. This means bld*.hrh and productvariant.hrh should not be used.
 CSRule.Foff=_FOFF allows access to data in classes that were not intended for public access. This may cause problems, especially when the location of the data changes.
 CSRule.Forbiddenwords=Use of forbidden words in header files, especially those destined for external release. Some words may be forbidden for legal reasons or for platform consistency. Where they exist, alternative allowed words should be used.
 CSRule.Forgottoputptroncleanupstack=A memory leak can occur if a variable is not put on the cleanup stack and a leaving function or ELeave is called.
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/ui/CSPreferenceConstants.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/ui/CSPreferenceConstants.java	Sat Apr 25 12:54:10 2009 -0500
@@ -41,6 +41,7 @@
 	public final static String RULES_ENABLED		= "CodeScannerRulesEnabled";
 	public final static String CCLASSIGNORE			= "CodeScannerCClassIgnore";
 	public final static String FORBIDEENWORDS		= "CodeScannerForbiddenWords";
+	public final static String ICONS				= "CodeScannerIcons";
 	public final static String LFUNCTIONIGNORE		= "CodeScannerLFunctionIgnore";
 	public final static String LONGLINES_LENGTH		= "CodeScannerLongLinesLength";
 	public final static String OPENIGNORE			= "CodeScannerOpenIgnore";
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/ui/CSRulesTabPage.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/ui/CSRulesTabPage.java	Sat Apr 25 12:54:10 2009 -0500
@@ -92,11 +92,12 @@
 	private Button enableAllButton = null;
 	private Button disableAllButton = null;
 	private String cclassIgnore = "";
+	private String icons = "";
 	private String lfunctionIgnore = "";
+	private int longLinesLength = 0;
 	private String forbiddenWords = "";
 	private String openIgnore = "";
 	private String worryingComments = "";
-	private int longLinesLength = 0;
 	private CSConfigSettings defaultConfigSettings = null;
 	private List<CSRule> rules = null;
 	private CSRulesSorter rulesSorter = null;
@@ -282,6 +283,10 @@
 		rulesTableViewer.setInput(rules.toArray());
 		setCheckedElements();
 		cclassIgnore = defaultConfigSettings.getScriptCClassIgnore();
+		icons = defaultConfigSettings.getScriptIcons();
+		if (icons == null) {
+			icons = "";
+		}
 		longLinesLength = defaultConfigSettings.getScriptLongLinesLength();
 		forbiddenWords = defaultConfigSettings.getScriptForbiddenWords();
 		openIgnore = defaultConfigSettings.getScriptOpenIgnore();
@@ -341,6 +346,7 @@
 		// retrieve other stored values
 		cclassIgnore = store.getString(CSPreferenceConstants.CCLASSIGNORE);
 		forbiddenWords = store.getString(CSPreferenceConstants.FORBIDEENWORDS);
+		icons = store.getString(CSPreferenceConstants.ICONS);
 		lfunctionIgnore = store.getString(CSPreferenceConstants.LFUNCTIONIGNORE);
 		longLinesLength = store.getInt(CSPreferenceConstants.LONGLINES_LENGTH);
 		openIgnore = store.getString(CSPreferenceConstants.OPENIGNORE);
@@ -398,6 +404,7 @@
 		// retrieve other stored values
 		cclassIgnore = pageSettings.get(CSPreferenceConstants.CCLASSIGNORE);
 		forbiddenWords = pageSettings.get(CSPreferenceConstants.FORBIDEENWORDS);
+		icons = pageSettings.get(CSPreferenceConstants.ICONS);
 		lfunctionIgnore = pageSettings.get(CSPreferenceConstants.LFUNCTIONIGNORE);
 		longLinesLength = pageSettings.getInt(CSPreferenceConstants.LONGLINES_LENGTH);
 		openIgnore = pageSettings.get(CSPreferenceConstants.OPENIGNORE);
@@ -438,6 +445,7 @@
 		// store other values
 		store.setValue(CSPreferenceConstants.CCLASSIGNORE, cclassIgnore);
 		store.setValue(CSPreferenceConstants.FORBIDEENWORDS, forbiddenWords);
+		store.setValue(CSPreferenceConstants.ICONS, icons);
 		store.setValue(CSPreferenceConstants.LFUNCTIONIGNORE, lfunctionIgnore);
 		store.setValue(CSPreferenceConstants.LONGLINES_LENGTH, longLinesLength);
 		store.setValue(CSPreferenceConstants.OPENIGNORE, openIgnore);
@@ -478,6 +486,7 @@
 		// store other values
 		pageSettings.put(CSPreferenceConstants.CCLASSIGNORE, cclassIgnore);
 		pageSettings.put(CSPreferenceConstants.FORBIDEENWORDS, forbiddenWords);
+		pageSettings.put(CSPreferenceConstants.ICONS, icons);
 		pageSettings.put(CSPreferenceConstants.LFUNCTIONIGNORE, lfunctionIgnore);
 		pageSettings.put(CSPreferenceConstants.LONGLINES_LENGTH, longLinesLength);
 		pageSettings.put(CSPreferenceConstants.OPENIGNORE, openIgnore);
@@ -516,6 +525,11 @@
 		store.setDefault(CSPreferenceConstants.RULES_ENABLED, enabledString);
 		store.setDefault(CSPreferenceConstants.CCLASSIGNORE, configSettings.getScriptCClassIgnore());
 		store.setDefault(CSPreferenceConstants.FORBIDEENWORDS, configSettings.getScriptForbiddenWords());
+		String icons = configSettings.getScriptIcons();
+		if (icons == null) {
+			icons = "";
+		}
+		store.setDefault(CSPreferenceConstants.ICONS, icons);
 		store.setDefault(CSPreferenceConstants.LFUNCTIONIGNORE, configSettings.getScriptLFunctionIgnore());
 		store.setDefault(CSPreferenceConstants.LONGLINES_LENGTH, configSettings.getScriptLongLinesLength());
 		store.setDefault(CSPreferenceConstants.OPENIGNORE, configSettings.getScriptOpenIgnore());
@@ -552,6 +566,11 @@
 		pageSettings.put(CSPreferenceConstants.RULES_ENABLED, enabledString);
 		pageSettings.put(CSPreferenceConstants.CCLASSIGNORE, configSettings.getScriptCClassIgnore());
 		pageSettings.put(CSPreferenceConstants.FORBIDEENWORDS, configSettings.getScriptForbiddenWords());
+		String icons = configSettings.getScriptIcons();
+		if (icons == null) {
+			icons = "";
+		}
+		pageSettings.put(CSPreferenceConstants.ICONS, icons);
 		pageSettings.put(CSPreferenceConstants.LFUNCTIONIGNORE, configSettings.getScriptLFunctionIgnore());
 		pageSettings.put(CSPreferenceConstants.LONGLINES_LENGTH, configSettings.getScriptLongLinesLength());
 		pageSettings.put(CSPreferenceConstants.OPENIGNORE, configSettings.getScriptOpenIgnore());
@@ -574,10 +593,12 @@
 					String extraAttr = "";
 
 					CSScript script = rule.getScript();
-					if (script.equals(CSScript.script_longlines)) {
+					if (script.equals(CSScript.script_customizableicons)) {
 						hasExtra = true;
-						extraAttrTitle = Messages.getString("RulesTabPage.EditLongLinesLabel");
-						extraAttr = longLinesLength + "";
+						extraAttrTitle = Messages.getString("RulesTabPage.EditIconsLabel");
+						if (icons != null) {
+							extraAttr = icons;
+						}
 					}
 					else
 					if (script.equals(CSScript.script_forbiddenwords)) {
@@ -596,6 +617,12 @@
 						}
 					}
 					else
+					if (script.equals(CSScript.script_longlines)) {
+						hasExtra = true;
+						extraAttrTitle = Messages.getString("RulesTabPage.EditLongLinesLabel");
+						extraAttr = longLinesLength + "";
+					}
+					else
 					if (script.equals(CSScript.script_missingcclass)) {
 						hasExtra = true;
 						extraAttrTitle = Messages.getString("RulesTabPage.EditMissingCClassLabel");
@@ -637,6 +664,10 @@
 						}
 						String newExtraAttr = dialog.getExtra();
 						if (dialog.hasExtra() && !newExtraAttr.equals(extraAttr)) {
+							if (script.equals(CSScript.script_customizableicons)) {
+								icons = newExtraAttr;
+							}
+							else
 							if (script.equals(CSScript.script_forbiddenwords)) {
 								forbiddenWords = newExtraAttr;
 							}
--- a/core/com.nokia.carbide.cpp.doc.user/html/bugs_fixed.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/html/bugs_fixed.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -1,410 +1,419 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> -->
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-  <title>Carbide.c++ Bugs Fixed</title>
-  <link href="../book.css" rel="stylesheet" type="text/css" />
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-  <link href="../book.css" rel="stylesheet" type="text/css" />
-  <script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
-  <style type="text/css">
-	ul > li {font-weight: normal }
-  </style>
-</head>
-<body bgcolor="#ffffff">
-<h2>Carbide.c++ bugs fixed </h2>
-<p>This is a comprehensive list of bugs fixed by release: </p>
-<ul>
-  
-  <li><a href="#bugs203">Bugs Fixed in 2.0.3</a></li>
-  <li><a href="#bugs202">Bugs Fixed in 2.0.2</a>, <a href="#bugs200">2.0.0</a></li>
-  <li><a href="#bugs131">Bugs Fixed in 1.3.1</a>, <a href="#bugs130">1.3.0</a> , <a href="#bugs122">1.2.2</a>, <a href="#bugs121">1.2.1</a></li>
-</ul>
-<h3><a name="bugs203" id="bugs3"></a>Bugs Fixed in v2.0.3</h3>
-<ul>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8196</a> - Fixed an issue that caused executable files to be left open after using the Symbol Reader API.</li>
-</ul>
-<h3><a name="bugs202" id="bugs2"></a>Bugs Fixed in v2.0.2</h3>
-<ul>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7473">7473</a> - Added PKG files to the Qt template projects so SIS files can be built and installed on a device. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7542">7542</a> - Updated Remote Connections UI to provide better descriptions when choosing between USB  or TRK 2.x USB (supports USB only). </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7915">7915</a> - Improved the timing out mechanism in Carbide so that TRK doesn't time out when target's are slow to respond.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8276">8276</a> - The main issue that caused Stepping line by line to be slow has been fixed. However, there are some cases where the slowness still appears. For example, when accessing files across a network, and the network is down or  if a source file is missing. Re-establishing the connection resolves the slow debugging issue.</li>
-</ul>
-<h3><a name="bugs200" id="bugs"></a>Bugs Fixed in v2.0.0</h3>
-<ul><li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=476">476</a> - Added the Move to Line command to set the PC location without resuming execution. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3800">3800</a> - Added &quot;New&quot; actions to the Symbian Project Navigator view so you can create new files, etc. from the context menu. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3850">3850</a> - Added the ability to create a new mmp file from the bld.inf editor. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3904">3904</a> - Selecting an MMP file in the Symbian Project Navigator view will now launch the correct executable. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3994">3994</a> - Build configurations are now linked correctly to a launch configuration to allow multiple launches using different builds. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4694">4694</a> - Holding a cursor over a variable name now highlights all instances of that variable name in the editor to allow easier identification of its use. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4718">4718</a> - Corrected an issue where the compiler was preventing the display of a local variable. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4936">4936</a> - Corrected an issue where [Templates] Class template instantiation to files outside the workspace could cause problems. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4937">4937</a> - Indexer should no longer fail when <span class="code">_LIT()</span> macros are used as function parameters.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5223">5223</a> - CodeScanner now provides a link from an individual error or warning to the rule which generated the error or warning.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5237">5237</a> - TODO items on the same line as a preprocessor statement now appear in the Tasks view. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5373">5373</a> - Fixed several issues where code formatting was behaving badly. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5376">5376</a> - The wait time to test if RVCT is available has been extended making it more likely that you can launch Dependency Explorer. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5448">5448</a> - Enhanced the loading of executables so that breakpoints in the server side of a client/server application are always found. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5461">5461</a> - Content assist now correctly uses namespace declarations.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5666">5666</a> - Pressing F3 on a class name inside a NONSHARABLE macro now works as expected.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5794">5794</a> - Indexer is now more robust when it finds &quot;using namespace...&quot; inside a header file. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5933">5933</a> - Fixed an issue where disconnecting from TRK would sometimes generate a panic condition. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6099">6099</a> - DLL symbols are now loaded correctly when attaching to a process using Application TRK for UIQ (v2.8.5).</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6288">6288</a> - The Project Updater should no longer crash with a NullPointerException error.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6415">6415</a> - Carbide now correctly handles the ERROR e87 message caused when a command line is too long to be handled by the tool </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6463">6463</a> - Fixed a null pointer exception error when launching the debugger. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6616">6616</a> - Successful project builds should no longer show &quot;build error&quot; messages based on CodeScanner errors.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6724">6724</a> - Changed the way renamed executables are tracked for on-device debugging to ensure the correct binary is targeted and its breakpoints hit.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6788">6788</a> - The descriptor length in the Variable view has been increased to 1024 Unicode characters.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6874">6874</a> - Carbide now supports the importing and creation of Qt projects for Symbian OS integration </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6900">6900</a> - Added support to the debugger for new descriptor classes LString8 and LString16. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6915">6915</a> - The Keys preference panel should no longer throw errors related to finding schemes </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6968">6968</a> - Added .aps extension to the list of default executable files recognized by the Executables view.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7108">7108</a> - Fixed a NullPointerException error that occurred when trying to open a declaration. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7124">7124</a> - Changed how Carbide.c++ locates SDKs to improve reliability.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7375">7375</a> - Opening a .RSS file in an editor view should no longer display syntax errors </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7493">7493</a> - Fixed an issue where adding a new class derived from a system base class did not work as intended. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7537">7537</a> - Set the Save Actions &quot;remove trailing whitespace&quot; to disabled by default as it was causing problems when diffing files. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7448">7448</a> - Fixed a configuration issue that prevented the Bug Reporter plug-in from submitting bugs. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7543">7543</a> - The launch configuration's File Transfer tab now marks missing host files with a warning icon and a message when it can't find the file to transfer. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7546">7546</a> - Fixed an issue that caused the Partial SIS upgrade to corrupt installations and prevent removal of the programs.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7577">7577</a> - Problems view sorting that depended upon Creation Time should now work properly.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7588">7588</a> - Builds using the &quot;Build Symbian Component&quot; now correctly display a progress dialog.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7596">7596</a> - The Location field in the Problems view should now sort correctly.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7599">7599</a> - Fixed a problem where all potentially built elements are still added to a launch configuration, but only those actually being built at the time of launch config creation are enabled.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7641">7641</a> - Fixed a bug where pressing &quot;Delete&quot; on Problems view when the bld.inf or mmp text editor was open caused the delete action to be directed to the editor rather than the view.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7748">7748</a> - Dependency files are no longer generated in working directory when doing &quot;abld listing&quot; </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7782">7782</a> - Converted shortcuts to use the new command style which should make key bindings more reliable.</li>
-</ul>
-<p><b>RC1</b></p>
-<ul>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7375">7375</a> - Opening a .RSS file in an editor view should no longer display syntax errors.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7376">7376</a> - A class cast exception now logs an error containing the element it's expecting to be a class but isn't instead of a internal error.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7486">7486</a> - Use of duplicate key bindings for Import and Export has been corrected by using Eclipse 3.4.1.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7493">7493</a> - Fixed an issue where adding a new class derived from a system base class did not work as intended.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7532">7532</a> - Mapped the Synergy file _ccmwaid.inf to open in the text editor instead of the MMP/INF editor which generated incorrect error warnings and prevented builds. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7542">7542</a> - Updated Remote Connections UI to provide better descriptions when choosing between USB (supporting both TRK and Tracing) or TRK 2.x USB (supports USB only).</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7611">7611</a> - Fixed a UI refresh issue on Tube devices that prevented Connect/Disconnect from working.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7621">7621</a> - Updated examples and code generator to properly remove icon references</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7637">7637</a> - Clarified the message when you choose to update old projects and then don't select a project to update.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7776">7776</a> - The 'NULL' keyword and other macro references are now highlighted as they were in Carbide 1.3.x.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7814">7814</a> - Updated the Basic DLL template to work with EKA2 projects. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7866">7866</a> - An issue that prevented installing TRK on N96 CE Devices has been resolved.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7921">7921</a> - Updated the OpenC Hello World template to work with EKA2 projects. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7926">7926</a> - The cursor should  no longer jump between insertion points when a source or header path is selected in the New Symbian OS Class wizard.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7927">7927</a> - Browsing code in the Call Hierarchy window using F3 should no longer throw a NullPointerException error.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7943">7943</a> - Adding executables with non-standard suffixes should now work as expected.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7953">7953</a> - Fixed an issue where selecting several components from project explorer and using Build All Configurations caused errors.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7978">7978</a> - Fixed a problem where some build problems were not detected when launching.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8010">8010</a> - Renamed some template names to clarify their type and intended use.</li>
-</ul>
-<h3><a name="bugs131" id="bugs131"></a>Bugs Fixed in v1.3.1</h3>
-<ul>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3261">3261</a> - You can now run the following individual abld commands from a new ABLD submenu under the Project and context menus: export, cleanexport, resource, target, final and tidy.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4102">4102</a> - Fixed a problem where Ctrl-~ sometimes opened the wrong header file</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4106">4106</a> - You can now import a bld.inf that does not reference any MMP or MAK files</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4166">4166</a> - Fixed a problem that sometimes left the main EXE locked after loading when debugging multiple targets </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5223">5223</a> - CodeScanner now provides a link from an individual error or warning to the rule which generated the error or warning</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5254">5254</a> - The C/C++ &gt; Editor option &quot;Ensure newline at end of file when saving&quot; is now enabled by default</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5522">5522</a> - The New Launch Configuration Wizard has been updated to choose an EXE as the main executable instead of a DLL when at least one is present in the project</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5648">5648</a> - Corrected an issue where breakpoints were not getting hit when a DLL was build
-  during a debug launch</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5815">5815</a> - The debugger now shows a full call stack when it stops at a memory watch point</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5933">5933</a> - Fixed an issue where disconnecting from TRK would sometimes generate a panic condition.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6007">6007</a> - Made several enhancements to the build system including: adding an ABLD menu option, not refreshing the project when a build is completed when auto-refresh is enabled, and moved the ROM builder panel into the Project Settings page to address a progress bar issue.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6040">6040</a> - The MMP Selection page in the &quot;Import &gt; Symbian OS Bld.inf file&quot; wizard has been redesigned to include sortable columns for build order, file names, and location, to make locating MMP files easier</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6222">6222</a> - Fixed an issue that could cause Carbide to crash and corrupt the workspace.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6229">6229</a> - Fixed a couple of issues where the Executables view and Executables tab behaviors and UI were not syncing correctly causing errors when trying to debug DLLs.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6262">6262</a> - Fixed an issue where the emulator failed on startup with a Null exception error</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6288">6288</a> - The Project Updater should no longer crash with a NullPointerException error</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6299">6299</a> - Suspending the debugger and trying to resume it should no longer cause the application being debugged to hang</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6371">6371</a> - Carbide no longer throws a Null pointer exception when attempts are made to add paths to a project outside of the MMP/INF files</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6377">6377</a> - Reworded help on setting conditional breakpoints to clarify their temporary nature.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6378">6378</a> - Revised steps on setting conditional breakpoints to clarify process.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6381">6381</a> - Revised help on opening the Breakpoints view</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6383">6383</a> - Revised help to clarify the enabling and disabling of breakpoints</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6384">6384</a> - Revised help on removing breakpoints information</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6385">6385</a> - Revised steps on setting up watchpoints from different views</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6415">6415</a> - Carbide now correctly handles the ERROR e87 message caused when a command line is too long to be handled by the tool</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6417">6417</a> - Carbide now correctly shows in the Problems view error messages with multiple defined symbols</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6450">6450</a> - STL classes are now recognized by the variable formatter</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6459">6459</a> - The Emulator field in a new emulator launch configuration should now be filled in correctly when pressing F11 or clicking Run &gt; Debug</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6462">6462</a> - Corrected an issue where workspace layouts were lost when a null pointer exception was thrown.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6497">6497</a> - Run to Line and Continue from line should now behave correctly when used in source files whose locations have been remapped</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6511">6511</a> - Additional variable formats like STD have been added to improve how they are displayed in the Variables view</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6525">6525</a> - Using the &quot;Resume at line&quot; command should no longer require a Carbide restart</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6574">6574</a> - Moved the separate ROM builder into the Carbide builder (Properties &gt; Carbide Build Configurations) and revised the project updater to remove the ROM builder and convert any existing preferences (command line and working directory) to non-WINSCW build configurations</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6590">6590</a> - Added Language ID 186 to the MMP handling routines that was causing a NullPointerException error</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6615">6615</a> - Added a new extension point (com.nokia.carbide.cdt.builder.environmentModifier) to our builder plugin that allows you to register an environment modifier for modifying project paths</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6635">6635</a> - Multiple fixes to improve the setting of breakpoints from a call stack</li>
-</ul>
-<h3><a name="bugs130"></a>Bugs Fixed in v1.3.0</h3>
-<p><b>IDE</b></p>
-<ul>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=188">188</a> - Selecting a .h file name in a editor and pressing F3 (Open Declaration) opens a new editor view and displays the .h file</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=853">853</a> - Added text color support in the Build Console to make reading logs easier on the eye</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=2887">2887</a> - The behavior of project level commands was improved to better follow Eclipse guidelines as well as be more context sensitive. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3248">3248</a> - The Symbian Project Navigator view can now toggle between showing the normal Bld.Inf structure or showing folders using the SOURCEPATHs in the MMP file</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3266">3266</a> - Macros now appear in the index and can be found using normal search methods</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3271">3271</a> - System Search now supports the searching of any directory visible to the OS</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3350">3350</a> - The SIS Builder page in the Carbide Build Configurations property window now supports the generation or one or more output files using different key pairs based upon the same sources.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3407">3407</a> - File search should now find items even if the indexer is still running</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3425">3425</a> - The console view now shows a message to let you know it has finished compiling your sources</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3432">3432</a> - Carbide now does a better job of detecting changes to MMPs with includes and should now rebuild correctly</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3448">3448</a> - Use of non-standard font sizes in labels and views are supported better </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3457">3457</a> - Updated indexer to support virtual functions better so that jumps to function  declarations from a function pointer should now work as expected </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3471">3471</a> - System Search supports text searching of the &quot;\epoc\include&quot; directory</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3544">3544</a> - You can now set the default build action behavior of the workspace or a project when modified MMPs are detected</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3566">3566</a> - It is now possible to not sign, self sign, or sign with certificate/key pair SISX files in the project's SIS Properties dialog. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3671">3679</a> - The Build icon displayed in the toolbar now has a tooltip</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3696">3696</a> - The bld.inf editor now correctly handles <span class="code">#if/#endif</span> situations when exports are added to the <span class="code">bld.inf</span> file</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3720">3720</a> - Formatting of pasted code now works correctly </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3731">3731</a> - It is now possible to save files not part of a source path have been addressed     </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3743">3743</a> - MS Visual Studio shortcuts added: Ctrl+F2 (Add Bookmark), Ctrl+G (Go to Line)</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3741">3741</a> - Content Assist now includes enums in classes </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3792">3792</a> - SDK versions for UIQ SDKs are correctly identified more which allows them to be used</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3879">3879</a> - Carbide now monitors the variant header file and forces a rebuild on the effected source files</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3914">3914</a> - Eclipse TODO tasks feature now supported</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3925">3925</a> - The &quot;debug MMP&quot; option is no longer offered when creating a project. Instead, you are asked to directly select the MMP to use as the default for launching the project</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3940">3940</a> - C/C++ Indexer should no longer hang when it encounters a C++ style comment on the same line as a single line macro definition</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4031">4031</a> - The Carbide compiler now recognizes the WINSCW deprecation flag in S60 applications</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4085">4085</a> - Building a project with only test MMPs no longer does an &quot;abld build&quot;</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4112">4112</a> - You can now use the Template Wizard: Copy File process to copy files stored in  JAR files </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4131">4131</a> - Pressing the external editor for the text property will now correctly activate the scalable string editor</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4132">4132</a> - You can now select &quot;Use default incremental builder&quot; to launch a program without calling make when nothing in the workspace has changed</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4143">4143</a> - Support for the <span class="code">DEBUGGABLE</span> option is now available in the MMP Editor and included in the project templates. This allows an application to be debugged using the Carbide on-device debugger when targeting Symbian OS v9.4 or later versions. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4145">4145</a> - Canceling a build should now work more reliably</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4147">4147</a> - Copying text from a source editor and pasting it into an external editor like MS Word, will no longer copy and paste the background color as well</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4188">4188</a> - Freeze exports now takes the list of mmp's being built into consideration</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4388">4388</a> - Code Assist now ignores &quot;private:&quot; when invoked within a class</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4402">4402</a> - Copious repeats of missing MAP/DLL error messages have been eliminated</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4410">4410</a> - Freezing exports no longer passes the &quot;-r&quot; flag to abld with EKA1 kits</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4442">4442</a> - Added missing plugins so that Carbide editors now support use of Shift-JIS</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4470">4470</a> - A StringIndexOutOfBoundsException error is no longer thrown when a binary has no file extension during an indexing operation</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4512">4512</a> - Using &quot;Open File&quot; on a BAT or CMD file now correctly opens the file in an editor instead of executing it</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4541">4541</a> - Linker errors are now properly shown in the console view when using GCC-E.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4553">4553</a> - Re-opening a workspace should no longer issue an error stating &quot;No configuration can be found&quot; when a project in the workspace contains no launch configurations</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4579">4579</a> - Added the Symbian resource file compiler 'mwwinrc.exe to the Carbide installation</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4590">4590</a> - Changing MMP includes now refreshes the EXE </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4592">4592</a> - Auto-complete now correctly returns all info for templated classes</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4612">4612</a> - SPN now displays the correct relative path when multiple projects exist</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4657">4657</a> - Fixed performance problem when trying to determine RVCT install location when disconnected from the network</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4660">4660</a> - Added CodeWarrior key mappings for "Go to line" (CTRL+G) and "Undo"  (CTRL+Backspace) commands </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4661">4661</a> - Editing the SymbianMacroStore.xml file within the sdk.core plugin allows you to add new new SDK release versions without waiting for a patch. A more elegant solution will be investigated for a subsequent release.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4672">4672</a> - The Search view should now present a more consistent display and not flip between different pages each time its opened</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4702">4702</a> - Changes to included MMP files are now reflected in the SPN view immediately</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4795">4795</a> - When deleting projects from the workspace, the accompanying .pdom files are also deleted</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4838">4838</a> - MAKEDEF freeze warnings are now displayed by the Problems view </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4949">4949</a> - Debugger now displays the correct variable values  in compiled RVCT programs </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5027">5027</a> - Fixed an issue where setting a breakpoint in "Thumb" mode would crash the code  instead of stopping at the breakpoint </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5032">5032</a> - Dragging a file from the SPN view to a P4 Pending Changelist view correctly adds the file/project to the changelist</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5067">5067</a> - Use of the CTRL+B key binding has been made more consistent when changes are  made to code </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5169">5169</a> - You are now prompted which MMP file to use when compiling a file that is used  in multiple MMP files. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5170">5170</a> - The SPN view now displays files referenced from Bld.inf using #include in an  "Includes" folder group under Bld.inf. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5178">5178</a> - Accessing invalid memory locations when using SysTRK should no longer crash the  device </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5179">5179</a> - Key bindings for Build/Clean Symbian component now work for MMP files</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5187">5187</a> - Code generation of navigation tab-switching in S60 Multi-view applications has been improved</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5194">5194</a> - Fixed bug where build would never finish if there were linker errors and the machine had Cygwin installed</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5199">5199</a> - The default path to find the Codescanner executable is now set correctly</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5218">5218</a> - Pointers are now auto dereferenced one level as they are in CW and VS for the  Expressions and Variables views. For example "this" now points directly to the  underlying class. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5229">5229</a> - A new S60 version of the Symbian OS style has been added that enables &quot;Insert spaces for tabs&quot; by default</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5242">5242</a> - The shortcut for opening the System Search page in the Search window has been set to Alt+Shift+G </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5244">5244</a> - Parsing was made more robust to deal with some language variants not previously covered      * 5246 - Using a key binding should no longer cause an internal error when attempting to compile a file</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5246">5246</a> - Using a key binding should no longer cause an internal error when attempting to  compile a file </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5278">5278</a> - Fixed some build dependency issues that prevented makefiles from being updated properly</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5299">5299</a> - Several missing command groups like "Open Type" which were in C/C++ Perspective  have been added to the Carbide C/C++ perspective by default. You can still  customize the command groups that appear using the Customize Perspective  dialog. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5345">5345</a> - Added support for MMP keywords STDDLL and STDEXE when using Open Environment</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5366">5366</a> - Dependencies are now updated properly when files are deleted/renamed in the workspace</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5368">5368</a> - Fixed an issue where CONFIG_DLL_PREFIX is blank and parsing a DLL target stopped</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5372">5372</a> - Drag and drop now supports these file types: ini, symbol, iby, oby, log, src</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5376">5376</a> - The wait time to test if RVCT is available has been extended making it more  likely that you can launch Dependency Explorer </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5379">5379</a> - Dragging distribution.policy files from the desktop onto the editor window now  opens it in Carbide</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5381">5381</a> - Added an additional check for problem markers at the end of the build process  to ensure that any build failure outputs a build failed message to the Console  and does not generate a SIS file </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5382">5382</a> - Fixed an issue where an IOException was thrown in calls to the Type Hierarchy</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5389">5389</a> - Debugger "Internal error occurred during: child count update" error is now  handled correctly </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5423">5423</a> - The lookup of #include files now doesn't re-read the same bld.inf every time which caused a slowdown of file importing</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5430">5430</a> - Removed the erroneous warning message when the path to a certificate/key files  contains spaces </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5449">5449</a> - Variables view now correctly dereferences "this" by one level to show its  content </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5463">5463</a> - The Standard Out text color is now used in the Debug console view </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5464">5464</a> - The CDT Build Console background color can now be changed. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5474">5474</a> - RVCT and GCCE now correctly generates dependency files for assembler sources (.s)</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5481">5481</a> - Fixed an issue where Error Messages and Warning were shown with a "Connecting Names" prefix that prevented links to the source file from working
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5486">5486</a> - Added an API to enable and disable the x86 build option. See the Carbide  Plug-in Developer Guide for details. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5487">5487</a> - You can now add a Memory Monitor view to any variable shown in the Variables  view </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5504">5504</a> - Added support in the build chain to detect changes to USERINCLUDE in the MMP  file not supported by the Symbian command line build </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5505">5505</a> - Changed default behavior to not show "Path Entry Problem" as the messages did  not contribute useful info related to MMP files or the build </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5509">5509</a> - Updated indexer to show all classed when creating a new class </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5527">5527</a> - Carbide now generates a more obvious warning when the project root is reverted to the bld.inf directory or the user edits the path so that some source directories excluded </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5536">5536</a> - Updated Carbide so that the new Project Explorer view takes precedence over the  C/C++ Projects view </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5565">5565</a> - Fixed issues with the Symbian OS DLL wizard not setting the correct UID2 value  and uploading to \system\libs instead of \sys\bin </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5566">5566</a> - Resolved issues where the S60 application wizard was using an unnecessary  static_cast and creating an unneeded file server session </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5605">5605</a> - Expanded explanation of "Do not step into runtime support code" to better   explain what the user should experience when they enable of disable this option </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5618">5618</a> - Added a check in the error parser that prevented some symbol error messages  from being recognized and shown in the Console </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5624">5624</a> - Fixed dependency problem with older 9.1 SDK's (S60_3rd_MR) for GCCE builds.  A  reallyclean must be done to pick up the fix. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5625">5625</a> - Fixed a deadlock issue that prevented the termination of a debug session when  using the context menu </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5632">5632</a> - Macro scanner updated to account for #undef's in RnD platforms *.hrh files </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5644">5644</a> - Added GNU C++ cSource and cHeader mappings to use the C++ language indexer.  This works for new projects, but users with existing workspaces should go to  Window &gt; Preferences &gt; C/C++ &gt; Language Mappings and add these two entries: C  Source File ==&gt; GNU C++, and C Header File ==&gt; GNU C++. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5654">5654</a> - Fixed bug where source directories from newly added mmp files to a project were  not being treated as real source directories. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5663">5663</a> - .PKG file with Asian characters are now re-encoded correctly </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5669">5669</a> - The Edit Include Paths dialog for the MMP File Editor is now usable as it now  supports the use of normal, large, and extra large font settings </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5734">5734</a> - Fixed a font resizing issue in the Project properties &gt; Carbide Build  Configurations &gt; Arguments pane that prevented the dialog from sizing properly  to show all the options </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5735">5735</a> - Fixed a bug in the call to makesis when a content search location was  specified. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5736">5736</a> - Revised layout in Add/Remove Carbide Build Configurations dialog to resize  correctly on Vista, regardless of font size. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5743">5743</a> - Additional key bindings added to support more commands in Carbide </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5747">5747</a> - Revised tooltip in MMP Editor &gt; Options tab to read "bytes" instead of  "kilobytes" </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5820">5820</a> - Source folders in the Project Explorer view are now sorted alphabetically </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5827">5827</a> - Fixed an issue where a debug session would fail to launch on the WINSCW  emulator </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5870">5870</a> - Client applications should now close properly when a PANIC occurs when using  ODD. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5943">5943</a> - Fixed a crasher in the Capability Scanner occurring in some CustKits. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6032">6032</a> - Fixed an issue where Ecom plugin resources were not being included in the File Transfer tab in debugger launch configurations</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6173">6173</a> - The Search/Replace command now finishes properly even if it reports stale  matches without locking up the application </li>
-</ul>
-<p><b>Debugger</b></p>
-<ul>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=2137">2137</a> - Rendering of an unsigned short is now correct in Variables view</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=2285">2285</a> - You can now toggle breakpoints in both the C++ and Debug perspectives</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3788">3788</a> - Carbide 1.3 uses new targeting rules to target executables. By default all executables for the SDK are targeted for debugging even if they are from other projects in the workspace</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4015">4015</a> - The new global option &quot;Find source files outside the SDK&quot; in the Carbide.c++ Debugger preference panel controls how the debugger automatically searches for source files both inside and outside of the SDK epocroot</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4029">4029</a> - TRK now supports the reporting of RDEBUG messages to the Log view &gt; Unframed Messages when the &quot;View unframed messages from communications port&quot; option is enabled. Note that due to timing issues a flood of <span class="code">RDebug::Printfs</span> from the application to TRK can result in some messages being missed. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4418">4418</a> - It is now possible to set memory watchpoints</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4545">4545</a> - Corrected a use case where DE failed to unlock a file which prevented a project rebuild</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4623">4623</a> - Console logs are now cleared before a new debug session begins to prevent the log file from growing too large</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4628">4628</a> - When launching a debug session using the emulator usually the emulator (epoc.exe) is launched and you must then navigate to your application and open it. However launching a debug session for an .exe file will, in most cases, launch the .exe directly. This will start the emulator and then open your application automatically. However some SDKs do not support this behavior and in those cases you will have to continue to open your application in the emulator manually.</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5025">5025</a> - Fixed a debugger termination issue that deadlocked some processes and threw an  "Exception processing debug async queue" error </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5053">5053</a> - Breakpoints are now properly hit in nested static DLLS when debugging on-device</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5190">5190</a> - Fixed an issue in the Executables view that caused an error when displaying the context menu</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5225">5225</a> - Toggling a breakpoint inside a method and not on the method name itself, should  work as intended and not show an error </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5380">5380</a> - Mapping binaries to different source directories using the Executables view has been enhanced to also include the SDK directory</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5394">5394</a> - Imported binaries are now resolved better the location of source files</li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5395">5395</a> - Added clarification information to the Symbian OS Application panel to help users better choose the correct launch configuration </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5621">5621</a> - Fixed an issue where the ODD installation of SISX file gives an error message  but the application is still installed </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5623">5623</a> - KERN-EXEC-3 panics should no longer cause rebooting of ARM11 devices during on  device debugging </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5645">5645</a> - Key mapping for Debug corrected to operate the same in different views </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5730">5730</a> - Extended the timeout for ODD installations to 5 minutes to compensate for large  (4+MB) SIS file installations </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5790">5790</a> - Fixed a debug state synchronization problem between TRK and the host debugger  that prevented the target application from launching </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5831">5831</a> - Validation of the emulator path is now done before attempting to launch a debug  session. An invalid path will fail gracefully without starting the debug  session. </li>
-  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6036">6036</a> - Debug Trace Messages console no longer stops working after first debug session </li>
-</ul>
-<h3><a name="bugs122" id="bugs122"></a>Bugs Fixed in v1.2.2</h3>
-<p><b>IDE</b></p>
-<ul><li>2421 - Changing the SDK ID no longer creates a second entry in the <span class="code">devices.xml</span> file</li>
-  <li>2562 - The UIQ version of TRK now correctly updates information in the UI</li>
-  <li>3855 - Breakpoints are no longer reached once they are removed.</li>
-  <li>4032 - Errors are now correctly removed from the Errors view when the source line containing the error is deleted</li>
-  <li>4056 - A new option for Freeze Symbian Component has been added that freezes only the selected MMP file and not the entire project</li>
-  <li>4075 - The internal error "Computing hasChildren" should no longer occur due to a float reference type being incorrectly treated as a pointer type</li>
-  <li>4106 - You can now import a bld.inf that does not reference any MMP or MAK files</li>
-  <li>4115 - Fixed problem where certain resource errors like "label not found" were treated as warnings in the problems view</li>
-  <li>4118 - The CDT macros <span class="code">__EXE__</span> and <span class="code">__DLL__</span> are now correctly added to the command line when there is only one MMP file in the bld.inf for a given build config, or if there are multiple MMP files but they all have the same target type macro. Otherwise, nothing is added</li>
-  <li>4119 - Fixed an issue where Carbide would close when an array out of bounds error occurred</li>
-  <li>4140 - Corrected a deadlock issue that could cause Carbide to hang on startup</li>
-  <li>4147 - Copying text from a source editor and pasting it into an external editor like Word, will no longer copy and paste the background color as well</li>
-  <li>4165 - Using &quot;Open File&quot; on a BAT file now correctly opens the file in an editor instead of executing it</li>
-  <li>4168 - The default project root directory is now correctly calculated for <span class="code">prj_exports</span> and <span class="code">prj_testexport</span> source paths, just like the bld.inf, mmp, make, source and include paths</li>
-  <li>4196 - Fixed an issue that caused a <span class="code">NullPointerException</span> when creating emulator launch configuration that did not contain a <span class="code">TARGET</span> in the MMP file</li>
-  <li>4197 - Fixed an issue that could cause the PI Function tab to hang when zooming to the entire selection</li>
-  <li>4198 - Source files in imported executables can now be mapped to new locations</li>
-  <li>4200 - Carbide now respects the <span class="code">clean</span> and<span class="code">reallyclean</span> settings when &quot;Clean Project&quot; is chosen</li>
-</ul>
-<p><b>Debugger</b></p>
-<ul>
-  <li>3855 - Breakpoints are no longer reached once they are removed</li>
-  <li>4075 - The internal error &quot;Computing hasChildren&quot; should no longer occur due to a float reference type being incorrectly treated as a pointer type</li>
-  <li>4198 - Source files in imported executables can now be mapped to new locations</li>
-</ul>
-<h3><a name="bugs121"></a>Bugs Fixed in v1.2.1</h3>
-<p><b>IDE</b></p>
-<ul>
-  <li>326 - The Goto macro declaration now works</li>
-  <li>1450 - Notification of missing Perl scripts/tools directory has been improved</li>
-  <li>1470 - ARMV5 programs shold now display all  local variables </li>
-  <li>2793 - Forum Nokia site (www.forum.nokia.com/eclipse_downloads) updated to include v1.2 license information </li>
-  <li>3314 - Syntax highlighting and 'Find declaration/definition' now works for sources not included in MMPs </li>
-  <li>3442 - Build All Configurations now also builds the test code too. You can disable this in the Carbide.c++ preferences. </li>
-  <li>3446	- Error message improved when SDK Prefix File is not found in SDK properties </li>
-  <li>3530 - The BWIN folder now appears automatically after freezing a project </li>
-  <li>3555	- The build  key bindings should now work </li>
-  <li>3588	- INF Editor now supports  UNIX-style paths in the Export page </li>
-  <li>3637	- The targetpath in an .mmp file should now appear in the MMP Editor &gt; TargetPath text box </li>
-  <li>3658 - The &quot;System resource list&quot; and &quot;Resource list&quot; no longer share the same icon in the MMP Editor</li>
-  <li>3660 - The Symbian Project Navigator view now includes an AIF folder for images</li>
-  <li>3675	- The Add SDK dialog now validates for spaces in the EPOC root path </li>
-  <li>3700	- Changing the order of a macro paths in the MMP Editor no longer prints it  multiple times </li>
-  <li>3702	- SDKs are now identified in the SDK Preference panel by  the name used in the prefix file and not the SDK common name </li>
-  <li>3703 - The INF Importer now issues a warning instead of an error when a project references the drives root directory or another drive</li>
-  <li>3705	- The INF Importer now issues an error when it encounters space characters in the path to the bld.inf file </li>
-  <li>3707	- An alert now appears in the INF Importer when no MMP file is selected</li>
-  <li>3714	- The correct path for BMP files is now displayed in the Symbian Project Navigator view and the MIF Editor</li>
-  <li>3716 - Improved Freeze Exports command to always add -r when freezing and to only appear as an option on the project context menu</li>
-  <li>3717	- The Symbian Project Navigator view now correctly caches and displays .mk files that may have prevented compilation </li>
-  <li>3723	- The INF Importer wizard no longer shows duplicate MMP selections </li>
-  <li>3724	- Test MMPs now correctly appear in the  Symbian Project Navigator view  (see 3442, 4019) </li>
-  <li>3725	- The IDE now correctly identifies   bld.inf/mmp files as dirty when changes are made to the same line after a save </li>
-  <li>3726	- Test MMP components now correctly appear in the  Symbian Project Navigator view (see 3724, 4019) </li>
-  <li>3747 - Set the default behavior of Folding Header comments to disabled </li>
-  <li>3749 - RSC file extensions are now  correctly picked up by the File Transfer page in a SysTRK launch configuration </li>
-  <li>3754	- INF Editor now  remembers the settings for Tidy, Manual, and Support columns </li>
-  <li>3756	- DEF files are now correctly found and shown in the  Symbian Project Navigator view after Freeze Export </li>
-  <li>3763	- Creating a new project no longer generates a UID 2 error when the MMP file appears </li>
-  <li>3765	- Deleting UID 2 no longer causes UID 3 to use the UID 2 value in the MMP Editor </li>
-  <li>3768	- Carbide now issues a &quot;Bld.inf file cannot be at the root of the workspace&quot; error when it finds the bld.inf at the root </li>
-  <li>3774 - Added key shortcuts for &quot;Build/Clean Symbian Component&quot; commands </li>
-  <li>3779	- Carbide now issues an alert of Perl is not found at startup and error messages to the Console if Perl v5.6.1 is not available (required by some Symbian build components) </li>
-  <li>3802	- bld.inf files are now updated correctly when PRJ_Exports are moved</li>
-  <li>3810	- Moving files no longer invokes a permission dialog when the Always Change option is activated</li>
-  <li>3867	- Vendor specific macros for S60 3rd Ed. are now recognized </li>
-  <li>3868 - Macros defined in variant.cfg are not added as prefix include macros </li>
-  <li>3887- The INF Importer wizard no longer shows duplicate MMP selections (see 3723) </li>
-  <li>3900 - Long error messagesd in the SDK Preferences panel should no longer be truncated </li>
-  <li>3923 - The Compile key shortcut (Ctrl+Alt+C)  now works properly </li>
-  <li>3924	- Build WINSCW targets should no longer show system stack traces anymore </li>
-  <li>3927	- Code formatting to align first level braces is now working</li>
-  <li>3928	- Alerts incorrectly stating that spaces are not allowed for  paths sent to signsis has been corrected </li>
-  <li>3929 - Changing EPOCROOT in the  SDK Property dialog now correctly updates the prefix file </li>
-  <li>3930	- Can now build for two different SDKs on different drives using the same location of the bld.inf file </li>
-  <li>3940	- The C/C++ Indexer should not hang when indexing a CPP file any more </li>
-  <li>3943	- Updated commands to reflect command change from  &quot;Build All Targets&quot; to &quot;Build All Configurations&quot;  (see 4021) </li>
-  <li>3945	- Added option setting to activate/deactivate Verbose (-v) during a full, targeted , or Symbian build, as well as clean operations </li>
-  <li>3960	-  Open in Command Window now correctly opens directories on  drives other than C:\ </li>
-  <li>3961	- Importing a project no longer generates incorrect &quot;duplicate path entries&quot; warning message</li>
-  <li>3965	- Customers with valid licenses should no longer see license warning messages unless their license file is corrupted</li>
-  <li>3967	- Choosing &quot;Open Command Window&quot; should now open the directory correctly, not one level up</li>
-  <li>3974 - The Symbian Project Navigator view now correctly detects when a missing MMP file is added and no longer shows the &quot;missing&quot; icon </li>
-  <li>4004	- Updated Breakpoint documentation to clarify that the symbols for a module must be loaded before any breakpoints in that module can be resolved (see 3916) </li>
-  <li>4017	 - Updated Debug view's Disconnect control  documentation on its ability to detach from an attached process/thread with TRK</li>
-  <li>4019	- Added &quot;Build test components...&quot; option to  Carbide.c++ preference panel documentation (see 3442) </li>
-  <li>4021	- Updated documentation to change &quot;Build All Targets&quot; to &quot;Build All Configurations&quot; (see 3943) </li>
-  <li>4022	- Added &quot;Verbose output...&quot; option to  Carbide.c++ preference panel documentation (see 3945)</li>
-  <li>4035 - Bld.inf/mmp parser no longer misinterprets &quot;<span class="code">../</span>&quot; in macros</li>
-  <li>4047	- Corrected key shortcuts for Previous/Next Word MSVC shortcuts </li>
-</ul>
-<p><b>Debugger</b></p>
-<ul>
-  <li>415 - The Modules view    now correctly shows symbols for loaded executables and DLLs</li>
-  <li>591 - The Expressions view now correctly refreshes    with derived type variables</li>
-  <li>2129	- The Variables view now correctly shows unsigned char variable values using Natural Format </li>
-  <li>2204 - While stepping over some global variables that are getting initialized the PC counter skips over the line </li>
-  <li>2207	- The option Run &gt; Restart is now correctly disabled for Stop Mode debugging </li>
-  <li>2236	- Floating point values are no longer treated as decimals</li>
-  <li>2238	- Double values  are no longer treated as decimals</li>
-  <li>2530	- The Details pane now always shows the string value instead of the address value of the char pointer </li>
-  <li>2967	- The Symbian OS Data view now correctly retains its size when maximized and another tab is pressed in the view </li>
-  <li>2998	- The Debug view correctly resets its state when terminating a debug session so that the controls are not disabled </li>
-  <li>3245	- You can now  Detach from an attached process or thread</li>
-  <li>3262	- In the Memory View, changing memory content to Traditional View rendering now correctly updates the view </li>
-  <li>3751	- The ROM Log file TRK launch configuration is now documented </li>
-  <li>3819	- A TRK debug session that fails will no longer leave a process running in the Debug view </li>
-  <li>3836	- The Memory view now handles &quot;array out of bounds&quot; exceptions better </li>
-  <li>3910	- Terminating the Symbian OS View should no longer generate  &quot;Unhandled event loop exception&quot; errors </li>
-  <li>3916	- Updated Breakpoint documentation to clarify that the symbols for a module must be loaded before any breakpoints in that module can be resolved  (see 4004) </li>
-  <li>3952	- The debugger now correctly closes all processes when terminating a debug session </li>
-  <li>3966	- Added support for the debug traces for emulator (epocwin.out) and COM port to the Console view</li>
-  <li>3975	- The Variables view no longer displays strange  &quot;.sw&quot; variables<br />
-</li>
-</ul>
-<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-
-</body>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> -->
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+  <title>Carbide.c++ Bugs Fixed</title>
+  <link href="../book.css" rel="stylesheet" type="text/css" />
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+  <link href="../book.css" rel="stylesheet" type="text/css" />
+  <script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
+  <style type="text/css">
+	ul > li {font-weight: normal }
+  </style>
+</head>
+<body bgcolor="#ffffff">
+<h2>Carbide.c++ bugs fixed </h2>
+<p>This is a comprehensive list of bugs fixed by release: </p>
+<ul><li><a href="#bugs210">Bugs Fixed in 2.1.0</a></li>
+  <li><a href="#bugs204">2.0.4</a>, <a href="#bugs203">2.0.3</a>, <a href="#bugs202"> 2.0.2</a>, <a href="#bugs200">2.0.0</a></li>
+  <li><a href="#bugs131">1.3.1</a>, <a href="#bugs130">1.3.0</a> , <a href="#bugs122">1.2.2</a>, <a href="#bugs121">1.2.1</a></li>
+</ul>
+<h3><a name="bugs210" id="bugs4"></a>Bugs Fixed in v2.1.0</h3>
+<ul>
+  <li>???</li>
+</ul>
+<h3><a name="bugs204" id="bugs5"></a>Bugs Fixed in v2.0.4</h3>
+<ul>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8050">8050</a> - Fixed an issue that preventing the building of a target when another target of the same project is being debugged.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8282</a> - Fixed several issues with <span class="code">PRJ_EXTENSION</span> that prevented resource building under SBSv1.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8694">8694</a> - Fixed an issue that prevented  building a project using SBSv2 when the workspace and kit resided on different drives.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8804</a> - Fixed a problem where the number of build errors reported wasn't consistent between the Console and Problem views.</li>
+</ul>
+<h3><a name="bugs203" id="bugs3"></a>Bugs Fixed in v2.0.3</h3>
+<ul>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8196</a> - Fixed an issue that caused executable files to be left open after using the Symbol Reader API.</li>
+</ul>
+<h3><a name="bugs202" id="bugs2"></a>Bugs Fixed in v2.0.2</h3>
+<ul>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7473">7473</a> - Added PKG files to the Qt template projects so SIS files can be built and installed on a device. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7542">7542</a> - Updated Remote Connections UI to provide better descriptions when choosing between USB  or TRK 2.x USB (supports USB only). </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7915">7915</a> - Improved the timing out mechanism in Carbide so that TRK doesn't time out when target's are slow to respond.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8276">8276</a> - The main issue that caused Stepping line by line to be slow has been fixed. However, there are some cases where the slowness still appears. For example, when accessing files across a network, and the network is down or  if a source file is missing. Re-establishing the connection resolves the slow debugging issue.</li>
+</ul>
+<h3><a name="bugs200" id="bugs"></a>Bugs Fixed in v2.0.0</h3>
+<ul><li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=476">476</a> - Added the Move to Line command to set the PC location without resuming execution. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3800">3800</a> - Added &quot;New&quot; actions to the Symbian Project Navigator view so you can create new files, etc. from the context menu. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3850">3850</a> - Added the ability to create a new mmp file from the bld.inf editor. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3904">3904</a> - Selecting an MMP file in the Symbian Project Navigator view will now launch the correct executable. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3994">3994</a> - Build configurations are now linked correctly to a launch configuration to allow multiple launches using different builds. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4694">4694</a> - Holding a cursor over a variable name now highlights all instances of that variable name in the editor to allow easier identification of its use. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4718">4718</a> - Corrected an issue where the compiler was preventing the display of a local variable. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4936">4936</a> - Corrected an issue where [Templates] Class template instantiation to files outside the workspace could cause problems. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4937">4937</a> - Indexer should no longer fail when <span class="code">_LIT()</span> macros are used as function parameters.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5223">5223</a> - CodeScanner now provides a link from an individual error or warning to the rule which generated the error or warning.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5237">5237</a> - TODO items on the same line as a preprocessor statement now appear in the Tasks view. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5373">5373</a> - Fixed several issues where code formatting was behaving badly. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5376">5376</a> - The wait time to test if RVCT is available has been extended making it more likely that you can launch Dependency Explorer. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5448">5448</a> - Enhanced the loading of executables so that breakpoints in the server side of a client/server application are always found. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5461">5461</a> - Content assist now correctly uses namespace declarations.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5666">5666</a> - Pressing F3 on a class name inside a NONSHARABLE macro now works as expected.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5794">5794</a> - Indexer is now more robust when it finds &quot;using namespace...&quot; inside a header file. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5933">5933</a> - Fixed an issue where disconnecting from TRK would sometimes generate a panic condition. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6099">6099</a> - DLL symbols are now loaded correctly when attaching to a process using Application TRK for UIQ (v2.8.5).</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6288">6288</a> - The Project Updater should no longer crash with a NullPointerException error.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6415">6415</a> - Carbide now correctly handles the ERROR e87 message caused when a command line is too long to be handled by the tool </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6463">6463</a> - Fixed a null pointer exception error when launching the debugger. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6616">6616</a> - Successful project builds should no longer show &quot;build error&quot; messages based on CodeScanner errors.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6724">6724</a> - Changed the way renamed executables are tracked for on-device debugging to ensure the correct binary is targeted and its breakpoints hit.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6788">6788</a> - The descriptor length in the Variable view has been increased to 1024 Unicode characters.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6874">6874</a> - Carbide now supports the importing and creation of Qt projects for Symbian OS integration </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6900">6900</a> - Added support to the debugger for new descriptor classes LString8 and LString16. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6915">6915</a> - The Keys preference panel should no longer throw errors related to finding schemes </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6968">6968</a> - Added .aps extension to the list of default executable files recognized by the Executables view.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7108">7108</a> - Fixed a NullPointerException error that occurred when trying to open a declaration. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7124">7124</a> - Changed how Carbide.c++ locates SDKs to improve reliability.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7375">7375</a> - Opening a .RSS file in an editor view should no longer display syntax errors </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7493">7493</a> - Fixed an issue where adding a new class derived from a system base class did not work as intended. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7537">7537</a> - Set the Save Actions &quot;remove trailing whitespace&quot; to disabled by default as it was causing problems when diffing files. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7448">7448</a> - Fixed a configuration issue that prevented the Bug Reporter plug-in from submitting bugs. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7543">7543</a> - The launch configuration's File Transfer tab now marks missing host files with a warning icon and a message when it can't find the file to transfer. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7546">7546</a> - Fixed an issue that caused the Partial SIS upgrade to corrupt installations and prevent removal of the programs.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7577">7577</a> - Problems view sorting that depended upon Creation Time should now work properly.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7588">7588</a> - Builds using the &quot;Build Symbian Component&quot; now correctly display a progress dialog.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7596">7596</a> - The Location field in the Problems view should now sort correctly.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7599">7599</a> - Fixed a problem where all potentially built elements are still added to a launch configuration, but only those actually being built at the time of launch config creation are enabled.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7641">7641</a> - Fixed a bug where pressing &quot;Delete&quot; on Problems view when the bld.inf or mmp text editor was open caused the delete action to be directed to the editor rather than the view.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7748">7748</a> - Dependency files are no longer generated in working directory when doing &quot;abld listing&quot; </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7782">7782</a> - Converted shortcuts to use the new command style which should make key bindings more reliable.</li>
+</ul>
+<p><b>RC1</b></p>
+<ul>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7375">7375</a> - Opening a .RSS file in an editor view should no longer display syntax errors.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7376">7376</a> - A class cast exception now logs an error containing the element it's expecting to be a class but isn't instead of a internal error.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7486">7486</a> - Use of duplicate key bindings for Import and Export has been corrected by using Eclipse 3.4.1.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7493">7493</a> - Fixed an issue where adding a new class derived from a system base class did not work as intended.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7532">7532</a> - Mapped the Synergy file _ccmwaid.inf to open in the text editor instead of the MMP/INF editor which generated incorrect error warnings and prevented builds. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7542">7542</a> - Updated Remote Connections UI to provide better descriptions when choosing between USB (supporting both TRK and Tracing) or TRK 2.x USB (supports USB only).</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7611">7611</a> - Fixed a UI refresh issue on Tube devices that prevented Connect/Disconnect from working.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7621">7621</a> - Updated examples and code generator to properly remove icon references</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7637">7637</a> - Clarified the message when you choose to update old projects and then don't select a project to update.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7776">7776</a> - The 'NULL' keyword and other macro references are now highlighted as they were in Carbide 1.3.x.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7814">7814</a> - Updated the Basic DLL template to work with EKA2 projects. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7866">7866</a> - An issue that prevented installing TRK on N96 CE Devices has been resolved.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7921">7921</a> - Updated the OpenC Hello World template to work with EKA2 projects. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7926">7926</a> - The cursor should  no longer jump between insertion points when a source or header path is selected in the New Symbian OS Class wizard.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7927">7927</a> - Browsing code in the Call Hierarchy window using F3 should no longer throw a NullPointerException error.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7943">7943</a> - Adding executables with non-standard suffixes should now work as expected.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7953">7953</a> - Fixed an issue where selecting several components from project explorer and using Build All Configurations caused errors.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=7978">7978</a> - Fixed a problem where some build problems were not detected when launching.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8010">8010</a> - Renamed some template names to clarify their type and intended use.</li>
+</ul>
+<h3><a name="bugs131" id="bugs131"></a>Bugs Fixed in v1.3.1</h3>
+<ul>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3261">3261</a> - You can now run the following individual abld commands from a new ABLD submenu under the Project and context menus: export, cleanexport, resource, target, final and tidy.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4102">4102</a> - Fixed a problem where Ctrl-~ sometimes opened the wrong header file</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4106">4106</a> - You can now import a bld.inf that does not reference any MMP or MAK files</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4166">4166</a> - Fixed a problem that sometimes left the main EXE locked after loading when debugging multiple targets </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5223">5223</a> - CodeScanner now provides a link from an individual error or warning to the rule which generated the error or warning</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5254">5254</a> - The C/C++ &gt; Editor option &quot;Ensure newline at end of file when saving&quot; is now enabled by default</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5522">5522</a> - The New Launch Configuration Wizard has been updated to choose an EXE as the main executable instead of a DLL when at least one is present in the project</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5648">5648</a> - Corrected an issue where breakpoints were not getting hit when a DLL was build
+  during a debug launch</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5815">5815</a> - The debugger now shows a full call stack when it stops at a memory watch point</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5933">5933</a> - Fixed an issue where disconnecting from TRK would sometimes generate a panic condition.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6007">6007</a> - Made several enhancements to the build system including: adding an ABLD menu option, not refreshing the project when a build is completed when auto-refresh is enabled, and moved the ROM builder panel into the Project Settings page to address a progress bar issue.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6040">6040</a> - The MMP Selection page in the &quot;Import &gt; Symbian OS Bld.inf file&quot; wizard has been redesigned to include sortable columns for build order, file names, and location, to make locating MMP files easier</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6222">6222</a> - Fixed an issue that could cause Carbide to crash and corrupt the workspace.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6229">6229</a> - Fixed a couple of issues where the Executables view and Executables tab behaviors and UI were not syncing correctly causing errors when trying to debug DLLs.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6262">6262</a> - Fixed an issue where the emulator failed on startup with a Null exception error</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6288">6288</a> - The Project Updater should no longer crash with a NullPointerException error</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6299">6299</a> - Suspending the debugger and trying to resume it should no longer cause the application being debugged to hang</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6371">6371</a> - Carbide no longer throws a Null pointer exception when attempts are made to add paths to a project outside of the MMP/INF files</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6377">6377</a> - Reworded help on setting conditional breakpoints to clarify their temporary nature.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6378">6378</a> - Revised steps on setting conditional breakpoints to clarify process.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6381">6381</a> - Revised help on opening the Breakpoints view</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6383">6383</a> - Revised help to clarify the enabling and disabling of breakpoints</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6384">6384</a> - Revised help on removing breakpoints information</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6385">6385</a> - Revised steps on setting up watchpoints from different views</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6415">6415</a> - Carbide now correctly handles the ERROR e87 message caused when a command line is too long to be handled by the tool</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6417">6417</a> - Carbide now correctly shows in the Problems view error messages with multiple defined symbols</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6450">6450</a> - STL classes are now recognized by the variable formatter</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6459">6459</a> - The Emulator field in a new emulator launch configuration should now be filled in correctly when pressing F11 or clicking Run &gt; Debug</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6462">6462</a> - Corrected an issue where workspace layouts were lost when a null pointer exception was thrown.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6497">6497</a> - Run to Line and Continue from line should now behave correctly when used in source files whose locations have been remapped</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6511">6511</a> - Additional variable formats like STD have been added to improve how they are displayed in the Variables view</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6525">6525</a> - Using the &quot;Resume at line&quot; command should no longer require a Carbide restart</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6574">6574</a> - Moved the separate ROM builder into the Carbide builder (Properties &gt; Carbide Build Configurations) and revised the project updater to remove the ROM builder and convert any existing preferences (command line and working directory) to non-WINSCW build configurations</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6590">6590</a> - Added Language ID 186 to the MMP handling routines that was causing a NullPointerException error</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6615">6615</a> - Added a new extension point (com.nokia.carbide.cdt.builder.environmentModifier) to our builder plugin that allows you to register an environment modifier for modifying project paths</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6635">6635</a> - Multiple fixes to improve the setting of breakpoints from a call stack</li>
+</ul>
+<h3><a name="bugs130"></a>Bugs Fixed in v1.3.0</h3>
+<p><b>IDE</b></p>
+<ul>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=188">188</a> - Selecting a .h file name in a editor and pressing F3 (Open Declaration) opens a new editor view and displays the .h file</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=853">853</a> - Added text color support in the Build Console to make reading logs easier on the eye</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=2887">2887</a> - The behavior of project level commands was improved to better follow Eclipse guidelines as well as be more context sensitive. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3248">3248</a> - The Symbian Project Navigator view can now toggle between showing the normal Bld.Inf structure or showing folders using the SOURCEPATHs in the MMP file</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3266">3266</a> - Macros now appear in the index and can be found using normal search methods</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3271">3271</a> - System Search now supports the searching of any directory visible to the OS</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3350">3350</a> - The SIS Builder page in the Carbide Build Configurations property window now supports the generation or one or more output files using different key pairs based upon the same sources.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3407">3407</a> - File search should now find items even if the indexer is still running</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3425">3425</a> - The console view now shows a message to let you know it has finished compiling your sources</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3432">3432</a> - Carbide now does a better job of detecting changes to MMPs with includes and should now rebuild correctly</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3448">3448</a> - Use of non-standard font sizes in labels and views are supported better </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3457">3457</a> - Updated indexer to support virtual functions better so that jumps to function  declarations from a function pointer should now work as expected </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3471">3471</a> - System Search supports text searching of the &quot;\epoc\include&quot; directory</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3544">3544</a> - You can now set the default build action behavior of the workspace or a project when modified MMPs are detected</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3566">3566</a> - It is now possible to not sign, self sign, or sign with certificate/key pair SISX files in the project's SIS Properties dialog. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3671">3679</a> - The Build icon displayed in the toolbar now has a tooltip</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3696">3696</a> - The bld.inf editor now correctly handles <span class="code">#if/#endif</span> situations when exports are added to the <span class="code">bld.inf</span> file</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3720">3720</a> - Formatting of pasted code now works correctly </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3731">3731</a> - It is now possible to save files not part of a source path have been addressed     </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3743">3743</a> - MS Visual Studio shortcuts added: Ctrl+F2 (Add Bookmark), Ctrl+G (Go to Line)</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3741">3741</a> - Content Assist now includes enums in classes </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3792">3792</a> - SDK versions for UIQ SDKs are correctly identified more which allows them to be used</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3879">3879</a> - Carbide now monitors the variant header file and forces a rebuild on the effected source files</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3914">3914</a> - Eclipse TODO tasks feature now supported</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3925">3925</a> - The &quot;debug MMP&quot; option is no longer offered when creating a project. Instead, you are asked to directly select the MMP to use as the default for launching the project</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3940">3940</a> - C/C++ Indexer should no longer hang when it encounters a C++ style comment on the same line as a single line macro definition</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4031">4031</a> - The Carbide compiler now recognizes the WINSCW deprecation flag in S60 applications</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4085">4085</a> - Building a project with only test MMPs no longer does an &quot;abld build&quot;</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4112">4112</a> - You can now use the Template Wizard: Copy File process to copy files stored in  JAR files </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4131">4131</a> - Pressing the external editor for the text property will now correctly activate the scalable string editor</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4132">4132</a> - You can now select &quot;Use default incremental builder&quot; to launch a program without calling make when nothing in the workspace has changed</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4143">4143</a> - Support for the <span class="code">DEBUGGABLE</span> option is now available in the MMP Editor and included in the project templates. This allows an application to be debugged using the Carbide on-device debugger when targeting Symbian OS v9.4 or later versions. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4145">4145</a> - Canceling a build should now work more reliably</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4147">4147</a> - Copying text from a source editor and pasting it into an external editor like MS Word, will no longer copy and paste the background color as well</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4188">4188</a> - Freeze exports now takes the list of mmp's being built into consideration</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4388">4388</a> - Code Assist now ignores &quot;private:&quot; when invoked within a class</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4402">4402</a> - Copious repeats of missing MAP/DLL error messages have been eliminated</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4410">4410</a> - Freezing exports no longer passes the &quot;-r&quot; flag to abld with EKA1 kits</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4442">4442</a> - Added missing plugins so that Carbide editors now support use of Shift-JIS</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4470">4470</a> - A StringIndexOutOfBoundsException error is no longer thrown when a binary has no file extension during an indexing operation</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4512">4512</a> - Using &quot;Open File&quot; on a BAT or CMD file now correctly opens the file in an editor instead of executing it</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4541">4541</a> - Linker errors are now properly shown in the console view when using GCC-E.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4553">4553</a> - Re-opening a workspace should no longer issue an error stating &quot;No configuration can be found&quot; when a project in the workspace contains no launch configurations</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4579">4579</a> - Added the Symbian resource file compiler 'mwwinrc.exe to the Carbide installation</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4590">4590</a> - Changing MMP includes now refreshes the EXE </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4592">4592</a> - Auto-complete now correctly returns all info for templated classes</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4612">4612</a> - SPN now displays the correct relative path when multiple projects exist</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4657">4657</a> - Fixed performance problem when trying to determine RVCT install location when disconnected from the network</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4660">4660</a> - Added CodeWarrior key mappings for "Go to line" (CTRL+G) and "Undo"  (CTRL+Backspace) commands </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4661">4661</a> - Editing the SymbianMacroStore.xml file within the sdk.core plugin allows you to add new new SDK release versions without waiting for a patch. A more elegant solution will be investigated for a subsequent release.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4672">4672</a> - The Search view should now present a more consistent display and not flip between different pages each time its opened</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4702">4702</a> - Changes to included MMP files are now reflected in the SPN view immediately</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4795">4795</a> - When deleting projects from the workspace, the accompanying .pdom files are also deleted</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4838">4838</a> - MAKEDEF freeze warnings are now displayed by the Problems view </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4949">4949</a> - Debugger now displays the correct variable values  in compiled RVCT programs </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5027">5027</a> - Fixed an issue where setting a breakpoint in "Thumb" mode would crash the code  instead of stopping at the breakpoint </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5032">5032</a> - Dragging a file from the SPN view to a P4 Pending Changelist view correctly adds the file/project to the changelist</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5067">5067</a> - Use of the CTRL+B key binding has been made more consistent when changes are  made to code </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5169">5169</a> - You are now prompted which MMP file to use when compiling a file that is used  in multiple MMP files. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5170">5170</a> - The SPN view now displays files referenced from Bld.inf using #include in an  "Includes" folder group under Bld.inf. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5178">5178</a> - Accessing invalid memory locations when using SysTRK should no longer crash the  device </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5179">5179</a> - Key bindings for Build/Clean Symbian component now work for MMP files</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5187">5187</a> - Code generation of navigation tab-switching in S60 Multi-view applications has been improved</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5194">5194</a> - Fixed bug where build would never finish if there were linker errors and the machine had Cygwin installed</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5199">5199</a> - The default path to find the Codescanner executable is now set correctly</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5218">5218</a> - Pointers are now auto dereferenced one level as they are in CW and VS for the  Expressions and Variables views. For example "this" now points directly to the  underlying class. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5229">5229</a> - A new S60 version of the Symbian OS style has been added that enables &quot;Insert spaces for tabs&quot; by default</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5242">5242</a> - The shortcut for opening the System Search page in the Search window has been set to Alt+Shift+G </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5244">5244</a> - Parsing was made more robust to deal with some language variants not previously covered      * 5246 - Using a key binding should no longer cause an internal error when attempting to compile a file</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5246">5246</a> - Using a key binding should no longer cause an internal error when attempting to  compile a file </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5278">5278</a> - Fixed some build dependency issues that prevented makefiles from being updated properly</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5299">5299</a> - Several missing command groups like "Open Type" which were in C/C++ Perspective  have been added to the Carbide C/C++ perspective by default. You can still  customize the command groups that appear using the Customize Perspective  dialog. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5345">5345</a> - Added support for MMP keywords STDDLL and STDEXE when using Open Environment</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5366">5366</a> - Dependencies are now updated properly when files are deleted/renamed in the workspace</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5368">5368</a> - Fixed an issue where CONFIG_DLL_PREFIX is blank and parsing a DLL target stopped</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5372">5372</a> - Drag and drop now supports these file types: ini, symbol, iby, oby, log, src</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5376">5376</a> - The wait time to test if RVCT is available has been extended making it more  likely that you can launch Dependency Explorer </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5379">5379</a> - Dragging distribution.policy files from the desktop onto the editor window now  opens it in Carbide</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5381">5381</a> - Added an additional check for problem markers at the end of the build process  to ensure that any build failure outputs a build failed message to the Console  and does not generate a SIS file </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5382">5382</a> - Fixed an issue where an IOException was thrown in calls to the Type Hierarchy</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5389">5389</a> - Debugger "Internal error occurred during: child count update" error is now  handled correctly </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5423">5423</a> - The lookup of #include files now doesn't re-read the same bld.inf every time which caused a slowdown of file importing</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5430">5430</a> - Removed the erroneous warning message when the path to a certificate/key files  contains spaces </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5449">5449</a> - Variables view now correctly dereferences "this" by one level to show its  content </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5463">5463</a> - The Standard Out text color is now used in the Debug console view </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5464">5464</a> - The CDT Build Console background color can now be changed. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5474">5474</a> - RVCT and GCCE now correctly generates dependency files for assembler sources (.s)</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5481">5481</a> - Fixed an issue where Error Messages and Warning were shown with a "Connecting Names" prefix that prevented links to the source file from working
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5486">5486</a> - Added an API to enable and disable the x86 build option. See the Carbide  Plug-in Developer Guide for details. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5487">5487</a> - You can now add a Memory Monitor view to any variable shown in the Variables  view </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5504">5504</a> - Added support in the build chain to detect changes to USERINCLUDE in the MMP  file not supported by the Symbian command line build </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5505">5505</a> - Changed default behavior to not show "Path Entry Problem" as the messages did  not contribute useful info related to MMP files or the build </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5509">5509</a> - Updated indexer to show all classed when creating a new class </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5527">5527</a> - Carbide now generates a more obvious warning when the project root is reverted to the bld.inf directory or the user edits the path so that some source directories excluded </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5536">5536</a> - Updated Carbide so that the new Project Explorer view takes precedence over the  C/C++ Projects view </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5565">5565</a> - Fixed issues with the Symbian OS DLL wizard not setting the correct UID2 value  and uploading to \system\libs instead of \sys\bin </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5566">5566</a> - Resolved issues where the S60 application wizard was using an unnecessary  static_cast and creating an unneeded file server session </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5605">5605</a> - Expanded explanation of "Do not step into runtime support code" to better   explain what the user should experience when they enable of disable this option </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5618">5618</a> - Added a check in the error parser that prevented some symbol error messages  from being recognized and shown in the Console </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5624">5624</a> - Fixed dependency problem with older 9.1 SDK's (S60_3rd_MR) for GCCE builds.  A  reallyclean must be done to pick up the fix. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5625">5625</a> - Fixed a deadlock issue that prevented the termination of a debug session when  using the context menu </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5632">5632</a> - Macro scanner updated to account for #undef's in RnD platforms *.hrh files </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5644">5644</a> - Added GNU C++ cSource and cHeader mappings to use the C++ language indexer.  This works for new projects, but users with existing workspaces should go to  Window &gt; Preferences &gt; C/C++ &gt; Language Mappings and add these two entries: C  Source File ==&gt; GNU C++, and C Header File ==&gt; GNU C++. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5654">5654</a> - Fixed bug where source directories from newly added mmp files to a project were  not being treated as real source directories. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5663">5663</a> - .PKG file with Asian characters are now re-encoded correctly </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5669">5669</a> - The Edit Include Paths dialog for the MMP File Editor is now usable as it now  supports the use of normal, large, and extra large font settings </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5734">5734</a> - Fixed a font resizing issue in the Project properties &gt; Carbide Build  Configurations &gt; Arguments pane that prevented the dialog from sizing properly  to show all the options </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5735">5735</a> - Fixed a bug in the call to makesis when a content search location was  specified. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5736">5736</a> - Revised layout in Add/Remove Carbide Build Configurations dialog to resize  correctly on Vista, regardless of font size. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5743">5743</a> - Additional key bindings added to support more commands in Carbide </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5747">5747</a> - Revised tooltip in MMP Editor &gt; Options tab to read "bytes" instead of  "kilobytes" </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5820">5820</a> - Source folders in the Project Explorer view are now sorted alphabetically </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5827">5827</a> - Fixed an issue where a debug session would fail to launch on the WINSCW  emulator </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5870">5870</a> - Client applications should now close properly when a PANIC occurs when using  ODD. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5943">5943</a> - Fixed a crasher in the Capability Scanner occurring in some CustKits. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6032">6032</a> - Fixed an issue where Ecom plugin resources were not being included in the File Transfer tab in debugger launch configurations</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6173">6173</a> - The Search/Replace command now finishes properly even if it reports stale  matches without locking up the application </li>
+</ul>
+<p><b>Debugger</b></p>
+<ul>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=2137">2137</a> - Rendering of an unsigned short is now correct in Variables view</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=2285">2285</a> - You can now toggle breakpoints in both the C++ and Debug perspectives</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=3788">3788</a> - Carbide 1.3 uses new targeting rules to target executables. By default all executables for the SDK are targeted for debugging even if they are from other projects in the workspace</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4015">4015</a> - The new global option &quot;Find source files outside the SDK&quot; in the Carbide.c++ Debugger preference panel controls how the debugger automatically searches for source files both inside and outside of the SDK epocroot</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4029">4029</a> - TRK now supports the reporting of RDEBUG messages to the Log view &gt; Unframed Messages when the &quot;View unframed messages from communications port&quot; option is enabled. Note that due to timing issues a flood of <span class="code">RDebug::Printfs</span> from the application to TRK can result in some messages being missed. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4418">4418</a> - It is now possible to set memory watchpoints</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4545">4545</a> - Corrected a use case where DE failed to unlock a file which prevented a project rebuild</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4623">4623</a> - Console logs are now cleared before a new debug session begins to prevent the log file from growing too large</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=4628">4628</a> - When launching a debug session using the emulator usually the emulator (epoc.exe) is launched and you must then navigate to your application and open it. However launching a debug session for an .exe file will, in most cases, launch the .exe directly. This will start the emulator and then open your application automatically. However some SDKs do not support this behavior and in those cases you will have to continue to open your application in the emulator manually.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5025">5025</a> - Fixed a debugger termination issue that deadlocked some processes and threw an  "Exception processing debug async queue" error </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5053">5053</a> - Breakpoints are now properly hit in nested static DLLS when debugging on-device</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5190">5190</a> - Fixed an issue in the Executables view that caused an error when displaying the context menu</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5225">5225</a> - Toggling a breakpoint inside a method and not on the method name itself, should  work as intended and not show an error </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5380">5380</a> - Mapping binaries to different source directories using the Executables view has been enhanced to also include the SDK directory</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5394">5394</a> - Imported binaries are now resolved better the location of source files</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5395">5395</a> - Added clarification information to the Symbian OS Application panel to help users better choose the correct launch configuration </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5621">5621</a> - Fixed an issue where the ODD installation of SISX file gives an error message  but the application is still installed </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5623">5623</a> - KERN-EXEC-3 panics should no longer cause rebooting of ARM11 devices during on  device debugging </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5645">5645</a> - Key mapping for Debug corrected to operate the same in different views </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5730">5730</a> - Extended the timeout for ODD installations to 5 minutes to compensate for large  (4+MB) SIS file installations </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5790">5790</a> - Fixed a debug state synchronization problem between TRK and the host debugger  that prevented the target application from launching </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=5831">5831</a> - Validation of the emulator path is now done before attempting to launch a debug  session. An invalid path will fail gracefully without starting the debug  session. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=6036">6036</a> - Debug Trace Messages console no longer stops working after first debug session </li>
+</ul>
+<h3><a name="bugs122" id="bugs122"></a>Bugs Fixed in v1.2.2</h3>
+<p><b>IDE</b></p>
+<ul><li>2421 - Changing the SDK ID no longer creates a second entry in the <span class="code">devices.xml</span> file</li>
+  <li>2562 - The UIQ version of TRK now correctly updates information in the UI</li>
+  <li>3855 - Breakpoints are no longer reached once they are removed.</li>
+  <li>4032 - Errors are now correctly removed from the Errors view when the source line containing the error is deleted</li>
+  <li>4056 - A new option for Freeze Symbian Component has been added that freezes only the selected MMP file and not the entire project</li>
+  <li>4075 - The internal error "Computing hasChildren" should no longer occur due to a float reference type being incorrectly treated as a pointer type</li>
+  <li>4106 - You can now import a bld.inf that does not reference any MMP or MAK files</li>
+  <li>4115 - Fixed problem where certain resource errors like "label not found" were treated as warnings in the problems view</li>
+  <li>4118 - The CDT macros <span class="code">__EXE__</span> and <span class="code">__DLL__</span> are now correctly added to the command line when there is only one MMP file in the bld.inf for a given build config, or if there are multiple MMP files but they all have the same target type macro. Otherwise, nothing is added</li>
+  <li>4119 - Fixed an issue where Carbide would close when an array out of bounds error occurred</li>
+  <li>4140 - Corrected a deadlock issue that could cause Carbide to hang on startup</li>
+  <li>4147 - Copying text from a source editor and pasting it into an external editor like Word, will no longer copy and paste the background color as well</li>
+  <li>4165 - Using &quot;Open File&quot; on a BAT file now correctly opens the file in an editor instead of executing it</li>
+  <li>4168 - The default project root directory is now correctly calculated for <span class="code">prj_exports</span> and <span class="code">prj_testexport</span> source paths, just like the bld.inf, mmp, make, source and include paths</li>
+  <li>4196 - Fixed an issue that caused a <span class="code">NullPointerException</span> when creating emulator launch configuration that did not contain a <span class="code">TARGET</span> in the MMP file</li>
+  <li>4197 - Fixed an issue that could cause the PI Function tab to hang when zooming to the entire selection</li>
+  <li>4198 - Source files in imported executables can now be mapped to new locations</li>
+  <li>4200 - Carbide now respects the <span class="code">clean</span> and<span class="code">reallyclean</span> settings when &quot;Clean Project&quot; is chosen</li>
+</ul>
+<p><b>Debugger</b></p>
+<ul>
+  <li>3855 - Breakpoints are no longer reached once they are removed</li>
+  <li>4075 - The internal error &quot;Computing hasChildren&quot; should no longer occur due to a float reference type being incorrectly treated as a pointer type</li>
+  <li>4198 - Source files in imported executables can now be mapped to new locations</li>
+</ul>
+<h3><a name="bugs121"></a>Bugs Fixed in v1.2.1</h3>
+<p><b>IDE</b></p>
+<ul>
+  <li>326 - The Goto macro declaration now works</li>
+  <li>1450 - Notification of missing Perl scripts/tools directory has been improved</li>
+  <li>1470 - ARMV5 programs shold now display all  local variables </li>
+  <li>2793 - Forum Nokia site (www.forum.nokia.com/eclipse_downloads) updated to include v1.2 license information </li>
+  <li>3314 - Syntax highlighting and 'Find declaration/definition' now works for sources not included in MMPs </li>
+  <li>3442 - Build All Configurations now also builds the test code too. You can disable this in the Carbide.c++ preferences. </li>
+  <li>3446	- Error message improved when SDK Prefix File is not found in SDK properties </li>
+  <li>3530 - The BWIN folder now appears automatically after freezing a project </li>
+  <li>3555	- The build  key bindings should now work </li>
+  <li>3588	- INF Editor now supports  UNIX-style paths in the Export page </li>
+  <li>3637	- The targetpath in an .mmp file should now appear in the MMP Editor &gt; TargetPath text box </li>
+  <li>3658 - The &quot;System resource list&quot; and &quot;Resource list&quot; no longer share the same icon in the MMP Editor</li>
+  <li>3660 - The Symbian Project Navigator view now includes an AIF folder for images</li>
+  <li>3675	- The Add SDK dialog now validates for spaces in the EPOC root path </li>
+  <li>3700	- Changing the order of a macro paths in the MMP Editor no longer prints it  multiple times </li>
+  <li>3702	- SDKs are now identified in the SDK Preference panel by  the name used in the prefix file and not the SDK common name </li>
+  <li>3703 - The INF Importer now issues a warning instead of an error when a project references the drives root directory or another drive</li>
+  <li>3705	- The INF Importer now issues an error when it encounters space characters in the path to the bld.inf file </li>
+  <li>3707	- An alert now appears in the INF Importer when no MMP file is selected</li>
+  <li>3714	- The correct path for BMP files is now displayed in the Symbian Project Navigator view and the MIF Editor</li>
+  <li>3716 - Improved Freeze Exports command to always add -r when freezing and to only appear as an option on the project context menu</li>
+  <li>3717	- The Symbian Project Navigator view now correctly caches and displays .mk files that may have prevented compilation </li>
+  <li>3723	- The INF Importer wizard no longer shows duplicate MMP selections </li>
+  <li>3724	- Test MMPs now correctly appear in the  Symbian Project Navigator view  (see 3442, 4019) </li>
+  <li>3725	- The IDE now correctly identifies   bld.inf/mmp files as dirty when changes are made to the same line after a save </li>
+  <li>3726	- Test MMP components now correctly appear in the  Symbian Project Navigator view (see 3724, 4019) </li>
+  <li>3747 - Set the default behavior of Folding Header comments to disabled </li>
+  <li>3749 - RSC file extensions are now  correctly picked up by the File Transfer page in a SysTRK launch configuration </li>
+  <li>3754	- INF Editor now  remembers the settings for Tidy, Manual, and Support columns </li>
+  <li>3756	- DEF files are now correctly found and shown in the  Symbian Project Navigator view after Freeze Export </li>
+  <li>3763	- Creating a new project no longer generates a UID 2 error when the MMP file appears </li>
+  <li>3765	- Deleting UID 2 no longer causes UID 3 to use the UID 2 value in the MMP Editor </li>
+  <li>3768	- Carbide now issues a &quot;Bld.inf file cannot be at the root of the workspace&quot; error when it finds the bld.inf at the root </li>
+  <li>3774 - Added key shortcuts for &quot;Build/Clean Symbian Component&quot; commands </li>
+  <li>3779	- Carbide now issues an alert of Perl is not found at startup and error messages to the Console if Perl v5.6.1 is not available (required by some Symbian build components) </li>
+  <li>3802	- bld.inf files are now updated correctly when PRJ_Exports are moved</li>
+  <li>3810	- Moving files no longer invokes a permission dialog when the Always Change option is activated</li>
+  <li>3867	- Vendor specific macros for S60 3rd Ed. are now recognized </li>
+  <li>3868 - Macros defined in variant.cfg are not added as prefix include macros </li>
+  <li>3887- The INF Importer wizard no longer shows duplicate MMP selections (see 3723) </li>
+  <li>3900 - Long error messagesd in the SDK Preferences panel should no longer be truncated </li>
+  <li>3923 - The Compile key shortcut (Ctrl+Alt+C)  now works properly </li>
+  <li>3924	- Build WINSCW targets should no longer show system stack traces anymore </li>
+  <li>3927	- Code formatting to align first level braces is now working</li>
+  <li>3928	- Alerts incorrectly stating that spaces are not allowed for  paths sent to signsis has been corrected </li>
+  <li>3929 - Changing EPOCROOT in the  SDK Property dialog now correctly updates the prefix file </li>
+  <li>3930	- Can now build for two different SDKs on different drives using the same location of the bld.inf file </li>
+  <li>3940	- The C/C++ Indexer should not hang when indexing a CPP file any more </li>
+  <li>3943	- Updated commands to reflect command change from  &quot;Build All Targets&quot; to &quot;Build All Configurations&quot;  (see 4021) </li>
+  <li>3945	- Added option setting to activate/deactivate Verbose (-v) during a full, targeted , or Symbian build, as well as clean operations </li>
+  <li>3960	-  Open in Command Window now correctly opens directories on  drives other than C:\ </li>
+  <li>3961	- Importing a project no longer generates incorrect &quot;duplicate path entries&quot; warning message</li>
+  <li>3965	- Customers with valid licenses should no longer see license warning messages unless their license file is corrupted</li>
+  <li>3967	- Choosing &quot;Open Command Window&quot; should now open the directory correctly, not one level up</li>
+  <li>3974 - The Symbian Project Navigator view now correctly detects when a missing MMP file is added and no longer shows the &quot;missing&quot; icon </li>
+  <li>4004	- Updated Breakpoint documentation to clarify that the symbols for a module must be loaded before any breakpoints in that module can be resolved (see 3916) </li>
+  <li>4017	 - Updated Debug view's Disconnect control  documentation on its ability to detach from an attached process/thread with TRK</li>
+  <li>4019	- Added &quot;Build test components...&quot; option to  Carbide.c++ preference panel documentation (see 3442) </li>
+  <li>4021	- Updated documentation to change &quot;Build All Targets&quot; to &quot;Build All Configurations&quot; (see 3943) </li>
+  <li>4022	- Added &quot;Verbose output...&quot; option to  Carbide.c++ preference panel documentation (see 3945)</li>
+  <li>4035 - Bld.inf/mmp parser no longer misinterprets &quot;<span class="code">../</span>&quot; in macros</li>
+  <li>4047	- Corrected key shortcuts for Previous/Next Word MSVC shortcuts </li>
+</ul>
+<p><b>Debugger</b></p>
+<ul>
+  <li>415 - The Modules view    now correctly shows symbols for loaded executables and DLLs</li>
+  <li>591 - The Expressions view now correctly refreshes    with derived type variables</li>
+  <li>2129	- The Variables view now correctly shows unsigned char variable values using Natural Format </li>
+  <li>2204 - While stepping over some global variables that are getting initialized the PC counter skips over the line </li>
+  <li>2207	- The option Run &gt; Restart is now correctly disabled for Stop Mode debugging </li>
+  <li>2236	- Floating point values are no longer treated as decimals</li>
+  <li>2238	- Double values  are no longer treated as decimals</li>
+  <li>2530	- The Details pane now always shows the string value instead of the address value of the char pointer </li>
+  <li>2967	- The Symbian OS Data view now correctly retains its size when maximized and another tab is pressed in the view </li>
+  <li>2998	- The Debug view correctly resets its state when terminating a debug session so that the controls are not disabled </li>
+  <li>3245	- You can now  Detach from an attached process or thread</li>
+  <li>3262	- In the Memory View, changing memory content to Traditional View rendering now correctly updates the view </li>
+  <li>3751	- The ROM Log file TRK launch configuration is now documented </li>
+  <li>3819	- A TRK debug session that fails will no longer leave a process running in the Debug view </li>
+  <li>3836	- The Memory view now handles &quot;array out of bounds&quot; exceptions better </li>
+  <li>3910	- Terminating the Symbian OS View should no longer generate  &quot;Unhandled event loop exception&quot; errors </li>
+  <li>3916	- Updated Breakpoint documentation to clarify that the symbols for a module must be loaded before any breakpoints in that module can be resolved  (see 4004) </li>
+  <li>3952	- The debugger now correctly closes all processes when terminating a debug session </li>
+  <li>3966	- Added support for the debug traces for emulator (epocwin.out) and COM port to the Console view</li>
+  <li>3975	- The Variables view no longer displays strange  &quot;.sw&quot; variables<br />
+</li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+
+</body>
 </html>
\ No newline at end of file
--- a/core/com.nokia.carbide.cpp.doc.user/html/release_notes.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/html/release_notes.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -1,345 +1,353 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-  <title>Carbide.c++ Release Notes</title>
-  <link href="../book.css" rel="stylesheet" type="text/css" />
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-  <link href="../book.css" rel="stylesheet" type="text/css" />
-  <script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
-  <style type="text/css">
-.style1 {font-family: "Courier New", Courier, mono}
-.style5 {color: #FF0000}
-.style6 {font-weight: bold}
-  .style8 {color: #000000; font-weight: bold; }
-  </style>
-</head>
-<body bgcolor="#ffffff">
-<h2>Carbide.c++ Release Notes 2.0.3</h2>
-<p>The Carbide.c++  is a comprehensive development tool suite for Symbian OS that is based on the Eclipse framework. The C++ Development Toolkit (CDT), provides the foundation for project and build tools management, as well as the primary interface for the debugger to communicate with the IDE. </p>
-<p>This is a collection of important information concerning last-minute
-  changes and other topics that deserve special attention.&nbsp;Please
-  read these notes carefully before using the Carbide tools so you
-  understand the current limitations and workarounds for known
-  issues. </p>
-<ul>
-  <li><a href="#whatsNew">What's new </a></li>
-  <li><a href="#beta">User notes</a></li>
-  <li><a href="bugs_fixed.htm">Fixed bugs</a> and <a href="#issues">workarounds</a></li>
-  <li><a href="#support">Technical support</a> </li>
-</ul>
-<p>Once you have read the release notes, we recommend you follow the <img src="images/command_link.png" width="16" height="12" alt="" /> <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.cheatsheets.openCheatSheet(cheatSheetId=com.nokia.carbide.cpp.doc.user.getStarted)")'>HelloWorld tutorial</a> for
-a quick introduction to Carbide.c++.</p>
-<p class="note" style="color: rgb(255, 0, 0);"><span style="font-weight: bold;">WARNING</span>:
-Updating the CDT feature in Carbide.c++/Eclipse will wipe out our
-changes making the tools unusable!</p>
-<p> See the <a href="hints_tips.htm">Tips &amp; tricks</a> page for more helpful information.</p>
-<h3><a name="whatsNew" id="whatsNew"></a>What's New in 2.0.3 </h3>
-<p>The following features for Symbian OS development are provided within Carbide.c++:</p>
-<ul>
-  <li><b>Carbide.c++ News Reader</b> - introducing the <a href="reference/view_carbide_news.htm">Carbide.c++ News</a> view which provides the latest Carbide, Symbian, and S60 news as well as news on tools updates and screencasts for Carbide development.</li>
-</ul>
-<h4>2.0.0</h4>
-<ul><li><b>Eclipse 3.4.1 </b>&#8212; The Eclipse 3.4 project (Ganymede) provides the foundation, or integration platform, on which  Carbide.c++  is built. See <a href="PLUGINS_ROOT/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html">What's New in 3.4</a> for more information.</li>
-</ul>
-<ul><li><b>CDT 5.0.1</b> &#8212; The final version of CDT included as part of the Ganymede release. See the <a href="PLUGINS_ROOT/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm">CDT 5.0 News and Noteworthy</a> page for more information. </li>
-  <li><b>SDK Migration support in CodeScanner</b> &#8212; CodeScanner now includes support for S60 SDK rules that provide helpful migration informaton on S60 functions within any C/C++ editor view and provide links to additional information within the SDK documentation or web. Very helpful during development to keep you code up-to-date with the latest SDK revisions.</li>
-  <li><b>Qt SDK for S60  support </b>&#8212; Carbide now <a href="qt_help/qt_overview.htm">supports</a> the <a href="qt_help/qt_importing_projs_01.htm">importing</a> and <a href="qt_help/qt_creating_projs_01.htm">creation</a> of Qt projects using the  <a href="http://trolltech.com/developer/technical-preview-qt-for-s60">Qt SDK for S60</a>.</li>
-  <li><b>Executables view improvements</b> &#8212; The <a href="reference/view_executables.htm">Executables</a> view now supports the loading of some additional DLL cases to ensure that the DLLs you want to debug are available during a debug session. In addition,  a Remove button has been added to the view's toolbar that makes it easier for you to remove any executables from the list.</li>
-  <li><b>More indexer improvements </b>&#8212; Speed improvements for code completion, syntax coloring, and much more.</li>
-  <li><b>Remote Connections view</b> &#8212; A visual list of <a href="reference/trk/view_remote_connection.htm">remote connections</a> and their state for managing multiple and diverse device connections.</li>
-  <li><b>Partial upgrade SIS file support</b> &#8212; Carbide now supports the generation of partial upgrade  SIS/SISX files. This increases debugger turnaround by only generating new files for changes and uploading these smaller execuables to the device.</li>
-  <li><b>More Program Counter support </b>&#8212; Added a Move to Line command for the debugger that enables you to move the PC to a new line while debugging without executing any intermediate lines or resuming execution.</li>
-  <li>Multiple<b> TRK</b> improvements including:
-    <ul>
-      <li>Both App and System TRK try to disable mobile crash debugging</li>
-      <li>TRK now looks for the new mobile crash agent (ms_useragent)</li>
-      <li>Added additional error checking when communicating over USB to improve stability</li>
-      <li>Fixed some random TRK deadlocks when reading registers or when thread panics occur</li>
-      <li>Option &gt; Exit has been replaced by Option &gt; Back to reflect the change made to exiting TRK</li>
-      <li>Changes made to use UIDs in place of component names to identify executables for improved identification</li>
-      <li>Reset TRK priority to high to avoid problems debugging complex process intensive applications</li>
-      <li>Improved breakpoint location in DLLs when debugging multiple processes</li>
-      <li>TRK no longer targets processes with UID 0 automatically. Users can still attach to the process or use a launch configuration.</li>
-      <li>TRK application name and UID changed to blocking of TRK SIS files assigned with the old UID.</li>
-      <li>TRK now always uses the kernel APIs to read/write memory to improve security, no more direct reads/writes.</li>
-      <li>Application TRK  no longer allows write operations to the following registers: CPSR, SP, and LR</li>
-    </ul>
-  </li>
-</ul>
-<h4>1.3.1</h4>
-<ul>
-  <li><b><a href="reference/trk/wnd_on_device_setup.htm">On-Device Setup</a> </b> dialog &#8212; connects, verifies and updates Carbide software services like the TRK debug agent on a device to ensure you are always using the latest version in your development efforts. Having trouble connecting with  TRK, give this a try. </li>
-  <li><b>New Bug Report wizard  </b> &#8212; directly submit bugs and enhancement requests  to  Carbide Bugzilla from within Carbide using the <strong>Help &gt; New Bug Report</strong> menu option. Enter the name and password into the Bug Reporter preference panel and quick bug reports are easy to submit. </li>
-  <li><strong>Launch configuration panels UI unification and improvements</strong>&#8212; a host of minor UI improvements are being made in the launch configuration panes to provide a more coherent and reproducable experience across all launch configuration dialogs. </li>
-</ul>
-<blockquote>
-  <p>For example, the concept of a &quot;main executable&quot; had been replaced with the Executables tab where a list of executables targeted for debugging were shown. This UI change brings the launch configurations into sync with that change by removing the Main Executable from the Main tab. The Main tab will only show a process to launch and not executables targeted for debugging. </p>
-  <p>Another example, the Arguments field used by the run-mode TRK configurations has been moved to the Arguments tab to match the Emulator configuration.</p>
-</blockquote>
-<ul>
-  <li>Many other bug fixes to improve stability and usability on Carbide </li>
-</ul>
-<h4>1.3.0</h4>
-<ul>
-  <li><b>Eclipse 3.3.1.1</b> &#8212; The Eclipse 3.3 project provides the foundation, or integration platform, for which the product is built upon. See <a href="PLUGINS_ROOT/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html">What's New in 3.3</a> for more information.</li>
-  <li><b>CDT 4.0.1</b> &#8212; This drop is based on a final version of CDT that was part of the Europa release. See the <a href="PLUGINS_ROOT/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm">CDT 4.0 News and Noteworthy</a> page for more information. </li>
-  <li><b>Build system improvements</b> &#8212; large project support has been enhanced for builds and indexing, but performance trade offs have been made so the latter improvements are possible. This is most noticeable when importing projects and making changes to <span class="code">bld.inf</span> and <span class="code">mmp</span> files.</li>
-  <li><b>System search</b> &#8212; search any directory outside the workspace. </li>
-  <li><b>Debugging improvements include:</b>
-    <ul>
-      <li><b>Executables view</b> &#8212; provides a dynamic list of executables and their related source files </li>
-      <li><b>Executables tab</b> &#8212; uses a rule based approach in launch configurations  to include/exclude executables in the project </li>
-      <li><b>On-device debugging</b> &#8212; lots of TRK  (v2.8.6) fixes here to make on-device debugging easier and more stable </li>
-    </ul>
-  </li>
-  <li><b>Carbide tool plug-ins include</b>:
-    <ul>
-      <li>CodeScanner - a static source code analysis tool for Symbian OS programs written in C++</li>
-      <li>Capability Scanner and Epocwind.out Scanner - performs static and runtime capability checks on your project </li>
-      <li>Dependency Explorer - analyses static dependencies between  components</li>
-    </ul>
-  </li>
-  <li><b>Indexing improvements</b></li>
-  <li>The creation of EKA1-based projects has been deprecated with this release. Carbide still supports its use but all development going forward will concentrate on EKA2-based projects. </li>
-  <li><b>Lots of bug fixes</b>... </li>
-</ul>
-<h3><a name="beta" id="beta"></a>User Notes</h3>
-<ul><li><b>New extension makefiles</b> - if your project is using the new extension makefile support in OS9.3+ (<span class="code">prj_extensions</span>), you will get a build error with the default builder settings.  We plan to fix this issue, but for now you can work around it by disabling the manage dependencies and concurrent compilation builder options found in the <b>Carbide.c++ &gt; Build</b> preference panel.</li>
-  <li><b>Qt for Symbian support</b> - The Qt views require registered COM plugins in order to work correctly.  These plugins are registered by our installer.  If you did not use our installer or have uninstalled an existing Qt Eclipse integration after installing Carbide, you'll need to register the plugins by running a batch file.  You'll find the batch file here: \configuration\qt\register_plugins.bat.  You'll know that you need to run the batch file if you get exceptions when opening one of the Qt views.</li>
-</ul>
-<h3><a name="issues" id="issues"></a>Fixed bugs and workarounds</h3>
-<ul>
-  <li>Complete list of Carbide.c++ <a href="bugs_fixed.htm">bugs fixed</a></li>
-  <li>Workarounds for known issues: </li>
-</ul>
-<table cellpadding="0" cellspacing="0" border="0" style="text-align: left; width: 100%;">
-  <tbody>
-    <tr>
-      <th 
- style="vertical-align: top; text-align: center; font-weight: bold; ">Summary<br />      </th>
-      <th 
- style="vertical-align: top; text-align: center; font-weight: bold; ">Workaround</th>
-    </tr>
-    <tr align="center">
-      <td colspan="2" bgcolor="#CBE6C1"><a name="CRITICAL_ITEMS"></a><span class="style8">CRITICAL ITEMS</span></td>
-    </tr>
-    <tr>
-      <td class="style5" style="vertical-align: top;"><b>WARNING:</b> The C/C++ Files view is a view of the actual FILE SYSTEM, so anything deleted in this view is also deleted from the file system. </td>
-      <td style="vertical-align: top;"><p>When deleting projects from the workspace please be sure you read the dialog that describes the  files that will be deleted. Select the &quot;Do not delete files&quot; option to keep them in the file system.</p>      </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;"><span class="style5">Carbide.c++ terminates on startup on low memory machines</span></td>
-      <td style="vertical-align: top;"> <p>Machines with less than 1GB of memory (or machines runing in a virtual machine) may experience start-up problems. Error dialog typically contains: </p>
-        <p><span class="code">JVM terminated, Return code = -1 </span></p>
-        <p>or when running from eclipse.exe: </p>
-        <p><span class="code">Error occurred during initialization of VM  Could not reserve enough space for object heap</span> </p>
-<p>The <a href="hints_tips.htm">solution</a> is to edit your <span class="code">Carbide.c++.1.x.ini</span> (or <span class="code">eclipse.ini</span> if launching Eclipsec.exe) and use a smaller value for the <span class="code">-Xmx </span>paramater to the JVM. </p>
-<p class="note"><b>NOTE</b> In this scenario, Carbide.c++ performance may degrade.</p></td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[4587] Unable to build  GCCE targets on Vista because of makefile error.</td>
-      <td style="vertical-align: top;">There are known tooling issues when building for the GCCE platform under Windows Vista that can prevent a GCCE build from occurring.  If you want to build for GCCE under S60 and UIQ you will need to manually update some files under<span class="style1"> \epoc32\tools\</span>. See the article <a href="http://wiki.forum.nokia.com/index.php/Windows_Vista">Windows Vista</a> for up-to-date workaround information.</td>
-    </tr>
-    <tr bgcolor="#0071ff">
-      <td colspan="2" bgcolor="#CBE6C1" style="vertical-align: top;">
-      <div align="center" class="style6"><a name="bug_ide"></a><span class="style8">IDE</span></div>      </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">Debugging a project on a machine running Vista via &quot;Remote Desktop Connection&quot; does not work. </td>
-      <td style="vertical-align: top;">Workaround: Switch the project to a machine running Windows XP in order to use &quot;Remote Desktop Connection&quot;. </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[6414] Using Mylyn causes MMP files to be spellchecked and common terms like EXE, CPP, and EUSER.LIB flagged as misspellings in editor views </td>
-      <td style="vertical-align: top;"><p>Workaround: Remove Mylyn from the Carbide installation. </p>      </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">The C/C++ Editor will only work properly with files inside project source folders or on include paths. Source folders are configured in the project settings on the C/C++ Project Paths &gt; Source tab. </td>
-      <td style="vertical-align: top;">When creating new folders, use File &gt; New &gt; Source Folder. This will add a folder and mark it a source folder. If you need to import copies of existing files (File &gt; Import &gt; File System) or link to existing sources (File &gt; New &gt; Folder with &quot;Link to folder in file system&quot;), then a normal folder will be created, not a source folder. If the folder is not underneath an existing source folder in the project, you will need to manually mark it as a source folder using the C/C++ Project Paths &gt; Source tab. </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[3803] Occasionally a module is not expandable immediately after it's been imported in a project. </td>
-      <td style="vertical-align: top;">Workaround: Simply close and reopen the project using the context menu in the Project view.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[3010] Bad synchronization in MMP editor for Linker definition file.</td>
-      <td style="vertical-align: top;">  The templates for Symbian DLL projects do not define a <span class="code">DEFFILE</span> statement, for the case where a <span class="code">DEF</span> file is not needed or imports are not frozen. If you edit the <span class="code">DEF</span> filename through the MMP editor, it is not automatically conditionalized for the current target. If you wish to define target-specific <span class="code">DEF</span> file names in the MMP editor, manually insert <span class="code">#ifdef...#endif</span> blocks, or first uncomment the <span class="code">#ifdef...#endif</span> block from the template, so that target-specific filenames will be properly updated.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[2784] Changes to contents of <span class="code">#includes</span> of bld.inf and MMP files are not performed -- instead, changes involving reordering or deleting go to the main file. </td>
-      <td style="vertical-align: top;">Workaround: if making changes to nests of included files, either manually edit the <span class="code">#included</span> files, or if using MMP or bld.inf editors, look for changes in the main bld.inf or MMP file and manually fix them up.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">Indexer coloring for problems</td>
-      <td style="vertical-align: top;">The problems marker for the indexer occasionally reports both false negative and false positive results (see indexer bugs below). The problems color by default is set to a dark gray to suggest a possible ambiguous state of the browser. You can change this color under the global preferences page: Syntax Coloring. </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[4932] Indexer: Problems with templates </td>
-      <td style="vertical-align: top;">C++ template navigation is not fully supported yet. Problem areas are notable when templates are declared outside the file they are used and when functions or macros use template declarations. </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[4937, 4941] Indexer: Problems with macro navigation </td>
-      <td style="vertical-align: top;">Browsing to macro declarations is problematic when macros are used within function call parameters as well as multi-line macro declarations.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[4931] Indexer does not track files outside the workspace. </td>
-      <td style="vertical-align: top;">If you make changes to files outside the workspace the indexer will not re-index these files (e.g. .rsg files under the SDK). When in doubt, re-index your project. </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[4906] Indexer: const parameters get lost in function prototypes occasionally</td>
-      <td style="vertical-align: top;">The indexer sometimes loses the parameter of function types for const objects. In these cases code navigation will not work. </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">Target type macros (__EXE__, __DLL__, etc) are not always defined for the CDT indexer.</td>
-      <td style="vertical-align: top;">The CDT indexer macros are build configuration specific.  There could be multiple mmp's for a build configuration, each with a different target type macro.  Therefore the target type macro is only added if there is only one mmp file, or if all of the mmp's have the same target type macro.  You can manually add the macro if you wish using the C/C++ Include Paths and Symbols project property page.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">The C/C++ Projects  and Symbian Project Navigator views do not always refresh with changes in the file system.</td>
-      <td style="vertical-align: top;"> If you are in doubt about the contents select the folder in question, then hit F5 to refresh the directory from the file system.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">Synergy 6.3 Installations will
-always crash Eclipse file navigation dialogs - The solution for this is
-to un-register cmexplorer.dll then reboot your machine. Un-registering
-this feature will only effect users that use Synergy integration to
-Windows Explorer. This issue is known to be fixed with Synergy 6.4.</td>
-      <td style="vertical-align: top;">The un-register command is:<br />
-      <br />
-      <font size="-1"><span class="code"
- style="font-family: courier new,courier,monospace;"> regsvr32 /u
-&lt;path to dll&gt;cmexplorer.dll</span> &nbsp; <br />
-      <br />
-      </font>To re-register, the command is:<br />
-      <br />
-      <font size="-1" class="code">regsvr32 &lt;path to
-dll&gt;cmexplorer.dll</font></td>
-    </tr>
-    <tr bgcolor="#0071ff">
-      <td colspan="2" bgcolor="#CBE6C1" style="vertical-align: top;">
-      <div align="center" class="style6"><a name="bug_build"></a><span
- class="style8">BUILD/IMPORTER</span></div>      </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[3804] My application fails to start the first time I try to debug it using TRK. </td>
-      <td style="vertical-align: top;">Workaround: Launch the debug session again. </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[3809]<b> IMPORTANT</b>: You cannot import two projects into Carbide that have the same &quot;Root Directory&quot;.</td>
-      <td style="vertical-align: top;"> If a .project file already exists in this location you either need to shorten or lengthen the &quot;Root Directory&quot; or delete the other project in the same location and try to import again.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;"><p>Emulator (WINSCW) command line builds</p></td>
-      <td style="vertical-align: top;"><p>If you want to build for the emulator from the command line, run the tool from the start menu shortcut: <strong>Configure environment for WINSCW command line builds</strong>. It will setup the necessary environment variables for the x86 compiler. You do not need to do this if you will only be building emulator targets  from the IDE.</p></td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">Working with a workspace on one drive and a source base on another can build some items in the wrong location. </td>
-      <td style="vertical-align: top;">Workaround:  keep your source base and Carbide workspace on the same drive. Because some scripts work off an implicit root (e.g. \epoc32\include\) and don't support drive specs on paths there can be outputs to unexpected locations. </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">When creating/importing projects the sources and SDK must be on the same drive.</td>
-      <td style="vertical-align: top;"> <p>For example, you cannot create a project on the C: drive and build with an SDK whose <span class="code">EPOCROOT</span> is <span class="code">M:\</span>.</p>
-      <p>      This is due to many of the internal SDK tools using an implicit working drive to calculate paths (e.g. <span class="code">\epoc32\tools</span>).</p></td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">Files that include non-ascii
-character types will not compile correctly with GCCE if the file type
-is not saved as UTF-8. </td>
-      <td style="vertical-align: top;">The workaround is to change the
-text file encoding in the global preferences at Windows &gt;
-Preferences, then open the General &gt; Editors panel in the
-Preferences window. Look for the Text file encoding option as shown
-below.
-      <p align="center"><img src="images/utf.png" width="212" height="68" alt="" /></p>      </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">Build system does not detect static library dependencies</td>
-    <td style="vertical-align: top;">The Symbian OS build system did not detect static library changes prior to 9.2.  They have release a patch for this <a href="http://www3.symbian.com/faq.nsf/0/E0F5C56AA68C305F8025731400051166?OpenDocument">here</a>.    </tr>
-    <tr bgcolor="#0071ff">
-      <td colspan="2" bgcolor="#CBE6C1" style="vertical-align: top;">
-      <div align="center" class="style6"><a name="bug_debug"></a><span
- class="style8">DEBUGGER</span></div>      </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">Unable to install TRK on flashed  devices</td>
-      <td style="vertical-align: top;"> Workaround: Some  devices contain images that won't allow TRK to be installed, specifically the Lumiere PR 1.0 and PR 1.1 releases, especially if the C drive image was flashed. To install TRK on these devices you must format the C drive to remove the old flash image, then reflash using an image containing TRK.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[3778,4658] Some variables show &quot;Invalid format&quot; in the Variable view. </td>
-      <td style="vertical-align: top;">No Workaround. </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">Symbian OS Data view caveats. </td>
-      <td style="vertical-align: top;"><p>During crash debugger launch session, you can examine Symbian OS data (processes, threads, chunks etc) in Symbian OS Data view. But:</p>
-        <p> (1) You must have Symbian kernel debugger (usually <span class="code">Kdebug.dll</span>) built in the image. </p>
-      <p> (2) As getting the OS data from crash debugger is time consuming (takes more than one minute in our test), auto-refresh of the data in Symbian OS Data view is disabled for crash debugger. You need to click the &quot;Refresh&quot; button to do a manual refreshing.</p></td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[2616] If you cast a variable to another type the details pane will still show the original type</td>
-      <td style="vertical-align: top;">No Workaround. </td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[2960] The thread run control icons (step over, step in, run) are sometimes disabled after stepping</td>
-      <td style="vertical-align: top;"> Click on the top frame of the suspended thread in the Debug view</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">Debugging without restarting the emulator.</td>
-      <td style="vertical-align: top;"> <p>If you modify any resource files resulting RSC files cannot be rebuilt, however CPP source files can. There are a couple of issues you should be aware of. </p>
-        <p>1) When starting a build, the debugger releases all file handles to the debugged application. Sometimes the emulator is slow to release its own handles to files after quitting an application. If a file is still locked on a rebuild make sure the application is closed (not the emulator itself), wait a few seconds, and try again. </p>
-      <p> 2) When setting breakpoints in source files that have been recompiled they do not always resolve correctly while the emulator is running. The best option is to clear the breakpoints in any modified file and set them again.</p></td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[2716] [Variable View] - Sometimes when
-stepping through a loop
-variables do not refresh.</td>
-      <td style="vertical-align: top;">If you have refresh problems
-with variables, put focus on the variables pane, then off the pane and
-back onto the variable pane.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[1928] [Register View] Casting
-Registers to any type does not work.</td>
-      <td style="vertical-align: top;">Not currently supported.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">The value of some uninitialized
-variables is shown as
-"Unknown error ...."</td>
-      <td style="vertical-align: top;">When
-variables are in scope the proper value will be displayed.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[548] [Variable Scoping] - Multiple
-variables with the same name
-in subscopes are not displayed properly.</td>
-      <td style="vertical-align: top;">Give variables unique names.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[971] Watchpoints cannot be set on
-global variables declared in header files. </td>
-      <td style="vertical-align: top;">No workaround.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[1959] Expressions cannot be disabled.</td>
-      <td style="vertical-align: top;">No workaround.</td>
-    </tr>
-    <tr>
-      <td style="vertical-align: top;">[Add Global Variables] Not all
-global namespace variables are displayed or duplicate entries sometimes
-appear. </td>
-      <td style="vertical-align: top;">No workaround.</td>
-    </tr>
-  </tbody>
-</table>
-<h3><a name="support" id="support"></a>Technical support </h3>
-<p>The following support services are available:</p>
-<ul><li>Visit the <a href="http://discussion.forum.nokia.com/forum/forumdisplay.php?s=&amp;forumid=95">Forum Nokia Developer Discussion Board</a> for lively Carbide.c++ discussions </li>
-  <li>Forum Nokia Wiki - visit <a href="http://wiki.forum.nokia.com/index.php/Carbide.c++">wiki.forum.nokia.com/index.php/Carbide.c++</a> for updated information, downloads and tips </li>
-  <li>Customer feedback - send your comments and suggestions to <a href="mailto:feedback.carbide@nokia.com">feedback.carbide@nokia.com</a></li>
-  <li>Read the <a href="http://sw.nokia.com/id/d11442a8-4eb1-4c01-97f2-fd8be139b93f/Carbide_cpp_On_Device_Debugging_v1_0_en.pdf">Carbide.c++ On-device Debugging</a> whitepaper or an introduction to on-device debugging for S60 3rd Edition devices<br />
-  </li>
-</ul>
-<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-
-</body>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+  <title>Carbide.c++ Release Notes</title>
+  <link href="../book.css" rel="stylesheet" type="text/css" />
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+  <link href="../book.css" rel="stylesheet" type="text/css" />
+  <script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
+  <style type="text/css">
+.style1 {font-family: "Courier New", Courier, mono}
+.style5 {color: #FF0000}
+.style6 {font-weight: bold}
+  .style8 {color: #000000; font-weight: bold; }
+  </style>
+</head>
+<body bgcolor="#ffffff">
+<h2>Carbide.c++ Release Notes 2.1.0</h2>
+<p>The Carbide.c++  is a comprehensive development tool suite for Symbian OS that is based on the Eclipse framework. The C++ Development Toolkit (CDT), provides the foundation for project and build tools management, as well as the primary interface for the debugger to communicate with the IDE. </p>
+<p>This is a collection of important information concerning last-minute
+  changes and other topics that deserve special attention.&nbsp;Please
+  read these notes carefully before using the Carbide tools so you
+  understand the current limitations and workarounds for known
+  issues. </p>
+<ul>
+  <li><a href="#whatsNew">What's new </a></li>
+  <li><a href="#beta">User notes</a></li>
+  <li><a href="bugs_fixed.htm">Fixed bugs</a> and <a href="#issues">workarounds</a></li>
+  <li><a href="#support">Technical support</a> </li>
+</ul>
+<p>Once you have read the release notes, we recommend you follow the <img src="images/command_link.png" width="16" height="12" alt="" /> <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.cheatsheets.openCheatSheet(cheatSheetId=com.nokia.carbide.cpp.doc.user.getStarted)")'>HelloWorld tutorial</a> for
+a quick introduction to Carbide.c++.</p>
+<p class="note" style="color: rgb(255, 0, 0);"><span style="font-weight: bold;">WARNING</span>:
+Updating the CDT feature in Carbide.c++/Eclipse will wipe out our
+changes making the tools unusable!</p>
+<p> See the <a href="hints_tips.htm">Tips &amp; tricks</a> page for more helpful information.</p>
+<h3><a name="whatsNew" id="whatsNew2"></a>What's New in 2.1.0 </h3>
+<p>The following features for Symbian OS development are provided within Carbide.c++:</p>
+<ul>
+  <li><b>???</b> - </li>
+</ul>
+<h4>2.0.4</h4>
+<ul>
+  <li><b>Hover Help</b> - hover your pointer over a recognized Symbian symbol in an editor and see the Symbian API Reference information appear to assist you.</li>
+</ul>
+<h4>2.0.3</h4>
+<ul>
+  <li><b>Carbide.c++ News Reader</b> - introducing the <a href="reference/view_carbide_news.htm">Carbide.c++ News</a> view which provides the latest Carbide, Symbian, and S60 news as well as news on tools updates and screencasts for Carbide development.</li>
+</ul>
+<h4>2.0.0</h4>
+<ul><li><b>Eclipse 3.4.1 </b>&#8212; The Eclipse 3.4 project (Ganymede) provides the foundation, or integration platform, on which  Carbide.c++  is built. See <a href="PLUGINS_ROOT/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html">What's New in 3.4</a> for more information.</li>
+</ul>
+<ul><li><b>CDT 5.0.1</b> &#8212; The final version of CDT included as part of the Ganymede release. See the <a href="PLUGINS_ROOT/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm">CDT 5.0 News and Noteworthy</a> page for more information. </li>
+  <li><b>SDK Migration support in CodeScanner</b> &#8212; CodeScanner now includes support for S60 SDK rules that provide helpful migration informaton on S60 functions within any C/C++ editor view and provide links to additional information within the SDK documentation or web. Very helpful during development to keep you code up-to-date with the latest SDK revisions.</li>
+  <li><b>Qt SDK for S60  support </b>&#8212; Carbide now <a href="qt_help/qt_overview.htm">supports</a> the <a href="qt_help/qt_importing_projs_01.htm">importing</a> and <a href="qt_help/qt_creating_projs_01.htm">creation</a> of Qt projects using the  <a href="http://trolltech.com/developer/technical-preview-qt-for-s60">Qt SDK for S60</a>.</li>
+  <li><b>Executables view improvements</b> &#8212; The <a href="reference/view_executables.htm">Executables</a> view now supports the loading of some additional DLL cases to ensure that the DLLs you want to debug are available during a debug session. In addition,  a Remove button has been added to the view's toolbar that makes it easier for you to remove any executables from the list.</li>
+  <li><b>More indexer improvements </b>&#8212; Speed improvements for code completion, syntax coloring, and much more.</li>
+  <li><b>Remote Connections view</b> &#8212; A visual list of <a href="reference/trk/view_remote_connection.htm">remote connections</a> and their state for managing multiple and diverse device connections.</li>
+  <li><b>Partial upgrade SIS file support</b> &#8212; Carbide now supports the generation of partial upgrade  SIS/SISX files. This increases debugger turnaround by only generating new files for changes and uploading these smaller execuables to the device.</li>
+  <li><b>More Program Counter support </b>&#8212; Added a Move to Line command for the debugger that enables you to move the PC to a new line while debugging without executing any intermediate lines or resuming execution.</li>
+  <li>Multiple<b> TRK</b> improvements including:
+    <ul>
+      <li>Both App and System TRK try to disable mobile crash debugging</li>
+      <li>TRK now looks for the new mobile crash agent (ms_useragent)</li>
+      <li>Added additional error checking when communicating over USB to improve stability</li>
+      <li>Fixed some random TRK deadlocks when reading registers or when thread panics occur</li>
+      <li>Option &gt; Exit has been replaced by Option &gt; Back to reflect the change made to exiting TRK</li>
+      <li>Changes made to use UIDs in place of component names to identify executables for improved identification</li>
+      <li>Reset TRK priority to high to avoid problems debugging complex process intensive applications</li>
+      <li>Improved breakpoint location in DLLs when debugging multiple processes</li>
+      <li>TRK no longer targets processes with UID 0 automatically. Users can still attach to the process or use a launch configuration.</li>
+      <li>TRK application name and UID changed to blocking of TRK SIS files assigned with the old UID.</li>
+      <li>TRK now always uses the kernel APIs to read/write memory to improve security, no more direct reads/writes.</li>
+      <li>Application TRK  no longer allows write operations to the following registers: CPSR, SP, and LR</li>
+    </ul>
+  </li>
+</ul>
+<h4>1.3.1</h4>
+<ul>
+  <li><b><a href="reference/trk/wnd_on_device_setup.htm">On-Device Setup</a> </b> dialog &#8212; connects, verifies and updates Carbide software services like the TRK debug agent on a device to ensure you are always using the latest version in your development efforts. Having trouble connecting with  TRK, give this a try. </li>
+  <li><b>New Bug Report wizard  </b> &#8212; directly submit bugs and enhancement requests  to  Carbide Bugzilla from within Carbide using the <strong>Help &gt; New Bug Report</strong> menu option. Enter the name and password into the Bug Reporter preference panel and quick bug reports are easy to submit. </li>
+  <li><strong>Launch configuration panels UI unification and improvements</strong>&#8212; a host of minor UI improvements are being made in the launch configuration panes to provide a more coherent and reproducable experience across all launch configuration dialogs. </li>
+</ul>
+<blockquote>
+  <p>For example, the concept of a &quot;main executable&quot; had been replaced with the Executables tab where a list of executables targeted for debugging were shown. This UI change brings the launch configurations into sync with that change by removing the Main Executable from the Main tab. The Main tab will only show a process to launch and not executables targeted for debugging. </p>
+  <p>Another example, the Arguments field used by the run-mode TRK configurations has been moved to the Arguments tab to match the Emulator configuration.</p>
+</blockquote>
+<ul>
+  <li>Many other bug fixes to improve stability and usability on Carbide </li>
+</ul>
+<h4>1.3.0</h4>
+<ul>
+  <li><b>Eclipse 3.3.1.1</b> &#8212; The Eclipse 3.3 project provides the foundation, or integration platform, for which the product is built upon. See <a href="PLUGINS_ROOT/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html">What's New in 3.3</a> for more information.</li>
+  <li><b>CDT 4.0.1</b> &#8212; This drop is based on a final version of CDT that was part of the Europa release. See the <a href="PLUGINS_ROOT/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm">CDT 4.0 News and Noteworthy</a> page for more information. </li>
+  <li><b>Build system improvements</b> &#8212; large project support has been enhanced for builds and indexing, but performance trade offs have been made so the latter improvements are possible. This is most noticeable when importing projects and making changes to <span class="code">bld.inf</span> and <span class="code">mmp</span> files.</li>
+  <li><b>System search</b> &#8212; search any directory outside the workspace. </li>
+  <li><b>Debugging improvements include:</b>
+    <ul>
+      <li><b>Executables view</b> &#8212; provides a dynamic list of executables and their related source files </li>
+      <li><b>Executables tab</b> &#8212; uses a rule based approach in launch configurations  to include/exclude executables in the project </li>
+      <li><b>On-device debugging</b> &#8212; lots of TRK  (v2.8.6) fixes here to make on-device debugging easier and more stable </li>
+    </ul>
+  </li>
+  <li><b>Carbide tool plug-ins include</b>:
+    <ul>
+      <li>CodeScanner - a static source code analysis tool for Symbian OS programs written in C++</li>
+      <li>Capability Scanner and Epocwind.out Scanner - performs static and runtime capability checks on your project </li>
+      <li>Dependency Explorer - analyses static dependencies between  components</li>
+    </ul>
+  </li>
+  <li><b>Indexing improvements</b></li>
+  <li>The creation of EKA1-based projects has been deprecated with this release. Carbide still supports its use but all development going forward will concentrate on EKA2-based projects. </li>
+  <li><b>Lots of bug fixes</b>... </li>
+</ul>
+<h3><a name="beta" id="beta"></a>User Notes</h3>
+<ul><li><b>New extension makefiles</b> - if your project is using the new extension makefile support in OS9.3+ (<span class="code">prj_extensions</span>), you will get a build error with the default builder settings.  We plan to fix this issue, but for now you can work around it by disabling the manage dependencies and concurrent compilation builder options found in the <b>Carbide.c++ &gt; Build</b> preference panel.</li>
+  <li><b>Qt for Symbian support</b> - The Qt views require registered COM plugins in order to work correctly.  These plugins are registered by our installer.  If you did not use our installer or have uninstalled an existing Qt Eclipse integration after installing Carbide, you'll need to register the plugins by running a batch file.  You'll find the batch file here: \configuration\qt\register_plugins.bat.  You'll know that you need to run the batch file if you get exceptions when opening one of the Qt views.</li>
+</ul>
+<h3><a name="issues" id="issues"></a>Fixed bugs and workarounds</h3>
+<ul>
+  <li>Complete list of Carbide.c++ <a href="bugs_fixed.htm">bugs fixed</a></li>
+  <li>Workarounds for known issues: </li>
+</ul>
+<table cellpadding="0" cellspacing="0" border="0" style="text-align: left; width: 100%;">
+  <tbody>
+    <tr>
+      <th 
+ style="vertical-align: top; text-align: center; font-weight: bold; ">Summary<br />      </th>
+      <th 
+ style="vertical-align: top; text-align: center; font-weight: bold; ">Workaround</th>
+    </tr>
+    <tr align="center">
+      <td colspan="2" bgcolor="#CBE6C1"><a name="CRITICAL_ITEMS"></a><span class="style8">CRITICAL ITEMS</span></td>
+    </tr>
+    <tr>
+      <td class="style5" style="vertical-align: top;"><b>WARNING:</b> The C/C++ Files view is a view of the actual FILE SYSTEM, so anything deleted in this view is also deleted from the file system. </td>
+      <td style="vertical-align: top;"><p>When deleting projects from the workspace please be sure you read the dialog that describes the  files that will be deleted. Select the &quot;Do not delete files&quot; option to keep them in the file system.</p>      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><span class="style5">Carbide.c++ terminates on startup on low memory machines</span></td>
+      <td style="vertical-align: top;"> <p>Machines with less than 1GB of memory (or machines runing in a virtual machine) may experience start-up problems. Error dialog typically contains: </p>
+        <p><span class="code">JVM terminated, Return code = -1 </span></p>
+        <p>or when running from eclipse.exe: </p>
+        <p><span class="code">Error occurred during initialization of VM  Could not reserve enough space for object heap</span> </p>
+<p>The <a href="hints_tips.htm">solution</a> is to edit your <span class="code">Carbide.c++.1.x.ini</span> (or <span class="code">eclipse.ini</span> if launching Eclipsec.exe) and use a smaller value for the <span class="code">-Xmx </span>paramater to the JVM. </p>
+<p class="note"><b>NOTE</b> In this scenario, Carbide.c++ performance may degrade.</p></td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[4587] Unable to build  GCCE targets on Vista because of makefile error.</td>
+      <td style="vertical-align: top;">There are known tooling issues when building for the GCCE platform under Windows Vista that can prevent a GCCE build from occurring.  If you want to build for GCCE under S60 and UIQ you will need to manually update some files under<span class="style1"> \epoc32\tools\</span>. See the article <a href="http://wiki.forum.nokia.com/index.php/Windows_Vista">Windows Vista</a> for up-to-date workaround information.</td>
+    </tr>
+    <tr bgcolor="#0071ff">
+      <td colspan="2" bgcolor="#CBE6C1" style="vertical-align: top;">
+      <div align="center" class="style6"><a name="bug_ide"></a><span class="style8">IDE</span></div>      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">Debugging a project on a machine running Vista via &quot;Remote Desktop Connection&quot; does not work. </td>
+      <td style="vertical-align: top;">Workaround: Switch the project to a machine running Windows XP in order to use &quot;Remote Desktop Connection&quot;. </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[6414] Using Mylyn causes MMP files to be spellchecked and common terms like EXE, CPP, and EUSER.LIB flagged as misspellings in editor views </td>
+      <td style="vertical-align: top;"><p>Workaround: Remove Mylyn from the Carbide installation. </p>      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">The C/C++ Editor will only work properly with files inside project source folders or on include paths. Source folders are configured in the project settings on the C/C++ Project Paths &gt; Source tab. </td>
+      <td style="vertical-align: top;">When creating new folders, use File &gt; New &gt; Source Folder. This will add a folder and mark it a source folder. If you need to import copies of existing files (File &gt; Import &gt; File System) or link to existing sources (File &gt; New &gt; Folder with &quot;Link to folder in file system&quot;), then a normal folder will be created, not a source folder. If the folder is not underneath an existing source folder in the project, you will need to manually mark it as a source folder using the C/C++ Project Paths &gt; Source tab. </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[3803] Occasionally a module is not expandable immediately after it's been imported in a project. </td>
+      <td style="vertical-align: top;">Workaround: Simply close and reopen the project using the context menu in the Project view.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[3010] Bad synchronization in MMP editor for Linker definition file.</td>
+      <td style="vertical-align: top;">  The templates for Symbian DLL projects do not define a <span class="code">DEFFILE</span> statement, for the case where a <span class="code">DEF</span> file is not needed or imports are not frozen. If you edit the <span class="code">DEF</span> filename through the MMP editor, it is not automatically conditionalized for the current target. If you wish to define target-specific <span class="code">DEF</span> file names in the MMP editor, manually insert <span class="code">#ifdef...#endif</span> blocks, or first uncomment the <span class="code">#ifdef...#endif</span> block from the template, so that target-specific filenames will be properly updated.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[2784] Changes to contents of <span class="code">#includes</span> of bld.inf and MMP files are not performed -- instead, changes involving reordering or deleting go to the main file. </td>
+      <td style="vertical-align: top;">Workaround: if making changes to nests of included files, either manually edit the <span class="code">#included</span> files, or if using MMP or bld.inf editors, look for changes in the main bld.inf or MMP file and manually fix them up.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">Indexer coloring for problems</td>
+      <td style="vertical-align: top;">The problems marker for the indexer occasionally reports both false negative and false positive results (see indexer bugs below). The problems color by default is set to a dark gray to suggest a possible ambiguous state of the browser. You can change this color under the global preferences page: Syntax Coloring. </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[4932] Indexer: Problems with templates </td>
+      <td style="vertical-align: top;">C++ template navigation is not fully supported yet. Problem areas are notable when templates are declared outside the file they are used and when functions or macros use template declarations. </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[4937, 4941] Indexer: Problems with macro navigation </td>
+      <td style="vertical-align: top;">Browsing to macro declarations is problematic when macros are used within function call parameters as well as multi-line macro declarations.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[4931] Indexer does not track files outside the workspace. </td>
+      <td style="vertical-align: top;">If you make changes to files outside the workspace the indexer will not re-index these files (e.g. .rsg files under the SDK). When in doubt, re-index your project. </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[4906] Indexer: const parameters get lost in function prototypes occasionally</td>
+      <td style="vertical-align: top;">The indexer sometimes loses the parameter of function types for const objects. In these cases code navigation will not work. </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">Target type macros (__EXE__, __DLL__, etc) are not always defined for the CDT indexer.</td>
+      <td style="vertical-align: top;">The CDT indexer macros are build configuration specific.  There could be multiple mmp's for a build configuration, each with a different target type macro.  Therefore the target type macro is only added if there is only one mmp file, or if all of the mmp's have the same target type macro.  You can manually add the macro if you wish using the C/C++ Include Paths and Symbols project property page.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">The C/C++ Projects  and Symbian Project Navigator views do not always refresh with changes in the file system.</td>
+      <td style="vertical-align: top;"> If you are in doubt about the contents select the folder in question, then hit F5 to refresh the directory from the file system.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">Synergy 6.3 Installations will
+always crash Eclipse file navigation dialogs - The solution for this is
+to un-register cmexplorer.dll then reboot your machine. Un-registering
+this feature will only effect users that use Synergy integration to
+Windows Explorer. This issue is known to be fixed with Synergy 6.4.</td>
+      <td style="vertical-align: top;">The un-register command is:<br />
+      <br />
+      <font size="-1"><span class="code"
+ style="font-family: courier new,courier,monospace;"> regsvr32 /u
+&lt;path to dll&gt;cmexplorer.dll</span> &nbsp; <br />
+      <br />
+      </font>To re-register, the command is:<br />
+      <br />
+      <font size="-1" class="code">regsvr32 &lt;path to
+dll&gt;cmexplorer.dll</font></td>
+    </tr>
+    <tr bgcolor="#0071ff">
+      <td colspan="2" bgcolor="#CBE6C1" style="vertical-align: top;">
+      <div align="center" class="style6"><a name="bug_build"></a><span
+ class="style8">BUILD/IMPORTER</span></div>      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[3804] My application fails to start the first time I try to debug it using TRK. </td>
+      <td style="vertical-align: top;">Workaround: Launch the debug session again. </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[3809]<b> IMPORTANT</b>: You cannot import two projects into Carbide that have the same &quot;Root Directory&quot;.</td>
+      <td style="vertical-align: top;"> If a .project file already exists in this location you either need to shorten or lengthen the &quot;Root Directory&quot; or delete the other project in the same location and try to import again.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><p>Emulator (WINSCW) command line builds</p></td>
+      <td style="vertical-align: top;"><p>If you want to build for the emulator from the command line, run the tool from the start menu shortcut: <strong>Configure environment for WINSCW command line builds</strong>. It will setup the necessary environment variables for the x86 compiler. You do not need to do this if you will only be building emulator targets  from the IDE.</p></td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">Working with a workspace on one drive and a source base on another can build some items in the wrong location. </td>
+      <td style="vertical-align: top;">Workaround:  keep your source base and Carbide workspace on the same drive. Because some scripts work off an implicit root (e.g. \epoc32\include\) and don't support drive specs on paths there can be outputs to unexpected locations. </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">When creating/importing projects the sources and SDK must be on the same drive.</td>
+      <td style="vertical-align: top;"> <p>For example, you cannot create a project on the C: drive and build with an SDK whose <span class="code">EPOCROOT</span> is <span class="code">M:\</span>.</p>
+      <p>      This is due to many of the internal SDK tools using an implicit working drive to calculate paths (e.g. <span class="code">\epoc32\tools</span>).</p></td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">Files that include non-ascii
+character types will not compile correctly with GCCE if the file type
+is not saved as UTF-8. </td>
+      <td style="vertical-align: top;">The workaround is to change the
+text file encoding in the global preferences at Windows &gt;
+Preferences, then open the General &gt; Editors panel in the
+Preferences window. Look for the Text file encoding option as shown
+below.
+      <p align="center"><img src="images/utf.png" width="212" height="68" alt="" /></p>      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">Build system does not detect static library dependencies</td>
+    <td style="vertical-align: top;">The Symbian OS build system did not detect static library changes prior to 9.2.  They have release a patch for this <a href="http://www3.symbian.com/faq.nsf/0/E0F5C56AA68C305F8025731400051166?OpenDocument">here</a>.    </tr>
+    <tr bgcolor="#0071ff">
+      <td colspan="2" bgcolor="#CBE6C1" style="vertical-align: top;">
+      <div align="center" class="style6"><a name="bug_debug"></a><span
+ class="style8">DEBUGGER</span></div>      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">Unable to install TRK on flashed  devices</td>
+      <td style="vertical-align: top;"> Workaround: Some  devices contain images that won't allow TRK to be installed, specifically the Lumiere PR 1.0 and PR 1.1 releases, especially if the C drive image was flashed. To install TRK on these devices you must format the C drive to remove the old flash image, then reflash using an image containing TRK.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[3778,4658] Some variables show &quot;Invalid format&quot; in the Variable view. </td>
+      <td style="vertical-align: top;">No Workaround. </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">Symbian OS Data view caveats. </td>
+      <td style="vertical-align: top;"><p>During crash debugger launch session, you can examine Symbian OS data (processes, threads, chunks etc) in Symbian OS Data view. But:</p>
+        <p> (1) You must have Symbian kernel debugger (usually <span class="code">Kdebug.dll</span>) built in the image. </p>
+      <p> (2) As getting the OS data from crash debugger is time consuming (takes more than one minute in our test), auto-refresh of the data in Symbian OS Data view is disabled for crash debugger. You need to click the &quot;Refresh&quot; button to do a manual refreshing.</p></td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[2616] If you cast a variable to another type the details pane will still show the original type</td>
+      <td style="vertical-align: top;">No Workaround. </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[2960] The thread run control icons (step over, step in, run) are sometimes disabled after stepping</td>
+      <td style="vertical-align: top;"> Click on the top frame of the suspended thread in the Debug view</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">Debugging without restarting the emulator.</td>
+      <td style="vertical-align: top;"> <p>If you modify any resource files resulting RSC files cannot be rebuilt, however CPP source files can. There are a couple of issues you should be aware of. </p>
+        <p>1) When starting a build, the debugger releases all file handles to the debugged application. Sometimes the emulator is slow to release its own handles to files after quitting an application. If a file is still locked on a rebuild make sure the application is closed (not the emulator itself), wait a few seconds, and try again. </p>
+      <p> 2) When setting breakpoints in source files that have been recompiled they do not always resolve correctly while the emulator is running. The best option is to clear the breakpoints in any modified file and set them again.</p></td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[2716] [Variable View] - Sometimes when
+stepping through a loop
+variables do not refresh.</td>
+      <td style="vertical-align: top;">If you have refresh problems
+with variables, put focus on the variables pane, then off the pane and
+back onto the variable pane.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[1928] [Register View] Casting
+Registers to any type does not work.</td>
+      <td style="vertical-align: top;">Not currently supported.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">The value of some uninitialized
+variables is shown as
+"Unknown error ...."</td>
+      <td style="vertical-align: top;">When
+variables are in scope the proper value will be displayed.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[548] [Variable Scoping] - Multiple
+variables with the same name
+in subscopes are not displayed properly.</td>
+      <td style="vertical-align: top;">Give variables unique names.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[971] Watchpoints cannot be set on
+global variables declared in header files. </td>
+      <td style="vertical-align: top;">No workaround.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[1959] Expressions cannot be disabled.</td>
+      <td style="vertical-align: top;">No workaround.</td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;">[Add Global Variables] Not all
+global namespace variables are displayed or duplicate entries sometimes
+appear. </td>
+      <td style="vertical-align: top;">No workaround.</td>
+    </tr>
+  </tbody>
+</table>
+<h3><a name="support" id="support"></a>Technical support </h3>
+<p>The following support services are available:</p>
+<ul><li>Visit the <a href="http://discussion.forum.nokia.com/forum/forumdisplay.php?s=&amp;forumid=95">Forum Nokia Developer Discussion Board</a> for lively Carbide.c++ discussions </li>
+  <li>Forum Nokia Wiki - visit <a href="http://wiki.forum.nokia.com/index.php/Carbide.c++">wiki.forum.nokia.com/index.php/Carbide.c++</a> for updated information, downloads and tips </li>
+  <li>Customer feedback - send your comments and suggestions to <a href="mailto:feedback.carbide@nokia.com">feedback.carbide@nokia.com</a></li>
+  <li>Read the <a href="http://sw.nokia.com/id/d11442a8-4eb1-4c01-97f2-fd8be139b93f/Carbide_cpp_On_Device_Debugging_v1_0_en.pdf">Carbide.c++ On-device Debugging</a> whitepaper or an introduction to on-device debugging for S60 3rd Edition devices<br />
+  </li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+
+</body>
 </html>
\ No newline at end of file
--- a/core/com.nokia.carbide.cpp.doc.user/html/tasks/registers/mem_reg_viewing.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/html/tasks/registers/mem_reg_viewing.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -1,34 +1,34 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
-<title>Expanding Registers</title>
-<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
-</head>
-<body bgcolor="#FFFFFF">
-<h2>Expanding Register Groups</h2>
-<p>You can expand register groups  in the <a href="../../reference/view_registers.htm">Registers</a> view to inspect and <a href="mem_reg_changing.htm">modify</a> their contents.</p>
-<p class="note"><b>NOTE</b> When using an emulator, the registers shown are those of the x86 processor on the host machine, not that of the target device.</p>
-<div class="step">
-  <h4>Viewing Register Groups </h4>
-  <ul>
-    <li>Click the tree control (<img src="../../images/icons/btn_hier_control.png" width="11" height="11" align="absmiddle" />) to expand a register group</li>
-  </ul>
-  <ol>
-    <p>Expanding a group shows its contents, by register name and corresponding value.</p>
-    <p align="center"><img src="../../reference/images/view_registers.png" width="367" height="370" /></p>
-    <p class="figure">Figure 1 - Expanded register group</p>
-  </ol>
-</div>
-  <h5>Other references </h5>
-  <ul>
-    <li><a href="../../concepts/registers.htm">Registers</a></li>
-    <li><a href="mem_reg_changing.htm">Changing Register Values</a></li>
-    <li><a href="mem_reg_viewing.htm">Registers View </a></li>
-  </ul>
-  <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
+<title>Expanding Registers</title>
+<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
+</head>
+<body bgcolor="#FFFFFF">
+<h2>Expanding Register Groups</h2>
+<p>You can expand register groups  in the <a href="../../reference/view_registers.htm">Registers</a> view to inspect and <a href="mem_reg_changing.htm">modify</a> their contents.</p>
+<p class="note"><b>NOTE</b> When using an emulator, the registers shown are those of the x86 processor on the host machine, not that of the target device.</p>
+<div class="step">
+  <h4>Viewing Register Groups </h4>
+  <ul>
+    <li>Click the tree control (<img src="../../images/icons/btn_hier_control.png" width="11" height="11" align="absmiddle" />) to expand a register group</li>
+  </ul>
+  <ol>
+    <p>Expanding a group shows its contents, by register name and corresponding value.</p>
+    <p align="center"><img src="../../reference/images/view_registers.png" width="367" height="370" /></p>
+    <p class="figure">Figure 1 - Expanded register group</p>
+  </ol>
+</div>
+  <h5>Other references </h5>
+  <ul>
+    <li><a href="../../concepts/registers.htm">Registers</a></li>
+    <li><a href="mem_reg_changing.htm">Changing Register Values</a></li>
+    <li><a href="../../reference/view_registers.htm">Registers View </a></li>
+</ul>
+  <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_help.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
+<title>Carbide Help</title>
+<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
+</head>
+<body bgcolor="#FFFFFF">
+<h2>Carbide Help</h2>
+<p>The Carbide IDE provides a wealth of help resources you can tap into to make learning and using Carbide easy. They include:</p>
+<ul>
+  
+  <li><b>Welcome</b> pages &#8212; the Welcome pages provide links to what's new, bug fixes, examples, and internet resources. They provide all the information you need to learn about new features and capabilites. Click <b>Help &gt; Welcome</b> to view the various pages.</li>
+  <li><b>Manuals</b> &#8212; extensive documentation on all aspect of Carbide, Carbide tools, SDKs, and more, are available by clicking <b>Help &gt; Help Content</b> and then choosing the manual to read.</li>
+  <li><b>Cheat sheets</b> &#8212; cheat sheets provide interactive assistance for many common tasks. They appear in their own view and allow you to step through the instructions at your own pace. Click <b>Help &gt; Cheat Sheets</b>, then select the cheat sheet to open.</li>
+  <li><b>F1</b> support &#8212; press <b>F1</b> to open a informational Help view about the currently selected view or dialog.</li>
+  <li><b>Hover help</b> support &#8212; hover the pointer over a symbol in any C/C++ editor and a popup  appears with related information. If the symbol represents a Symbian API call  then Symbian API information appears.</li>
+</ul>
+<h4>References</h4>
+<ul>
+  <li> <a href="file:///fturovic/Documents/workspace-2.x.x/carbidecpp/core/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_overview.htm">Carbide.c++ Overview</a></li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_overview.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
+<title>Carbide Overview</title>
+<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
+</head>
+<body bgcolor="#FFFFFF">
+<h2>Carbide Overview</h2>
+<p>Carbide is an integrated development environment (IDE) designed to develop <a href="http://www.SymbianFoundation.org">Symbian</a> applications for mobile devices. Carbide is built using the open source <a href="http://www.eclipse.org">Eclipse</a> and C/C++ development toolkit (CDT) projects as its base with a wealth of additional tools that make it ideal for developing mobile applications. Carbide includes all the tools necessary to develop mobile applications including editors, GUI designers, project management tools, source code analysis tools, compilers, debuggers, profilers, on-device agents, revision control systems,and much more.</p>
+<p>The basic structure of creating applications is easy to understand. You create a project, add some code, compile it into an executable file, then test it on an emulator, a simulator, or the actual device. If the application is compiled for debugging you can also control the program from within Carbide to ensure that the program behaves as expected using breakpoints, watchpoints, view variables, memory, stack traces, and other intimate details of the program as it runs.</p>
+<p>To learn more about Carbide, see the following topics:</p>
+<ul>
+  <li><a href="carbide_requirements.htm">Carbide system requirements</a></li>
+  <li><a href="carbide_help.htm">Carbide Help</a></li>
+  <li><a href="carbide_tools.htm">Carbide Tools</a></li>
+  <li><a href="carbide_updating.htm">Updating Carbide</a></li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+
+</body>
+</html>
\ No newline at end of file
--- a/core/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_requirements.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_requirements.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -1,104 +1,108 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
-<title>Carbide.c++ Installation</title>
-<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
-</head>
-<body bgcolor="#FFFFFF">
-<h2>System Requirements</h2>
-<p>You use the Carbide.c++ IDE in conjunction with a recognized SDK to develop Symbian software.</p>
-<p> In practice, whether you use an SDK, a developer kit (DevKit), or both depends on the edition of
-    Carbide.c++ you have (see Table 1). Further, if you use an OS devkit,
-    it must be version  9.1b or higher for EKA2 with
-  Platform Security support.</p>
-<h5>Table 1. Support packages used for development with each Carbide.c++ Editions </h5>
-<table width="100%"  border="0" cellpadding="3" cellspacing="0">
-  <tr>
-    <th width="28%" scope="col">Carbide.c++ Edition</th>
-    <th width="35%" scope="col">Support Packages <br />
-    Used for Software Development </th>
-    <th width="37%" scope="col">What You Can Do...</th>
-  </tr>
-  <tr>
-    <td height="65"><b>Developer / Professional</b></td>
-    <td rowspan="2" valign="middle"><p>An SDK or OS developer kit (DevKit) including:</p>
-      <ul><li>9.x or higher for Platform Security </li>
-    </ul></td>
-    <td><p>Targets: S60 5th and 3rd Ed., Qt, UIQ</p>
-      <p>Debugger: Emulators, on-device debugging </p></td>
-  </tr>
-  <tr>
-    <td><b>OEM</b></td>
-    <td><p>Targets: S60 5th and 3rd Ed., Qt, UIQ</p>
-    <p>Debugger: Emulators, on-device debugging, device debugging in ROM, kernel debugging </p>
-    <p>Performance Investigator: application performance data, memory usage, power usage, button event reporting </p></td>
-  </tr>
-</table>
-<h5>Table 2. System Requirements</h5>
-<table width="85%"  border="0" cellpadding="2">
-  <tr>
-    <th width="27%" scope="row">Hardware</th>
-    <td width="73%"><ul>
-        <li>x86-based personal computer </li>
-        <li>1800MHz</li>
-        <li> 1GB of RAM minimum, recommend 2GB or more</li>
-        <li>CD-ROM drive </li>
-        </ul>
-    </td>
-  </tr>
-  <tr>
-    <th scope="row">Operating System </th>
-    <td><p>Microsoft&reg; Windows&reg; XP (Service Pack 2) recommended, Microsoft&reg; Windows&reg; Vista&reg; supported </p>
-        <p class="note"><b>NOTE</b> While Carbide.c++ supports many different OS configurations, only the ones listed here provide for optimal Symbian development. </p>
-        <p class="note"><b>NOTE</b> If you experience any VM issues, see the <a href="../../hints_tips.htm#VMissues">Tips &amp; Hints</a> page for info on modifying Carbide's default memory setup. </p></td>
-  </tr>
-  <tr>
-    <th scope="row">Other Software </th>
-    <td><p>A Symbian OS&#8482; SDK and Perl:</p>
-      <ul>
-          <li>S60 Platform SDKs (<a href="http://forum.nokia.com/info/sw.nokia.com/id/4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html">forum.nokia.com/main/resources/tools_and_sdks/carbide/</a>)
-            <ul>
-              <li>S60 5th Edition</li>
-              <li>S60 3rd Edition, FP1</li>
-              <li>S60 3rd Edition, MR </li>
-              <li>S60 3rd Edition </li>
-            </ul>
-        </li>
-        <li>Qt
-          (<a href="http://www.trolltech.com/">www.trolltech.com</a>)
-          <ul>
-            <li>Qt SDK for S60</li>
-          </ul>
-        </li>
-        <li>UIQ SDKs (<a href="http://www.uiq.com/">www.uiq.com</a>)
-          <ul>
-            <li>UIQ 3.1 </li>
-            <li>UIQ 3.0</li>
-          </ul>
-        </li>
-      </ul>
-      <ul><li>Perl (<a href="http://www.activestate.com">www.activestate.com</a>)
-    (required)              
-          <ul>
-              <li><a href="ftp://ftp.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.635-MSWin32-x86.msi">ActivePerl-5.6.1.635</a></li>
-          </ul></li>
-          <li>Symbian Connect software 
-          <p>Software that communicates between a PC and a target device. For example, <a href="http://europe.nokia.com/nokia/0,,72014,00.html">Nokia PC Suite</a>. </p></li>
-      </ul></td>
-  </tr>
-  <tr>
-    <th scope="row">Disk Space </th>
-    <td><ul>
-        <li>700 MB for Carbide.c++</li>
-        <li>Up to 1.5 GB per S60 SDK</li>
-        <li>1.5 GB for each Symbian OS&#8482; SDK installation</li>
-    </ul></td>
-  </tr>
-</table>
-<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-
-</body>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
+<title>Carbide.c++ Installation</title>
+<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
+</head>
+<body bgcolor="#FFFFFF">
+<h2>System Requirements</h2>
+<p>You use the Carbide.c++ IDE in conjunction with a recognized SDK to develop Symbian software.</p>
+<p> In practice, whether you use an SDK, a developer kit (DevKit), or both depends on the edition of
+    Carbide.c++ you have (see Table 1). Further, if you use an OS devkit,
+    it must be version  9.1b or higher for EKA2 with
+  Platform Security support.</p>
+<h5>Table 1. Support packages used for development with each Carbide.c++ Editions </h5>
+<table width="100%"  border="0" cellpadding="3" cellspacing="0">
+  <tr>
+    <th width="28%" scope="col">Carbide.c++ Edition</th>
+    <th width="35%" scope="col">Support Packages <br />
+    Used for Software Development </th>
+    <th width="37%" scope="col">What You Can Do...</th>
+  </tr>
+  <tr>
+    <td height="65"><b>Developer / Professional</b></td>
+    <td rowspan="2" valign="middle"><p>An SDK or OS developer kit (DevKit) including:</p>
+      <ul><li>9.x or higher for Platform Security </li>
+    </ul></td>
+    <td><p>Targets: S60 5th and 3rd Ed., Qt, UIQ</p>
+      <p>Debugger: Emulators, on-device debugging</p>
+    <p>UI Designer: create graphical interfaces quickly using standard UI components</p></td>
+  </tr>
+  <tr>
+    <td><b>OEM</b></td>
+    <td><p>Targets: S60 5th and 3rd Ed., Qt, UIQ</p>
+    <p>Debugger: Emulators, on-device debugging, device debugging in ROM, kernel debugging </p>
+    <p>Performance Investigator: application performance data, memory usage, power usage, button event reporting </p></td>
+  </tr>
+</table>
+<h5>Table 2. System Requirements</h5>
+<table width="85%"  border="0" cellpadding="2">
+  <tr>
+    <th width="27%" scope="row">Hardware</th>
+    <td width="73%"><ul>
+        <li>x86-based personal computer </li>
+        <li>1800MHz</li>
+        <li> 1GB of RAM minimum, recommend 2GB or more</li>
+        <li>CD-ROM drive </li>
+        </ul>
+    </td>
+  </tr>
+  <tr>
+    <th scope="row">Operating System </th>
+    <td><p>Microsoft&reg; Windows&reg; XP (Service Pack 2) recommended, Microsoft&reg; Windows&reg; Vista&reg; supported </p>
+        <p class="note"><b>NOTE</b> While Carbide.c++ supports many different OS configurations, only the ones listed here provide for optimal Symbian development. </p>
+        <p class="note"><b>NOTE</b> If you experience any VM issues, see the <a href="../../hints_tips.htm#VMissues">Tips &amp; Hints</a> page for info on modifying Carbide's default memory setup. </p></td>
+  </tr>
+  <tr>
+    <th scope="row">Other Software </th>
+    <td><p>A Symbian OS&#8482; SDK and Perl:</p>
+      <ul>
+          <li>S60 Platform SDKs (<a href="http://forum.nokia.com/info/sw.nokia.com/id/4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html">forum.nokia.com/main/resources/tools_and_sdks/carbide/</a>)
+            <ul>
+              <li>S60 5th Edition</li>
+              <li>S60 3rd Edition, FP1</li>
+              <li>S60 3rd Edition, MR </li>
+              <li>S60 3rd Edition </li>
+            </ul>
+        </li>
+        <li>Qt
+          (<a href="http://www.trolltech.com/">www.trolltech.com</a>)
+          <ul>
+            <li>Qt SDK for S60</li>
+          </ul>
+        </li>
+        <li>UIQ SDKs (<a href="http://www.uiq.com/">www.uiq.com</a>)
+          <ul>
+            <li>UIQ 3.1 </li>
+            <li>UIQ 3.0</li>
+          </ul>
+        </li>
+      </ul>
+      <ul><li>Perl (<a href="http://www.activestate.com">www.activestate.com</a>)
+    (required)              
+          <ul>
+              <li><a href="ftp://ftp.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.635-MSWin32-x86.msi">ActivePerl-5.6.1.635</a></li>
+          </ul></li>
+          <li>Symbian Connect software 
+          <p>Software that communicates between a PC and a target device. For example, <a href="http://europe.nokia.com/nokia/0,,72014,00.html">Nokia PC Suite</a>. </p></li>
+      </ul></td>
+  </tr>
+  <tr>
+    <th scope="row">Disk Space </th>
+    <td><ul>
+        <li>700 MB for Carbide.c++</li>
+        <li>Up to 1.5 GB for each S60 SDK installation</li>
+    </ul></td>
+  </tr>
+</table>
+<h4>References</h4>
+<ul>
+  <li> <a href="carbide_overview.htm">Carbide.c++ Overview</a></li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+
+</body>
 </html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_tools.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
+<title>Carbide Tools</title>
+<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
+</head>
+<body bgcolor="#FFFFFF">
+<h2>Carbide Tools</h2>
+<p>&nbsp;</p>
+<h4>References</h4>
+<ul>
+  <li> <a href="file:///fturovic/Documents/workspace-2.x.x/carbidecpp/core/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_overview.htm">Carbide.c++ Overview</a></li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+
+</body>
+</html>
\ No newline at end of file
--- a/core/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_updating.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_updating.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -1,30 +1,50 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
-<title>Updating Carbide.c++</title>
-<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
-<style type="text/css">
-<!--
-.style2 {color: #FF0000}
--->
-</style>
-</head>
-<body bgcolor="#FFFFFF">
-<h2>Updating Carbide.c++</h2>
-<p>Updates to Carbide.c++ current features are available using the Software Updates feature. </p>
-<p>Carbide is a collection of difference software projects combined into a working  environment for Symbian OS C/C++ development. At its base Carbide uses Eclipse and  CDT projects from Eclipse.org. We then modify some of these base plug-ins to work with our Carbide plug-ins. This is important for you to know as any updates to those modified base plug-ins may cause Carbide to not work as intended. </p>
-<p class="note"><span class="style2"><b>IMPORTANT</b> We recommend that you  not install any updates for Carbide.c++ features except for those provided by Nokia via Software Update. Replacing any standard Eclipse plugin with an updated version from a non-Nokia update site  can result in Carbide.c++ no longer working as intended.</span></p>
-<p>Select <b>Help &gt; Software Updates &gt; Find and Install...</b> to display the Install/Update dialog. Select &quot;Search for new features to install&quot; and click Next.</p>
-<p align="center"><img src="images/update_features.png" width="528" height="327" /></p>
-<p class="figure">Figure 1 - Install/Update Dialog </p>
-<p>Select the <b>Carbide.c++ Update Site</b> option and click <b>Finish</b>.</p>
-<p align="center"><img src="images/update_features2.png" width="528" height="586" /></p>
-<p class="figure">Figure 2 - Update Sites </p>
-<p>For more information visit the Carbide site online at <a href="http://www.forum.nokia.com/main/resources/tools_and_sdks/carbide_cpp/">http://www.forum.nokia.com/main/resources/tools_and_sdks/carbide_cpp/</a>.</p>
-<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
+<title>Updating Carbide.c++</title>
+<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
+<style type="text/css">
+<!--
+.style2 {color: #FF0000}
+-->
+</style>
+</head>
+<body bgcolor="#FFFFFF">
+<h2>Updating Carbide.c++</h2>
+<p>Updates to Carbide.c++ current features are available using the <b>Software Updates</b> feature. </p>
+<p>Carbide is a collection of difference software projects combined into a working  environment for Symbian OS C/C++ development. At its base Carbide uses Eclipse and  CDT projects from <a href="http://www.eclipse.org/">Eclipse.org</a>. We then modify some of these base plug-ins to work with our Carbide plug-ins. This is important for you to know as any updates to those modified base plug-ins may cause Carbide to not work as intended. </p>
+<p class="note"><span class="style2"><b>IMPORTANT</b> We recommend that you  not install any updates for Carbide.c++ features except for those provided by Nokia via Software Update. Replacing any standard Eclipse plugin with an updated version from a non-Nokia update site  can result in Carbide.c++ no longer working as intended.</span></p>
+<div class="step">
+  <h4>Installing Carbide Updates</h4>
+  <ol>
+    <li>Select <b class="step">Help &gt; Software Updates &gt; Find and Install...</b> to display the Install/Update dialog. Select &quot;Search for new features to install&quot; and click Next.
+  <p align="center"><img src="images/update_features.png" width="528" height="327" /></p>
+  <p class="figure">Figure 1 - Install/Update Dialog </p></li>
+  <li>Select the <b>Carbide.c++ Update Site</b> option and click <b>Finish</b>.
+  <p align="center"><img src="images/update_features2.png" width="600" height="419" /></p>
+  <p class="figure">Figure 2 - Update Sites </p></li>
+  <li>Select the <b>Carbide.c++ features to install, then click Next</b>
+    <p align="center"><img src="images/update_features3.png" width="600" height="482" /></p>
+  <p class="figure">Figure 3 - Search results showing Carbide features available</p>
+  </li>
+  <li>Accept with the license 
+    terms and click Next.
+    <p align="center"><img src="images/update_features4.png" width="600" height="482" /></p>
+  <p class="figure">Figure 4 - Update Sites </p></li>
+  <li>Select where the new feature should be installed, then  click <b>Finish</b>.
+    <p align="center"><img src="images/update_features5.png" width="600" height="482" /></p>
+  <p class="figure">Figure 5 - Update Sites </p></li>
+  </ol>
+</div>
+<p>Carbide downloads the selected features and installs them. You may need to relaunch Carbide.c++ to access the newly installed capabilities.</p>
+<h4>References</h4>
+<ul>
+  <li> <a href="carbide_overview.htm">Carbide.c++ Overview</a></li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+
+</body>
+</html>
Binary file core/com.nokia.carbide.cpp.doc.user/html/tasks/start/images/update_features2.png has changed
Binary file core/com.nokia.carbide.cpp.doc.user/html/tasks/start/images/update_features3.png has changed
Binary file core/com.nokia.carbide.cpp.doc.user/html/tasks/start/images/update_features4.png has changed
Binary file core/com.nokia.carbide.cpp.doc.user/html/tasks/start/images/update_features5.png has changed
--- a/core/com.nokia.carbide.cpp.doc.user/index.xml	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/index.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -1,761 +1,757 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?NLS TYPE="org.eclipse.help.index"?>
-<index>
-
-<!-- A -->
-
-    <entry keyword="Active Build Configuration">
-       <topic href="html/concepts/build_configurations.htm"/>
-    </entry>
-
-    <entry keyword="AIF">
-		<topic label="editor"	href="html/reference/AIFEditor.html"/>
-    	<topic label="file"		href="html/concepts/AIFDefWizard.html"/>
-	</entry>
-
-    <entry keyword="ARM registers">
-       <topic href="html/concepts/arm_registers.htm"/>
-	</entry>
-
-    <entry keyword="Attaching to a Symbian OS Process ">
-	   <topic href="html/tasks/processes/attach_debugger_to_process.htm" label="Attaching debugger to Symbian OS Process"/>
-	</entry>
-
-<!-- B -->
-
-	<entry keyword="Bitmaps (Importing)">
-	   <topic href="html/reference/wnd_import_bitmaps.htm"/>
-	</entry>
-
-	<entry keyword="Bluetooth setup">
-	   <topic href="html/tasks/trk/trk_connection_bluetooth.htm" label="TRK"/>
-	</entry>
-	
-    <entry keyword="Breakpoints">
-       <topic href="html/concepts/breakpoints.htm"/>
-    </entry>
-
-	<entry keyword="breakpoints">
-	   <topic href="html/tasks/breakpoints/pgm_bp_disable.htm" label="Disabling"/>
-	   <topic href="html/tasks/breakpoints/pgm_bp_enable.htm" label="Enabling"/>
-	   <topic href="html/tasks/breakpoints/pgm_bp_exporting.htm" label="Export Breakpoints"/>	   
-	   <topic href="html/tasks/breakpoints/pgm_bp_importing.htm" label="Import Breakpoints"/>
-	   <topic href="html/tasks/breakpoints/pgm_bp_clearing.htm" label="Removing"/>
-	   <topic href="html/tasks/breakpoints/save_breakpoints_view.htm" label="Saving Contents of Breakpoints View"/>
-	   <topic href="html/tasks/breakpoints/pgm_bp_setting.htm" label="Setting"/>
-	   <topic href="html/tasks/breakpoints/pgm_bp_conditional.htm" label="Setting Conditional Breakpoints or Watchpoints"/>
-	   <topic href="html/tasks/breakpoints/show_breakpoints_view.htm" label="Show list of Breakpoints"/>
-	   <topic href="html/tasks/breakpoints/pgm_bp_temporary.htm" label="Temporary Breakpoints"/>
-	   <topic href="html/tasks/breakpoints/pgm_bp_view_props.htm" label="Viewing Properties"/>
-	</entry>
-
-	<!--
-    <entry keyword="Breakpoint templates">
-       <topic href="html/concepts/working_with_bp_templates.htm"/>
-    </entry>
-	-->
-	
-	<entry keyword="Breakpoints view">
-	   <topic href="html/reference/view_breakpoints.htm"/>
-	</entry>
-
-	<entry keyword="Build preference panel">
-	   <topic href="html/reference/wnd_build_prefs.htm"/>
-	</entry>
-
-    <entry keyword="Build All Targets">
-       <topic href="html/reference/menus/build_all_targets.htm"/>
-    </entry>
-
-    <entry keyword="Build Target Only">
-		<topic href="html/reference/menus/build_target.htm" />
-    </entry>
-
-	<entry keyword="build configuration">
-	   <topic href="html/concepts/build_configurations.htm" />
-	   <topic href="html/tasks/projects/prj_new_build_config.htm" />
-	   <topic href="html/tasks/projects/prj_set_build_tgt.htm" />
-	</entry>
-
-    <entry keyword="Build PKG File">
-       <topic href="html/reference/menus/build_pkg_file.htm"/>
-    </entry>
-
-    <entry keyword="Build Symbian Component">
-       <topic href="html/reference/menus/build_symbian_comp.htm"/>
-    </entry>
-
-    <entry keyword="Build Targets">
-       <topic href="html/concepts/build_targets.htm"/>
-    </entry>
-
-	<entry keyword="Building Projects">
-	   <topic href="html/tasks/projects/prj_build.htm"/>
-	</entry>
-
-<!-- C -->
-
-	<entry keyword="Carbide.c++ News View">
-		<topic href="html/reference/view_carbide_news.htm" />
-		<topic href="html/reference/prefs_carbide_news.htm" />
-	</entry>
-
-	<entry keyword="C/C++ Projects View">
-	   <topic href="html/reference/view_cpp_projects.htm"/>
-	</entry>
-
-	<entry keyword="Carbide">
-       <topic label="build configurations"		href="html/reference/build_properties/pane_build_config.htm"/>
-       <topic label="project settings"			href="html/reference/build_properties/pane_project_settings.htm"/>
-	</entry>
-
-
-	<entry keyword="Carbide.c++ Debugger">
-	   <topic href="html/concepts/debugger_about.htm"/>
-	</entry>
-
-	<entry keyword="Carbide.c++ Perspective">
-	   <topic href="html/concepts/SymbianPerspective.html"/>
-	</entry>
-
-	<entry keyword="clean">
-	   <topic href="html/reference/wnd_build_prefs.htm"/>
-	   <topic href="html/tasks/projects/prj_clean.htm"/>
-       <topic href="html/reference/menus/clean_symbian_comp.htm"/>
-	</entry>
-
-
-	<entry keyword="Command-Line Tools">
-	   <topic href="html/tasks/projects/prj_build_cmd_line.htm"/>
-	</entry>
-
-	<entry keyword="Common Debugging Actions">
-	   <topic href="html/concepts/common_debug_actions.htm"/>
-	</entry>
-
-	<entry keyword="Compile Source">
-	   <topic href="html/reference/menus/compile_source.htm"/>
-	</entry>
-
-	<entry keyword="Concurrent Versions System">
-	   <topic href="html/concepts/cvs.htm"/>
-	</entry>
-
-	<entry keyword="Connection Pane">
-	   <topic href="html/reference/trk/panel_trk_connection.htm"/>
-	</entry>
-
-	<entry keyword="Console View">
-	   <topic href="html/reference/view_log.htm"/>
-	</entry>
-
-	<entry keyword="Context Menus">
-	   <topic href="html/concepts/contextual_menus.htm"/>
-	</entry>
-
-	<entry keyword="concurrent builds">
-	   <topic href="html/reference/wnd_build_prefs.htm"/>
-	</entry>
-
-	<entry keyword="Controlling Program Execution">
-	   <topic href="html/concepts/working_with_programs.htm"/>
-	</entry>
-
-	<entry keyword="creating">
-       <topic label="AIF files"		href="html/tasks/AppInfoFile.html" />
-       <topic label="MBM files"		href="html/tasks/Multi-BitmapFile.html" />
-	   <topic label="projects"		href="html/tasks/CreatingNewProjects.html"/>
-       <topic label="SIS files"		href="html/tasks/projects/prj_creating_sis_file.htm"/>
-       <topic href="html/qt_help/qt_creating_projs_01.htm"/>
-	</entry>
-
-
-<!-- D -->
-	
-	<!--
-	<entry keyword="Data Viewer Plug-ins">
-	   <topic href="html/concepts/data_viewer_plugins.htm"/>
-	</entry>
-	-->
-	
-	<entry keyword="Debug Preferences">
-	   <topic href="html/reference/wnd_debugger_prefs.htm"/>
-	</entry>
-
-	<entry keyword="debugger">
-	   <topic href="html/concepts/working_with_data.htm" label="Working with Debugger Data"/>
-	   <topic href="html/reference/launch_configs/emulator_debugger.htm" />
-	   <topic href="html/reference/launch_configs/page_trk_debugger.htm"/>
-	   <topic href="html/reference/debugger_settings.htm" label="Debugger Settings"/>
-	</entry>
-	
-	<entry keyword="debugging">
-	   <topic label="Debugging a Program" href="html/tasks/debugger/work_debug_act_debug.htm" />
-	   <topic label="Debugging Applications" href="html/tasks/projects/prj_debug_console.htm" />
-	   <topic href="html/tasks/projects/prj_debug_dlls.htm"/>
-	   <topic label="Debugging Multiple Projects" href="html/tasks/projects/prj_debug_multiple_projects.htm" />
-	   <topic href="html/tasks/start/carbide_debugging.htm" />
-	</entry>
-
-    <entry keyword="Debugging in ROM">
-       <topic href="html/tasks/projects/prj_debug_rom.htm"/>
-	</entry>
-
-	<entry keyword="debug agent">
-	   <topic href="html/concepts/trk.htm"/>
-	   <topic href="html/tasks/trk/trk_overview.htm"/>
-	   <topic href="html/tasks/trk/trk_install_pcsuite.htm"/>
-	   <topic href="html/tasks/trk/trk_install_bluetooth.htm"/>
-	   <topic href="html/tasks/trk/trk_install_usb.htm"/>
-	</entry>
-
-	<entry keyword="Debug Perspective">
-	   <topic href="html/reference/perspective_debug.htm"/>
-	</entry>
-
-	<entry keyword="Debug view">
-	   <topic href="html/reference/view_debug.htm"/>
-	</entry>
-
-	<entry keyword="Debug window">
-	   <topic href="html/reference/wnd_debug_configuration.htm"/>
-	   <topic href="html/concepts/launch_configuration.htm"/>
-	   <topic href="html/tasks/projects/wiz_new_launch_config.htm"/>
-	</entry>
-
-	<entry keyword="dependency tracking">
-	   <topic href="html/reference/wnd_build_prefs.htm"/>
-	</entry>
-
-	<entry keyword="Disassembly view">
-	   <topic href="html/reference/view_disassembly.htm"/>
-	</entry>
-
-	<entry keyword="DLL">
-	   <topic href="html/tasks/projects/prj_debug_dlls.htm"/>
-	   <topic href="html/concepts/SampleExampleProjectCreate.html"/>
-	   <topic label="example" 		href="html/concepts/SampleExampleProjectCreate.html"/>
-	</entry>	
-
-<!-- E -->
-
-	<entry keyword="emulator">
-	   <topic href="html/concepts/emulators.htm"/>
-	   <topic href="html/reference/wnd_build_prefs.htm"/>
-	</entry>	
-
-    <entry keyword="Environment variables">
-       <topic href="html/reference/build_properties/pane_build_config_env.htm"/>
-	</entry>
-
-	<entry keyword="Executables">
-	   <topic href="html/reference/trk/panel_trk_exes.htm"/>
-	</entry>
-
-	<entry keyword="External Build">
-	   <topic href="html/concepts/ext_build_support.htm"/>
-	</entry>
-
-	<entry keyword="Expressions">
-	   <topic href="html/tasks/expressions/expr_adding.htm" label="Adding"/>
-	   <topic href="html/tasks/expressions/expr_editing.htm" label="Editing"/>
-	   <topic href="html/tasks/expressions/expr_removing.htm" label="Removing"/>
-	</entry>
-
-	<entry keyword="Expressions view">
-	   <topic href="html/reference/view_expressions.htm"/>
-	</entry>
-
-	<entry keyword="Executables view">
-	   <topic href="html/reference/view_executables.htm"/>
-	</entry>
-
-
-<!-- F -->
-
-	<entry keyword="File Transfer Pane">
-	   <topic href="html/reference/trk/panel_trk_file_transfer.htm"/>
-	</entry>
-
-	<entry keyword="FPU Registers">
-	   <topic href="html/concepts/fpu_registers.htm"/>
-	</entry>
-
-	<entry keyword="Freezing DLL Projects">
-	   <topic href="html/tasks/projects/prj_freeze_def_file.htm"/>
-	</entry>
-
-<!-- G -->
-
-	<entry keyword="General Registers">
-	   <topic href="html/concepts/general_registers.htm"/>
-	</entry>
-
-	<entry keyword="Global Variables Window">
-	   <topic href="html/reference/view_global_variables.htm"/>
-	</entry>
-
-<!-- H -->
-
-	<entry keyword="HelloCarbide">
-	   <topic href="html/tasks/start/carbide_example.htm" label="First Application Example"/>
-	   <topic href="html/tasks/start/carbide_example_trk.htm" label="On-Device Run Mode Example"/>
-	</entry>
-
-	<entry keyword="Hints and Tips">
-	   <topic href="html/hints_tips.htm"/>
-	</entry>
-
-	<entry keyword="Host Registers">
-	   <topic href="html/concepts/host_registers.htm"/>
-	</entry>
-
-<!-- I -->
-
-	<entry keyword="Importing">
-	   <topic href="html/tasks/ImportingProjects.html"/>
-	   <topic href="html/tasks/projects/prj_import_exe.htm"/>
-       <topic href="html/qt_help/qt_importing_projs_01.htm"/>
-	</entry>
-
-	<entry keyword="INF Editor">
-	   <topic href="html/reference/INF_Editor.html" />
-	   <topic href="html/reference/INF_Editor_exports.html" />
-	   <topic href="html/reference/INF_Editor_file.html" />
-	   <topic href="html/reference/INF_Editor_addedit_make.html" />
-	   <topic href="html/reference/INF_Editor_addedit_mmp.html" />
-	</entry>
-
-	<entry keyword="installation">
-	   <topic href="html/tasks/start/carbide_install.htm"/>
-	   <topic href="html/tasks/trk/trk_install_pcsuite.htm"/>
-	   <topic href="html/tasks/trk/trk_install_bluetooth.htm"/>
-	   <topic href="html/tasks/trk/trk_install_usb.htm"/>
-	</entry>
-
-	<entry keyword="Installation Pane">
-	   <topic href="html/reference/trk/panel_trk_installation.htm"/>
-	</entry>
-
-	<entry keyword="Installing On-device Debug Agents">
-	   <topic href="html/tasks/trk/trk_installation_instr.htm" label="Overview"/>
-	   <topic href="html/tasks/trk/trk_install_bluetooth.htm" label="Bluetooth"/>
-	   <topic href="html/tasks/trk/trk_install_usb.htm" label="USB"/>
-	</entry>
-
-<!-- J -->
-<!-- K -->
-<!-- L -->
-
-	<entry keyword="Launch Configuration">
-	   <topic href="html/concepts/launch_configuration.htm" label="Overview"/>
-	   <topic href="html/tasks/trk/trk_carbide_setup.htm" label="TRK Setup"/>
-	   <topic href="html/tasks/projects/prj_debug_config.htm" label="Creating"/>
-	</entry>
-
-	<entry keyword="Launch Configuration Filter">
-	   <topic href="html/reference/trk/panel_filter.htm"/>
-	</entry>
-
-	<entry keyword="Leavescan">
-	   <topic href="html/reference/leavescan_pref.html"/>
-	</entry>
-
-	<entry keyword="Leavescan Menu Command">
-	   <topic href="html/reference/menus/run_leavescan.htm"/>
-	</entry>
-
-	<entry keyword="License">
-	   <topic href="html/license.htm" label="Carbide Licenses"/>
-	</entry>
-
-	<entry keyword="License Information">
-	   <topic href="html/legal.htm"/>
-	</entry>
-
-<!-- M -->
-
-	<entry keyword="Main pane">
-	   <topic href="html/reference/launch_configs/emulator_main.htm"/>
-	   <topic href="html/reference/launch_configs/page_trk_main.htm"/>
-	</entry>
-
-	<entry keyword="MBM Editor">
-       <topic href="html/reference/MBMEditor.html"/>
-	</entry>
-
-	<entry keyword="MBM File">
-       <topic href="html/concepts/MBMDefWizard.html"/>
-	</entry>
-
-	<entry keyword="memory">
-	   <topic href="html/concepts/working_with_memory.htm" />
-	   <topic href="html/tasks/memory/memory_monitor_adding.htm" label="Adding memory monitor"/>
-	   <topic href="html/tasks/memory/memory_monitor_removing.htm" label="Removing memory monitor"/>
-	   <topic href="html/tasks/memory/memory_rendering_adding.htm" label="Adding memory rendering pane"/>
-	   <topic href="html/tasks/memory/view_memory_show.htm" label="Opening memory view"/>
-	</entry>
-
-	<entry keyword="Memory Rendering Options">
-	   <topic href="html/reference/memory_rendering_options.htm"/>
-	</entry>
-
-	<entry keyword="Memory view">
-	   <topic href="html/reference/view_memory_wnd.htm"/>
-	</entry>
-
-	<entry keyword="menus">
-	   <topic href="html/reference/menus/new_symbian_class.htm" />
-	   <topic label="Symbian OS C++ Project" href="html/reference/menus/new_symbian_project.htm" />
-	   <topic href="html/reference/menus/open_cmd_window.htm" />
-	   <topic href="html/reference/menus/open_explorer_window.htm" />
-	   <topic href="html/reference/menus/s60_ui_designer.htm"/>
-		<topic href="html/reference/menus/run_codescanner.htm" />
-
-		<topic href="html/tasks/projects/prj_preprocess.htm" />
-
-		<topic href="html/tasks/projects/prj_build.htm" />
-		<topic href="html/tasks/projects/prj_clean.htm" />
-	
-		<topic href="html/reference/menus/build_all_targets.htm" />
-		<topic href="html/reference/menus/compile_source.htm" />		
-	
-		<topic href="html/reference/menus/build_symbian_comp.htm" />
-		<topic href="html/reference/menus/clean_symbian_comp.htm" />
-		<topic href="html/reference/menus/freeze_symbian_comp.htm" />
-	
-		<topic href="html/reference/menus/build_pkg_file.htm" />
-		<topic href="html/reference/ROM_build_settings.html" />
-
-   		<topic href="html/reference/menus/freeze_exports.htm" />
-	</entry>
-
-
-	<entry keyword="MIF Editor">
-	   <topic href="html/reference/view_mifdef_editor.htm"/>
-	</entry>
-
-	<entry keyword="MMP Editor">
-	   <topic href="html/reference/MMP_Editor.html" label="MMP Editor" />
-	   <topic href="html/reference/MMP_Editor_sources.html" label="Sources tab"/>
-	   <topic href="html/reference/MMP_Editor_libraries.html" label="Libraries tab"/>
-	   <topic href="html/reference/MMP_Editor_options.html" label="Options tab"/>
-	   <topic href="html/reference/MMP_Editor_mmp_tab.html" label="MMP File tab"/>
-	   <topic href="html/reference/MMP_Editor_resource_block.html" label="Resource Block"/>
-	</entry>
-	
-	<entry keyword="MMP Files">
-	   <topic href="html/concepts/mmpfiles.htm"/>
-	</entry>
-
-	<entry keyword="MMP Wizard">
-	   <topic href="html/reference/NewMMP_wizard.html"/>
-	</entry>
-
-	<entry keyword="Modify">
-	   <topic href="html/concepts/Modify.html"/>
-	</entry>
-
-	<entry keyword="Modifying Resources">
-	   <topic href="html/tasks/ModifyingResources.html"/>
-	</entry>
-
-	<entry keyword="Modules View">
-	   <topic href="html/reference/view_module_wnd.htm"/>
-	</entry>
-
-	<entry keyword="Multi-core Debugging">
-	   <topic href="html/concepts/work_mcore_debug.htm"/>
-	</entry>
-
-<!-- N -->
-<!-- O -->
-
-   <entry keyword="On-device Connections">
-   		<topic href="html/reference/trk/wnd_new_connection_wizard.htm" />
-     	<topic href="html/reference/trk/view_remote_connection.htm" />
-		<topic href="html/reference/trk/wnd_new_conn_wiz_edit.htm"/>
-  		<topic href="html/reference/trk/exporting_remote_conns.htm" />
-	</entry>
-
-<!-- P -->
-
-	<entry keyword=".pkg file symbols">
-	   <topic href="html/concepts/symbols_pkg.htm"/>
-	</entry>
-
-	<entry keyword="PKG and SIS Files">
-	   <topic href="html/tasks/projects/working_with_sis_pkg_files.htm"/>
-	</entry>
-
-    <entry keyword="Platform Filtering Preferences">
-        <topic href="html/tasks/sdks/sdk_platform_filter.htm"/>
-    </entry>
-
-    <entry keyword="preferences">
-		<topic href="html/reference/wnd_build_prefs.htm" />
-		<topic href="html/reference/wnd_debugger_prefs.htm" />
-		<topic href="html/reference/prefs_carbide_news.htm" />
-		<topic href="html/reference/leavescan_pref.html" />
-		<topic href="html/tasks/sdks/sdk_platform_filter.htm" />
-		<topic href="html/reference/SDKPreferences.html" />
-    </entry>
-
-	<entry keyword="Processes">
-	   <topic href="html/tasks/processes/attach_debugger_to_process.htm" label="Attaching debugger to Symbian OS Process"/>
-	</entry>
-
-    <entry keyword="Projects">
-       <topic href="html/concepts/Projects.html"/>
-       <topic href="html/qt_help/qt_creating_projs_01.htm"/>
-       <topic href="html/qt_help/qt_importing_projs_01.htm"/>
-	</entry>
-
-    <entry keyword="Project and File Properties">
-	   <topic href="html/reference/ProjectPreferences.html"/>
-	</entry>
-
-	<entry keyword="Project Dependencies">
-	   <topic href="html/tasks/projects/prj_build_multi_projects.htm"/>
-	</entry>
-
-    <entry keyword="Project Updater">
-	   <topic href="html/reference/olderproject_updater.html"/>
-	</entry>
-
-
-<!-- Q -->
-
-    <entry keyword="Qt">
-       <topic href="html/qt_help/qt_creating_projs_01.htm"/>
-       <topic href="html/qt_help/qt_importing_projs_01.htm"/>
-       <topic href="html/qt_help/qt_perspectives.htm"/>
-       <topic href="html/qt_help/qt_pref_panel.htm"/>
-       <topic href="html/qt_help/qt_project_properties.htm"/>
-	</entry>
-
-<!-- R -->
-
-	<entry keyword="register">
-	   <topic href="html/tasks/start/carbide_register.htm"/>
-	</entry>
-
-	<entry keyword="registers">
-	   <topic href="html/concepts/registers.htm" label="Overview"/>
-	   <topic href="html/tasks/registers/mem_reg_changing.htm" label="Changing Values"/>
-	   <topic href="html/tasks/registers/mem_reg_data_views.htm" label="Changing Data Views"/>
-	   <topic href="html/tasks/registers/mem_reg_open_wnd.htm" label="Opening Registers View"/>
-	   <topic href="html/tasks/registers/mem_reg_viewing.htm" label="Expanding Groups"/>
-	</entry>
-
-	<entry keyword="Registers Details Window">
-	   <topic href="html/reference/view_reg_details.htm"/>
-	</entry>
-
-	<entry keyword="Registers View">
-	   <topic href="html/reference/view_registers.htm"/>
-	</entry>
-
-	<entry keyword="Restarting Debugger">
-	   <topic href="html/tasks/debugger/work_debug_act_restart.htm"/>
-	</entry>
-
-	<entry keyword="Resuming Program Execution">
-	   <topic href="html/tasks/debugger/work_debug_act_resume.htm"/>
-	</entry>
-
-	<entry keyword="Requirements">
-	   <topic href="html/tasks/start/carbide_requirements.htm"/>
-	</entry>
-
-	<entry keyword="ROM Build Settings">
-	   <topic href="html/reference/ROM_build_settings.html"/>
-	</entry>
-
-	<entry keyword="Running a Program">
-	   <topic href="html/tasks/debugger/work_debug_act_run.htm"/>
-	</entry>
-
-<!-- S -->
-
-	<entry keyword="SDKs">
-	   <topic href="html/tasks/sdks/sdk_add.htm" />
-	   <topic href="html/tasks/sdks/sdk_add_custkits.htm" label="Adding Symbian Custom Kits"/>
-	   <topic href="html/tasks/sdks/sdk_search.htm" label="Searching"/>
-	   <topic href="html/tasks/sdks/sdk_view_properties.htm" label="Viewing Properties"/>
-       <topic href="html/qt_help/qt_pref_panel.htm"/>
-	</entry>
-
-	<entry keyword="SDK Preferences">
-	   <topic href="html/reference/SDKPreferences.html"/>
-       <topic href="html/qt_help/qt_pref_panel.htm"/>
-	</entry>
-
-	<entry keyword="SDK Support">
-	   <topic href="html/concepts/SDKSupport.html"/>
-	   <topic href="html/tasks/AddinganSDK.html" />
-	   <topic href="html/tasks/WorkingwithSDKs.html"/>
-	   <topic href="html/tasks/RmvngandVwngPropsosSDK.html" label="Viewing and Editing SDK Properties"/>
-	</entry>
-
-	<entry keyword="SIS File">
-	   <topic href="html/tasks/start/carbide_deploying.htm" label="Uploading"/>
-	</entry>
-
-	<entry keyword="Sophia Target Interface Stop Mode Debugging">
-	   <topic href="html/reference/wnd_sophia_config.htm"/>
-	</entry>
-
-	<entry keyword="Starting the Debugger">
-	   <topic href="html/tasks/debugger/work_debug_act_start.htm"/>
-	</entry>
-
-	<entry keyword="Step Into">
-	   <topic href="html/tasks/debugger/work_debug_act_stepinto.htm"/>
-	</entry>
-
-	<entry keyword="Step Over">
-	   <topic href="html/tasks/debugger/work_debug_act_stepover.htm"/>
-	</entry>
-
-	<entry keyword="Step Return">
-	   <topic href="html/tasks/debugger/work_debug_act_stepout.htm"/>
-	</entry>
-
-	<entry keyword="Stop Debug Session">
-	   <topic href="html/tasks/debugger/work_debug_act_stop.htm"/>
-	</entry>
-
-	<entry keyword="Stop Mode Debugging">
-	   <topic href="html/tasks/debugger/stop_mode_debug_precond.htm" label="Stop Mode Debugging"/>
-	</entry>
-
-	<entry keyword="Symbian OS Classes">
-	   <topic href="html/tasks/projects/prj_adding_symbian_class.htm" label="Adding"/>
-	</entry>
-
-	<entry keyword="Symbian OS Data View">
-	   <topic href="html/reference/view_symbian_kernel.htm"/>
-	   <topic href="html/tasks/debugger/view_symbian_kernel_set.htm" />
-	</entry>
-
-    <entry keyword="Symbian OS SDKs">
-	   <topic href="html/reference/ProjectTypeandSDK.html"/>
-	</entry>
-
-    <entry keyword="Symbian Project Navigator">
-       <topic href="html/reference/view_sym_proj_nav.htm"/>
-    </entry>
-   
-	<entry keyword="Symbol Hint">
-	   <topic href="html/concepts/symbol_hints.htm"/>
-	</entry>
-
-	<entry keyword="Symbolics Files">
-	   <topic href="html/concepts/symbolic_files_about.htm"/>
-	</entry>
-
-	<entry keyword="System Browser View">
-	   <topic href="html/reference/view_system_browser.htm"/>
-	</entry>
-
-<!-- T -->
-
-	<entry keyword="templates">
-	   <topic href="html/concepts/templates.htm"/>
-	</entry>
-
-	<entry keyword="Terminate Program">
-	   <topic href="html/tasks/debugger/work_debug_act_kill.htm"/>
-	</entry>
-
-	<entry keyword="test components">
-	   <topic href="html/reference/wnd_build_prefs.htm"/>
-	</entry>
-
-	<entry keyword="Thread Breakpoint">
-	   <topic href="html/concepts/thread_cond_breakpoints.htm"/>
-	</entry>
-
-	<entry keyword="Trace32 Interface for Stop Mode Debugging">
-	   <topic href="html/reference/wnd_Trace32_config.htm"/>
-	</entry>
-
-	<entry keyword="TRK" >
-		<topic href="html/concepts/trk.htm"/>
-		<topic href="html/tasks/trk/trk_overview.htm"/>
-		<topic href="html/tasks/trk/trk_carbide_setup.htm" />
-		<topic href="html/tasks/start/carbide_example_trk.htm" />
-		<topic href="html/tasks/debugger/stop_mode_debug.htm" />
-	</entry>
-	
-
-	<entry keyword="TRK Pane">
-	   <topic href="html/reference/trk/panel_trk_overview.htm"/>
-	</entry>
-
-<!-- U -->
-
-	<entry keyword="updating">
-	   <topic label="Carbide.c++"	href="html/tasks/start/carbide_updating.htm"/>
-	   <topic label="projects"		href="html/reference/olderproject_updater.html"/>
-	</entry>
-
-	<entry keyword="USB setup">
-	   <topic href="html/tasks/trk/trk_connection_usb.htm" label="TRK"/>
-	</entry>
-
-<!-- V -->
-
-	<entry keyword="variables">
-	   <topic href="html/concepts/working_with_variables.htm" />
-	   <topic href="html/tasks/variables/set_variable_formats.htm" />
-	   <topic href="html/tasks/variables/show_global_variables.htm" />
-	   <topic href="html/tasks/variables/show_variables_view.htm" />
-	</entry>
-
-	<entry keyword="Variables view">
-	   <topic href="html/reference/view_variables.htm"/>
-	</entry>
-
-	<entry keyword="views">
-		<topic href="html/reference/view_breakpoints.htm" />
-		<topic href="html/reference/view_log.htm" />
-		<topic href="html/reference/view_carbide_news.htm" />
-		<topic href="html/reference/view_debug.htm" />
-		<topic href="html/reference/view_disassembly.htm" />
-		<topic href="html/reference/view_executables.htm" />
-		<topic href="html/reference/view_expressions.htm" />
-		<topic href="html/reference/view_memory_wnd.htm" />
-		<topic href="html/reference/view_module_wnd.htm" />
-	    <topic href="html/concepts/registers.htm" />
-	    <topic href="html/reference/view_symbian_kernel.htm" />
-	    <topic href="html/reference/view_variables.htm" />
-	</entry>
-
-
-<!-- W -->
-
-	<entry keyword="watchpoints">
-	   <topic label="Watchpoints" href="html/tasks/watchpoints/pgm_watchpoints.htm" />
-	   <topic href="html/tasks/watchpoints/pgm_wpt_clearing.htm" />
-	   <topic href="html/tasks/watchpoints/pgm_wpt_conditional.htm" />
-	   <topic href="html/tasks/watchpoints/pgm_wpt_disable.htm" />
-	   <topic href="html/tasks/watchpoints/pgm_wpt_enable.htm" />
-	   <topic href="html/tasks/watchpoints/pgm_wpt_setting.htm" />
-	   <topic href="html/tasks/watchpoints/pgm_wpt_view_props.htm" />
-	</entry>
-
-    <entry keyword="workspaces">
-	   <topic href="html/concepts/workspaces.htm"/>
-	</entry>
-
-<!-- X -->
-
-	<entry keyword="x86 Exceptions Pane">
-	   <topic href="html/reference/launch_config/emulator_exceptions.htm"/>
-	</entry>
-
-<!-- Y -->
-<!-- Z -->
-</index>
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.index"?>
+<index>
+
+<!-- A -->
+
+    <entry keyword="Active Build Configuration">
+       <topic href="html/concepts/build_configurations.htm"/>
+    </entry>
+
+    <entry keyword="AIF">
+		<topic label="editor"	href="html/reference/AIFEditor.html"/>
+    	<topic label="file"		href="html/concepts/AIFDefWizard.html"/>
+	</entry>
+
+    <entry keyword="ARM registers">
+       <topic href="html/concepts/arm_registers.htm"/>
+	</entry>
+
+    <entry keyword="Attaching to a Symbian OS Process ">
+	   <topic href="html/tasks/processes/attach_debugger_to_process.htm" label="Attaching debugger to Symbian OS Process"/>
+	</entry>
+
+<!-- B -->
+
+	<entry keyword="Bitmaps (Importing)">
+	   <topic href="html/reference/wnd_import_bitmaps.htm"/>
+	</entry>
+
+	<entry keyword="Bluetooth setup">
+	   <topic href="html/tasks/trk/trk_connection_bluetooth.htm" label="TRK"/>
+	</entry>
+	
+    <entry keyword="Breakpoints">
+       <topic href="html/concepts/breakpoints.htm"/>
+    </entry>
+
+	<entry keyword="breakpoints">
+	   <topic href="html/tasks/breakpoints/pgm_bp_disable.htm" label="Disabling"/>
+	   <topic href="html/tasks/breakpoints/pgm_bp_enable.htm" label="Enabling"/>
+	   <topic href="html/tasks/breakpoints/pgm_bp_exporting.htm" label="Export Breakpoints"/>	   
+	   <topic href="html/tasks/breakpoints/pgm_bp_importing.htm" label="Import Breakpoints"/>
+	   <topic href="html/tasks/breakpoints/pgm_bp_clearing.htm" label="Removing"/>
+	   <topic href="html/tasks/breakpoints/save_breakpoints_view.htm" label="Saving Contents of Breakpoints View"/>
+	   <topic href="html/tasks/breakpoints/pgm_bp_setting.htm" label="Setting"/>
+	   <topic href="html/tasks/breakpoints/pgm_bp_conditional.htm" label="Setting Conditional Breakpoints or Watchpoints"/>
+	   <topic href="html/tasks/breakpoints/show_breakpoints_view.htm" label="Show list of Breakpoints"/>
+	   <topic href="html/tasks/breakpoints/pgm_bp_temporary.htm" label="Temporary Breakpoints"/>
+	   <topic href="html/tasks/breakpoints/pgm_bp_view_props.htm" label="Viewing Properties"/>
+	</entry>
+
+	<!--
+    <entry keyword="Breakpoint templates">
+       <topic href="html/concepts/working_with_bp_templates.htm"/>
+    </entry>
+	-->
+	
+	<entry keyword="Breakpoints view">
+	   <topic href="html/reference/view_breakpoints.htm"/>
+	</entry>
+
+	<entry keyword="Build preference panel">
+	   <topic href="html/reference/wnd_build_prefs.htm"/>
+	</entry>
+
+    <entry keyword="Build All Targets">
+       <topic href="html/reference/menus/build_all_targets.htm"/>
+    </entry>
+
+    <entry keyword="Build Target Only">
+		<topic href="html/reference/menus/build_target.htm" />
+    </entry>
+
+	<entry keyword="build configuration">
+	   <topic href="html/concepts/build_configurations.htm" />
+	   <topic href="html/tasks/projects/prj_new_build_config.htm" />
+	   <topic href="html/tasks/projects/prj_set_build_tgt.htm" />
+	</entry>
+
+    <entry keyword="Build PKG File">
+       <topic href="html/reference/menus/build_pkg_file.htm"/>
+    </entry>
+
+    <entry keyword="Build Symbian Component">
+       <topic href="html/reference/menus/build_symbian_comp.htm"/>
+    </entry>
+
+    <entry keyword="Build Targets">
+       <topic href="html/concepts/build_targets.htm"/>
+    </entry>
+
+	<entry keyword="Building Projects">
+	   <topic href="html/tasks/projects/prj_build.htm"/>
+	</entry>
+
+<!-- C -->
+
+	<entry keyword="Carbide.c++ News View">
+		<topic href="html/reference/view_carbide_news.htm" />
+		<topic href="html/reference/prefs_carbide_news.htm" />
+	</entry>
+
+	<entry keyword="C/C++ Projects View">
+	   <topic href="html/reference/view_cpp_projects.htm"/>
+	</entry>
+
+	<entry keyword="Carbide">
+       <topic label="build configurations"		href="html/reference/build_properties/pane_build_config.htm"/>
+       <topic label="project settings"			href="html/reference/build_properties/pane_project_settings.htm"/>
+	</entry>
+
+
+	<entry keyword="Carbide.c++ Debugger">
+	   <topic href="html/concepts/debugger_about.htm"/>
+	</entry>
+
+	<entry keyword="Carbide.c++ Perspective">
+	   <topic href="html/concepts/SymbianPerspective.html"/>
+	</entry>
+
+	<entry keyword="clean">
+	   <topic href="html/reference/wnd_build_prefs.htm"/>
+	   <topic href="html/tasks/projects/prj_clean.htm"/>
+       <topic href="html/reference/menus/clean_symbian_comp.htm"/>
+	</entry>
+
+
+	<entry keyword="Command-Line Tools">
+	   <topic href="html/tasks/projects/prj_build_cmd_line.htm"/>
+	</entry>
+
+	<entry keyword="Common Debugging Actions">
+	   <topic href="html/concepts/common_debug_actions.htm"/>
+	</entry>
+
+	<entry keyword="Compile Source">
+	   <topic href="html/reference/menus/compile_source.htm"/>
+	</entry>
+
+	<entry keyword="Concurrent Versions System">
+	   <topic href="html/concepts/cvs.htm"/>
+	</entry>
+
+	<entry keyword="Connection Pane">
+	   <topic href="html/reference/trk/panel_trk_connection.htm"/>
+	</entry>
+
+	<entry keyword="Console View">
+	   <topic href="html/reference/view_log.htm"/>
+	</entry>
+
+	<entry keyword="Context Menus">
+	   <topic href="html/concepts/contextual_menus.htm"/>
+	</entry>
+
+	<entry keyword="concurrent builds">
+	   <topic href="html/reference/wnd_build_prefs.htm"/>
+	</entry>
+
+	<entry keyword="Controlling Program Execution">
+	   <topic href="html/concepts/working_with_programs.htm"/>
+	</entry>
+
+	<entry keyword="creating">
+       <topic label="AIF files"		href="html/tasks/AppInfoFile.html" />
+       <topic label="MBM files"		href="html/tasks/Multi-BitmapFile.html" />
+	   <topic label="projects"		href="html/tasks/CreatingNewProjects.html"/>
+       <topic label="SIS files"		href="html/tasks/projects/prj_creating_sis_file.htm"/>
+       <topic href="html/qt_help/qt_creating_projs_01.htm"/>
+	</entry>
+
+
+<!-- D -->
+	
+	<!--
+	<entry keyword="Data Viewer Plug-ins">
+	   <topic href="html/concepts/data_viewer_plugins.htm"/>
+	</entry>
+	-->
+	
+	<entry keyword="Debug Preferences">
+	   <topic href="html/reference/wnd_debugger_prefs.htm"/>
+	</entry>
+
+	<entry keyword="debugger">
+	   <topic href="html/concepts/working_with_data.htm" label="Working with Debugger Data"/>
+	   <topic href="html/reference/launch_configs/emulator_debugger.htm" />
+	   <topic href="html/reference/launch_configs/page_trk_debugger.htm"/>
+	   <topic href="html/reference/debugger_settings.htm" label="Debugger Settings"/>
+	</entry>
+	
+	<entry keyword="debugging">
+	   <topic label="Debugging a Program" href="html/tasks/debugger/work_debug_act_debug.htm" />
+	   <topic label="Debugging Applications" href="html/tasks/projects/prj_debug_console.htm" />
+	   <topic href="html/tasks/projects/prj_debug_dlls.htm"/>
+	   <topic label="Debugging Multiple Projects" href="html/tasks/projects/prj_debug_multiple_projects.htm" />
+	   <topic href="html/tasks/start/carbide_debugging.htm" />
+	</entry>
+
+    <entry keyword="Debugging in ROM">
+       <topic href="html/tasks/projects/prj_debug_rom.htm"/>
+	</entry>
+
+	<entry keyword="debug agent">
+	   <topic href="html/concepts/trk.htm"/>
+	   <topic href="html/tasks/trk/trk_overview.htm"/>
+	   <topic href="html/tasks/trk/trk_install_pcsuite.htm"/>
+	   <topic href="html/tasks/trk/trk_install_bluetooth.htm"/>
+	   <topic href="html/tasks/trk/trk_install_usb.htm"/>
+	</entry>
+
+	<entry keyword="Debug Perspective">
+	   <topic href="html/reference/perspective_debug.htm"/>
+	</entry>
+
+	<entry keyword="Debug view">
+	   <topic href="html/reference/view_debug.htm"/>
+	</entry>
+
+	<entry keyword="Debug window">
+	   <topic href="html/reference/wnd_debug_configuration.htm"/>
+	   <topic href="html/concepts/launch_configuration.htm"/>
+	   <topic href="html/tasks/projects/wiz_new_launch_config.htm"/>
+	</entry>
+
+	<entry keyword="dependency tracking">
+	   <topic href="html/reference/wnd_build_prefs.htm"/>
+	</entry>
+
+	<entry keyword="Disassembly view">
+	   <topic href="html/reference/view_disassembly.htm"/>
+	</entry>
+
+	<entry keyword="DLL">
+	   <topic href="html/tasks/projects/prj_debug_dlls.htm"/>
+	   <topic href="html/concepts/SampleExampleProjectCreate.html"/>
+	   <topic label="example" 		href="html/concepts/SampleExampleProjectCreate.html"/>
+	</entry>	
+
+<!-- E -->
+
+	<entry keyword="emulator">
+	   <topic href="html/concepts/emulators.htm"/>
+	   <topic href="html/reference/wnd_build_prefs.htm"/>
+	</entry>	
+
+    <entry keyword="Environment variables">
+       <topic href="html/reference/build_properties/pane_build_config_env.htm"/>
+	</entry>
+
+	<entry keyword="Executables">
+	   <topic href="html/reference/trk/panel_trk_exes.htm"/>
+	</entry>
+
+	<entry keyword="External Build">
+	   <topic href="html/concepts/ext_build_support.htm"/>
+	</entry>
+
+	<entry keyword="Expressions">
+	   <topic href="html/tasks/expressions/expr_adding.htm" label="Adding"/>
+	   <topic href="html/tasks/expressions/expr_editing.htm" label="Editing"/>
+	   <topic href="html/tasks/expressions/expr_removing.htm" label="Removing"/>
+	</entry>
+
+	<entry keyword="Expressions view">
+	   <topic href="html/reference/view_expressions.htm"/>
+	</entry>
+
+	<entry keyword="Executables view">
+	   <topic href="html/reference/view_executables.htm"/>
+	</entry>
+
+
+<!-- F -->
+
+	<entry keyword="File Transfer Pane">
+	   <topic href="html/reference/trk/panel_trk_file_transfer.htm"/>
+	</entry>
+
+	<entry keyword="FPU Registers">
+	   <topic href="html/concepts/fpu_registers.htm"/>
+	</entry>
+
+	<entry keyword="Freezing DLL Projects">
+	   <topic href="html/tasks/projects/prj_freeze_def_file.htm"/>
+	</entry>
+
+<!-- G -->
+
+	<entry keyword="General Registers">
+	   <topic href="html/concepts/general_registers.htm"/>
+	</entry>
+
+	<entry keyword="Global Variables Window">
+	   <topic href="html/reference/view_global_variables.htm"/>
+	</entry>
+
+<!-- H -->
+
+	<entry keyword="HelloCarbide">
+	   <topic href="html/tasks/start/carbide_example.htm" label="First Application Example"/>
+	   <topic href="html/tasks/start/carbide_example_trk.htm" label="On-Device Run Mode Example"/>
+	</entry>
+
+	<entry keyword="Hints and Tips">
+	   <topic href="html/hints_tips.htm"/>
+	</entry>
+
+	<entry keyword="Host Registers">
+	   <topic href="html/concepts/host_registers.htm"/>
+	</entry>
+
+<!-- I -->
+
+	<entry keyword="Importing">
+	   <topic href="html/tasks/ImportingProjects.html"/>
+	   <topic href="html/tasks/projects/prj_import_exe.htm"/>
+       <topic href="html/qt_help/qt_importing_projs_01.htm"/>
+	</entry>
+
+	<entry keyword="INF Editor">
+	   <topic href="html/reference/INF_Editor.html" />
+	   <topic href="html/reference/INF_Editor_exports.html" />
+	   <topic href="html/reference/INF_Editor_file.html" />
+	   <topic href="html/reference/INF_Editor_addedit_make.html" />
+	   <topic href="html/reference/INF_Editor_addedit_mmp.html" />
+	</entry>
+
+	<entry keyword="installation">
+	   <topic href="html/tasks/start/carbide_install.htm"/>
+	   <topic href="html/tasks/trk/trk_install_pcsuite.htm"/>
+	   <topic href="html/tasks/trk/trk_install_bluetooth.htm"/>
+	   <topic href="html/tasks/trk/trk_install_usb.htm"/>
+	</entry>
+
+	<entry keyword="Installation Pane">
+	   <topic href="html/reference/trk/panel_trk_installation.htm"/>
+	</entry>
+
+	<entry keyword="Installing On-device Debug Agents">
+	   <topic href="html/tasks/trk/trk_installation_instr.htm" label="Overview"/>
+	   <topic href="html/tasks/trk/trk_install_bluetooth.htm" label="Bluetooth"/>
+	   <topic href="html/tasks/trk/trk_install_usb.htm" label="USB"/>
+	</entry>
+
+<!-- J -->
+<!-- K -->
+<!-- L -->
+
+	<entry keyword="Launch Configuration">
+	   <topic href="html/concepts/launch_configuration.htm" label="Overview"/>
+	   <topic href="html/tasks/trk/trk_carbide_setup.htm" label="TRK Setup"/>
+	   <topic href="html/tasks/projects/prj_debug_config.htm" label="Creating"/>
+	</entry>
+
+	<entry keyword="Launch Configuration Filter">
+	   <topic href="html/reference/trk/panel_filter.htm"/>
+	</entry>
+
+	<entry keyword="Leavescan">
+	   <topic href="html/reference/leavescan_pref.html"/>
+	</entry>
+
+	<entry keyword="Leavescan Menu Command">
+	   <topic href="html/reference/menus/run_leavescan.htm"/>
+	</entry>
+
+	<entry keyword="License">
+	   <topic href="html/license.htm" label="Carbide Licenses"/>
+	</entry>
+
+	<entry keyword="License Information">
+	   <topic href="html/legal.htm"/>
+	</entry>
+
+<!-- M -->
+
+	<entry keyword="Main pane">
+	   <topic href="html/reference/launch_configs/emulator_main.htm"/>
+	   <topic href="html/reference/launch_configs/page_trk_main.htm"/>
+	</entry>
+
+	<entry keyword="MBM Editor">
+       <topic href="html/reference/MBMEditor.html"/>
+	</entry>
+
+	<entry keyword="MBM File">
+       <topic href="html/concepts/MBMDefWizard.html"/>
+	</entry>
+
+	<entry keyword="memory">
+	   <topic href="html/concepts/working_with_memory.htm" />
+	   <topic href="html/tasks/memory/memory_monitor_adding.htm" label="Adding memory monitor"/>
+	   <topic href="html/tasks/memory/memory_monitor_removing.htm" label="Removing memory monitor"/>
+	   <topic href="html/tasks/memory/memory_rendering_adding.htm" label="Adding memory rendering pane"/>
+	   <topic href="html/tasks/memory/view_memory_show.htm" label="Opening memory view"/>
+	</entry>
+
+	<entry keyword="Memory Rendering Options">
+	   <topic href="html/reference/memory_rendering_options.htm"/>
+	</entry>
+
+	<entry keyword="Memory view">
+	   <topic href="html/reference/view_memory_wnd.htm"/>
+	</entry>
+
+	<entry keyword="menus">
+	   <topic href="html/reference/menus/new_symbian_class.htm" />
+	   <topic label="Symbian OS C++ Project" href="html/reference/menus/new_symbian_project.htm" />
+	   <topic href="html/reference/menus/open_cmd_window.htm" />
+	   <topic href="html/reference/menus/open_explorer_window.htm" />
+	   <topic href="html/reference/menus/s60_ui_designer.htm"/>
+		<topic href="html/reference/menus/run_codescanner.htm" />
+
+		<topic href="html/tasks/projects/prj_preprocess.htm" />
+
+		<topic href="html/tasks/projects/prj_build.htm" />
+		<topic href="html/tasks/projects/prj_clean.htm" />
+	
+		<topic href="html/reference/menus/build_all_targets.htm" />
+		<topic href="html/reference/menus/compile_source.htm" />		
+	
+		<topic href="html/reference/menus/build_symbian_comp.htm" />
+		<topic href="html/reference/menus/clean_symbian_comp.htm" />
+		<topic href="html/reference/menus/freeze_symbian_comp.htm" />
+	
+		<topic href="html/reference/menus/build_pkg_file.htm" />
+		<topic href="html/reference/ROM_build_settings.html" />
+
+   		<topic href="html/reference/menus/freeze_exports.htm" />
+	</entry>
+
+
+	<entry keyword="MIF Editor">
+	   <topic href="html/reference/view_mifdef_editor.htm"/>
+	</entry>
+
+	<entry keyword="MMP Editor">
+	   <topic href="html/reference/MMP_Editor.html" label="MMP Editor" />
+	   <topic href="html/reference/MMP_Editor_sources.html" label="Sources tab"/>
+	   <topic href="html/reference/MMP_Editor_libraries.html" label="Libraries tab"/>
+	   <topic href="html/reference/MMP_Editor_options.html" label="Options tab"/>
+	   <topic href="html/reference/MMP_Editor_mmp_tab.html" label="MMP File tab"/>
+	   <topic href="html/reference/MMP_Editor_resource_block.html" label="Resource Block"/>
+	</entry>
+	
+	<entry keyword="MMP Files">
+	   <topic href="html/concepts/mmpfiles.htm"/>
+	</entry>
+
+	<entry keyword="MMP Wizard">
+	   <topic href="html/reference/NewMMP_wizard.html"/>
+	</entry>
+
+	<entry keyword="Modify">
+	   <topic href="html/concepts/Modify.html"/>
+	</entry>
+
+	<entry keyword="Modifying Resources">
+	   <topic href="html/tasks/ModifyingResources.html"/>
+	</entry>
+
+	<entry keyword="Modules View">
+	   <topic href="html/reference/view_module_wnd.htm"/>
+	</entry>
+
+	<entry keyword="Multi-core Debugging">
+	   <topic href="html/concepts/work_mcore_debug.htm"/>
+	</entry>
+
+<!-- N -->
+<!-- O -->
+
+   <entry keyword="On-device Connections">
+   		<topic href="html/reference/trk/wnd_new_connection_wizard.htm" />
+     	<topic href="html/reference/trk/view_remote_connection.htm" />
+		<topic href="html/reference/trk/wnd_new_conn_wiz_edit.htm"/>
+  		<topic href="html/reference/trk/exporting_remote_conns.htm" />
+	</entry>
+
+<!-- P -->
+
+	<entry keyword=".pkg file symbols">
+	   <topic href="html/concepts/symbols_pkg.htm"/>
+	</entry>
+
+	<entry keyword="PKG and SIS Files">
+	   <topic href="html/tasks/projects/working_with_sis_pkg_files.htm"/>
+	</entry>
+
+    <entry keyword="Platform Filtering Preferences">
+        <topic href="html/tasks/sdks/sdk_platform_filter.htm"/>
+    </entry>
+
+    <entry keyword="preferences">
+		<topic href="html/reference/wnd_build_prefs.htm" />
+		<topic href="html/reference/wnd_debugger_prefs.htm" />
+		<topic href="html/reference/prefs_carbide_news.htm" />
+		<topic href="html/reference/leavescan_pref.html" />
+		<topic href="html/tasks/sdks/sdk_platform_filter.htm" />
+		<topic href="html/reference/SDKPreferences.html" />
+    </entry>
+
+	<entry keyword="Processes">
+	   <topic href="html/tasks/processes/attach_debugger_to_process.htm" label="Attaching debugger to Symbian OS Process"/>
+	</entry>
+
+    <entry keyword="Projects">
+       <topic href="html/concepts/Projects.html"/>
+       <topic href="html/qt_help/qt_creating_projs_01.htm"/>
+       <topic href="html/qt_help/qt_importing_projs_01.htm"/>
+	</entry>
+
+    <entry keyword="Project and File Properties">
+	   <topic href="html/reference/ProjectPreferences.html"/>
+	</entry>
+
+	<entry keyword="Project Dependencies">
+	   <topic href="html/tasks/projects/prj_build_multi_projects.htm"/>
+	</entry>
+
+    <entry keyword="Project Updater">
+	   <topic href="html/reference/olderproject_updater.html"/>
+	</entry>
+
+
+<!-- Q -->
+
+    <entry keyword="Qt">
+       <topic href="html/qt_help/qt_creating_projs_01.htm"/>
+       <topic href="html/qt_help/qt_importing_projs_01.htm"/>
+       <topic href="html/qt_help/qt_perspectives.htm"/>
+       <topic href="html/qt_help/qt_pref_panel.htm"/>
+       <topic href="html/qt_help/qt_project_properties.htm"/>
+	</entry>
+
+<!-- R -->
+
+	<entry keyword="register">
+	   <topic href="html/tasks/start/carbide_register.htm"/>
+	</entry>
+
+	<entry keyword="registers">
+	   <topic href="html/concepts/registers.htm" label="Overview"/>
+	   <topic href="html/tasks/registers/mem_reg_changing.htm" label="Changing Values"/>
+	   <topic href="html/tasks/registers/mem_reg_data_views.htm" label="Changing Data Views"/>
+	   <topic href="html/tasks/registers/mem_reg_open_wnd.htm" label="Opening Registers View"/>
+	   <topic href="html/tasks/registers/mem_reg_viewing.htm" label="Expanding Groups"/>
+	</entry>
+
+	<entry keyword="Registers View">
+	   <topic href="html/reference/view_registers.htm"/>
+	</entry>
+
+	<entry keyword="Restarting Debugger">
+	   <topic href="html/tasks/debugger/work_debug_act_restart.htm"/>
+	</entry>
+
+	<entry keyword="Resuming Program Execution">
+	   <topic href="html/tasks/debugger/work_debug_act_resume.htm"/>
+	</entry>
+
+	<entry keyword="Requirements">
+	   <topic href="html/tasks/start/carbide_requirements.htm"/>
+	</entry>
+
+	<entry keyword="ROM Build Settings">
+	   <topic href="html/reference/ROM_build_settings.html"/>
+	</entry>
+
+	<entry keyword="Running a Program">
+	   <topic href="html/tasks/debugger/work_debug_act_run.htm"/>
+	</entry>
+
+<!-- S -->
+
+	<entry keyword="SDKs">
+	   <topic href="html/tasks/sdks/sdk_add.htm" />
+	   <topic href="html/tasks/sdks/sdk_add_custkits.htm" label="Adding Symbian Custom Kits"/>
+	   <topic href="html/tasks/sdks/sdk_search.htm" label="Searching"/>
+	   <topic href="html/tasks/sdks/sdk_view_properties.htm" label="Viewing Properties"/>
+       <topic href="html/qt_help/qt_pref_panel.htm"/>
+	</entry>
+
+	<entry keyword="SDK Preferences">
+	   <topic href="html/reference/SDKPreferences.html"/>
+       <topic href="html/qt_help/qt_pref_panel.htm"/>
+	</entry>
+
+	<entry keyword="SDK Support">
+	   <topic href="html/concepts/SDKSupport.html"/>
+	   <topic href="html/tasks/AddinganSDK.html" />
+	   <topic href="html/tasks/WorkingwithSDKs.html"/>
+	   <topic href="html/tasks/RmvngandVwngPropsosSDK.html" label="Viewing and Editing SDK Properties"/>
+	</entry>
+
+	<entry keyword="SIS File">
+	   <topic href="html/tasks/start/carbide_deploying.htm" label="Uploading"/>
+	</entry>
+
+	<entry keyword="Sophia Target Interface Stop Mode Debugging">
+	   <topic href="html/reference/wnd_sophia_config.htm"/>
+	</entry>
+
+	<entry keyword="Starting the Debugger">
+	   <topic href="html/tasks/debugger/work_debug_act_start.htm"/>
+	</entry>
+
+	<entry keyword="Step Into">
+	   <topic href="html/tasks/debugger/work_debug_act_stepinto.htm"/>
+	</entry>
+
+	<entry keyword="Step Over">
+	   <topic href="html/tasks/debugger/work_debug_act_stepover.htm"/>
+	</entry>
+
+	<entry keyword="Step Return">
+	   <topic href="html/tasks/debugger/work_debug_act_stepout.htm"/>
+	</entry>
+
+	<entry keyword="Stop Debug Session">
+	   <topic href="html/tasks/debugger/work_debug_act_stop.htm"/>
+	</entry>
+
+	<entry keyword="Stop Mode Debugging">
+	   <topic href="html/tasks/debugger/stop_mode_debug_precond.htm" label="Stop Mode Debugging"/>
+	</entry>
+
+	<entry keyword="Symbian OS Classes">
+	   <topic href="html/tasks/projects/prj_adding_symbian_class.htm" label="Adding"/>
+	</entry>
+
+	<entry keyword="Symbian OS Data View">
+	   <topic href="html/reference/view_symbian_kernel.htm"/>
+	   <topic href="html/tasks/debugger/view_symbian_kernel_set.htm" />
+	</entry>
+
+    <entry keyword="Symbian OS SDKs">
+	   <topic href="html/reference/ProjectTypeandSDK.html"/>
+	</entry>
+
+    <entry keyword="Symbian Project Navigator">
+       <topic href="html/reference/view_sym_proj_nav.htm"/>
+    </entry>
+   
+	<entry keyword="Symbol Hint">
+	   <topic href="html/concepts/symbol_hints.htm"/>
+	</entry>
+
+	<entry keyword="Symbolics Files">
+	   <topic href="html/concepts/symbolic_files_about.htm"/>
+	</entry>
+
+	<entry keyword="System Browser View">
+	   <topic href="html/reference/view_system_browser.htm"/>
+	</entry>
+
+<!-- T -->
+
+	<entry keyword="templates">
+	   <topic href="html/concepts/templates.htm"/>
+	</entry>
+
+	<entry keyword="Terminate Program">
+	   <topic href="html/tasks/debugger/work_debug_act_kill.htm"/>
+	</entry>
+
+	<entry keyword="test components">
+	   <topic href="html/reference/wnd_build_prefs.htm"/>
+	</entry>
+
+	<entry keyword="Thread Breakpoint">
+	   <topic href="html/concepts/thread_cond_breakpoints.htm"/>
+	</entry>
+
+	<entry keyword="Trace32 Interface for Stop Mode Debugging">
+	   <topic href="html/reference/wnd_Trace32_config.htm"/>
+	</entry>
+
+	<entry keyword="TRK" >
+		<topic href="html/concepts/trk.htm"/>
+		<topic href="html/tasks/trk/trk_overview.htm"/>
+		<topic href="html/tasks/trk/trk_carbide_setup.htm" />
+		<topic href="html/tasks/start/carbide_example_trk.htm" />
+		<topic href="html/tasks/debugger/stop_mode_debug.htm" />
+	</entry>
+	
+
+	<entry keyword="TRK Pane">
+	   <topic href="html/reference/trk/panel_trk_overview.htm"/>
+	</entry>
+
+<!-- U -->
+
+	<entry keyword="updating">
+	   <topic label="Carbide.c++"	href="html/tasks/start/carbide_updating.htm"/>
+	   <topic label="projects"		href="html/reference/olderproject_updater.html"/>
+	</entry>
+
+	<entry keyword="USB setup">
+	   <topic href="html/tasks/trk/trk_connection_usb.htm" label="TRK"/>
+	</entry>
+
+<!-- V -->
+
+	<entry keyword="variables">
+	   <topic href="html/concepts/working_with_variables.htm" />
+	   <topic href="html/tasks/variables/set_variable_formats.htm" />
+	   <topic href="html/tasks/variables/show_global_variables.htm" />
+	   <topic href="html/tasks/variables/show_variables_view.htm" />
+	</entry>
+
+	<entry keyword="Variables view">
+	   <topic href="html/reference/view_variables.htm"/>
+	</entry>
+
+	<entry keyword="views">
+		<topic href="html/reference/view_breakpoints.htm" />
+		<topic href="html/reference/view_log.htm" />
+		<topic href="html/reference/view_carbide_news.htm" />
+		<topic href="html/reference/view_debug.htm" />
+		<topic href="html/reference/view_disassembly.htm" />
+		<topic href="html/reference/view_executables.htm" />
+		<topic href="html/reference/view_expressions.htm" />
+		<topic href="html/reference/view_memory_wnd.htm" />
+		<topic href="html/reference/view_module_wnd.htm" />
+	    <topic href="html/concepts/registers.htm" />
+	    <topic href="html/reference/view_symbian_kernel.htm" />
+	    <topic href="html/reference/view_variables.htm" />
+	</entry>
+
+
+<!-- W -->
+
+	<entry keyword="watchpoints">
+	   <topic label="Watchpoints" href="html/tasks/watchpoints/pgm_watchpoints.htm" />
+	   <topic href="html/tasks/watchpoints/pgm_wpt_clearing.htm" />
+	   <topic href="html/tasks/watchpoints/pgm_wpt_conditional.htm" />
+	   <topic href="html/tasks/watchpoints/pgm_wpt_disable.htm" />
+	   <topic href="html/tasks/watchpoints/pgm_wpt_enable.htm" />
+	   <topic href="html/tasks/watchpoints/pgm_wpt_setting.htm" />
+	   <topic href="html/tasks/watchpoints/pgm_wpt_view_props.htm" />
+	</entry>
+
+    <entry keyword="workspaces">
+	   <topic href="html/concepts/workspaces.htm"/>
+	</entry>
+
+<!-- X -->
+
+	<entry keyword="x86 Exceptions Pane">
+	   <topic href="html/reference/launch_config/emulator_exceptions.htm"/>
+	</entry>
+
+<!-- Y -->
+<!-- Z -->
+</index>
--- a/core/com.nokia.carbide.cpp.doc.user/tocCarbide.xml	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/tocCarbide.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -1,486 +1,451 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?NLS TYPE="org.eclipse.help.toc"?>
-
-<toc label="Introduction" href="html/concepts/Introduction.html"  >
-
-	<topic label="Carbide.c++ Overview" >
-	      
-		<topic label="Introduction" 				href="html/concepts/Introduction.html" >
-		<topic label="System Requirements" 		href="html/tasks/start/carbide_requirements.htm" />
-   <topic href="html/tasks/start/carbide_install.htm" label="Carbide.c++ Installation">
-   </topic>
-			<topic label="Supported Target Types"	href="html/concepts/build_targets.htm" />		
-			<topic label="Supported SDKs" 		    href="html/sos_references.htm" />
-			<topic label="Carbide Licenses" 		href="html/license.htm" />
-			<topic label="Updating Carbide.c++" 	href="html/tasks/start/carbide_updating.htm" />
-		</topic>
-	
-		<topic label="Tour of the UI"			href="html/concepts/tour.html" />
-		<topic label="Project Updater"          href="html/reference/olderproject_updater.html" />
-
-		<topic label="Application Emulator Debug Example"  				href="html/tasks/start/carbide_example.htm" >
-			<topic label="1. Creating New Projects" 		        	href="html/tasks/CreatingNewProjects.html" />
-			<topic label="2. Building Projects and Symbian Components" 	href="html/tasks/projects/prj_build.htm" />
-			<topic label="3. Creating a Launch Configuration"			href="html/tasks/projects/prj_debug_config.htm" />
-			<topic label="4. Debugging a Symbian OS Program" 			href="html/tasks/start/carbide_debugging.htm" />
-		</topic>
-	
-		<topic href="html/concepts/SampleExampleProjectCreate.html" label="DLL Emulator Example">
-  </topic>
-		
-		<topic label="Carbide Menus " 							href="html/reference/menus/menus.htm" >
-     <topic href="html/reference/trk/view_remote_connection.htm" label="On-Device Connection...">
-     </topic>
-			<topic label="Open Command Window"					href="html/reference/menus/open_cmd_window.htm" />
-			<topic label="Run CodeScanner"						href="html/reference/menus/run_codescanner.htm" />
-			<topic label="Run Leavescan"						href="html/reference/menus/run_leavescan.htm" />
-			<topic label="S60 UI Designer"						href="html/reference/menus/s60_ui_designer.htm" />
-			<topic label="Show in Explorer"						href="html/reference/menus/open_explorer_window.htm" />
-   <topic href="html/reference/menus/new_symbian_class.htm" label="Symbian OS C++ Class">
-      <topic href="html/tasks/projects/prj_adding_symbian_class.htm" label="New Symbian OS C++ Class wizard">
-      </topic>
-   </topic>
-			<topic href="html/tasks/CreatingNewProjects.html" label="Symbian OS C++ Project">
-      <topic href="html/tasks/CreatingNewProjects.html" label="New Symbian OS C++ Project wizard">
-      </topic>
-   </topic>
-			<topic label="Symbian OS MMP File"					href="html/reference/menus/new_symbian_mmp_file.htm" />
-			<topic label="Context menus" 						href="html/concepts/contextual_menus.htm" />
-		</topic>
-
-	</topic>
-	
-
-	<topic label="Project management" >
-	
-		<topic label="Carbide C/C++ perspective" 		    href="html/concepts/CarbidePerspective.html" >
-			<topic label="Project Explorer view"			href="html/reference/view_cpp_projects.htm" />
-			<topic label="Symbian Project Navigator view"	href="html/reference/view_sym_proj_nav.htm" />
-			<topic label="Executables view"					href="html/reference/view_executables.htm" />
-			<topic label="Remote Connections view"			href="html/reference/trk/view_remote_connection.htm" />
-			<topic label="Workspace Information"	        href="html/concepts/workspaces.htm" />
-			<topic label="Carbide.c++ News view"			href="html/reference/view_carbide_news.htm" />
-
-		</topic>
-		
-		<topic label="Carbide.c++ preferences" 				href="html/reference/wnd_carbide_pref.htm" >
-			<topic label="Bug Reports"						href="PLUGINS_ROOT/com.nokia.carbide.bugreport/html/prefs_bug_reporter.htm" />
-			<topic label="Build"							href="html/reference/wnd_build_prefs.htm" />
-			<topic label="Carbide.c++ News"					href="html/reference/prefs_carbide_news.htm" />
-			<topic label="Debugger"							href="html/reference/wnd_debugger_prefs.htm" />
-			<topic label="CodeScanner"	  					href="PLUGINS_ROOT/com.nokia.carbide.cpp.codescanner/html/pref_codescanner_01.htm" />
-            <topic label="Diagnostic Logs"          		href="html/reference/wnd_diagnostic_logs_pref.htm" />
-            <topic label="Leavescan Preferences"    		href="html/reference/leavescan_pref.html" />
-			<topic label="Performance Investigator"  		href="PLUGINS_ROOT/com.nokia.carbide.cpp.pi.doc.user/html/tasks/analyser/key_profile_pref.htm" />
-			<topic label="Platform Filtering Preferences"	href="html/tasks/sdks/sdk_platform_filter.htm" />
-			<topic label="Preprocess"						href="html/reference/wnd_preprocess_prefs.htm" />
-			<topic label="SDK Preferences"                  href="html/reference/SDKPreferences.html" />
-			<topic label="UI Designer"          			href="PLUGINS_ROOT/com.nokia.carbide.cpp.uidesigner.doc.user/html/reference/uidesign/ref_ui_designer_prefs.htm" />
-          <topic href="html/reference/wnd_pref_code_style.htm" label="Code Styles">
-           <topic href="html/tasks/code_style_workspace.htm" label="Setting the Workspace Code Style">
-           </topic>
-           <topic href="html/tasks/code_style_reformatting_sources.htm" label="Reformatting a Source File">
-           </topic>
-          </topic>
-        </topic>
-  <topic href="html/tasks/WorkingwithSDKs.html" label="Working with SDKs">
-     <topic href="html/concepts/SDKSupport.html" label="SDK Support">
-     </topic>
-     <topic href="html/tasks/AddinganSDK.html" label="Adding an SDK">
-        <topic href="html/tasks/sdks/sdk_add.htm" label="Adding SDKs">
-        </topic>
-     </topic>
-     <topic href="html/tasks/sdks/sdk_search.htm" label="Searching for SDKs">
-     </topic>
-     <topic href="html/tasks/sdks/sdk_view_properties.htm" label="Viewing SDK Properties">
-     </topic>
-     <topic href="html/tasks/RmvngandVwngPropsosSDK.html" label="Editing SDK Properties">
-     </topic>
-     <topic href="html/tasks/sdks/sdk_add_custkits.htm" label="Adding Symbian Custom Kits">
-     </topic>
-  </topic>
-
-		<topic label="Creating projects" 								href="html/tasks/CreatingProjectsToc.htm">
-			<topic label="Project Templates" 					    	href="html/concepts/templates.htm"/>
-			<topic label="Creating from a Template" 					href="html/tasks/CreatingNewProjects.html"/>
-			<topic label="Importing Projects from a BLD.INF File"		href="html/tasks/ImportingProjects.html"/>
-			<topic label="Importing Projects with Inter-Dependencies"	href="html/tasks/projects/prj_build_multi_projects.htm" />
-			<topic label="N-Gage Projects" 								href="html/concepts/ngage_projects.htm"/>
-		</topic>
-	
-		<topic label="C/C++ Project and File Properties"	href="html/reference/ProjectPreferences.html" >
-		
-			<topic label="Carbide Build Configurations"					href="html/reference/build_properties/pane_build_config.htm" >
-				<topic label="SIS Builder" 								href="html/reference/build_properties/pane_build_config_sis.htm" >
-					<topic label="SIS Properties"						href="html/reference/build_properties/wnd_sis_properties.htm" />
-				</topic>
-				<topic label="Environment"								href="html/reference/build_properties/pane_build_config_env.htm" />
-				<topic label="Arguments"								href="html/reference/build_properties/pane_build_config_args.htm" />
-				<topic label="Paths and Symbols"						href="html/reference/build_properties/pane_build_config_paths.htm" />
-				<topic label="ROM Builder"								href="html/reference/ROM_build_settings.html" />
-			</topic>
-   <topic href="html/reference/build_properties/pane_macro_settings.htm" label="Carbide Macro Settings">
-   </topic>
-			
-			<topic label="Carbide Project Settings"			href="html/reference/build_properties/pane_project_settings.htm" />
-		</topic>
-	
-		<topic label="Building projects"  							href="html/concepts/build_system.htm" >
-			<topic label="Active Build Configuration"				href="html/concepts/build_configurations.htm" />
-			<topic label="Setting an Active Configuration"			href="html/tasks/projects/prj_set_build_tgt.htm" />
-			<topic label="Adding/Removing Build Configurations"		href="html/tasks/projects/prj_new_build_config.htm" />
-	
-			<topic label="Preprocessing Files"						href="html/tasks/projects/prj_preprocess.htm" />
-
-			<topic label="Building Projects"						href="html/tasks/projects/prj_build.htm" />
-			<topic label="Cleaning Projects" 					    href="html/tasks/projects/prj_clean.htm" />
-	
-			<topic label="Build All Configurations"			    	href="html/reference/menus/build_all_targets.htm" />
-			<topic label="Compile"			        				href="html/reference/menus/compile_source.htm" />		
-	
-			<topic label="Build Symbian Component"					href="html/reference/menus/build_symbian_comp.htm" />
-			<topic label="Clean Symbian Component"					href="html/reference/menus/clean_symbian_comp.htm" />
-			<topic label="Freeze Symbian Component"					href="html/reference/menus/freeze_symbian_comp.htm" />
-	
-			<topic label="Build PKG File"			        		href="html/reference/menus/build_pkg_file.htm" />
-			<topic label="Building a ROM Image File"                href="html/reference/ROM_build_settings.html" />
-			<topic label="ABLD Actions"								href="html/reference/menus/abld.htm" />
-
-   			<topic label="Freeze Exports"							href="html/reference/menus/freeze_exports.htm" />
-		</topic>
-	
-		<topic label="Resource and project editors"  	href="html/tasks/ModifyingResources.html" >
-			
-			<topic label="AIF files" 				 	 href="html/concepts/AIFDefWizard.html" >
-				<topic label="AIF Editor" 				 href="html/reference/AIFEditor.html"/>
-				<topic label="Creating an AIF File" 	 href="html/tasks/AppInfoFile.html"/>
-			</topic>
-			
-			<topic label="Classes"  								href="html/tasks/ClassesToc.htm">
-				<topic label="Adding Classes" 						href="html/tasks/AddingClasses.html"/>
-				<topic label="New Class Wizard" 					href="html/reference/NewClassWizard.html"/>
-				<topic label="Adding Symbian OS Classes Wizard"		href="html/tasks/projects/prj_adding_symbian_class.htm" />
-			</topic>
-			
-			<topic href="html/reference/INF_Editor.html" label="INF editor">
-      <topic href="html/reference/INF_Editor.html" label="Overview tab">
-      </topic>
-      <topic href="html/reference/INF_Editor_exports.html" label="Exports tab">
-      </topic>
-      <topic href="html/reference/INF_Editor_file.html" label="BLD.INF tab">
-      </topic>
-      <topic href="html/reference/INF_Editor_addedit_make.html" label="Add / Edit Make File">
-      </topic>
-      <topic href="html/reference/INF_Editor_addedit_mmp.html" label="Add / Edit MMP File">
-      </topic>
-   </topic>
-	
-			<topic label="MBM/MIF files" 			 href="html/concepts/MBMDefWizard.html" >
-				<topic label="MBM Editor" 			 href="html/reference/MBMEditor.html"/>
-				<topic label="Creating MBM Files" 	 href="html/tasks/Multi-BitmapFile.html"/>
-				<topic label="MBM/MIF Editor"		 href="html/reference/view_mifdef_editor.htm" />
-			</topic>
-			
-			<topic label="MMP files" 				 href="html/concepts/mmpfiles.htm" >
-				<topic label="MMP Wizard"		     href="html/reference/NewMMP_wizard.html" />
-				<topic href="html/reference/MMP_Editor.html" label="MMP Editor">
-       <topic href="html/reference/MMP_Editor_sources.html" label="Sources tab">
-       </topic>
-       <topic href="html/reference/MMP_Editor_libraries.html" label="Libraries tab">
-       </topic>
-       <topic href="html/reference/MMP_Editor_options.html" label="Options tab">
-       </topic>
-       <topic href="html/reference/MMP_Editor_mmp_tab.html" label="MMP File tab">
-       </topic>
-    </topic>
-			</topic>
-			
-		</topic>
-	
-
-   <topic href="html/projects/launch/launch_configs_overview.htm" label="Launch configurations">
-    <topic href="html/projects/launch/wiz_new_launch_config.htm" label="New Launch Configuration Wizard">
-    </topic>
-    <topic href="html/projects/launch/wnd_debug_configuration.htm" label="Debug dialog">
-    </topic>
-    <topic label="Launch configurations" href="html/concepts/launch_configuration.htm">
-	    <topic label="Applications" href="html/projects/launch/applications.htm">
-	    </topic>
-     <topic label="Application TRK" href="html/projects/launch/run_mode.htm">
-     </topic>
-     <topic label="Attach to Process" href="html/projects/launch/attach_process.htm" >
-     </topic>
-	    <topic href="html/projects/launch/emulation.htm" label="Emulation">
-	    </topic>
-     <topic label="Sophia (STI)" href="html/projects/launch/sophia.htm" >
-     </topic>
-     <topic label="System TRK" href="html/projects/launch/stop_mode.htm" >
-     </topic>
-     <topic label="Trace32" href="html/projects/launch/trace32.htm" >
-     </topic>
-     <anchor id="launch_config_ANCHOR"/>
-   </topic>
-    <topic href="html/projects/launch/pages_overview.htm" label="Configuration panes">
-       <topic href="PLUGINS_ROOT/org.eclipse.cdt.doc.user/reference/cdt_u_run_dbg_arg.htm" label="Arguments">
-       </topic>
-       <topic href="PLUGINS_ROOT/org.eclipse.cdt.doc.user/reference/cdt_u_run_dbg_comm.htm" label="Common">
-       </topic>
-       <topic href="html/projects/launch/page_debugger.htm" label="Debugger">
-       </topic>
-       <topic href="html/projects/launch/page_executables.htm" label="Executables">
-       </topic>
-       <topic label="File Transfer" href="html/projects/launch/page_file_transfer.htm" >
-       </topic>
-       <topic label="Installation" href="html/projects/launch/page_installation.htm" >
-       </topic>
-       <topic label="Main" href="html/projects/launch/page_main.htm" >
-       </topic>
-       <topic label="ROM Image" href="html/projects/launch/page_rom_image.htm" >
-       </topic>
-       <topic label="ROM Log File" href="html/projects/launch/page_rom_log.htm" >
-       </topic>
-       <topic href="PLUGINS_ROOT/org.eclipse.cdt.doc.user/reference/cdt_u_run_dbg_srce.htm" label="Sources">
-       </topic>
-       <topic label="x86 Exceptions" href="html/projects/launch/page_exceptions.htm" >
-       </topic>
-    </topic>
-    <topic href="html/projects/launch/customizing_launch_configs.htm" label="Customizing launch configurations">
-    </topic>
-    <topic href="html/projects/launch/launch_configuration_filter.htm" label="Filtering launch configurations">
-    </topic>
- </topic>
-   <topic href="html/qt_help/qt_overview.htm" label="Qt project support">
-      <topic href="html/qt_help/qt_project_setup.htm" label="Qt development setup">
-      <topic href="html/qt_help/qt_creating_projs_01.htm" label="Creating Qt projects">
-      </topic>
-      <topic href="html/qt_help/qt_importing_projs_01.htm" label="Importing Qt projects">
-      </topic>
-      </topic>
-      <topic href="html/qt_help/qt_perspectives.htm" label="Qt C/C++ perspective">
-      </topic>
-      <topic href="html/qt_help/qt_pref_panel.htm" label="Qt preference panel">
-      </topic>
-      <topic href="html/qt_help/qt_project_properties.htm" label="Qt project properties">
-      </topic>
-   </topic>
-
-	</topic>
-  
-	
-	<topic label="Debugging projects" 				href="html/concepts/debugger_about.htm" >
-	
-		<topic label="Running a program" 			href="html/tasks/debugger/work_debug_act_run.htm" />
-		
-		<topic label="Debug perspective" 			href="html/reference/perspective_debug.htm" >
-			<topic label="BreakPoints view" 		href="html/reference/view_breakpoints.htm" />
-			<topic label="Console view" 			href="html/reference/view_log.htm" />
-			<topic label="Debug view"				href="html/reference/view_debug.htm" />
-			<topic label="Disassembly view"			href="html/reference/view_disassembly.htm" />
-			<topic href="html/reference/view_executables.htm" label="Executables view">
-   </topic>
-		    
-			<topic label="Expressions view"			href="html/reference/view_expressions.htm" >
-			    <topic label="Adding Expressions" 				href="html/tasks/expressions/expr_adding.htm" />
-			    <topic label="Editing Expressions" 				href="html/tasks/expressions/expr_editing.htm" />
-			    <topic label="Removing Expressions" 			href="html/tasks/expressions/expr_removing.htm" />
-		    </topic>
-		    
-			<topic label="Memory view"				href="html/reference/view_memory_wnd.htm" >
-      <topic href="html/concepts/working_with_memory.htm" label="Working with Memory">
-      </topic>
-			    <topic label="Opening a Memory View"					href="html/tasks/memory/view_memory_show.htm" />
-			    <topic label="Adding a Memory Monitor"					href="html/tasks/memory/memory_monitor_adding.htm" />
-			    <topic label="Adding a Memory Rendering"				href="html/tasks/memory/memory_rendering_adding.htm" />
-			    <topic label="Removing a Memory Monitor or Rendering"	href="html/tasks/memory/memory_monitor_removing.htm" />
-		        <topic label="Memory Rendering Options"         		href="html/reference/memory_rendering_options.htm" />
-			</topic>
-			
-			<topic label="Modules View"				href="html/reference/view_module_wnd.htm" />
-			
-	        <topic label="Registers"								href="html/concepts/registers.htm" >
-			    <topic label="Registers view"						href="html/reference/view_registers.htm" />
-			    <topic label="Opening a Registers View"				href="html/tasks/registers/mem_reg_open_wnd.htm" />
-       <topic href="html/tasks/registers/mem_reg_data_views.htm" label="Changing Register Data Views">
-       </topic>
-			    <topic label="Expanding Register Groups"			href="html/tasks/registers/mem_reg_viewing.htm" />
-			    <topic label="Changing Register Values"				href="html/tasks/registers/mem_reg_changing.htm" />
-			    <topic label="ARM Registers"						href="html/concepts/arm_registers.htm" />
-		    </topic>
-		    
-			
-			<topic href="html/reference/view_symbian_kernel.htm" label="Symbian OS Data view">
-      <topic href="html/tasks/debugger/view_symbian_kernel_set.htm" label="Setting the Refresh Rate">
-      </topic>
-   </topic>
-			
-			<topic label="Variables view"			href="html/reference/view_variables.htm" >
-      <topic href="html/concepts/working_with_variables.htm" label="Working with Variables">
-      </topic>
-			    <topic label="Opening a Variables View"				href="html/tasks/variables/show_variables_view.htm" />
-			    <topic href="html/tasks/variables/show_global_variables.htm" label="Showing Global Variables">
-       </topic>
-       <topic href="html/tasks/variables/set_variable_formats.htm" label="Setting Variable Formats">
-       </topic>
-		    </topic>
-		</topic>
-		
-   <topic label="Debugging actions" href="html/debugger/debug/debug.htm">
-      <topic href="html/debugger/debug/viewing_debug.htm" label="View debugging">
-      </topic>
-      <topic href="html/debugger/debug/cmds_starting.htm" label="Starting and Terminating">
-      </topic>
-      <topic href="html/debugger/debug/cmds_resuming.htm" label="Suspending and Resuming">
-      </topic>
-      <topic href="html/debugger/debug/cmds_stepping.htm" label="Stepping Over, Into, and Out of Routines">
-      </topic>
-      <topic href="html/debugger/debug/cmds_other.htm" label="Other useful commands">
-      </topic>
-      <topic href="html/debugger/debug/cmds_reposition_pc.htm" label="Reposition the program counter">
-      </topic>
-   </topic>
-
-
- <topic href="html/debugger/breakpoints/breakpoints.htm" label="Breakpoints">
-    <topic label="Viewing breakpoints" href="html/debugger/breakpoints/viewing_breakpoints.htm" />
-    <topic label="Breakpoint status indicators" href="html/debugger/breakpoints/resolving_breakpoints.htm" />
-    <topic label="Enabling, disabling, and removing breakpoints" href="html/debugger/breakpoints/toggling_breakpoints.htm" />
-    <topic label="Breakpoint properties" href="html/debugger/breakpoints/properties_breakpoints.htm" >
-    <topic label="Creating conditional breakpoints" href="html/debugger/breakpoints/conditional_breakpoints.htm" />
-    <topic label="Creating temporary breakpoints" href="html/debugger/breakpoints/temporary_breakpoints.htm" />
-	</topic>
-    <topic label="Exporting breakpoints and watchpoints" href="html/debugger/breakpoints/exporting_breakpoints.htm" />
-    <topic label="Importing breakpoints and watchpoints" href="html/debugger/breakpoints/importing_breakpoints.htm" />
-    <topic label="Toggle hardware breakpoints" href="html/reference/menus/hardware_breakpoints.htm" />
-  </topic>
-
-
- <topic href="html/debugger/watchpoints/watchpoints.htm" label="Watchpoints">
-    <topic label="Viewing watchpoints" href="html/debugger/breakpoints/viewing_breakpoints.htm" />
-    <topic label="Watchpoint status indicators" href="html/debugger/watchpoints/status_watchpoints.htm" />
-    <topic label="Setting and removing watchpoints" href="html/debugger/watchpoints/setting_watchpoints.htm" />
-    <topic label="Enabling and disabling watchpoints" href="html/debugger/watchpoints/toggling_watchpoints.htm" />
-    <topic label="Exporting breakpoints and watchpoints" href="html/debugger/breakpoints/exporting_breakpoints.htm" />
-    <topic label="Importing breakpoints and watchpoints" href="html/debugger/breakpoints/importing_breakpoints.htm" />
- </topic>
-   
-   <topic label="Variables and Expressions" 			href="html/debugger/variables/variables.htm" >
-      <topic label="Viewing variables"                   		href="html/debugger/variables/viewing_variables.htm" >
-         <topic label="Adding and removing global variables" 	href="html/debugger/variables/adding_variables.htm" />
-      </topic>
-      <topic label="Viewing expressions" 						href="html/debugger/variables/viewing_expressions.htm" >
-         <topic label="Adding and removing expressions" 		href="html/debugger/variables/adding_expressions.htm" />
-         <topic label="Editing expressions" 					href="html/debugger/variables/editing_expressions.htm" />
-      </topic>
-   </topic>
-		
-   <topic href="html/reference/trk/wnd_new_connection_wizard.htm" label="On-Device Connections Overview" >
-		<topic label="Remote Connections view"			href="html/reference/trk/view_remote_connection.htm" />
-		<topic href="html/reference/trk/wnd_new_conn_wiz_edit.htm" label="Adding, editing, and deleting connections" />
-  <topic href="html/reference/trk/exporting_remote_conns.htm" label="Exporting remote connections">
-  </topic>
-  <topic href="html/reference/trk/importing_remote_conns.htm" label="Importing remote connections">
-  </topic>
-   </topic>
-	    
-		<topic label="Emulator projects" 					href="html/tasks/EmulatorToc.htm">
-			<topic label="Setting Environment for x86 Compiler"		href="html/tasks/projects/prj_build_cmd_line.htm" />
-			<topic label="Unsetting Built-in Environment"	        href="html/reference/wnd_carbide_pref_x86.htm" />		
-		</topic>
-
-
-	
-	
-		<topic label="Run mode projects" 						href="html/tasks/RunModeToc.htm">
-		
-			<topic label="Run Mode Overview"  			href="html/tasks/start/carbide_overview_trk.htm" >
-			
-			
-				
-		
-			</topic>
-      <topic href="html/concepts/autotargeting.htm" label="Auto-Targeting of Executables">
-      </topic>
-   <topic href="html/tasks/start/carbide_example_trk.htm" label="Run Mode Debug Example">
-       <topic href="html/tasks/trk/trk_preconditions.htm" label="1. Preconditions to On-Device Debugging">
-      </topic>
-      <topic href="html/tasks/trk/trk_installation_instr.htm" label="2. Installing an On-Device Debug Agent">
-      </topic>
-      <topic href="html/tasks/projects/working_with_sis_pkg_files.htm" label="3. Creating a PKG File">
-      </topic>
-      <topic href="html/tasks/projects/prj_creating_sis_file.htm" label="4. Creating a .SIS File">
-      </topic>
-            <topic href="html/tasks/start/carbide_deploying.htm" label="5. Deploying Programs">
-            </topic>
-      <topic href="html/tasks/trk/trk_carbide_setup.htm" label="6. Launch Configuration Setup">
-         <topic href="html/reference/trk/panel_trk_overview.htm" label="Debug (On-device Debugging) Overview">
-         </topic>
-      </topic>
-      <topic href="html/tasks/projects/prj_debug_config.htm" label="7. Debugging Applications">
-         <topic href="html/tasks/projects/prj_debug_dlls.htm" label="Debugging DLLs">
-         </topic>
-         <topic href="html/tasks/projects/prj_import_exe.htm" label="Importing a Symbian Executable">
-         </topic>
-         <topic href="html/tasks/processes/attach_debugger_to_process.htm" label="Attaching to a Symbian OS Process">
-         </topic>
-         <topic href="html/tasks/start/carbide_debugging.htm" label="Debugging a Symbian OS Program">
-         </topic>
-         <topic href="html/concepts/arm_registers.htm" label="Registers">
-         </topic>
-         <topic href="html/reference/view_symbian_kernel.htm" label="Symbian OS Data View">
-         </topic>
-      </topic>
-   </topic>
-
-			<topic label="Troubleshooting" 						href="html/tasks/trk/trk_troubleshooting.htm"/>
-			
-		</topic>
-	
-		<topic label="Stop mode projects" 				href="html/tasks/StopModeToc.htm">
-		
-			<topic label="Stop Mode Debug Example" 		href="html/tasks/debugger/stop_mode_debug.htm" >
-				<topic label="1. On-Device Debugging Preconditions" href="html/tasks/debugger/stop_mode_debug_precond.htm" />
-				<topic label="2. Symbian OS Trace32 Support" 		href="html/reference/wnd_Trace32_config.htm" >
-					<topic label="Main" 							href="html/reference/wnd_Trace32_config.htm#Main" />
-					<topic label="Connection" 						href="html/reference/wnd_Trace32_config.htm#Connection" />
-					<topic label="Debugger" 						href="html/reference/wnd_Trace32_config.htm#Debugger" />
-					<topic label="ROM Image" 						href="html/reference/wnd_Trace32_config.htm#ROM" />
-					<topic label="Executables" 						href="html/reference/wnd_Trace32_config.htm#Executables" />
-					<topic label="Source" 							href="html/reference/wnd_Trace32_config.htm#Source" />
-					<topic label="Commmon" 							href="html/reference/wnd_Trace32_config.htm#Commmon" />
-				</topic>
-				<topic label="3. Symbian OS Sophia Target Interface Support" 	href="html/reference/wnd_sophia_config.htm" >
-					<topic label="Main" 							href="html/reference/wnd_sophia_config.htm#Main" />
-					<topic label="Connection" 						href="html/reference/wnd_sophia_config.htm#Connection" />
-					<topic label="Debugger" 						href="html/reference/wnd_sophia_config.htm#Debugger" />
-					<topic label="ROM Image" 						href="html/reference/wnd_sophia_config.htm#ROM" />
-					<topic label="Executables" 						href="html/reference/wnd_sophia_config.htm#Executables" />
-					<topic label="Source" 							href="html/reference/wnd_sophia_config.htm#Source" />
-					<topic label="Commmon" 							href="html/reference/wnd_sophia_config.htm#Commmon" />
-				</topic>
-				<topic label="4. Using Soft Attach"	 href="html/tasks/debugger/soft_attach_debug.htm" />
-			</topic>
-			
-			<topic label="Building a ROM Image File"            href="html/reference/ROM_build_settings.html" />
-			<topic label="ARM Registers" 						href="html/concepts/arm_registers.htm" />
-			<topic label="Symbian OS Data View"					href="html/reference/view_symbian_kernel.htm" />
-			<topic label="Toggle HW Breakpoint"           		href="html/reference/menus/hardware_breakpoints.htm" />
-			
-		</topic>
-		<topic label="Debugging variations"                     href="html/concepts/debugger_about.htm" >
-		    <topic label="Emulation Debugging"			        href="html/concepts/emulators.htm" />
-			<topic label="Debugging DLLs"						href="html/tasks/projects/prj_debug_dlls.htm" />
-			<topic label="Debugging in ROM"		                href="html/tasks/projects/prj_debug_rom.htm" />      
-			<topic label="Importing Symbian Executables"		href="html/tasks/projects/prj_import_exe.htm" />
-		</topic>
-	</topic>
- 
- 
-	
- 	<topic href="html/reference/search/wnd_system_search.htm" label="System Search">
-			<topic label="System Search view"      		href="html/reference/search/view_system_search.htm" />
-			<topic label="System Search preferences"    href="html/reference/search/wnd_system_search_prefs.htm" />
- 	</topic>
-		
-	<topic href="html/hints_tips.htm" label="Tips &amp; Hints">
- </topic>
-</toc>
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Introduction" href="html/concepts/Introduction.html"  >
+
+	<topic label="Carbide.c++ Overview" 			href="html/tasks/start/carbide_overview.htm" >
+
+		<topic label="System Requirements" 			href="html/tasks/start/carbide_requirements.htm" />
+		<topic label="Carbide Help" 				href="html/tasks/start/carbide_help.htm" />
+		<topic label="Carbide Tools" 				href="html/tasks/start/carbide_tools.htm" />
+
+		<topic label="Updating Carbide" 			href="html/tasks/start/carbide_updating.htm" >
+			<topic label="Supported Target Types"	href="html/concepts/build_targets.htm" />		
+			<topic label="Supported SDKs" 		    href="html/sos_references.htm" />
+			<topic label="Updating Carbide.c++" 	href="html/tasks/start/carbide_updating.htm" />
+		</topic>
+	
+		<topic label="Tour of the UI"				href="html/concepts/tour.html" />
+		<topic label="Project Updater"          	href="html/reference/olderproject_updater.html" />
+
+		<topic label="Application Emulator Debug Example"  	href="html/tasks/start/carbide_example.htm" >
+			<topic label="1. Creating New Projects" 		        	href="html/tasks/CreatingNewProjects.html" />
+			<topic label="2. Building Projects and Symbian Components" 	href="html/tasks/projects/prj_build.htm" />
+			<topic label="3. Creating a Launch Configuration"			href="html/tasks/projects/prj_debug_config.htm" />
+			<topic label="4. Debugging a Symbian OS Program" 			href="html/tasks/start/carbide_debugging.htm" />
+		</topic>
+	
+		<topic label="DLL Emulator Example" href="html/concepts/SampleExampleProjectCreate.html" />
+
+	</topic>
+
+	<topic label="Carbide Menus " 					href="html/reference/menus/menus.htm" >
+
+		<topic label="On-Device Connection..."		href="html/reference/trk/view_remote_connection.htm" />
+		<topic label="Open Command Window"			href="html/reference/menus/open_cmd_window.htm" />
+		<topic label="Run CodeScanner"				href="html/reference/menus/run_codescanner.htm" />
+		<topic label="Run Leavescan"				href="html/reference/menus/run_leavescan.htm" />
+		<topic label="S60 UI Designer"				href="html/reference/menus/s60_ui_designer.htm" />
+		<topic label="Show in Explorer"				href="html/reference/menus/open_explorer_window.htm" />
+
+		<topic label="Symbian OS C++ Class"			href="html/reference/menus/new_symbian_class.htm" >
+      		<topic label="New Symbian OS C++ Class wizard"	href="html/tasks/projects/prj_adding_symbian_class.htm" />
+		</topic>
+
+		<topic label="Symbian OS C++ Project"		href="html/tasks/CreatingNewProjects.html" >
+			<topic label="New Symbian OS C++ Project wizard"	href="html/tasks/CreatingNewProjects.html" />
+		</topic>
+
+		<topic label="Symbian OS MMP File"			href="html/reference/menus/new_symbian_mmp_file.htm" />
+		<topic label="Context menus" 				href="html/concepts/contextual_menus.htm" />
+
+	</topic>
+	
+
+	<topic label="Project management" >
+	
+		<topic label="Carbide C/C++ perspective" 		    href="html/concepts/CarbidePerspective.html" >
+			<topic label="Project Explorer view"			href="html/reference/view_cpp_projects.htm" />
+			<topic label="Symbian Project Navigator view"	href="html/reference/view_sym_proj_nav.htm" />
+			<topic label="Executables view"					href="html/reference/view_executables.htm" />
+			<topic label="Remote Connections view"			href="html/reference/trk/view_remote_connection.htm" />
+			<topic label="Workspace Information"	        href="html/concepts/workspaces.htm" />
+			<topic label="Carbide.c++ News view"			href="html/reference/view_carbide_news.htm" />
+		</topic>
+		
+		<topic label="Carbide.c++ preferences" 				href="html/reference/wnd_carbide_pref.htm" >
+			<topic label="Bug Reports"						href="PLUGINS_ROOT/com.nokia.carbide.bugreport/html/prefs_bug_reporter.htm" />
+			<topic label="Build"							href="html/reference/wnd_build_prefs.htm" />
+			<topic label="Carbide.c++ News"					href="html/reference/prefs_carbide_news.htm" />
+			<topic label="Debugger"							href="html/reference/wnd_debugger_prefs.htm" />
+			<topic label="CodeScanner"	  					href="PLUGINS_ROOT/com.nokia.carbide.cpp.codescanner/html/pref_codescanner_01.htm" />
+            <topic label="Diagnostic Logs"          		href="html/reference/wnd_diagnostic_logs_pref.htm" />
+            <topic label="Leavescan Preferences"    		href="html/reference/leavescan_pref.html" />
+			<topic label="Performance Investigator"  		href="PLUGINS_ROOT/com.nokia.carbide.cpp.pi.doc.user/html/tasks/analyser/key_profile_pref.htm" />
+			<topic label="Platform Filtering Preferences"	href="html/tasks/sdks/sdk_platform_filter.htm" />
+			<topic label="Preprocess"						href="html/reference/wnd_preprocess_prefs.htm" />
+			<topic label="SDK Preferences"                  href="html/reference/SDKPreferences.html" />
+			<topic label="UI Designer"          			href="PLUGINS_ROOT/com.nokia.carbide.cpp.uidesigner.doc.user/html/reference/uidesign/ref_ui_designer_prefs.htm" />
+
+			<topic label="Code Styles"						href="html/reference/wnd_pref_code_style.htm" >
+				<topic label="Setting the Workspace Code Style"	href="html/tasks/code_style_workspace.htm" />
+				<topic label="Reformatting a Source File"		href="html/tasks/code_style_reformatting_sources.htm" />
+			</topic>
+		</topic>
+
+		<topic label="Working with SDKs"					href="html/tasks/WorkingwithSDKs.html" >
+			<topic label="SDK Support"						href="html/concepts/SDKSupport.html" />
+
+			<topic label="Adding an SDK"					href="html/tasks/AddinganSDK.html" >
+				<topic label="Adding SDKs"					href="html/tasks/sdks/sdk_add.htm" />
+			</topic>
+
+			<topic label="Searching for SDKs"				href="html/tasks/sdks/sdk_search.htm" />
+			<topic label="Viewing SDK Properties"			href="html/tasks/sdks/sdk_view_properties.htm" />
+			<topic label="Editing SDK Properties"			href="html/tasks/RmvngandVwngPropsosSDK.html" />
+			<topic label="Adding Symbian Custom Kits"		href="html/tasks/sdks/sdk_add_custkits.htm" />
+		</topic>
+
+		<topic label="Creating projects" 								href="html/tasks/CreatingProjectsToc.htm" >
+			<topic label="Project Templates" 					    	href="html/concepts/templates.htm" />
+			<topic label="Creating from a Template" 					href="html/tasks/CreatingNewProjects.html" />
+			<topic label="Importing Projects from a BLD.INF File"		href="html/tasks/ImportingProjects.html" />
+			<topic label="Importing Projects with Inter-Dependencies"	href="html/tasks/projects/prj_build_multi_projects.htm" />
+			<topic label="N-Gage Projects" 								href="html/concepts/ngage_projects.htm" />
+		</topic>
+	
+		<topic label="C/C++ Project and File Properties"	href="html/reference/ProjectPreferences.html" >
+		
+			<topic label="Carbide Build Configurations"					href="html/reference/build_properties/pane_build_config.htm" >
+
+				<topic label="SIS Builder" 								href="html/reference/build_properties/pane_build_config_sis.htm" >
+					<topic label="SIS Properties"						href="html/reference/build_properties/wnd_sis_properties.htm" />
+				</topic>
+
+				<topic label="Environment"								href="html/reference/build_properties/pane_build_config_env.htm" />
+				<topic label="Arguments"								href="html/reference/build_properties/pane_build_config_args.htm" />
+				<topic label="Paths and Symbols"						href="html/reference/build_properties/pane_build_config_paths.htm" />
+				<topic label="ROM Builder"								href="html/reference/ROM_build_settings.html" />
+			</topic>
+
+			<topic label="Carbide Macro Settings"						href="html/reference/build_properties/pane_macro_settings.htm" />
+			<topic label="Carbide Project Settings"						href="html/reference/build_properties/pane_project_settings.htm" />
+		</topic>
+	
+		<topic label="Building projects"  							href="html/concepts/build_system.htm" >
+			<topic label="Active Build Configuration"				href="html/concepts/build_configurations.htm" />
+			<topic label="Setting an Active Configuration"			href="html/tasks/projects/prj_set_build_tgt.htm" />
+			<topic label="Adding/Removing Build Configurations"		href="html/tasks/projects/prj_new_build_config.htm" />
+	
+			<topic label="Preprocessing Files"						href="html/tasks/projects/prj_preprocess.htm" />
+
+			<topic label="Building Projects"						href="html/tasks/projects/prj_build.htm" />
+			<topic label="Cleaning Projects" 					    href="html/tasks/projects/prj_clean.htm" />
+	
+			<topic label="Build All Configurations"			    	href="html/reference/menus/build_all_targets.htm" />
+			<topic label="Compile"			        				href="html/reference/menus/compile_source.htm" />		
+	
+			<topic label="Build Symbian Component"					href="html/reference/menus/build_symbian_comp.htm" />
+			<topic label="Clean Symbian Component"					href="html/reference/menus/clean_symbian_comp.htm" />
+			<topic label="Freeze Symbian Component"					href="html/reference/menus/freeze_symbian_comp.htm" />
+	
+			<topic label="Build PKG File"			        		href="html/reference/menus/build_pkg_file.htm" />
+			<topic label="Building a ROM Image File"                href="html/reference/ROM_build_settings.html" />
+			<topic label="ABLD Actions"								href="html/reference/menus/abld.htm" />
+
+   			<topic label="Freeze Exports"							href="html/reference/menus/freeze_exports.htm" />
+		</topic>
+	
+		<topic label="Resource and project editors"		href="html/tasks/ModifyingResources.html" >
+			
+			<topic label="AIF files"					href="html/concepts/AIFDefWizard.html" >
+				<topic label="AIF Editor"				href="html/reference/AIFEditor.html" />
+				<topic label="Creating an AIF File"		href="html/tasks/AppInfoFile.html" />
+			</topic>
+			
+			<topic label="Classes"  								href="html/tasks/ClassesToc.htm" >
+				<topic label="Adding Classes" 						href="html/tasks/AddingClasses.html" />
+				<topic label="New Class Wizard" 					href="html/reference/NewClassWizard.html" />
+				<topic label="Adding Symbian OS Classes Wizard"		href="html/tasks/projects/prj_adding_symbian_class.htm" />
+			</topic>
+			
+			<topic label="INF editor"					href="html/reference/INF_Editor.html" >
+				<topic label="Overview tab"				href="html/reference/INF_Editor.html" />
+				<topic label="Exports tab"				href="html/reference/INF_Editor_exports.html" />
+				<topic label="BLD.INF tab"				href="html/reference/INF_Editor_file.html" />
+				<topic label="Add / Edit Make File"		href="html/reference/INF_Editor_addedit_make.html" />
+				<topic label="Add / Edit MMP File"		href="html/reference/INF_Editor_addedit_mmp.html" />
+			</topic>
+	
+			<topic label="MBM/MIF files" 			href="html/concepts/MBMDefWizard.html" >
+				<topic label="MBM Editor" 			href="html/reference/MBMEditor.html" />
+				<topic label="Creating MBM Files" 	href="html/tasks/Multi-BitmapFile.html" />
+				<topic label="MBM/MIF Editor"		href="html/reference/view_mifdef_editor.htm" />
+			</topic>
+			
+			<topic label="MMP files" 				href="html/concepts/mmpfiles.htm" >
+				<topic label="MMP Wizard"		    href="html/reference/NewMMP_wizard.html" />
+
+				<topic label="MMP Editor"			href="html/reference/MMP_Editor.html" >
+					<topic label="Sources tab"		href="html/reference/MMP_Editor_sources.html" />
+					<topic label="Libraries tab"	href="html/reference/MMP_Editor_libraries.html" />
+					<topic label="Options tab"		href="html/reference/MMP_Editor_options.html" />
+					<topic label="MMP File tab"		href="html/reference/MMP_Editor_mmp_tab.html" />
+  				</topic>
+			</topic>
+		</topic>
+	
+		<topic label="Launch configurations"				href="html/projects/launch/launch_configs_overview.htm" >
+			<topic label="New Launch Configuration Wizard"	href="html/projects/launch/wiz_new_launch_config.htm" />
+			<topic label="Debug dialog"						href="html/projects/launch/wnd_debug_configuration.htm" />
+
+		    <topic label="Launch configurations"			href="html/concepts/launch_configuration.htm" >
+				<topic label="Applications"					href="html/projects/launch/applications.htm" />
+				<topic label="Application TRK"				href="html/projects/launch/run_mode.htm" />
+				<topic label="Attach to Process"			href="html/projects/launch/attach_process.htm" />
+				<topic label="Emulation"					href="html/projects/launch/emulation.htm" />
+				<topic label="Sophia (STI)"					href="html/projects/launch/sophia.htm" />
+				<topic label="System TRK"					href="html/projects/launch/stop_mode.htm" />
+				<topic label="Trace32"						href="html/projects/launch/trace32.htm" />
+				<anchor id="launch_config_ANCHOR"/>
+			</topic>
+			
+ 			<topic label="Configuration panes"				href="html/projects/launch/pages_overview.htm" >
+				<topic label="Arguments"					href="PLUGINS_ROOT/org.eclipse.cdt.doc.user/reference/cdt_u_run_dbg_arg.htm" />
+				<topic label="Common"						href="PLUGINS_ROOT/org.eclipse.cdt.doc.user/reference/cdt_u_run_dbg_comm.htm" />
+				<topic label="Debugger"						href="html/projects/launch/page_debugger.htm" />
+				<topic label="Executables"					href="html/projects/launch/page_executables.htm" />
+				<topic label="File Transfer"				href="html/projects/launch/page_file_transfer.htm" />
+				<topic label="Installation"					href="html/projects/launch/page_installation.htm" />
+				<topic label="Main"							href="html/projects/launch/page_main.htm" />
+				<topic label="ROM Image"					href="html/projects/launch/page_rom_image.htm" />
+				<topic label="ROM Log File"					href="html/projects/launch/page_rom_log.htm" />
+				<topic label="Sources"						href="PLUGINS_ROOT/org.eclipse.cdt.doc.user/reference/cdt_u_run_dbg_srce.htm" />
+				<topic label="x86 Exceptions"				href="html/projects/launch/page_exceptions.htm" />
+			</topic>
+
+			<topic label="Customizing launch configurations"	href="html/projects/launch/customizing_launch_configs.htm" />
+			<topic label="Filtering launch configurations"		href="html/projects/launch/launch_configuration_filter.htm" />
+		</topic>
+
+		<topic label="Qt project support"					href="html/qt_help/qt_overview.htm" >
+
+			<topic label="Qt development setup"				href="html/qt_help/qt_project_setup.htm" >
+				<topic label="Creating Qt projects"			href="html/qt_help/qt_creating_projs_01.htm" />
+				<topic label="Importing Qt projects"		href="html/qt_help/qt_importing_projs_01.htm" />
+			</topic>
+
+			<topic label="Qt C/C++ perspective"				href="html/qt_help/qt_perspectives.htm" />
+			<topic label="Qt preference panel"				href="html/qt_help/qt_pref_panel.htm" />
+			<topic label="Qt project properties"			href="html/qt_help/qt_project_properties.htm" />
+		</topic>
+	</topic>
+  
+	
+	<topic label="Debugging projects" 				href="html/concepts/debugger_about.htm" >
+	
+		<topic label="Running a program" 			href="html/tasks/debugger/work_debug_act_run.htm" />
+		
+		<topic label="Debug perspective" 			href="html/reference/perspective_debug.htm" >
+			<topic label="BreakPoints view" 		href="html/reference/view_breakpoints.htm" />
+			<topic label="Console view" 			href="html/reference/view_log.htm" />
+			<topic label="Debug view"				href="html/reference/view_debug.htm" />
+			<topic label="Disassembly view"			href="html/reference/view_disassembly.htm" />
+			<topic href="html/reference/view_executables.htm" label="Executables view">
+   </topic>
+		    
+			<topic label="Expressions view"			href="html/reference/view_expressions.htm" >
+			    <topic label="Adding Expressions" 				href="html/tasks/expressions/expr_adding.htm" />
+			    <topic label="Editing Expressions" 				href="html/tasks/expressions/expr_editing.htm" />
+			    <topic label="Removing Expressions" 			href="html/tasks/expressions/expr_removing.htm" />
+		    </topic>
+		    
+			<topic label="Memory view"				href="html/reference/view_memory_wnd.htm" >
+      <topic href="html/concepts/working_with_memory.htm" label="Working with Memory">
+      </topic>
+			    <topic label="Opening a Memory View"					href="html/tasks/memory/view_memory_show.htm" />
+			    <topic label="Adding a Memory Monitor"					href="html/tasks/memory/memory_monitor_adding.htm" />
+			    <topic label="Adding a Memory Rendering"				href="html/tasks/memory/memory_rendering_adding.htm" />
+			    <topic label="Removing a Memory Monitor or Rendering"	href="html/tasks/memory/memory_monitor_removing.htm" />
+		        <topic label="Memory Rendering Options"         		href="html/reference/memory_rendering_options.htm" />
+			</topic>
+			
+			<topic label="Modules View"				href="html/reference/view_module_wnd.htm" />
+			
+	        <topic label="Registers"								href="html/concepts/registers.htm" >
+			    <topic label="Registers view"						href="html/reference/view_registers.htm" />
+			    <topic label="Opening a Registers View"				href="html/tasks/registers/mem_reg_open_wnd.htm" />
+       <topic href="html/tasks/registers/mem_reg_data_views.htm" label="Changing Register Data Views">
+       </topic>
+			    <topic label="Expanding Register Groups"			href="html/tasks/registers/mem_reg_viewing.htm" />
+			    <topic label="Changing Register Values"				href="html/tasks/registers/mem_reg_changing.htm" />
+			    <topic label="ARM Registers"						href="html/concepts/arm_registers.htm" />
+		    </topic>
+		    
+			
+			<topic href="html/reference/view_symbian_kernel.htm" label="Symbian OS Data view">
+      <topic href="html/tasks/debugger/view_symbian_kernel_set.htm" label="Setting the Refresh Rate">
+      </topic>
+   </topic>
+			
+			<topic label="Variables view"			href="html/reference/view_variables.htm" >
+      <topic label="Working with Variables" href="html/concepts/working_with_variables.htm">
+      </topic>
+			    <topic label="Opening a Variables View"				href="html/tasks/variables/show_variables_view.htm" />
+			    <topic label="Showing Global Variables" href="html/tasks/variables/show_global_variables.htm">
+       </topic>
+       <topic label="Setting Variable Formats" href="html/tasks/variables/set_variable_formats.htm">
+       </topic>
+		    </topic>
+		</topic>
+		
+   <topic label="Debugging actions" href="html/debugger/debug/debug.htm">
+      <topic href="html/debugger/debug/viewing_debug.htm" label="View debugging">
+      </topic>
+      <topic href="html/debugger/debug/cmds_starting.htm" label="Starting and Terminating">
+      </topic>
+      <topic href="html/debugger/debug/cmds_resuming.htm" label="Suspending and Resuming">
+      </topic>
+      <topic href="html/debugger/debug/cmds_stepping.htm" label="Stepping Over, Into, and Out of Routines">
+      </topic>
+      <topic href="html/debugger/debug/cmds_other.htm" label="Other useful commands">
+      </topic>
+      <topic href="html/debugger/debug/cmds_reposition_pc.htm" label="Reposition the program counter">
+      </topic>
+   </topic>
+
+
+ <topic href="html/debugger/breakpoints/breakpoints.htm" label="Breakpoints">
+    <topic label="Viewing breakpoints" href="html/debugger/breakpoints/viewing_breakpoints.htm" />
+    <topic label="Breakpoint status indicators" href="html/debugger/breakpoints/resolving_breakpoints.htm" />
+    <topic label="Enabling, disabling, and removing breakpoints" href="html/debugger/breakpoints/toggling_breakpoints.htm" />
+    <topic label="Breakpoint properties" href="html/debugger/breakpoints/properties_breakpoints.htm" >
+    <topic label="Creating conditional breakpoints" href="html/debugger/breakpoints/conditional_breakpoints.htm" />
+    <topic label="Creating temporary breakpoints" href="html/debugger/breakpoints/temporary_breakpoints.htm" />
+	</topic>
+    <topic label="Exporting breakpoints and watchpoints" href="html/debugger/breakpoints/exporting_breakpoints.htm" />
+    <topic label="Importing breakpoints and watchpoints" href="html/debugger/breakpoints/importing_breakpoints.htm" />
+    <topic label="Toggle hardware breakpoints" href="html/reference/menus/hardware_breakpoints.htm" />
+  </topic>
+
+
+ <topic href="html/debugger/watchpoints/watchpoints.htm" label="Watchpoints">
+    <topic label="Viewing watchpoints" href="html/debugger/breakpoints/viewing_breakpoints.htm" />
+    <topic label="Watchpoint status indicators" href="html/debugger/watchpoints/status_watchpoints.htm" />
+    <topic label="Setting and removing watchpoints" href="html/debugger/watchpoints/setting_watchpoints.htm" />
+    <topic label="Enabling and disabling watchpoints" href="html/debugger/watchpoints/toggling_watchpoints.htm" />
+    <topic label="Exporting breakpoints and watchpoints" href="html/debugger/breakpoints/exporting_breakpoints.htm" />
+    <topic label="Importing breakpoints and watchpoints" href="html/debugger/breakpoints/importing_breakpoints.htm" />
+ </topic>
+   
+   <topic label="Variables and Expressions" 			href="html/debugger/variables/variables.htm" >
+      <topic label="Viewing variables"                   		href="html/debugger/variables/viewing_variables.htm" >
+         <topic label="Adding and removing global variables" 	href="html/debugger/variables/adding_variables.htm" />
+      </topic>
+      <topic label="Viewing expressions" 						href="html/debugger/variables/viewing_expressions.htm" >
+         <topic label="Adding and removing expressions" 		href="html/debugger/variables/adding_expressions.htm" />
+         <topic label="Editing expressions" 					href="html/debugger/variables/editing_expressions.htm" />
+      </topic>
+   </topic>
+		
+   <topic href="html/reference/trk/wnd_new_connection_wizard.htm" label="On-Device Connections Overview" >
+		<topic label="Remote Connections view"			href="html/reference/trk/view_remote_connection.htm" />
+		<topic href="html/reference/trk/wnd_new_conn_wiz_edit.htm" label="Adding, editing, and deleting connections" />
+  <topic href="html/reference/trk/exporting_remote_conns.htm" label="Exporting remote connections">
+  </topic>
+  <topic href="html/reference/trk/importing_remote_conns.htm" label="Importing remote connections">
+  </topic>
+   </topic>
+	    
+		<topic label="Emulator projects" 					href="html/tasks/EmulatorToc.htm">
+			<topic label="Setting Environment for x86 Compiler"		href="html/tasks/projects/prj_build_cmd_line.htm" />
+			<topic label="Unsetting Built-in Environment"	        href="html/reference/wnd_carbide_pref_x86.htm" />		
+		</topic>
+
+
+	
+	
+		<topic label="Run mode projects" 						href="html/tasks/RunModeToc.htm">
+		
+			<topic label="Run Mode Overview"  			href="html/tasks/start/carbide_overview_trk.htm" >
+			
+			
+				
+		
+			</topic>
+      <topic href="html/concepts/autotargeting.htm" label="Auto-Targeting of Executables">
+      </topic>
+   <topic href="html/tasks/start/carbide_example_trk.htm" label="Run Mode Debug Example">
+       <topic href="html/tasks/trk/trk_preconditions.htm" label="1. Preconditions to On-Device Debugging">
+      </topic>
+      <topic href="html/tasks/trk/trk_installation_instr.htm" label="2. Installing an On-Device Debug Agent">
+      </topic>
+      <topic href="html/tasks/projects/working_with_sis_pkg_files.htm" label="3. Creating a PKG File">
+      </topic>
+      <topic href="html/tasks/projects/prj_creating_sis_file.htm" label="4. Creating a .SIS File">
+      </topic>
+            <topic href="html/tasks/start/carbide_deploying.htm" label="5. Deploying Programs">
+            </topic>
+      <topic href="html/tasks/trk/trk_carbide_setup.htm" label="6. Launch Configuration Setup">
+         <topic href="html/reference/trk/panel_trk_overview.htm" label="Debug (On-device Debugging) Overview">
+         </topic>
+      </topic>
+      <topic href="html/tasks/projects/prj_debug_config.htm" label="7. Debugging Applications">
+         <topic href="html/tasks/projects/prj_debug_dlls.htm" label="Debugging DLLs">
+         </topic>
+         <topic href="html/tasks/projects/prj_import_exe.htm" label="Importing a Symbian Executable">
+         </topic>
+         <topic href="html/tasks/processes/attach_debugger_to_process.htm" label="Attaching to a Symbian OS Process">
+         </topic>
+         <topic href="html/tasks/start/carbide_debugging.htm" label="Debugging a Symbian OS Program">
+         </topic>
+         <topic href="html/concepts/arm_registers.htm" label="Registers">
+         </topic>
+         <topic href="html/reference/view_symbian_kernel.htm" label="Symbian OS Data View">
+         </topic>
+      </topic>
+   </topic>
+
+			<topic label="Troubleshooting" 						href="html/tasks/trk/trk_troubleshooting.htm"/>
+			
+		</topic>
+	
+		<topic label="Stop mode projects" 				href="html/tasks/StopModeToc.htm">
+		
+			<topic label="Stop Mode Debug Example" 		href="html/tasks/debugger/stop_mode_debug.htm" >
+				<topic label="1. On-Device Debugging Preconditions" href="html/tasks/debugger/stop_mode_debug_precond.htm" />
+				<topic label="2. Symbian OS Trace32 Support" 		href="html/reference/wnd_Trace32_config.htm" >
+					<topic label="Main" 							href="html/reference/wnd_Trace32_config.htm#Main" />
+					<topic label="Connection" 						href="html/reference/wnd_Trace32_config.htm#Connection" />
+					<topic label="Debugger" 						href="html/reference/wnd_Trace32_config.htm#Debugger" />
+					<topic label="ROM Image" 						href="html/reference/wnd_Trace32_config.htm#ROM" />
+					<topic label="Executables" 						href="html/reference/wnd_Trace32_config.htm#Executables" />
+					<topic label="Source" 							href="html/reference/wnd_Trace32_config.htm#Source" />
+					<topic label="Commmon" 							href="html/reference/wnd_Trace32_config.htm#Commmon" />
+				</topic>
+				<topic label="3. Symbian OS Sophia Target Interface Support" 	href="html/reference/wnd_sophia_config.htm" >
+					<topic label="Main" 							href="html/reference/wnd_sophia_config.htm#Main" />
+					<topic label="Connection" 						href="html/reference/wnd_sophia_config.htm#Connection" />
+					<topic label="Debugger" 						href="html/reference/wnd_sophia_config.htm#Debugger" />
+					<topic label="ROM Image" 						href="html/reference/wnd_sophia_config.htm#ROM" />
+					<topic label="Executables" 						href="html/reference/wnd_sophia_config.htm#Executables" />
+					<topic label="Source" 							href="html/reference/wnd_sophia_config.htm#Source" />
+					<topic label="Commmon" 							href="html/reference/wnd_sophia_config.htm#Commmon" />
+				</topic>
+				<topic label="4. Using Soft Attach"	 href="html/tasks/debugger/soft_attach_debug.htm" />
+			</topic>
+			
+			<topic label="Building a ROM Image File"            href="html/reference/ROM_build_settings.html" />
+			<topic label="ARM Registers" 						href="html/concepts/arm_registers.htm" />
+			<topic label="Symbian OS Data View"					href="html/reference/view_symbian_kernel.htm" />
+			<topic label="Toggle HW Breakpoint"           		href="html/reference/menus/hardware_breakpoints.htm" />
+			
+		</topic>
+		<topic label="Debugging variations"                     href="html/concepts/debugger_about.htm" >
+		    <topic label="Emulation Debugging"			        href="html/concepts/emulators.htm" />
+			<topic label="Debugging DLLs"						href="html/tasks/projects/prj_debug_dlls.htm" />
+			<topic label="Debugging in ROM"		                href="html/tasks/projects/prj_debug_rom.htm" />      
+			<topic label="Importing Symbian Executables"		href="html/tasks/projects/prj_import_exe.htm" />
+		</topic>
+	</topic>
+ 
+ 
+	
+ 	<topic href="html/reference/search/wnd_system_search.htm" label="System Search">
+			<topic label="System Search view"      		href="html/reference/search/view_system_search.htm" />
+			<topic label="System Search preferences"    href="html/reference/search/wnd_system_search_prefs.htm" />
+ 	</topic>
+		
+	<topic href="html/hints_tips.htm" label="Tips &amp; Hints">
+ </topic>
+</toc>
--- a/core/com.nokia.carbide.cpp.leavescan/build.properties	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.leavescan/build.properties	Sat Apr 25 12:54:10 2009 -0500
@@ -4,5 +4,4 @@
                META-INF/,\
                .,\
                icons/,\
-               src/,\
                html/
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/processes/CheckS60CustKitSupport.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/processes/CheckS60CustKitSupport.java	Sat Apr 25 12:54:10 2009 -0500
@@ -32,8 +32,16 @@
 	
 	private static final String SELECTED_BUILD_CONFIGS_VALUE_KEY = "selectedBuildConfigs"; //$NON-NLS-1$
 	private static final String S60_50_BUILD_MACROS = "S60_50_CustomBuildIncludes";
+	
 	private static final String S60_INC_MACROS = "#include <data_caging_paths.hrh>\n#include <domain/osextensions/platform_paths.hrh>\nMW_LAYER_SYSTEMINCLUDE";
 	private static final String S60_MIDDWARE_INC = "epoc32/include/middleware";
+	
+	private static final String S60_MIDDWARE_INC2 =  "epoc32/include/mw";
+	private static final String S60_INC_MACROS2 = "#include <domain/osextensions/platform_paths.hrh>\nAPP_LAYER_SYSTEMINCLUDE";
+
+	private static final String S60_SF_FOLDER =  "sf";
+	private static final String S60_INC_MACROS_SF = "#include <platform_paths.hrh>\n#include <data_caging_paths.hrh>\nAPP_LAYER_SYSTEMINCLUDE";
+
 	protected IProject project;
 
 	@Override
@@ -66,15 +74,36 @@
 				Check.checkContract(obj instanceof ISymbianBuildContext);
 				ISymbianBuildContext symbianBuildContext = (ISymbianBuildContext)obj;
 				ISymbianSDK sdk = symbianBuildContext.getSDK();
-				if (sdk != null){
+				if (sdk != null) {
 					File middleWareInclude = new File(sdk.getEPOCROOT() + S60_MIDDWARE_INC);
-					// NOTE: Here we need to check the SDK major version becuase the 3.2 CustKit
-					// has the middleware folder but doesn't use the new build macros for include paths
-					if (sdk.getSDKVersion().getMajor() >= 5 && middleWareInclude.exists()){
+					
+					// NOTE: Here we need to check the SDK major version becuase
+					// the 3.2 CustKit
+					// has the middleware folder but doesn't use the new build
+					// macros for include paths
+					if (sdk.getSDKVersion().getMajor() >= 5 && middleWareInclude.exists()) {
 						// add symbol as at least one build config is a CustKit
 						S60_50_Macros_String = S60_INC_MACROS;
 						break;
 					}
+					
+					middleWareInclude = new File(sdk.getEPOCROOT() + S60_MIDDWARE_INC2);
+					File sfoPath = new File(sdk.getEPOCROOT() + S60_SF_FOLDER);
+					// check for middleware paths and /sf path (if SFO kit)
+					if (sdk.getSDKVersion().getMajor() >= 5 && middleWareInclude.exists() && sfoPath.exists()) {
+						// add symbol as at least one build config is a CustKit
+						S60_50_Macros_String = S60_INC_MACROS_SF;
+						break;
+					}
+					
+					// try newer middleware paths moved to app layer includes
+					
+					if (sdk.getSDKVersion().getMajor() >= 5 && middleWareInclude.exists()) {
+						// add symbol as at least one build config is a CustKit
+						S60_50_Macros_String = S60_INC_MACROS2;
+						break;
+					}
+
 				}
 			}
 		}
--- a/core/com.nokia.carbide.cpp/META-INF/MANIFEST.MF	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp/META-INF/MANIFEST.MF	Sat Apr 25 12:54:10 2009 -0500
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Carbide.c++
 Bundle-SymbolicName: com.nokia.carbide.cpp; singleton:=true
-Bundle-Version: 2.0.3.qualifier
+Bundle-Version: 2.1.0.qualifier
 Bundle-Activator: com.nokia.carbide.cpp.ProductPlugin
 Bundle-Vendor: Nokia
 Bundle-Localization: plugin
--- a/core/com.nokia.carbide.cpp/html/welcome_note.htm	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp/html/welcome_note.htm	Sat Apr 25 12:54:10 2009 -0500
@@ -1,20 +1,20 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-  <meta http-equiv="Content-Type"
- content="text/html; charset=iso-8859-1">
-  <title>Welcome</title>
-  <link href="../book.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-<h2>Welcome to Carbide.c++ 2.0.3 </h2>
-<p>Thank you for installing Carbide.c++2.0! It's an improvement over 1.3.1 with many improvements to connecting and debugging on devices, faster downloading of  large SIS files, improved program counter control, C/C++ indexer improvements, and is based on the latest Eclipse and CDT updates (Ganymede). </p>
-<p>However, perhaps the best part about Carbide.c++ is the Carbide.c++ Plug-in SDK that you can use to build custom extensions for Carbide.c++. Take a look, and let us know what you built!</p>
-<p>Finally, if you find bugs, please let us know by submitting it at the new Carbide Bugzilla bug tracking site located at <a href="https://xdabug001.ext.nokia.com/bugzilla">https://xdabug001.ext.nokia.com/bugzilla</a> </p>
-<p>For any other questions, please don't hesitate to contact us.</p>
-<p> Thank you again for choosing Carbide.c++! We hope you like it. </p>
-<p>Carbide.c++ development team<br>
-  <a href="http://www.forum.nokia.com/carbide_cpp">www.forum.nokia.com/carbide_cpp</a> <br>
-  <a href="mailto:Sales.Carbide@Nokia.com">Sales.Carbide@Nokia.com</a></p>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+  <title>Welcome</title>
+  <link href="../book.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+<h2>Welcome to Carbide.c++ 2.1.0</h2>
+<p>Thank you for installing Carbide.c++2.1! It's an improvement over 2.0 with many improvements including editor hover help and numerous bug fixes. </p>
+<p>However, perhaps the best part about Carbide.c++ is the Carbide.c++ Plug-in SDK that you can use to build custom extensions for Carbide.c++. Take a look, and let us know what you built!</p>
+<p>Finally, if you find bugs, please let us know by submitting it at the new Carbide Bugzilla bug tracking site located at <a href="https://xdabug001.ext.nokia.com/bugzilla">https://xdabug001.ext.nokia.com/bugzilla</a> </p>
+<p>For any other questions, please don't hesitate to contact us.</p>
+<p> Thank you again for choosing Carbide.c++! We hope you like it. </p>
+<p>Carbide.c++ development team<br>
+  <a href="http://www.forum.nokia.com/carbide_cpp">www.forum.nokia.com/carbide_cpp</a> <br>
+  <a href="mailto:Sales.Carbide@Nokia.com">Sales.Carbide@Nokia.com</a></p>
+</body>
+</html>
--- a/core/com.nokia.carbide.cpp/plugin.xml	Sat Apr 25 12:50:39 2009 -0500
+++ b/core/com.nokia.carbide.cpp/plugin.xml	Sat Apr 25 12:54:10 2009 -0500
@@ -1,544 +1,544 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension-point id="diagnosticLogGroup" name="diagnosticLogGroup" schema="schema/diagnosticLogGroup.exsd"/>
-   <extension-point id="diagnosticLog" name="diagnosticLog" schema="schema/diagnosticLog.exsd"/>
-<extension
-      point="org.eclipse.core.runtime.products"
-      id="product">
-      
-	<product 
-		name="Carbide.c++" 
-		application="org.eclipse.ui.ide.workbench" 
-		description="%productBlurb"> 
-		
-		<property 
-			name="windowImages" 
-			value="icons/Carbide_c_icon_16x16.png,icons/Carbide_c_icon_32x32.png,icons/Carbide_c_icon_48x48.png"/> 
-		<property 
-			name="aboutImage" 
-			value="icons/about.png"/> 
-		<property 
-			name="aboutTextImage" 
-			value="icons/aboutTextImage.png"/>       
-		<property 
-			name="aboutText" 
-			value="%productBlurb"/> 
-		<property 
-			name="appName" 
-			value="Carbide.c++"/>
-		<property 
-			name="versionText" 
-			value="Version 2.0.3"/>
-		<property 
-			name="preferenceCustomization" 
-			value="plugin_customization.ini"/>
-		<property
-			  name="featureImage"
-			  value="icons/Carbide_c_icon_32x32.png"/> 
-		
-		<!-- Product attributes that support themes and universal intro -->
-		<property
-			name="introTitle"
-			value="Carbide.c++ v2.0.3 for Symbian"/>
-		<property
-			name="introBrandingImage"
-			value="product:themes/carbide/graphics/root/brandmark.gif"/>
-		<property
-			name="introBrandingImageText"
-			value="Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved."/>
-		<property
-			name="introDescription-overview"
-			value="Carbide.c++ provides C/C++ developer tools for creating programs that operate on the Symbian OS. Carbide.c++ is based on Eclipse - an open extensible IDE for anything and nothing in particular."/>
-		<property
-			name="introDescription-firststeps"
-			value="First steps information available."/>
-		<property
-			name="introDescription-tutorials"
-			value="Tutorials included with this release..."/>
-		<property
-			name="introDescription-samples"
-			value="Sample programs included with this release..."/>
-		<property
-			name="introDescription-whatsnew"
-			value="This release of Carbide.c++ provides a host of new features and bug fixes. Learn more about Carbide.c++ and its many useful developer features using the links below."/>
-		<property
-			name="introDescription-migrate"
-			value="Migration information available."/>
-		<property
-			name="introDescription-webresources"
-			value="The following web resources provide information and guidance on creating Symbian OS progams using Carbide.c++"/>
-		
-		<!-- Splash screen attributes -->
-		<property 
-			name="startupProgressRect" 
-			value="0,244,469,21" /> 
-		<property 
-			name="startupForegroundColor" 
-			value="777777" />
-		<property 
-			name="startupMessageRect" 
-			value="12,180,441,15" /> 
-	</product> 
-
-   </extension>
-
-  <extension  
-         point="org.eclipse.ui.intro">
-      <intro
-            class="org.eclipse.ui.intro.config.CustomizableIntroPart"
-            id="com.nokia.carbide.cpp.intro"
-            icon="icons/Carbide_c_icon_16x16.png">
-      </intro>
-      <introProductBinding
-            introId="org.eclipse.ui.intro.universal"
-            productId="com.nokia.carbide.cpp.product">
-      </introProductBinding>
-   </extension>
-
-<extension   
-	id="intro"
-	point="org.eclipse.ui.intro.config">
-	<config
-		introId="com.nokia.carbide.cpp.intro"
-		id="com.nokia.carbide.cpp.introConfig"
-		content="intro/introContent.xml">
-	<presentation
-		home-page-id="root" standby-page-id="standby">
-			<implementation
- 				ws="win32"
-                style="$theme$/html/shared.css"
-				kind="html"
-				os="win32">
-			</implementation>
-			<implementation
-				kind="swt">
-			</implementation>
-			<launchBar
-               	location="fastview" 
-            	bg="$launchbarBackground$"
-            	computed="true" >
-			</launchBar>
-	</presentation>
-	</config>
-</extension>  
-
-<!-- =================================================================================== -->
-<!-- Universal intro extensions to show content in welcome pages                         -->
-<!-- =================================================================================== -->
-	<extension
-		point="org.eclipse.ui.intro.configExtension">
-		
-		<configExtension
-			configId="org.eclipse.ui.intro.universalConfig"
-			content="html/intro/overviewExtensionContent.xml" />
-		<!--
-		<configExtension
-			configId="org.eclipse.ui.intro.universalConfig"
-			content="html/intro/whatsnewExtensionContent.xml" />
-		-->
-		<configExtension
-			configId="org.eclipse.ui.intro.universalConfig"
-			content="html/intro/webresourcesExtensionContent.xml" />
-
-		<configExtension
-			configId="org.eclipse.ui.intro.universalConfig"
-			content="html/intro/webresourcesExtensionContent2.xml" />
-
-		<configExtension
-            configId="org.eclipse.ui.intro.universalConfig"
-			content="html/intro/migrateExtensionContent.xml" /> 
-			
-	</extension>
-
-<!-- =================================================================================== -->
-<!-- Action sets                                 										 -->
-<!-- =================================================================================== -->
-   <extension
-         point="org.eclipse.ui.actionSets">
-      <actionSet
-            id="com.nokia.carbide.cpp.displayReleaseNotes"
-            label="Carbide.c++ Release Notes"
-            visible="true">
-         <action
-               class="com.nokia.carbide.cpp.actions.DisplayReleaseNotesAction"
-               id="com.nokia.carbide.cpp.displayReleaseNotes"
-               label="Carbide.c++ &amp;Release Notes"
-               menubarPath="help/groupHelp"
-               style="push"
-               tooltip="Launches the Help system at the Carbide.c++ Release Notes topic"/>
-      </actionSet>
-   </extension>
-
-<!-- =================================================================================== -->
-<!-- Cheatsheet category that support Carbide Tools                                      -->
-<!-- =================================================================================== -->
-	<extension
-		  point="org.eclipse.ui.cheatsheets.cheatSheetContent">
-	   <category
-			 id="com.nokia.carbide.cpp.tools.cheatsheets"
-			 name="Carbide.c++ Tools">
-	   </category>
-	</extension>
-	
-<!-- =================================================================================== -->
-<!-- NOKIA TOP-LEVEL TOC                                                                 -->
-<!-- =================================================================================== -->
-   <extension
-         point="org.eclipse.help.toc">
-      <toc
-            file="nokiaTOC.xml"
-            primary="true"/>      
-      <toc
-            file="html/tocCarbide.xml"
-            primary="false"/>      
-    </extension>
-	
-<!-- =================================================================================== -->
-<!-- CONTEXT IDs for CONTEXTUAL HELP in windows, dialogs, and views                      -->
-<!-- =================================================================================== -->
-	<extension point="org.eclipse.help.contexts" >
-       <!-- ECLIPSE NEW/IMPORT/EXPORT WIZARDS and PREF PANELS HELP  -->
-       <contexts file="html/context_help/org_eclipse_ui.xml"
-       		plugin="org.eclipse.ui" />
-	</extension>
-	
-<!-- =================================================================================== -->
-<!-- Index extension                                                                     -->
-<!-- =================================================================================== -->
-	<extension point="org.eclipse.help.index">
-		<index file="html/index.xml"/>
-	</extension>
-<!-- =================================================================================== -->
-<!-- CARBIDE KEY SHORTCUT EXTENSIONS                                                     -->
-<!-- win32:  M1=CTRL,    M2=SHIFT, M3=ALT, M4=-                                          -->
-<!-- carbon: M1=COMMAND, M2=SHIFT, M3=ALT, M4=CTRL                                       -->
-<!-- =================================================================================== -->
-   <extension
-         point="org.eclipse.ui.bindings">
-      <scheme
-            id="com.nokia.carbide.cpp.carbidedefault"
-			parentId="org.eclipse.ui.defaultAcceleratorConfiguration"
-            name="Carbide.c++"/>
-      <scheme
-            id="com.nokia.carbide.cpp.codewarrior"
-			parentId="org.eclipse.ui.defaultAcceleratorConfiguration"
-            name="Nokia CodeWarrior"/>
-
-<!-- =================================================================================== -->
-<!-- CARBIDE KEY SHORTCUTS                                                               -->
-<!-- =================================================================================== -->
-		<key
-            sequence="M1+M3+C"
-            contextId="org.eclipse.ui.globalScope"
-            commandId="com.nokia.carbide.cpp.builder.utils.commands.compileSource"
-            schemeId="com.nokia.carbide.cpp.carbidedefault"/>
-		<key
-            commandId="com.nokia.carbide.cpp.buildProject"
-            sequence="M1+B"
-            schemeId="com.nokia.carbide.cpp.carbidedefault" />
-		<key
-            commandId="com.nokia.carbide.cpp.builder.utils.commands.abldTarget"
-            sequence="M1+M3+B"
-            schemeId="com.nokia.carbide.cpp.carbidedefault" />
-        <key
-            commandId="com.nokia.carbide.cpp.builder.utils.commands.buildAllConfigs"
-            sequence="M1+M3+A"
-            schemeId="com.nokia.carbide.cpp.carbidedefault" />
-        <key
-            commandId="org.eclipse.ui.project.cleanAction"
-            sequence="M1+M2+-"
-            schemeId="com.nokia.carbide.cpp.carbidedefault" />
-        <key
-            commandId="com.nokia.carbide.cpp.builder.utils.commands.cleanSymbianComponent"
-            sequence="M1+M3+X"
-            schemeId="com.nokia.carbide.cpp.carbidedefault" />
-
-        <key
-            commandId="com.nokia.carbide.cpp.builder.utils.commands.buildSymbianComponent"
-            sequence="M1+M3+P"
-            schemeId="com.nokia.carbide.cpp.carbidedefault" />
-
-        <key
-            commandId="com.nokia.carbide.cpp.builder.utils.commands.freezeSymbianComponent"
-            sequence="M1+M3+F"
-            schemeId="com.nokia.carbide.cpp.carbidedefault" />
-
-		<!-- Add Bookmark bug#4203  -->
-		<key
-            sequence="M1+F2" 
-            commandId="org.eclipse.ui.edit.addBookmark"
-            schemeId="com.nokia.carbide.cpp.carbidedefault" />
-		
-	   
-<!-- =================================================================================== -->
-<!-- MICROSOFT VISUAL STUDIO KEY SHORTCUTS                                               -->
-<!-- =================================================================================== -->
-<!-- Note : most of the Visual Studio key shortcuts have been integrated into CDT 5.0    -->
-		<!-- Project Keys -->
-		<!-- MSVS BuildSolution -->
-		<key
-			sequence="F7"
-			commandId="com.nokia.carbide.cpp.buildProject"
-			schemeId="org.eclipse.cdt.ui.visualstudio"/>	
-		<key
-			sequence="M1+F7"
-			commandId="com.nokia.carbide.cpp.builder.utils.commands.compileSource"
-			schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
-
-<!-- =================================================================================== -->
-<!-- NOKIA CODEWARRIOR KEY SHORTCUTS                                                     -->
-<!-- =================================================================================== -->
-		<!-- C/C++ Source Keys -->
-	    <!-- CW Find Definition -->
-		<key
-			sequence="M1+'"
-			commandId="org.eclipse.cdt.ui.edit.opendef"
-			contextId="org.eclipse.cdt.ui.cEditorScope"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-	   
-		<!-- Edit Keys -->
-
-	   	<!-- CW Replace -->
-		<key
-			sequence="M1+H"
-			commandId="org.eclipse.ui.edit.findReplace"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-	   	<!-- CW Undo -->
-		<key
-			commandId="org.eclipse.ui.edit.undo"
-			sequence="M1+BS"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-	   	<!-- File Keys -->
-		<!-- Help Keys -->
-		<!-- MakeFile Source Keys -->
-		<!-- Navigate Keys -->
-	   
-		<!-- Project Keys -->
-		<!-- CW Make -->
- 		<key
-			sequence="F7"
-			commandId="com.nokia.carbide.cpp.buildProject"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-		<!-- CW Remove Object Code (Clean) -->	
-		<key
-			sequence="M1+-"
-			commandId="org.eclipse.ui.project.cleanAction"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>	
-		<!-- CW Compile -->
- 		<key
-			sequence="M1+F7"
-			commandId="com.nokia.carbide.cpp.builder.utils.commands.compileSource"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>		   
-		<!-- CW New -->
-		<key
-			sequence="M1+M2+N"
-			commandId="org.eclipse.ui.newWizard"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-	   
-		<!-- Run/Debug Keys -->
-	   
-		<!-- CW Start -->
-		<key
-			sequence="M1+F5"
-			commandId="org.eclipse.debug.ui.commands.RunLast"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-	   
-		<!-- CW StartWithoutDebugging -->
-		<key
-			sequence="F5"
-			commandId="org.eclipse.debug.ui.commands.DebugLast"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-	   
-		<!-- CW Resume -->
-		<key
-            sequence="F5"
-            commandId="org.eclipse.debug.ui.commands.Resume"
-            contextId="org.eclipse.debug.ui.debugging"
-            schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-		<!-- CW StepInto -->
-		<key
-			sequence="F11"
-			commandId="org.eclipse.debug.ui.commands.StepInto"
-			contextId="org.eclipse.debug.ui.debugging"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-	   
-		<!-- CW StepOver -->
-		<key
-			sequence="F10"
-			commandId="org.eclipse.debug.ui.commands.StepOver"
-			contextId="org.eclipse.debug.ui.debugging"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-	   
-		<!-- MSVS StepReturn -->
-		<key
-			sequence="M2+F11"
-			commandId="org.eclipse.debug.ui.commands.StepReturn"
-			contextId="org.eclipse.debug.ui.debugging"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-	   
-		<!-- CW ToggleBreakpoint -->
-		<key
-			sequence="F9"
-			commandId="org.eclipse.debug.ui.commands.ToggleBreakpoint"
-            contextId="org.eclipse.ui.globalScope"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-	   
-		<!-- Search Keys -->
-		<key
-			sequence="Ctrl+Shift+M"
-			commandId="com.nokia.carbide.search.system.ui.openSystemSearchPage"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-			
-		<!-- CW Word searching -->
-		<key
-			sequence="M1+F3"
-			commandId="org.eclipse.search.ui.performTextSearchWorkspace"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-		<!-- CW Find Next -->
-		<key
-			sequence="F3"
-	        commandId="org.eclipse.ui.edit.findNext"
-	        contextId="org.eclipse.ui.textEditorScope"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-		<!-- CW Find Previous -->
-		<key
-			sequence="M2+F3"
-	        commandId="org.eclipse.ui.edit.findPrevious"
-	        contextId="org.eclipse.ui.textEditorScope"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-		<!-- Text Editing Keys -->
-
-	   	<!-- CW Goto Line -->
-		<key
-			sequence="M1+G"
-			commandId="org.eclipse.ui.edit.text.goto.line"
-			contextId="org.eclipse.ui.textEditorScope"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-		<key	
-			sequence="M1+M2+ARROW_LEFT"
-			commandId="org.eclipse.ui.edit.text.select.wordPrevious"
-			contextId="org.eclipse.ui.textEditorScope"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-	   
-		<key
-			sequence="M1+M2+ARROW_RIGHT"
-			commandId="org.eclipse.ui.edit.text.select.wordNext"
-			contextId="org.eclipse.ui.textEditorScope"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-		<key
-            sequence="M1+F2" 
-            commandId="org.eclipse.ui.edit.addBookmark"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-	    <!-- View Keys -->
-		<!-- Views Keys -->
-		<!-- Window Keys -->
-		
-		<key
-			sequence="M1+TAB"
-            commandId="org.eclipse.ui.window.nextEditor"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-		<key
-			sequence="M1+M2+TAB"
-            commandId="org.eclipse.ui.window.previousEditor"
-			schemeId="com.nokia.carbide.cpp.codewarrior"/>
-
-	  
-   </extension>
-   
-<!-- =================================================================================== -->
-<!-- Product startup extension                                                           -->
-<!-- =================================================================================== -->
-	<extension point="org.eclipse.ui.startup">
-		  <startup class="com.nokia.carbide.cpp.ProductStartup"/>
-	</extension>
-	
-<!-- =================================================================================== -->
-<!-- Carbide welcome page theme                                                          -->
-<!-- =================================================================================== -->
-	<extension
-		  point="org.eclipse.ui.intro.configExtension">
-		
-	   <theme
-			 default="true"
-			 id="com.nokia.carbide.cpp.carbide"
-			 name="%theme.name.carbide"
-			 path="$nl$/themes/carbide"
-			 previewImage="$nl$/themes/carbide/preview.png">
-
-		   	<property
-				name="launchbarBackground"
-				value="#a1c2cb"/>
-		   
-            <property name="capitalizeTitles"
-            		value="true"/>
-		   
-            <property name="launchbarOverviewIcon"
-            		  value="$theme$graphics/launchbar/overview.gif"/>
-            <property name="launchbarFirststepsIcon"
-            		  value="$theme$graphics/launchbar/firststeps16.png"/>
-            <property name="launchbarTutorialsIcon"
-            		  value="$theme$graphics/launchbar/tutorials.gif"/>
-            <property name="launchbarSamplesIcon"
-            		  value="$theme$graphics/launchbar/samples.gif"/>
-            <property name="launchbarWhatsnewIcon"
-            		  value="$theme$graphics/launchbar/whatsnew.gif"/>
-            <property name="launchbarMigrateIcon"
-            		  value="$theme$graphics/launchbar/migrate16.png"/>
-            <property name="launchbarWebresourcesIcon"
-            		  value="$theme$graphics/launchbar/webresources16.png"/>
-            		  
-            <property name="highContrast-overview"
-            		  value="$theme$graphics/icons/etool/overview72.gif"/>
-            <property name="highContrast-firststeps"
-            		  value="$theme$graphics/icons/etool/firsteps72.gif"/>
-            <property name="highContrast-tutorials"
-            		  value="$theme$graphics/icons/etool/tutorials72.gif"/>
-            <property name="highContrast-samples"
-            		  value="$theme$graphics/icons/etool/samples72.gif"/>
-            <property name="highContrast-whatsnew"
-            		  value="$theme$graphics/icons/etool/whatsnew72.gif"/>
-            <property name="highContrast-webresources"
-            		  value="$theme$graphics/icons/etool/webrsrc72.gif"/>
-            <property name="highContrast-migrate"
-            		  value="$theme$graphics/icons/etool/migrate72.gif"/>
-		   
-		</theme>
-	</extension>
- <extension point="com.nokia.carbide.cpp.diagnosticLogGroup">
-   <diagnosticLogGroup
-           id="com.nokia.carbide.cpp.diagnosticLogs"
-           name="Carbide.c++ Diagnostic Logs">
-   </diagnosticLogGroup>
-       
- </extension>
- <extension
-       point="org.eclipse.ui.preferencePages">
-    <page
-          category="com.nokia.carbide.cpp.project.ui.preferences.CarbidePreferencePage"
-          class="com.nokia.carbide.cpp.logging.LoggingPreferencesPage"
-          id="com.nokia.carbide.cpp.LoggingPreferencesPage"
-          name="Diagnostic Logs">
-    </page>
- </extension>
-
-	<extension
-         point="org.eclipse.ui.preferencePages">
-      <page
-           name="Carbide Extensions"
-           class="com.nokia.carbide.cpp.preferences.ExtensionsPreferencesPage"
-           id="com.nokia.carbide.cpp.preferences.ExtensionsPreferencesPage"/>         
-   </extension>
-
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+   <extension-point id="diagnosticLogGroup" name="diagnosticLogGroup" schema="schema/diagnosticLogGroup.exsd"/>
+   <extension-point id="diagnosticLog" name="diagnosticLog" schema="schema/diagnosticLog.exsd"/>
+<extension
+      point="org.eclipse.core.runtime.products"
+      id="product">
+      
+	<product 
+		name="Carbide.c++" 
+		application="org.eclipse.ui.ide.workbench" 
+		description="%productBlurb"> 
+		
+		<property 
+			name="windowImages" 
+			value="icons/Carbide_c_icon_16x16.png,icons/Carbide_c_icon_32x32.png,icons/Carbide_c_icon_48x48.png"/> 
+		<property 
+			name="aboutImage" 
+			value="icons/about.png"/> 
+		<property 
+			name="aboutTextImage" 
+			value="icons/aboutTextImage.png"/>       
+		<property 
+			name="aboutText" 
+			value="%productBlurb"/> 
+		<property 
+			name="appName" 
+			value="Carbide.c++"/>
+		<property 
+			name="versionText" 
+			value="Version 2.1.0"/>
+		<property 
+			name="preferenceCustomization" 
+			value="plugin_customization.ini"/>
+		<property
+			  name="featureImage"
+			  value="icons/Carbide_c_icon_32x32.png"/> 
+		
+		<!-- Product attributes that support themes and universal intro -->
+		<property
+			name="introTitle"
+			value="Carbide.c++ v2.1.0 for Symbian"/>
+		<property
+			name="introBrandingImage"
+			value="product:themes/carbide/graphics/root/brandmark.gif"/>
+		<property
+			name="introBrandingImageText"
+			value="Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved."/>
+		<property
+			name="introDescription-overview"
+			value="Carbide.c++ provides C/C++ developer tools for creating programs that operate on the Symbian OS. Carbide.c++ is based on Eclipse - an open extensible IDE for anything and nothing in particular."/>
+		<property
+			name="introDescription-firststeps"
+			value="First steps information available."/>
+		<property
+			name="introDescription-tutorials"
+			value="Tutorials included with this release..."/>
+		<property
+			name="introDescription-samples"
+			value="Sample programs included with this release..."/>
+		<property
+			name="introDescription-whatsnew"
+			value="This release of Carbide.c++ provides a host of new features and bug fixes. Learn more about Carbide.c++ and its many useful developer features using the links below."/>
+		<property
+			name="introDescription-migrate"
+			value="Migration information available."/>
+		<property
+			name="introDescription-webresources"
+			value="The following web resources provide information and guidance on creating Symbian OS progams using Carbide.c++"/>
+		
+		<!-- Splash screen attributes -->
+		<property 
+			name="startupProgressRect" 
+			value="0,244,469,21" /> 
+		<property 
+			name="startupForegroundColor" 
+			value="777777" />
+		<property 
+			name="startupMessageRect" 
+			value="12,180,441,15" /> 
+	</product> 
+
+   </extension>
+
+  <extension  
+         point="org.eclipse.ui.intro">
+      <intro
+            class="org.eclipse.ui.intro.config.CustomizableIntroPart"
+            id="com.nokia.carbide.cpp.intro"
+            icon="icons/Carbide_c_icon_16x16.png">
+      </intro>
+      <introProductBinding
+            introId="org.eclipse.ui.intro.universal"
+            productId="com.nokia.carbide.cpp.product">
+      </introProductBinding>
+   </extension>
+
+<extension   
+	id="intro"
+	point="org.eclipse.ui.intro.config">
+	<config
+		introId="com.nokia.carbide.cpp.intro"
+		id="com.nokia.carbide.cpp.introConfig"
+		content="intro/introContent.xml">
+	<presentation
+		home-page-id="root" standby-page-id="standby">
+			<implementation
+ 				ws="win32"
+                style="$theme$/html/shared.css"
+				kind="html"
+				os="win32">
+			</implementation>
+			<implementation
+				kind="swt">
+			</implementation>
+			<launchBar
+               	location="fastview" 
+            	bg="$launchbarBackground$"
+            	computed="true" >
+			</launchBar>
+	</presentation>
+	</config>
+</extension>  
+
+<!-- =================================================================================== -->
+<!-- Universal intro extensions to show content in welcome pages                         -->
+<!-- =================================================================================== -->
+	<extension
+		point="org.eclipse.ui.intro.configExtension">
+		
+		<configExtension
+			configId="org.eclipse.ui.intro.universalConfig"
+			content="html/intro/overviewExtensionContent.xml" />
+		<!--
+		<configExtension
+			configId="org.eclipse.ui.intro.universalConfig"
+			content="html/intro/whatsnewExtensionContent.xml" />
+		-->
+		<configExtension
+			configId="org.eclipse.ui.intro.universalConfig"
+			content="html/intro/webresourcesExtensionContent.xml" />
+
+		<configExtension
+			configId="org.eclipse.ui.intro.universalConfig"
+			content="html/intro/webresourcesExtensionContent2.xml" />
+
+		<configExtension
+            configId="org.eclipse.ui.intro.universalConfig"
+			content="html/intro/migrateExtensionContent.xml" /> 
+			
+	</extension>
+
+<!-- =================================================================================== -->
+<!-- Action sets                                 										 -->
+<!-- =================================================================================== -->
+   <extension
+         point="org.eclipse.ui.actionSets">
+      <actionSet
+            id="com.nokia.carbide.cpp.displayReleaseNotes"
+            label="Carbide.c++ Release Notes"
+            visible="true">
+         <action
+               class="com.nokia.carbide.cpp.actions.DisplayReleaseNotesAction"
+               id="com.nokia.carbide.cpp.displayReleaseNotes"
+               label="Carbide.c++ &amp;Release Notes"
+               menubarPath="help/groupHelp"
+               style="push"
+               tooltip="Launches the Help system at the Carbide.c++ Release Notes topic"/>
+      </actionSet>
+   </extension>
+
+<!-- =================================================================================== -->
+<!-- Cheatsheet category that support Carbide Tools                                      -->
+<!-- =================================================================================== -->
+	<extension
+		  point="org.eclipse.ui.cheatsheets.cheatSheetContent">
+	   <category
+			 id="com.nokia.carbide.cpp.tools.cheatsheets"
+			 name="Carbide.c++ Tools">
+	   </category>
+	</extension>
+	
+<!-- =================================================================================== -->
+<!-- NOKIA TOP-LEVEL TOC                                                                 -->
+<!-- =================================================================================== -->
+   <extension
+         point="org.eclipse.help.toc">
+      <toc
+            file="nokiaTOC.xml"
+            primary="true"/>      
+      <toc
+            file="html/tocCarbide.xml"
+            primary="false"/>      
+    </extension>
+	
+<!-- =================================================================================== -->
+<!-- CONTEXT IDs for CONTEXTUAL HELP in windows, dialogs, and views                      -->
+<!-- =================================================================================== -->
+	<extension point="org.eclipse.help.contexts" >
+       <!-- ECLIPSE NEW/IMPORT/EXPORT WIZARDS and PREF PANELS HELP  -->
+       <contexts file="html/context_help/org_eclipse_ui.xml"
+       		plugin="org.eclipse.ui" />
+	</extension>
+	
+<!-- =================================================================================== -->
+<!-- Index extension                                                                     -->
+<!-- =================================================================================== -->
+	<extension point="org.eclipse.help.index">
+		<index file="html/index.xml"/>
+	</extension>
+<!-- =================================================================================== -->
+<!-- CARBIDE KEY SHORTCUT EXTENSIONS                                                     -->
+<!-- win32:  M1=CTRL,    M2=SHIFT, M3=ALT, M4=-                                          -->
+<!-- carbon: M1=COMMAND, M2=SHIFT, M3=ALT, M4=CTRL                                       -->
+<!-- =================================================================================== -->
+   <extension
+         point="org.eclipse.ui.bindings">
+      <scheme
+            id="com.nokia.carbide.cpp.carbidedefault"
+			parentId="org.eclipse.ui.defaultAcceleratorConfiguration"
+            name="Carbide.c++"/>
+      <scheme
+            id="com.nokia.carbide.cpp.codewarrior"
+			parentId="org.eclipse.ui.defaultAcceleratorConfiguration"
+            name="Nokia CodeWarrior"/>
+
+<!-- =================================================================================== -->
+<!-- CARBIDE KEY SHORTCUTS                                                               -->
+<!-- =================================================================================== -->
+		<key
+            sequence="M1+M3+C"
+            contextId="org.eclipse.ui.globalScope"
+            commandId="com.nokia.carbide.cpp.builder.utils.commands.compileSource"
+            schemeId="com.nokia.carbide.cpp.carbidedefault"/>
+		<key
+            commandId="com.nokia.carbide.cpp.buildProject"
+            sequence="M1+B"
+            schemeId="com.nokia.carbide.cpp.carbidedefault" />
+		<key
+            commandId="com.nokia.carbide.cpp.builder.utils.commands.abldTarget"
+            sequence="M1+M3+B"
+            schemeId="com.nokia.carbide.cpp.carbidedefault" />
+        <key
+            commandId="com.nokia.carbide.cpp.builder.utils.commands.buildAllConfigs"
+            sequence="M1+M3+A"
+            schemeId="com.nokia.carbide.cpp.carbidedefault" />
+        <key
+            commandId="org.eclipse.ui.project.cleanAction"
+            sequence="M1+M2+-"
+            schemeId="com.nokia.carbide.cpp.carbidedefault" />
+        <key
+            commandId="com.nokia.carbide.cpp.builder.utils.commands.cleanSymbianComponent"
+            sequence="M1+M3+X"
+            schemeId="com.nokia.carbide.cpp.carbidedefault" />
+
+        <key
+            commandId="com.nokia.carbide.cpp.builder.utils.commands.buildSymbianComponent"
+            sequence="M1+M3+P"
+            schemeId="com.nokia.carbide.cpp.carbidedefault" />
+
+        <key
+            commandId="com.nokia.carbide.cpp.builder.utils.commands.freezeSymbianComponent"
+            sequence="M1+M3+F"
+            schemeId="com.nokia.carbide.cpp.carbidedefault" />
+
+		<!-- Add Bookmark bug#4203  -->
+		<key
+            sequence="M1+F2" 
+            commandId="org.eclipse.ui.edit.addBookmark"
+            schemeId="com.nokia.carbide.cpp.carbidedefault" />
+		
+	   
+<!-- =================================================================================== -->
+<!-- MICROSOFT VISUAL STUDIO KEY SHORTCUTS                                               -->
+<!-- =================================================================================== -->
+<!-- Note : most of the Visual Studio key shortcuts have been integrated into CDT 5.0    -->
+		<!-- Project Keys -->
+		<!-- MSVS BuildSolution -->
+		<key
+			sequence="F7"
+			commandId="com.nokia.carbide.cpp.buildProject"
+			schemeId="org.eclipse.cdt.ui.visualstudio"/>	
+		<key
+			sequence="M1+F7"
+			commandId="com.nokia.carbide.cpp.builder.utils.commands.compileSource"
+			schemeId="org.eclipse.cdt.ui.visualstudio"/>
+
+
+<!-- =================================================================================== -->
+<!-- NOKIA CODEWARRIOR KEY SHORTCUTS                                                     -->
+<!-- =================================================================================== -->
+		<!-- C/C++ Source Keys -->
+	    <!-- CW Find Definition -->
+		<key
+			sequence="M1+'"
+			commandId="org.eclipse.cdt.ui.edit.opendef"
+			contextId="org.eclipse.cdt.ui.cEditorScope"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+	   
+		<!-- Edit Keys -->
+
+	   	<!-- CW Replace -->
+		<key
+			sequence="M1+H"
+			commandId="org.eclipse.ui.edit.findReplace"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+	   	<!-- CW Undo -->
+		<key
+			commandId="org.eclipse.ui.edit.undo"
+			sequence="M1+BS"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+	   	<!-- File Keys -->
+		<!-- Help Keys -->
+		<!-- MakeFile Source Keys -->
+		<!-- Navigate Keys -->
+	   
+		<!-- Project Keys -->
+		<!-- CW Make -->
+ 		<key
+			sequence="F7"
+			commandId="com.nokia.carbide.cpp.buildProject"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+		<!-- CW Remove Object Code (Clean) -->	
+		<key
+			sequence="M1+-"
+			commandId="org.eclipse.ui.project.cleanAction"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>	
+		<!-- CW Compile -->
+ 		<key
+			sequence="M1+F7"
+			commandId="com.nokia.carbide.cpp.builder.utils.commands.compileSource"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>		   
+		<!-- CW New -->
+		<key
+			sequence="M1+M2+N"
+			commandId="org.eclipse.ui.newWizard"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+	   
+		<!-- Run/Debug Keys -->
+	   
+		<!-- CW Start -->
+		<key
+			sequence="M1+F5"
+			commandId="org.eclipse.debug.ui.commands.RunLast"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+	   
+		<!-- CW StartWithoutDebugging -->
+		<key
+			sequence="F5"
+			commandId="org.eclipse.debug.ui.commands.DebugLast"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+	   
+		<!-- CW Resume -->
+		<key
+            sequence="F5"
+            commandId="org.eclipse.debug.ui.commands.Resume"
+            contextId="org.eclipse.debug.ui.debugging"
+            schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+		<!-- CW StepInto -->
+		<key
+			sequence="F11"
+			commandId="org.eclipse.debug.ui.commands.StepInto"
+			contextId="org.eclipse.debug.ui.debugging"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+	   
+		<!-- CW StepOver -->
+		<key
+			sequence="F10"
+			commandId="org.eclipse.debug.ui.commands.StepOver"
+			contextId="org.eclipse.debug.ui.debugging"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+	   
+		<!-- MSVS StepReturn -->
+		<key
+			sequence="M2+F11"
+			commandId="org.eclipse.debug.ui.commands.StepReturn"
+			contextId="org.eclipse.debug.ui.debugging"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+	   
+		<!-- CW ToggleBreakpoint -->
+		<key
+			sequence="F9"
+			commandId="org.eclipse.debug.ui.commands.ToggleBreakpoint"
+            contextId="org.eclipse.ui.globalScope"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+	   
+		<!-- Search Keys -->
+		<key
+			sequence="Ctrl+Shift+M"
+			commandId="com.nokia.carbide.search.system.ui.openSystemSearchPage"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+			
+		<!-- CW Word searching -->
+		<key
+			sequence="M1+F3"
+			commandId="org.eclipse.search.ui.performTextSearchWorkspace"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+		<!-- CW Find Next -->
+		<key
+			sequence="F3"
+	        commandId="org.eclipse.ui.edit.findNext"
+	        contextId="org.eclipse.ui.textEditorScope"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+		<!-- CW Find Previous -->
+		<key
+			sequence="M2+F3"
+	        commandId="org.eclipse.ui.edit.findPrevious"
+	        contextId="org.eclipse.ui.textEditorScope"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+		<!-- Text Editing Keys -->
+
+	   	<!-- CW Goto Line -->
+		<key
+			sequence="M1+G"
+			commandId="org.eclipse.ui.edit.text.goto.line"
+			contextId="org.eclipse.ui.textEditorScope"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+		<key	
+			sequence="M1+M2+ARROW_LEFT"
+			commandId="org.eclipse.ui.edit.text.select.wordPrevious"
+			contextId="org.eclipse.ui.textEditorScope"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+	   
+		<key
+			sequence="M1+M2+ARROW_RIGHT"
+			commandId="org.eclipse.ui.edit.text.select.wordNext"
+			contextId="org.eclipse.ui.textEditorScope"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+		<key
+            sequence="M1+F2" 
+            commandId="org.eclipse.ui.edit.addBookmark"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+	    <!-- View Keys -->
+		<!-- Views Keys -->
+		<!-- Window Keys -->
+		
+		<key
+			sequence="M1+TAB"
+            commandId="org.eclipse.ui.window.nextEditor"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+		<key
+			sequence="M1+M2+TAB"
+            commandId="org.eclipse.ui.window.previousEditor"
+			schemeId="com.nokia.carbide.cpp.codewarrior"/>
+
+	  
+   </extension>
+   
+<!-- =================================================================================== -->
+<!-- Product startup extension                                                           -->
+<!-- =================================================================================== -->
+	<extension point="org.eclipse.ui.startup">
+		  <startup class="com.nokia.carbide.cpp.ProductStartup"/>
+	</extension>
+	
+<!-- =================================================================================== -->
+<!-- Carbide welcome page theme                                                          -->
+<!-- =================================================================================== -->
+	<extension
+		  point="org.eclipse.ui.intro.configExtension">
+		
+	   <theme
+			 default="true"
+			 id="com.nokia.carbide.cpp.carbide"
+			 name="%theme.name.carbide"
+			 path="$nl$/themes/carbide"
+			 previewImage="$nl$/themes/carbide/preview.png">
+
+		   	<property
+				name="launchbarBackground"
+				value="#a1c2cb"/>
+		   
+            <property name="capitalizeTitles"
+            		value="true"/>
+		   
+            <property name="launchbarOverviewIcon"
+            		  value="$theme$graphics/launchbar/overview.gif"/>
+            <property name="launchbarFirststepsIcon"
+            		  value="$theme$graphics/launchbar/firststeps16.png"/>
+            <property name="launchbarTutorialsIcon"
+            		  value="$theme$graphics/launchbar/tutorials.gif"/>
+            <property name="launchbarSamplesIcon"
+            		  value="$theme$graphics/launchbar/samples.gif"/>
+            <property name="launchbarWhatsnewIcon"
+            		  value="$theme$graphics/launchbar/whatsnew.gif"/>
+            <property name="launchbarMigrateIcon"
+            		  value="$theme$graphics/launchbar/migrate16.png"/>
+            <property name="launchbarWebresourcesIcon"
+            		  value="$theme$graphics/launchbar/webresources16.png"/>
+            		  
+            <property name="highContrast-overview"
+            		  value="$theme$graphics/icons/etool/overview72.gif"/>
+            <property name="highContrast-firststeps"
+            		  value="$theme$graphics/icons/etool/firsteps72.gif"/>
+            <property name="highContrast-tutorials"
+            		  value="$theme$graphics/icons/etool/tutorials72.gif"/>
+            <property name="highContrast-samples"
+            		  value="$theme$graphics/icons/etool/samples72.gif"/>
+            <property name="highContrast-whatsnew"
+            		  value="$theme$graphics/icons/etool/whatsnew72.gif"/>
+            <property name="highContrast-webresources"
+            		  value="$theme$graphics/icons/etool/webrsrc72.gif"/>
+            <property name="highContrast-migrate"
+            		  value="$theme$graphics/icons/etool/migrate72.gif"/>
+		   
+		</theme>
+	</extension>
+ <extension point="com.nokia.carbide.cpp.diagnosticLogGroup">
+   <diagnosticLogGroup
+           id="com.nokia.carbide.cpp.diagnosticLogs"
+           name="Carbide.c++ Diagnostic Logs">
+   </diagnosticLogGroup>
+       
+ </extension>
+ <extension
+       point="org.eclipse.ui.preferencePages">
+    <page
+          category="com.nokia.carbide.cpp.project.ui.preferences.CarbidePreferencePage"
+          class="com.nokia.carbide.cpp.logging.LoggingPreferencesPage"
+          id="com.nokia.carbide.cpp.LoggingPreferencesPage"
+          name="Diagnostic Logs">
+    </page>
+ </extension>
+
+	<extension
+         point="org.eclipse.ui.preferencePages">
+      <page
+           name="Carbide Extensions"
+           class="com.nokia.carbide.cpp.preferences.ExtensionsPreferencesPage"
+           id="com.nokia.carbide.cpp.preferences.ExtensionsPreferencesPage"/>         
+   </extension>
+
+</plugin>
Binary file core/com.nokia.carbide.cpp/splash.bmp has changed
Binary file core/com.nokia.carbide.cpp/themes/carbide/graphics/contentpage/background.jpg has changed
Binary file core/com.nokia.carbide.cpp/themes/carbide/graphics/root/background.jpg has changed
--- a/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/META-INF/MANIFEST.MF	Sat Apr 25 12:50:39 2009 -0500
+++ b/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/META-INF/MANIFEST.MF	Sat Apr 25 12:54:10 2009 -0500
@@ -18,4 +18,5 @@
  org.eclipse.core.resources,
  com.nokia.carbide.cpp.featureTracker;bundle-version="1.0.0"
 Bundle-ActivationPolicy: lazy
-Export-Package: com.nokia.carbide.cpp.debug.kernelaware
+Export-Package: com.nokia.carbide.cpp.debug.kernelaware,
+ com.nokia.carbide.cpp.debug.kernelaware.testapi;x-friends:="com.nokia.carbide.automation.utils"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/testapi/SymbianOSViewTester.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,129 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+package com.nokia.carbide.cpp.debug.kernelaware.testapi;
+
+import com.freescale.cdt.debug.cw.core.CWPlugin;
+import com.nokia.carbide.cpp.debug.kernelaware.*;
+import com.nokia.carbide.cpp.debug.kernelaware.ui.GenericTableTab;
+import com.nokia.carbide.cpp.debug.kernelaware.ui.SymbianOSView;
+
+import org.eclipse.jface.viewers.*;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IViewPart;
+
+/**
+ * An interface for testing the Symbian OS View
+ */
+public class SymbianOSViewTester {
+
+	/**
+	 * Select a tab by id
+	 * @param viewPart IViewPart
+	 * @param tabId int
+	 */
+	public static void selectTab(IViewPart viewPart, int tabId) {
+		TabFolder tabFolder = (TabFolder) viewPart.getAdapter(TabFolder.class);
+		tabFolder.setSelection(tabId);
+		// can't force this to notify so explicitly call notification routine
+		SymbianOSView symbianOSView = (SymbianOSView) viewPart.getAdapter(SymbianOSView.class);
+		symbianOSView.DoAction_TabSelection(tabFolder.getItem(tabId));
+	}
+	
+	/**
+	 * Do refresh
+	 * @param viewPart IViewPart
+	 */
+	public static void refresh(IViewPart viewPart) {
+		SymbianOSView symbianOSView = (SymbianOSView) viewPart.getAdapter(SymbianOSView.class);
+		symbianOSView.DoAction_Refresh();
+	}
+
+	/**
+	 * Enable or disable auto refresh
+	 * @param viewPart IViewPart
+	 * @param enabled boolean
+	 */
+	public static void setAutoRefreshEnabled(IViewPart viewPart, boolean enabled) {
+		SymbianOSView symbianOSView = (SymbianOSView) viewPart.getAdapter(SymbianOSView.class);
+		symbianOSView.setAutoRefresh(enabled);
+	}
+	
+	/**
+	 * Do collapse all
+	 * @param viewPart IViewPart
+	 */
+	public static void collapseAll(IViewPart viewPart) {
+		SymbianOSView symbianOSView = (SymbianOSView) viewPart.getAdapter(SymbianOSView.class);
+		symbianOSView.DoAction_CollapseAll();
+	}
+	
+	/**
+	 * Debug the process or thread
+	 * @param viewPart IViewPart
+	 * @param object OSObject
+	 * @see OSObjectProcess
+	 * @see OSObjectThread
+	 */
+	public static void debug(IViewPart viewPart, OSObject object) {
+		SymbianOSView symbianOSView = (SymbianOSView) viewPart.getAdapter(SymbianOSView.class);
+		getCurrentViewer(viewPart).setSelection(new StructuredSelection(object));
+		symbianOSView.DoAction_Debug();
+	}
+	
+	/**
+	 * Set the auto refresh interval
+	 * @param secs int
+	 */
+	public static void setAutoRefreshInterval(int secs) {
+		CWPlugin.getDefault().getPluginPreferences().setValue(
+				cwdbg.PreferenceConstants.J_PN_OSViewAutoRefreshInterval, secs);
+	}
+	
+	/**
+	 * Get the current refresh count (increments on every refresh)
+	 * @param viewPart IViewPart
+	 * @return int
+	 */
+	public static int getRefreshCount(IViewPart viewPart) {
+		SymbianOSView symbianOSView = (SymbianOSView) viewPart.getAdapter(SymbianOSView.class);
+		return symbianOSView.getRefreshCount();
+	}
+	
+	/**
+	 * Get the current viewer (TableViewer or TreeViewer depending on the selected tab)
+	 * @param viewPart IViewPart
+	 * @return Viewer
+	 */
+	public static Viewer getCurrentViewer(IViewPart viewPart) {
+		return (Viewer) viewPart.getAdapter(Viewer.class);
+	}
+	
+	/**
+	 * Get the Text for the filter of the current tab
+	 * This can be used with EclipseUtils.enterText(Text, String) to set the filter
+	 * @param viewPart IViewPart
+	 * @return Text
+	 * @see EclipseUtils#enterText(Text, String)
+	 */
+	public static Text getFilterText(IViewPart viewPart) {
+		Viewer viewer = getCurrentViewer(viewPart);
+		GenericTableTab tableTab = (GenericTableTab) viewer.getData("controller");
+		return tableTab.getFilterText();
+	}
+}
--- a/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/ui/GenericTableTab.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/ui/GenericTableTab.java	Sat Apr 25 12:54:10 2009 -0500
@@ -315,6 +315,7 @@
 					.getDisplayName());
 		}
 
+		viewer.setData("controller", this); //$NON-NLS-1$
 		return viewer;
 	}
 
@@ -384,4 +385,8 @@
 				viewer.refresh();
 		}
 	}
+	
+	public Text getFilterText() {
+		return filterText;
+	}
 }
--- a/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/ui/SymbianOSView.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/ui/SymbianOSView.java	Sat Apr 25 12:54:10 2009 -0500
@@ -166,6 +166,10 @@
 	// Make this option static so that it's consistent across view sessions.
 	static boolean m_autoRefresh = true;
 
+	private TabFolder tabFolder;
+	
+	private int refreshCount;
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -174,7 +178,7 @@
 	@Override
 	public void createPartControl(Composite parent) {
 
-		final TabFolder tabFolder = new TabFolder(parent, SWT.NONE);
+		tabFolder = new TabFolder(parent, SWT.NONE);
 		tabFolder.addSelectionListener(new SelectionAdapter() {
 			public void widgetSelected(SelectionEvent e) {
 				DoAction_TabSelection(e.item);
@@ -535,6 +539,7 @@
 				}
 
 				listener.dataUpdated(session, status);
+				refreshCount++;
 
 				monitor.done();
 
@@ -734,7 +739,7 @@
 						Messages.getString("SymbianOSView.MessageTitle"), Messages.getString("SymbianOSView.MessagePrefix") + message); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
-	private void DoAction_TabSelection(Widget item) {
+	public void DoAction_TabSelection(Widget item) {
 		if (item == null)
 			return;
 		
@@ -800,7 +805,7 @@
 	 * device.
 	 * 
 	 */
-	private void DoAction_Refresh() {
+	public void DoAction_Refresh() {
 		if (m_currentSession == null)
 			return;
 
@@ -811,16 +816,20 @@
 		computeInput(m_currentSession, this, true);
 	}
 
-	private void DoAction_ToggleAutoRefresh() {
-		m_autoRefresh = !m_autoRefresh;
+	public void DoAction_ToggleAutoRefresh() {
+		setAutoRefresh(!m_autoRefresh);
 	}
 
-	private void DoAction_CollapseAll() {
+	public void setAutoRefresh(boolean enabled) {
+		m_autoRefresh = enabled;
+	}
+	
+	public void DoAction_CollapseAll() {
 		if (m_overviewTreeViewer != null)
 			m_overviewTreeViewer.collapseAll();
 	}
 
-	private void DoAction_Debug() {
+	public void DoAction_Debug() {
 		/*
 		 * Attach debugger to a process or thread.
 		 */
@@ -1256,4 +1265,20 @@
 				}
 		}
 	}
+
+	@Override
+	public Object getAdapter(Class adapter) {
+		if (adapter.isInstance(this))
+			return this;
+		if (adapter.isInstance(tabFolder))
+			return tabFolder;
+		if (adapter.isInstance(m_currentViewer))
+			return m_currentViewer;
+		
+		return super.getAdapter(adapter);
+	}
+
+	public int getRefreshCount() {
+		return refreshCount;
+	}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ATFLaunchSupport.java	Sat Apr 25 12:54:10 2009 -0500
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+package com.nokia.cdt.internal.debug.launch;
+
+import org.eclipse.debug.core.model.IDebugTarget;
+
+public class ATFLaunchSupport {
+	// Pass to IDebugTarget the outside world (e.g. test framework), it is dropped by Eclipse core debugger
+	private static IDebugTarget debugTargetFromLaunchDelegate = null;
+	
+	/**
+	 * Pass debug target from LaunchDelegate to outside world (e.g. test framework)
+	 * We read and clear to save us the hassle of clearing before each usage.
+	 */
+	public static IDebugTarget getAndClearDebugTargetFromLaunchDelegate() {
+		IDebugTarget result = debugTargetFromLaunchDelegate;
+		debugTargetFromLaunchDelegate = null;
+		return result;
+	}
+
+	/**
+	 * Saves debug target from LaunchDelegate to outside world (e.g. test framework)
+	 */
+	public static void saveDebugTargetFromLaunchDelegate(IDebugTarget debugTarget) {
+		debugTargetFromLaunchDelegate = debugTarget;
+	}
+
+}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/EmulationLaunchDelegate.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/EmulationLaunchDelegate.java	Sat Apr 25 12:54:10 2009 -0500
@@ -57,6 +57,7 @@
 import com.freescale.cdt.debug.cw.DebuggerLog;
 import com.freescale.cdt.debug.cw.core.cdi.ISessionListener;
 import com.freescale.cdt.debug.cw.core.cdi.Session;
+import com.freescale.cdt.debug.cw.core.cdi.model.Target;
 import com.freescale.cdt.debug.cw.core.settings.DebuggerCommonData;
 import com.freescale.cdt.debug.cw.core.ui.console.LoggingConsole;
 import com.nokia.cdt.debug.cw.symbian.SettingsData;
@@ -158,7 +159,8 @@
 							
 							File wd = getWorkingDirectory(config);
 							long t = System.currentTimeMillis();
-							cwDebugSession.launchExecutable(launch, config, exeFile, otherExecutables, arguments, wd, getEnvironmentAsProperty(config), monitor, project, renderTargetLabel(debugConfig), true);
+							Target target = cwDebugSession.launchExecutable(launch, config, exeFile, otherExecutables, arguments, wd, getEnvironmentAsProperty(config), monitor, project, renderTargetLabel(debugConfig), true);
+							ATFLaunchSupport.saveDebugTargetFromLaunchDelegate(target.getCoreModelTarget());
 							t = System.currentTimeMillis() - t;
 //							System.out.println("launchExecutable returns in : " + t);
 							DebuggerLog.log("launchExecutable returns in : " + t);
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/SophiaSTILaunchDelegate.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/SophiaSTILaunchDelegate.java	Sat Apr 25 12:54:10 2009 -0500
@@ -38,6 +38,7 @@
 
 import com.freescale.cdt.debug.cw.CWException;
 import com.freescale.cdt.debug.cw.core.cdi.Session;
+import com.freescale.cdt.debug.cw.core.cdi.model.Target;
 import com.nokia.cdt.debug.cw.symbian.SettingsData;
 import com.nokia.cdt.debug.cw.symbian.SymbianPlugin;
 
@@ -107,7 +108,8 @@
 								config = synchronizeWithProjectAccessPaths(project, config);
 								
 								File wd = getWorkingDirectory(config);
-								cwDebugSession.launchExecutable(launch, config, exeFile, otherExecutables, arguments, wd, getEnvironmentAsProperty(config), monitor, project, getTargetLabel(exeFile.getName()), true);
+								Target target = cwDebugSession.launchExecutable(launch, config, exeFile, otherExecutables, arguments, wd, getEnvironmentAsProperty(config), monitor, project, getTargetLabel(exeFile.getName()), true);
+								ATFLaunchSupport.saveDebugTargetFromLaunchDelegate(target.getCoreModelTarget());
 
 							} catch (CoreException e) {
 								Session session = (Session)dsession;
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/TRKLaunchDelegate.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/TRKLaunchDelegate.java	Sat Apr 25 12:54:10 2009 -0500
@@ -32,6 +32,7 @@
 import com.freescale.cdt.debug.cw.CWException;
 import com.freescale.cdt.debug.cw.core.RemoteConnectionsTRKHelper;
 import com.freescale.cdt.debug.cw.core.cdi.Session;
+import com.freescale.cdt.debug.cw.core.cdi.model.Target;
 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
 import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
@@ -159,8 +160,9 @@
 							config = synchronizeWithProjectAccessPaths(project, config);
 							
 							File wd = getWorkingDirectory(config);
-							cwDebugSession.launchExecutable(launch, config, exeFile, otherExecutables, arguments, wd, getEnvironmentAsProperty(config), monitor, project, getTargetLabel(exeFile.getName()), true);
-
+							Target target = cwDebugSession.launchExecutable(launch, config, exeFile, otherExecutables, arguments, wd, getEnvironmentAsProperty(config), monitor, project, getTargetLabel(exeFile.getName()), true);
+							ATFLaunchSupport.saveDebugTargetFromLaunchDelegate(target.getCoreModelTarget());
+							
 						} catch (CoreException e) {
 							Session session = (Session)dsession;
 							session.cleanupAfterLaunchFailure();
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/Trace32LaunchDelegate.java	Sat Apr 25 12:50:39 2009 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/Trace32LaunchDelegate.java	Sat Apr 25 12:54:10 2009 -0500
@@ -38,6 +38,7 @@
 
 import com.freescale.cdt.debug.cw.CWException;
 import com.freescale.cdt.debug.cw.core.cdi.Session;
+import com.freescale.cdt.debug.cw.core.cdi.model.Target;
 import com.nokia.cdt.debug.cw.symbian.SettingsData;
 import com.nokia.cdt.debug.cw.symbian.SymbianPlugin;
 
@@ -110,7 +111,8 @@
 								config = synchronizeWithProjectAccessPaths(project, config);
 								
 								File wd = getWorkingDirectory(config);
-								cwDebugSession.launchExecutable(launch, config, exeFile, otherExecutables, arguments, wd, getEnvironmentAsProperty(config), monitor, project, getTargetLabel(exeFile.getName()), true);
+								Target target = cwDebugSession.launchExecutable(launch, config, exeFile, otherExecutables, arguments, wd, getEnvironmentAsProperty(config), monitor, project, getTargetLabel(exeFile.getName()), true);
+								ATFLaunchSupport.saveDebugTargetFromLaunchDelegate(target.getCoreModelTarget());
 
 							} catch (CoreException e) {
 								Session session = (Session)dsession;