[fdo-commits] r2682 - in trunk: . Fdo Fdo/Python Fdo/Python/Fdo_Inc Fdo/Python/Fdo_Inc/Common Fdo/Python/Fdo_Inc/Fdo Fdo/Python/Fdo_Inc/Fdo/Commands Fdo/Python/Fdo_Inc/Fdo/Commands/LongTransaction Fdo/Python/Fdo_Inc/Fdo/Xml Fdo/Python/Inc Fdo/Python/Inc/Common Fdo/Python/Inc/Fdo Fdo/Python/Resource Fdo/Python/Src Fdo/Python/Src/Common Fdo/Python/Src/Fdo Fdo/Python/Swig Fdo/Python/Swig/Common Fdo/Python/Swig/Fdo Fdo/Python/UnitTest Fdo/Python/UnitTest/Input Fdo/Python/UnitTest/Lib Fdo/Python/UnitTest/Src Thirdparty Thirdparty/gsar Thirdparty/gsar/bin Thirdparty/gsar/contrib Thirdparty/gsar/contrib/gsar Thirdparty/gsar/contrib/gsar/1.12 Thirdparty/gsar/contrib/gsar/1.12/gsar-1.12 Thirdparty/gsar/man Thirdparty/gsar/man/cat1 Thirdparty/gsar/manifest

svn_fdo at osgeo.org svn_fdo at osgeo.org
Tue Mar 13 19:42:46 EDT 2007


Author: gregboone
Date: 2007-03-13 19:42:45 -0400 (Tue, 13 Mar 2007)
New Revision: 2682

Added:
   trunk/Fdo/Python/
   trunk/Fdo/Python/FdoWrapper.vcproj
   trunk/Fdo/Python/Fdo_Inc/
   trunk/Fdo/Python/Fdo_Inc/Common/
   trunk/Fdo/Python/Fdo_Inc/Common/StringCollection.h
   trunk/Fdo/Python/Fdo_Inc/Common/Vector.h
   trunk/Fdo/Python/Fdo_Inc/Fdo/
   trunk/Fdo/Python/Fdo_Inc/Fdo/Commands/
   trunk/Fdo/Python/Fdo_Inc/Fdo/Commands/LongTransaction/
   trunk/Fdo/Python/Fdo_Inc/Fdo/Commands/LongTransaction/LongTransactionConstants.h
   trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/
   trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/ClassMapping.h
   trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/ElementMapping.h
   trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/FeatureFlags.h
   trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/Flags.h
   trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/SpatialContextFlags.h
   trunk/Fdo/Python/Inc/
   trunk/Fdo/Python/Inc/Common/
   trunk/Fdo/Python/Inc/Common/FdoProxyConnectionManager.h
   trunk/Fdo/Python/Inc/Common/FdowStd.h
   trunk/Fdo/Python/Inc/Common/StringBuffer.h
   trunk/Fdo/Python/Inc/Common/utils.h
   trunk/Fdo/Python/Inc/Fdo/
   trunk/Fdo/Python/Inc/Fdo/PhysicalSchemaMappingCasts.h
   trunk/Fdo/Python/Inc/stdafx.h
   trunk/Fdo/Python/PythonWrappers.sln
   trunk/Fdo/Python/README.txt
   trunk/Fdo/Python/Resource/
   trunk/Fdo/Python/Resource/FdoWrapper.rc
   trunk/Fdo/Python/Resource/FdoWrapperResource.h
   trunk/Fdo/Python/Src/
   trunk/Fdo/Python/Src/Common/
   trunk/Fdo/Python/Src/Common/FdoProxyConnectionManager.cpp
   trunk/Fdo/Python/Src/Common/StringBuffer.cpp
   trunk/Fdo/Python/Src/Common/stdafx.cpp
   trunk/Fdo/Python/Src/Common/utils.cpp
   trunk/Fdo/Python/Src/Fdo/
   trunk/Fdo/Python/Src/Fdo/PhysicalSchemaMappingCasts.cpp
   trunk/Fdo/Python/Swig/
   trunk/Fdo/Python/Swig/Common/
   trunk/Fdo/Python/Swig/Common/CommonExceptions.i
   trunk/Fdo/Python/Swig/Common/CommonInit.i
   trunk/Fdo/Python/Swig/Common/CommonTypemaps.i
   trunk/Fdo/Python/Swig/Fdo/
   trunk/Fdo/Python/Swig/Fdo/CommonIncludes.i
   trunk/Fdo/Python/Swig/Fdo/FdoIncludes.i
   trunk/Fdo/Python/Swig/Fdo/FdoPointercasts.i
   trunk/Fdo/Python/Swig/Fdo/FdoTypemaps.i
   trunk/Fdo/Python/Swig/Fdo/GeometryIncludes.i
   trunk/Fdo/Python/Swig/Fdo/Main.i
   trunk/Fdo/Python/UnitTest/
   trunk/Fdo/Python/UnitTest/Input/
   trunk/Fdo/Python/UnitTest/Input/UnitTestConfig.ini
   trunk/Fdo/Python/UnitTest/Input/clock.avi
   trunk/Fdo/Python/UnitTest/Lib/
   trunk/Fdo/Python/UnitTest/Lib/SdfConnectionFactory.py
   trunk/Fdo/Python/UnitTest/Lib/SdfFileCreationParams.py
   trunk/Fdo/Python/UnitTest/Lib/SdfFileFactory.py
   trunk/Fdo/Python/UnitTest/SetEnvironment.bat
   trunk/Fdo/Python/UnitTest/Src/
   trunk/Fdo/Python/UnitTest/Src/ApplySchemaTest.py
   trunk/Fdo/Python/UnitTest/Src/CapabilitiesTest.py
   trunk/Fdo/Python/UnitTest/Src/ClientServicesTest.py
   trunk/Fdo/Python/UnitTest/Src/CommandTest.py
   trunk/Fdo/Python/UnitTest/Src/LOBTest.py
   trunk/Fdo/Python/UnitTest/Src/StringBufferTest.py
   trunk/Fdo/Python/UnitTest/Src/TypeMapTest.py
   trunk/Fdo/Python/UnitTest/Src/main.py
   trunk/Fdo/Python/UnitTest/UnitTests.cmd
   trunk/Fdo/Python/UnitTest/providers.xml
   trunk/Fdo/Python/build.cmd
   trunk/Thirdparty/gsar/
   trunk/Thirdparty/gsar/bin/
   trunk/Thirdparty/gsar/bin/gsar.exe
   trunk/Thirdparty/gsar/contrib/
   trunk/Thirdparty/gsar/contrib/gsar/
   trunk/Thirdparty/gsar/contrib/gsar/1.12/
   trunk/Thirdparty/gsar/contrib/gsar/1.12/depends-GnuWin32.lst
   trunk/Thirdparty/gsar/contrib/gsar/1.12/gsar-1.12-GnuWin32.README
   trunk/Thirdparty/gsar/contrib/gsar/1.12/gsar-1.12/
   trunk/Thirdparty/gsar/contrib/gsar/1.12/gsar-1.12/copying
   trunk/Thirdparty/gsar/man/
   trunk/Thirdparty/gsar/man/cat1/
   trunk/Thirdparty/gsar/man/cat1/gsar.1.txt
   trunk/Thirdparty/gsar/manifest/
   trunk/Thirdparty/gsar/manifest/gsar-1.12-bin.mft
   trunk/Thirdparty/gsar/manifest/gsar-1.12-bin.ver
Modified:
   trunk/Fdo/build.bat
   trunk/License_README.txt
   trunk/OpenSourceBuild__README.txt
   trunk/build.bat
   trunk/setenvironment.bat
Log:
Ticket #39 - Add Python Wrappers for FDO API (Windows Only)

Added: trunk/Fdo/Python/FdoWrapper.vcproj
===================================================================
--- trunk/Fdo/Python/FdoWrapper.vcproj	                        (rev 0)
+++ trunk/Fdo/Python/FdoWrapper.vcproj	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,707 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="FdoWrapper"
+	ProjectGUID="{5BEDFEA3-F135-4B1F-A2E2-00C3EA4B0D5B}"
+	RootNamespace="FdoWrapper"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Bin\Win32\Debug"
+			IntermediateDirectory="Bin\Win32\Debug\Intermediate"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC70.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+				Description="Creating temporary \Inc_Merged directory for SWIG..."
+				CommandLine="del /F /S /Q Inc_Merged&#x0D;&#x0A;del /F /S /Q Src\Fdo\FdoWrapper.cpp&#x0D;&#x0A;xcopy /R /Y /E /Q &quot;$(FDO)\Unmanaged\Inc\*.h&quot; .\Inc_Merged\&#x0D;&#x0A;xcopy /R /Y /E /Q .\Fdo_Inc .\Inc_Merged\&#x0D;&#x0A;"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(PYTHON_HOME)\include&quot;;&quot;$(FDO)\Unmanaged\Inc&quot;;./inc;./"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FDOWRAPPER_EXPORTS;_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				TreatWChar_tAsBuiltInType="true"
+				RuntimeTypeInfo="true"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderThrough="stdafx.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="Fdo.lib FDOCommon.lib FDOGeometry.lib python24.lib"
+				OutputFile="$(OutDir)/_FDO.dll"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(PYTHON_HOME)\libs\&quot;;&quot;$(FDO)\Unmanaged\lib\win32\debug&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/_FDO.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/_FDO.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="$(FDOTHIRDPARTY)\util\stampver\StampVer.exe -f&quot;3.3.0.0&quot; -p&quot;3.3.0.0&quot; $(TargetPath)&#x0D;&#x0A;xcopy /R /Y /E /Q Src\Fdo\FDO.py Lib\Win32\&#x0D;&#x0A;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Bin\Win32\Release"
+			IntermediateDirectory="Bin\Win32\Release\Intermediate"
+			ConfigurationType="2"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+				Description="Creating temporary \Inc_Merged directory for SWIG..."
+				CommandLine="del /F /S /Q Inc_Merged&#x0D;&#x0A;del /F /S /Q Src\Fdo\FdoWrapper.cpp&#x0D;&#x0A;xcopy /R /Y /E /Q &quot;$(FDO)\Unmanaged\Inc\*.h&quot; .\Inc_Merged\&#x0D;&#x0A;xcopy /R /Y /E /Q .\Fdo_Inc .\Inc_Merged\&#x0D;&#x0A;"
+				ExcludedFromBuild="false"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				OmitFramePointers="true"
+				AdditionalIncludeDirectories="&quot;$(PYTHON_HOME)\include&quot;;&quot;$(FDO)\Unmanaged\Inc&quot;;./inc;./"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FDOWRAPPER_EXPORTS;_CRT_SECURE_NO_DEPRECATE"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				TreatWChar_tAsBuiltInType="true"
+				RuntimeTypeInfo="true"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderThrough="stdafx.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkLibraryDependencies="false"
+				AdditionalDependencies="Fdo.lib FdoCommon.lib FDOGeometry.lib python24.lib $(NOINHERIT)"
+				OutputFile="$(OutDir)/_FDO.dll"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(PYTHON_HOME)\libs&quot;;&quot;$(FDO)\Unmanaged\lib\win32\release&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/_FDO.pdb"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/_FDO.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="$(FDOTHIRDPARTY)\util\stampver\StampVer.exe -f&quot;3.3.0.0&quot; -p&quot;3.3.0.0&quot; $(TargetPath)&#x0D;&#x0A;xcopy /R /Y /E /Q Src\Fdo\FDO.py Lib\Win32\&#x0D;&#x0A;"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
+			>
+			<Filter
+				Name="Common"
+				>
+				<File
+					RelativePath="Src\Common\FdoProxyConnectionManager.cpp"
+					>
+				</File>
+				<File
+					RelativePath="Src\Common\stdafx.cpp"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							UsePrecompiledHeader="1"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							UsePrecompiledHeader="1"
+						/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="Src\Common\StringBuffer.cpp"
+					>
+				</File>
+				<File
+					RelativePath="Src\Common\utils.cpp"
+					>
+				</File>
+			</Filter>
+			<Filter
+				Name="Fdo"
+				>
+				<File
+					RelativePath="Src\Fdo\FdoWrapper.cpp"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							UsePrecompiledHeader="0"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							UsePrecompiledHeader="0"
+						/>
+					</FileConfiguration>
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc"
+			>
+			<Filter
+				Name="Common"
+				>
+				<File
+					RelativePath="Inc\Common\FdoProxyConnectionManager.h"
+					>
+				</File>
+				<File
+					RelativePath="Inc\Common\FdowStd.h"
+					>
+				</File>
+				<File
+					RelativePath="Inc\Common\stdafx.h"
+					>
+				</File>
+				<File
+					RelativePath="Inc\Common\StringBuffer.h"
+					>
+				</File>
+				<File
+					RelativePath="Inc\Common\utils.h"
+					>
+				</File>
+			</Filter>
+			<Filter
+				Name="Fdo"
+				>
+				<File
+					RelativePath="Inc\Fdo\PhysicalSchemaMappingCasts.h"
+					>
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="SWIG Interface Files"
+			>
+			<Filter
+				Name="Common"
+				>
+				<File
+					RelativePath="Swig\Common\CommonExceptions.i"
+					>
+				</File>
+				<File
+					RelativePath="Swig\Common\CommonInit.i"
+					>
+				</File>
+				<File
+					RelativePath="Swig\Common\CommonTypemaps.i"
+					>
+				</File>
+			</Filter>
+			<Filter
+				Name="Fdo"
+				>
+				<File
+					RelativePath="Swig\Fdo\CommonIncludes.i"
+					>
+				</File>
+				<File
+					RelativePath="Swig\Fdo\FdoIncludes.i"
+					>
+				</File>
+				<File
+					RelativePath="Swig\Fdo\FdoPointercasts.i"
+					>
+				</File>
+				<File
+					RelativePath="Swig\Fdo\FdoTypemaps.i"
+					>
+				</File>
+				<File
+					RelativePath="Swig\Fdo\GeometryIncludes.i"
+					>
+				</File>
+				<File
+					RelativePath="Swig\Fdo\Main.i"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+							Description="Generating SWIG Wrappers..."
+							CommandLine="$(SWIG_HOME)\swig -c++ -python -I.\ -I.\Inc_Merged -I.\Inc_Merged\Common\Io -I.\Inc_Merged\Fdo\Xml -I.\Inc  -I.\Swig -ignoremissing -nodefault -module FDO -o Src/Fdo/FdoWrapper.cpp -outdir Src/Fdo Swig/Fdo/Main.i&#x0D;&#x0A;if NOT %ERRORLEVEL% == 0 GOTO SWIG_ERROR&#x0D;&#x0A;echo Using GSAR to replace &apos;long long&apos; with &apos;__int64&apos;...&#x0D;&#x0A;$(FDOTHIRDPARTY)\gsar\bin\gsar.exe -s&quot;long long&quot; -r&quot;__int64&quot; -o Src/Fdo/FdoWrapper.cpp&#x0D;&#x0A;goto END&#x0D;&#x0A;:SWIG_ERROR&#x0D;&#x0A;echo SWIG Failed (Errorlevel: %ERRORLEVEL%)&#x0D;&#x0A;goto END&#x0D;&#x0A;:GSAR&#x0D;&#x0A;:END&#x0D;&#x0A;"
+							AdditionalDependencies="Swig\Fdo\FdoPointercasts.i;Swig\Fdo\FdoTemplates.i;Swig\Fdo\FdoTypemaps.i;Swig\Common\CommonExceptions.i;Swig\Common\CommonInit.i;Swig\Common\CommonTypemaps.i"
+							Outputs="Src/Fdo/FdoWrapper.cpp"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+							Description="Generating SWIG Wrappers..."
+							CommandLine="$(SWIG_HOME)\swig -c++ -python -I.\ -I.\Inc_Merged -I.\Inc_Merged\Common\Io -I.\Inc_Merged\Fdo\Xml -I.\inc  -I.\Swig -ignoremissing -nodefault -module FDO -o Src/Fdo/FdoWrapper.cpp -outdir Src/Fdo Swig/Fdo/Main.i&#x0D;&#x0A;if NOT %ERRORLEVEL% == 0 GOTO SWIG_ERROR&#x0D;&#x0A;echo Using GSAR to replace &apos;long long&apos; with &apos;__int64&apos;...&#x0D;&#x0A;$(FDOTHIRDPARTY)\gsar\bin\gsar.exe -s&quot;long long&quot; -r&quot;__int64&quot; -o Src/Fdo/FdoWrapper.cpp&#x0D;&#x0A;goto END&#x0D;&#x0A;:SWIG_ERROR&#x0D;&#x0A;echo SWIG Failed (Errorlevel: %ERRORLEVEL%)&#x0D;&#x0A;goto END&#x0D;&#x0A;:GSAR&#x0D;&#x0A;:END&#x0D;&#x0A;"
+							AdditionalDependencies="Swig\Fdo\FdoPointercasts.i;Swig\Fdo\FdoTemplates.i;Swig\Fdo\FdoTypemaps.i;Swig\Common\CommonExceptions.i;Swig\Common\CommonInit.i;Swig\Common\CommonTypemaps.i"
+							Outputs="Src/Fdo/FdoWrapper.cpp"
+						/>
+					</FileConfiguration>
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="Resources"
+			>
+			<File
+				RelativePath="resource\FdoWrapper.rc"
+				>
+			</File>
+			<File
+				RelativePath="resource\FdoWrapperResource.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Symbolic Targets"
+			>
+			<File
+				RelativePath="CopyFdo"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						Description="Copying FDO files"
+						CommandLine="mkdir .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;&#x0D;&#x0A;copy $(FDO)\Unmanaged\Bin\Win32\Debug\FDO.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;copy $(FDO)\Unmanaged\Bin\Win32\Debug\FDOCommon.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;copy $(FDO)\Unmanaged\Bin\Win32\Debug\FDOGeometry.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;copy $(FDO)\Unmanaged\Bin\Win32\Debug\FDOSpatial.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;&#x0D;&#x0A;copy $(FDO)\..\Providers\SDF\Bin\Win32\Debug\SDFProvider.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;copy $(FDO)\..\Providers\SDF\Bin\Win32\Debug\SDFMessage.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;&#x0D;&#x0A;copy $(FDO)\..\Providers\SHP\Bin\Win32\Debug\SHPProvider.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;copy $(FDO)\..\Providers\SHP\Bin\Win32\Debug\SHPMessage.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;copy $(FDO)\..\Providers\SHP\Bin\Win32\Debug\SHPOverrides.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;&#x0D;&#x0A;echo &quot;delete me please&quot;&gt;$(OutDir)\CopyFdo.ilk&#x0D;&#x0A;"
+						AdditionalDependencies="$(FDO)\Unmanaged\Bin\Win32\Debug\FDO.dll;$(FDO)\Unmanaged\Bin\Win32\Debug\FDOCommon.dll;$(FDO)\Unmanaged\Bin\Win32\Debug\FDOGeometry.dll;$(FDO)\Unmanaged\Bin\Win32\Debug\FDOSpatial.dll;$(FDO)\..\Providers\SDF\Bin\Win32\Debug\SDFProvider.dll;$(FDO)\..\Providers\SDF\Bin\Win32\Debug\SDFMessage.dl;$(FDO)\..\Providers\SHP\Bin\Win32\Debug\SHPProvider.dll;$(FDO)\..\Providers\SHP\Bin\Win32\Debug\SHPMessage.dll;$(FDO)\..\Providers\SHP\Bin\Win32\Debug\SHPOverrides.dll"
+						Outputs="$(OutDir)\CopyFdo.ilk"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						Description="Copying FDO files"
+						CommandLine="mkdir .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;&#x0D;&#x0A;copy $(FDO)\Unmanaged\Bin\Win32\Release\FDO.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;copy $(FDO)\Unmanaged\Bin\Win32\Release\FDOCommon.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;copy $(FDO)\Unmanaged\Bin\Win32\Release\FDOGeometry.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;copy $(FDO)\Unmanaged\Bin\Win32\Release\FDOSpatial.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;&#x0D;&#x0A;copy $(FDO)\..\Providers\SDF\Bin\Win32\Release\SDFProvider.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;copy $(FDO)\..\Providers\SDF\Bin\Win32\Release\SDFMessage.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;&#x0D;&#x0A;copy $(FDO)\..\Providers\SHP\Bin\Win32\Release\SHPProvider.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;copy $(FDO)\..\Providers\SHP\Bin\Win32\Release\SHPMessage.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;copy $(FDO)\..\Providers\SHP\Bin\Win32\Release\SHPOverrides.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;&#x0D;&#x0A;echo &quot;delete me please&quot;&gt;$(OutDir)\CopyFdo.ilk&#x0D;&#x0A;"
+						AdditionalDependencies="$(FDO)\Unmanaged\Bin\Win32\Release\FDO.dll;$(FDO)\Unmanaged\Bin\Win32\Release\FDOCommon.dll;$(FDO)\Unmanaged\Bin\Win32\Release\FDOGeometry.dll;$(FDO)\Unmanaged\Bin\Win32\Release\FDOSpatial.dll;$(FDO)\..\Providers\SDF\Bin\Win32\Release\SDFProvider.dll;$(FDO)\..\Providers\SDF\Bin\Win32\Release\SDFMessage.dl;$(FDO)\..\Providers\SHP\Bin\Win32\Release\SHPProvider.dll;$(FDO)\..\Providers\SHP\Bin\Win32\Release\SHPMessage.dll;$(FDO)\..\Providers\SHP\Bin\Win32\Release\SHPOverrides.dll"
+						Outputs="$(OutDir)\CopyFdo.ilk"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="CopyThirdparty"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						Description="Copying thirdparty dlls"
+						CommandLine="mkdir .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;copy $(FDOTHIRDPARTY)\apache\xml-xalan\c\Build\Win32\VC8\Debug\Xalan-C_1_7_0D.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;copy $(FDOTHIRDPARTY)\apache\xml-xalan\c\Build\Win32\VC8\Debug\XalanMessages_1_7_0D.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;copy $(FDOTHIRDPARTY)\apache\xml-xerces\c\Build\Win32\VC8\Debug\xerces-c_2_5_0D.dll .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;echo &quot;delete me please&quot;&gt;$(OutDir)\CopyThirdparty.ilk&#x0D;&#x0A;"
+						AdditionalDependencies="$(FDOTHIRDPARTY)\apache\xml-xalan\c\Build\Win32\VC7\Debug\Xalan-C_1_7_0D.dll;$(FDOTHIRDPARTY)\apache\xml-xalan\c\Build\Win32\VC7\Debug\XalanMessages_1_7_0D.dll;$(FDOTHIRDPARTY)\apache\xml-xerces\c\Build\Win32\VC7\Debug\xerces-c_2_5_0D.dll"
+						Outputs="$(OutDir)\CopyThirdparty.ilk"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						Description="Copying thirdparty dlls"
+						CommandLine="mkdir .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;copy $(FDOTHIRDPARTY)\apache\xml-xalan\c\Build\Win32\VC8\Release\Xalan-C_1_7_0.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;copy $(FDOTHIRDPARTY)\apache\xml-xalan\c\Build\Win32\VC8\Release\XalanMessages_1_7_0.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;copy $(FDOTHIRDPARTY)\apache\xml-xerces\c\Build\Win32\VC8\Release\xerces-c_2_5_0.dll .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;echo &quot;delete me please&quot;&gt;$(OutDir)\CopyThirdparty.ilk&#x0D;&#x0A;"
+						AdditionalDependencies="$(FDOTHIRDPARTY)\apache\xml-xalan\c\Build\Win32\VC7\Release\Xalan-C_1_7_0.dll;$(FDOTHIRDPARTY)\apache\xml-xalan\c\Build\Win32\VC7\Release\XalanMessages_1_7_0.dll;$(FDOTHIRDPARTY)\apache\xml-xerces\c\Build\Win32\VC7\Release\xerces-c_2_5_0.dll"
+						Outputs="$(OutDir)\CopyThirdparty.ilk"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="FakeInstall"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						Description="Performing fake install"
+						CommandLine="mkdir .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;copy .\UnitTests\providers.xml .\UnitTests\Bin\Win32\Debug&#x0D;&#x0A;"
+						Outputs="$(OutDir)\providers.xml"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						Description="Performing fake install"
+						CommandLine="mkdir .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;copy .\UnitTests\providers.xml .\UnitTests\Bin\Win32\Release&#x0D;&#x0A;"
+						Outputs="$(OutDir)\providers.xml"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Unit Tests"
+			>
+			<Filter
+				Name="Lib"
+				>
+				<File
+					RelativePath=".\UnitTests\Lib\SdfConnectionFactory.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+							CommandLine=""
+						/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath=".\UnitTests\Lib\SdfFileCreationParams.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath=".\UnitTests\Lib\SdfFileFactory.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+			</Filter>
+			<Filter
+				Name="Tests"
+				>
+				<File
+					RelativePath=".\UnitTests\Src\ApplySchemaTest.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath=".\UnitTests\Src\CapabilitiesTest.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath=".\UnitTests\Src\ClientServicesTest.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath=".\UnitTests\Src\CommandTest.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath=".\UnitTests\Src\LOBTest.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath=".\UnitTests\Src\main.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath=".\UnitTests\Src\StringBufferTest.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath=".\UnitTests\Src\TypeMapTest.py"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+			</Filter>
+			<Filter
+				Name="Scripts"
+				>
+				<File
+					RelativePath=".\UnitTests\providers.xml"
+					>
+					<FileConfiguration
+						Name="Debug|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32"
+						>
+						<Tool
+							Name="VCCustomBuildTool"
+						/>
+					</FileConfiguration>
+				</File>
+			</Filter>
+		</Filter>
+		<File
+			RelativePath="Readme.txt"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>


Property changes on: trunk/Fdo/Python/FdoWrapper.vcproj
___________________________________________________________________
Name: svn:eol-style
   + CRLF

Added: trunk/Fdo/Python/Fdo_Inc/Common/StringCollection.h
===================================================================
--- trunk/Fdo/Python/Fdo_Inc/Common/StringCollection.h	                        (rev 0)
+++ trunk/Fdo/Python/Fdo_Inc/Common/StringCollection.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,281 @@
+#ifndef FDO_STRING_COLLECTION_H
+#define FDO_STRING_COLLECTION_H		1
+// 
+
+//
+// Copyright (C) 2004-2006  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <Common/Collection.h>
+
+/// \cond DOXYGEN-IGNORE
+// An element in a string collection.
+// This class is just a wrapper around a string.
+class FdoStringElement : public FdoDisposable
+{
+public:
+    /// Create from a string.
+	static FdoStringElement* Create( FdoStringP src )
+	{
+	    return new FdoStringElement(src);
+	}
+
+    /// Operator to copy from a "managed" string.
+	FdoStringElement& operator=( const FdoStringP& src )
+	{
+	    mString = src;
+        return(*this);
+	}
+
+    /// Operator to copy from an "unmanaged" string.
+	FdoStringElement& operator=( const FdoString* wString )
+	{
+	    mString = wString;
+        return(*this);
+	}
+
+    /// Returns the string that this element represents.
+	FdoStringP GetString()
+	{
+	    return mString;
+	}
+
+protected:
+    /// Create from a string.
+    FdoStringElement() {}
+    FdoStringElement( FdoStringP src )
+    {
+	    mString = src;
+    }
+
+    virtual ~FdoStringElement(void)
+    {
+    }
+
+private:
+    FdoStringP mString;
+};
+
+typedef FdoPtr<FdoStringElement> FdoStringElementP;
+/// \endcond
+
+/// \brief
+/// FdoStringCollection is a collection of strings.
+class FdoStringCollection : public FdoCollection<FdoStringElement,FdoException>
+{
+public:
+    /// \brief
+    /// Constructs a new empty string collection
+    /// 
+    /// \return
+    /// Returns FdoStringCollection
+    /// 
+	FDO_API_COMMON static FdoStringCollection* Create(void);
+
+    /// \brief
+    /// Creates a copy of string collection
+    /// 
+    /// \param src 
+    /// Input the source collection
+    /// 
+    /// \return
+    /// Returns FdoStringCollection
+    /// 
+	FDO_API_COMMON static FdoStringCollection* Create( const FdoStringCollection& src);
+
+    /// \brief
+    /// Creates a copy of string collection
+    /// 
+    /// \param src 
+    /// Input pointer to the source collection
+    /// 
+    /// \return
+    /// Returns FdoStringCollection
+    /// 
+	FDO_API_COMMON static FdoStringCollection* Create( const FdoStringCollection* src);
+
+    /// \brief
+    /// Creates a string collection that is tokenize from a string.
+    /// The collection contains an element for each token.
+    /// 
+    /// \param inString 
+    /// Input the string to tokenize.
+    /// \param delimiters 
+    /// Input list of single character token delimiters.
+    /// \param bNullTokens 
+    /// true: include zero-length tokens in the collection.
+    /// false: exclude zero-length tokens
+    /// 
+    /// \return
+    /// Returns FdoStringCollection
+    /// 
+	FDO_API_COMMON static FdoStringCollection* Create( const FdoStringP& inString, const FdoString* delimiters, bool bNullTokens = false );
+
+    /// \brief
+    /// Gets the string in the collection at the specified index. Throws an invalid argument exception if the index is out of range.
+    /// 
+    /// \param index 
+    /// Input index
+    /// 
+    /// \return
+    /// Returns the string in the collection at the specified index
+    /// 
+	FDO_API_COMMON FdoString* GetString(int index) const;
+
+    /// \brief
+    /// Appends the strings from src to the end of this collection.
+    /// 
+    /// \param src 
+    /// Input the source collection
+    /// 
+	FDO_API_COMMON void Append( const FdoStringCollection& src);
+
+    /// \brief
+    /// Adds a string to the end of this collection.
+    /// 
+    /// \param src 
+    /// Input the source collection
+    /// 
+	FDO_API_COMMON int Add( FdoStringP src);
+
+    /// \brief
+    /// Given a string, returns its position in this collection.
+    /// 
+    /// \param value 
+    /// Input the string to check
+    /// \param caseSensitive 
+    /// Input if true, do a case-sensitive comparison
+    /// of the string and members of this collection. If false, the comparison
+    /// is case-insensitive.
+    /// 
+    /// \return
+    /// Returns the string's position. Returns -1 if the string
+    /// is not in this collection.
+    /// 
+    FDO_API_COMMON virtual FdoInt32 IndexOf(FdoStringP value, FdoBoolean caseSensitive = true) const;
+
+    /// \brief
+    /// Concatenates the strings in this collection.
+    /// 
+    /// \param separator 
+    /// Input separate each collection string with this separator string.
+    /// 
+    /// \return
+    /// Returns the concatenation if all strings in this collection.
+    /// 
+    /// Returns a concatenation of all the strings in this collection, 
+    /// separated by the given separator.
+	FDO_API_COMMON FdoStringP ToString( const FdoString* separator );
+
+protected:
+/// \cond DOXYGEN-IGNORE
+	FDO_API_COMMON FdoStringCollection(void);
+	FDO_API_COMMON FdoStringCollection( const FdoStringCollection& src);
+	FDO_API_COMMON FdoStringCollection( const FdoStringCollection* src);
+	FDO_API_COMMON FdoStringCollection( const FdoStringP& inString, const FdoString* delimiters, bool bNullTokens = false );
+
+	FDO_API_COMMON virtual ~FdoStringCollection(void);
+
+/// \endcond
+    FDO_API_COMMON virtual void Dispose()
+    {
+        delete this;
+    }
+
+private:
+};
+
+//typedef FdoPtr<FdoStringCollection> FdoStringsP;
+
+/// \brief
+/// FdoStringsP is a FdoPtr on FdoStringCollection, provided for convenience.
+class FdoStringsP : public FdoPtr<FdoStringCollection>
+{
+public:
+    FdoStringsP() {}
+    FdoStringsP( const FdoStringsP& src ) 
+        : FdoPtr<FdoStringCollection>(src)
+    {}
+
+    FdoStringsP( FdoStringCollection* src )
+        : FdoPtr<FdoStringCollection>(src)
+    {}
+
+    ~FdoStringsP() {}
+    /// \brief
+    /// Copies a string collection
+    /// 
+    /// \param src 
+    /// Input the source collection
+    /// 
+    /// \return
+    /// Returns the copy FdoStringCollection
+    /// 
+	FDO_API_COMMON FdoStringCollection* operator=( FdoStringCollection* src ); 
+
+    /// \brief
+    /// Concatenates two string collections
+    /// 
+    /// \param coll2 
+    /// Input collection to append to the end of this collection
+    /// 
+    /// \return
+    /// Returns the concatenated FdoStringCollection
+    /// 
+	FDO_API_COMMON const FdoStringsP operator+( const FdoStringsP coll2 ) const;
+
+    /// \brief
+    /// Concatenates a string collection and a string
+    /// 
+    /// \param str2 
+    /// Input stromg to append to the end of this collection
+    /// 
+    /// \return
+    /// Returns the concatenated FdoStringCollection
+    /// 
+	FDO_API_COMMON const FdoStringsP operator+( const FdoStringP str2 ) const;
+
+    /// \brief
+    /// Concatenates two string collections
+    /// 
+    /// \param coll2 
+    /// Input collection to append to the end of this collection
+    /// 
+    /// \return
+    /// Returns the concatenated FdoStringCollection
+    /// 
+	FDO_API_COMMON FdoStringsP operator+=( FdoStringsP coll2 );
+
+    /// \brief
+    /// Concatenates a string collection and a string
+    /// 
+    /// \param str2 
+    /// Input stromg to append to the end of this collection
+    /// 
+    /// \return
+    /// Returns the concatenated FdoStringCollection
+    /// 
+	FDO_API_COMMON FdoStringsP operator+=( FdoStringP str2 );
+
+};
+
+#endif
+
+


Property changes on: trunk/Fdo/Python/Fdo_Inc/Common/StringCollection.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Fdo_Inc/Common/Vector.h
===================================================================
--- trunk/Fdo/Python/Fdo_Inc/Common/Vector.h	                        (rev 0)
+++ trunk/Fdo/Python/Fdo_Inc/Common/Vector.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,408 @@
+#ifndef FDO_VECTOR_H
+#define FDO_VECTOR_H		1
+// 
+
+//
+// Copyright (C) 2004-2006  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <Common/Collection.h>
+
+/// \brief
+/// An element in a vector.
+/// This class is just a ref-countable wrapper around a double.
+class FdoVectorElement : public FdoDisposable
+{
+public:
+    /// \brief
+    /// Creates a vector element.
+    /// 
+    /// \param value 
+    /// Input the value to assign the element
+    /// 
+    /// \return
+    /// Returns FdoProviderNameTokens
+    /// 
+	FDO_API_COMMON static FdoVectorElement* Create( double value )
+	{
+	    return new FdoVectorElement(value);
+	}
+
+    /// \brief
+    /// Gets the element value.
+    /// 
+    /// \return
+    /// Returns the value that this element represents.
+    /// 
+	FDO_API_COMMON double  GetValue()
+	{
+	    return mValue;
+	}
+
+    /// \brief
+    /// Sets the element value.
+    /// 
+    /// \param value 
+    /// Input the value to assign the element
+    /// 
+    FDO_API_COMMON void SetValue( double value ) 
+    {
+        mValue = value;
+    }
+
+    /// \brief
+    /// Gets the element value in string format.
+    /// 
+    /// \return
+    /// Returns the value that this element represents.
+    /// 
+    FDO_API_COMMON FdoStringP GetString();
+
+protected:
+/// \cond DOXYGEN-IGNORE
+    FdoVectorElement() {}
+    FdoVectorElement( double value )
+    {
+	    mValue = value;
+    }
+
+    virtual ~FdoVectorElement(void)
+    {
+    }
+/// \endcond
+
+private:
+    double mValue;
+};
+
+typedef FdoPtr<FdoVectorElement> FdoVectorElementP;
+
+/// \brief
+/// FdoVector is a one-dimensional collection of numbers.
+class FdoVector : public FdoCollection<FdoVectorElement,FdoException>
+{
+public:
+    /// \brief
+    /// Constructs a new empty vector
+    /// 
+    /// \return
+    /// Returns FdoVector
+    /// 
+	FDO_API_COMMON static FdoVector* Create(void);
+
+    /// \brief
+    /// Creates a copy of a vector
+    /// 
+    /// \param src 
+    /// Input pointer to the source vector
+    /// 
+    /// \return
+    /// Returns FdoVector
+    /// 
+	FDO_API_COMMON static FdoVector* Create( const FdoVector* src);
+
+    /// \brief
+    /// Creates a vector that is tokenize from a string.
+    /// The vector contains an element for each token. Non-numberic tokens
+    /// become 0.0.
+    /// 
+    /// \param inString 
+    /// Input the string to tokenize.
+    /// \param delimiters 
+    /// Input list of single character token delimiters.
+    /// \param bNullTokens 
+    /// true: include zero-length tokens in the vector ( as 0.0 ).
+    /// false: exclude zero-length tokens
+    /// 
+    /// \return
+    /// Returns FdoVector
+    /// 
+	FDO_API_COMMON static FdoVector* Create( const FdoStringP& inString, const FdoString* delimiters, bool bNullTokens = false );
+
+    /// \brief
+    /// Gets the number in the vector at the specified index. Throws an invalid argument exception if the index is out of range.
+    /// 
+    /// \param index 
+    /// Input index
+    /// 
+    /// \return
+    /// Returns the number in the vector at the specified index
+    /// 
+	FDO_API_COMMON double GetValue(int index) const;
+
+    /// \brief
+    /// Appends the numbers from src to the end of this vector.
+    /// 
+    /// \param src 
+    /// Input the source collection
+    /// 
+	FDO_API_COMMON void Append( const FdoVector* src);
+
+    /// \brief
+    /// Adds a number to the end of this vector.
+    /// 
+    /// \param value 
+    /// Input the source collection
+    /// 
+	FDO_API_COMMON int Add( double value );
+
+    /// \brief
+    /// Concatenates the numbers in this collection.
+    /// 
+    /// \param separator 
+    /// Input separate each collection number with this separator string.
+    /// 
+    /// \return
+    /// Returns the concatenation of all numbers in this vector, 
+    /// separated by the given separator..
+    /// 
+	FDO_API_COMMON FdoStringP ToString( const FdoString* separator );
+
+protected:
+/// \cond DOXYGEN-IGNORE
+	FdoVector(void);
+	FdoVector( const FdoVector* src);
+	FdoVector( const FdoStringP& inString, const FdoString* delimiters, bool bNullTokens = false );
+
+	virtual ~FdoVector(void);
+/// \endcond
+
+    FDO_API_COMMON virtual void Dispose()
+    {
+        delete this;
+    }
+
+private:
+};
+
+/// \brief
+/// FdoVectorP is a FdoPtr on FdoVector, provided for convenience. It
+/// also provides vector arithmetic and comparison operators.
+class FdoVectorP : public FdoPtr<FdoVector>
+{
+public:
+    /// \brief
+    /// Vector FdoPtr default constructor
+    /// 
+    /// \return
+    /// Returns FdoVectorP
+    /// 
+    FDO_API_COMMON FdoVectorP() {}
+
+    /// \brief
+    /// Vector FdoPtr copy constructor
+    /// 
+    /// \param src 
+    /// Input the source vector as a FdoPtr
+    /// 
+    /// \return
+    /// Returns FdoVectorP
+    /// 
+    FDO_API_COMMON FdoVectorP( const FdoVectorP& src ) 
+        : FdoPtr<FdoVector>(src)
+    {}
+
+    /// \brief
+    /// Vector FdoPtr copy constructor
+    /// 
+    /// \param src 
+    /// Input the source vector as an object pointer
+    /// 
+    /// \return
+    /// Returns FdoVectorP
+    /// 
+    FDO_API_COMMON FdoVectorP( FdoVector* src )
+        : FdoPtr<FdoVector>(src)
+    {}
+
+    /// \brief
+    /// Vector FdoPtr destructor
+    /// 
+    FDO_API_COMMON ~FdoVectorP() {}
+
+    /// \brief
+    /// Copies a vector
+    /// 
+    /// \param src 
+    /// Input the source vector
+    /// 
+    /// \return
+    /// Returns a new copy of the input vector
+    /// 
+	FDO_API_COMMON FdoVector* operator=( FdoVector* src ); 
+
+    /// \brief
+    /// Adds two vectors, by adding each individual element. The output vector has
+    /// the same length as the longer of the input vectors. If one input
+    /// vector is shorter than the other, it is treated as if it 
+    /// is padded with zeros.
+    /// 
+    /// \param vec2 
+    /// Input vector to add to this vector
+    /// 
+    /// \return
+    /// Returns the sum of the two input vectors
+    /// 
+	FDO_API_COMMON const FdoVectorP operator+( const FdoVectorP vec2 ) const;
+
+    /// \brief
+    /// Subtracts two vectors, by subtracting each individual element. The output vector has
+    /// the same length as the longer of the input vectors. If one input
+    /// vector is shorter than the other, it is treated as if it 
+    /// is padded with zeros.
+    /// 
+    /// \param vec2 
+    /// Input vector to subtract from this vector
+    /// 
+    /// \return
+    /// Returns the difference of the two input vectors
+    /// 
+	FDO_API_COMMON const FdoVectorP operator-( const FdoVectorP vec2 ) const;
+
+    /// \brief
+    /// Adds a vector, to this vector, by adding each individual element. The output vector has
+    /// the same length as the longer of the input vectors. If one input
+    /// vector is shorter than the other, it is treated as if it 
+    /// is padded with zeros.
+    /// 
+    /// \param vec2 
+    /// Input vector to add to this vector
+    /// 
+    /// \return
+    /// Returns the sum of the two input vectors
+    /// 
+	FDO_API_COMMON FdoVectorP operator+=( const FdoVectorP vec2 );
+
+    /// \brief
+    /// Subtracts a vector, from this vector, by subtracting each individual element. The output vector has
+    /// the same length as the longer of the input vectors. If one input
+    /// vector is shorter than the other, it is treated as if it 
+    /// is padded with zeros.
+    /// 
+    /// \param vec2 
+    /// Input vector to subtract from this vector
+    /// 
+    /// \return
+    /// Returns the difference of the two input vectors
+    /// 
+	FDO_API_COMMON FdoVectorP operator-=( const FdoVectorP vec2 );
+
+    /// \brief
+    /// Compare two vectors for equality. The vectors are equal
+    /// if all of their elements are equal. If one vector is shorter than the other
+    /// then it is treated as if it were padded with zeros to the length of the
+    /// other vector.
+    /// 
+    /// \param vec2 
+    /// Input vector to compare this vector
+    /// 
+    /// \return
+    /// Returns true if the two vectors are identical.
+    /// 
+	FDO_API_COMMON FdoBoolean operator==( const FdoVectorP vec2 ) const;
+
+    /// \brief
+    /// Compare two vectors for difference. The vectors are differnt
+    /// if one of their elements is differnt. If one vector is shorter than the other
+    /// then it is treated as if it were padded with zeros to the length of the
+    /// other vector.
+    /// 
+    /// \param vec2 
+    /// Input vector to compare this vector
+    /// 
+    /// \return
+    /// Returns true if the two vectors are different.
+    /// 
+	FDO_API_COMMON FdoBoolean operator!=( const FdoVectorP vec2 ) const;
+
+    /// \brief
+    /// Checks if this vector is greater than a second vector.
+    /// Comparison is done by comparing the first element in each vector.
+    /// If they are equal, then the second element is check and so on until
+    /// a differing element is found. If one vector is shorter than the other
+    /// then it is treated as if it were padded with zeros to the length of the
+    /// other vector.
+    /// 
+    /// \param vec2 
+    /// Input vector to compare this vector
+    /// 
+    /// \return
+    /// Returns true if this vector is greater than vec2.
+    /// 
+	FDO_API_COMMON FdoBoolean operator>( const FdoVectorP vec2 ) const;
+
+    /// \brief
+    /// Checks if this vector is greater or equal to a second vector.
+    /// Comparison is done by comparing the first element in each vector.
+    /// If they are equal, then the second element is check and so on until
+    /// a differing element is found. If one vector is shorter than the other
+    /// then it is treated as if it were padded with zeros to the length of the
+    /// other vector.
+    /// 
+    /// \param vec2 
+    /// Input vector to compare this vector
+    /// 
+    /// \return
+    /// Returns true if this vector is greater or equal vec2.
+    /// 
+	FDO_API_COMMON FdoBoolean operator>=( const FdoVectorP vec2 ) const;
+
+    /// \brief
+    /// Checks if this vector is less than a second vector.
+    /// Comparison is done by comparing the first element in each vector.
+    /// If they are equal, then the second element is check and so on until
+    /// a differing element is found. If one vector is shorter than the other
+    /// then it is treated as if it were padded with zeros to the length of the
+    /// other vector.
+    /// 
+    /// \param vec2 
+    /// Input vector to compare this vector
+    /// 
+    /// \return
+    /// Returns true if this vector is less than vec2.
+    /// 
+	FDO_API_COMMON FdoBoolean operator<( const FdoVectorP vec2 ) const;
+
+    /// \brief
+    /// Checks if this vector is less than or equal to a second vector.
+    /// Comparison is done by comparing the first element in each vector.
+    /// If they are equal, then the second element is check and so on until
+    /// a differing element is found. If one vector is shorter than the other
+    /// then it is treated as if it were padded with zeros to the length of the
+    /// other vector.
+    /// 
+    /// \param vec2 
+    /// Input vector to compare this vector
+    /// 
+    /// \return
+    /// Returns true if this vector is less than or equal vec2.
+    /// 
+	FDO_API_COMMON FdoBoolean operator<=( const FdoVectorP vec2 ) const;
+
+/// \cond DOXYGEN-IGNORE
+protected:
+    /// General function to do the vector comparisons.
+    FdoBoolean Compare( const FdoVectorP vec2, FdoBoolean lt, FdoBoolean eq, FdoBoolean gt ) const;
+/// \endcond
+};
+
+#endif
+
+


Property changes on: trunk/Fdo/Python/Fdo_Inc/Common/Vector.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Fdo_Inc/Fdo/Commands/LongTransaction/LongTransactionConstants.h
===================================================================
--- trunk/Fdo/Python/Fdo_Inc/Fdo/Commands/LongTransaction/LongTransactionConstants.h	                        (rev 0)
+++ trunk/Fdo/Python/Fdo_Inc/Fdo/Commands/LongTransaction/LongTransactionConstants.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,38 @@
+#ifndef _LONGTRANSACTIONCONSTANTS_H_
+#define _LONGTRANSACTIONCONSTANTS_H_
+//
+
+//
+// Copyright (C) 2004-2006  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <FdoStd.h>
+
+/// \brief
+/// Defines synonyms for the active long transaction.
+static const FdoString *FDO_ACTIVELONGTRANSACTION;
+
+/// \brief
+/// Defines synonyms for the root long transaction.
+static const FdoString *FDO_ROOTLONGTRANSACTION;
+
+#endif
+
+


Property changes on: trunk/Fdo/Python/Fdo_Inc/Fdo/Commands/LongTransaction/LongTransactionConstants.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/ClassMapping.h
===================================================================
--- trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/ClassMapping.h	                        (rev 0)
+++ trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/ClassMapping.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,161 @@
+#ifndef FDO_XMLCLASSMAPPING_H
+#define FDO_XMLCLASSMAPPING_H
+
+//
+// Copyright (C) 2004-2006  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <FdoStd.h>
+#include <Fdo/Commands/Schema/PhysicalClassMapping.h>
+#include <Fdo/Xml/ElementMappingCollection.h>
+
+/// \brief
+/// FdoXmlClassMapping describes GML to FDO mappings for a particular FDO class
+/// Only mappings that cannot be represented in FDO are described.
+class FdoXmlClassMapping : public FdoPhysicalClassMapping
+{
+public:
+    /// \brief
+    /// Constructs an object describing the GML-FDO mappings for an FDO class.
+    /// 
+    /// \param name 
+    /// Input class name
+    /// \param GmlName 
+    /// Input corresponding type name in GML version of the
+    /// class's schema.
+    /// \param wkBaseName 
+    /// Input name of the most specialized well-known type. This is 
+    /// set when the type represents geometries and indicates what kind of geometries the type
+    /// represents. wkBaseName must be L"" or one of the constants defined in 
+    /// commonGml212Gml212.h.
+	 /// \param wkSchemaName
+	 /// Well-known schema name.
+    /// 
+    /// \return
+    /// Returns FdoXmlClassMapping
+    /// 
+    FDO_API static FdoXmlClassMapping* Create(
+        FdoString* name, 
+        FdoString* gmlName,
+        FdoString* wkBaseName,
+        FdoString* wkSchemaName
+    );
+
+    /// \brief
+    /// Gets the name of the class's corresponding GML complexType.
+    /// 
+    /// \return
+    /// Returns FdoString.
+    /// 
+    FDO_API FdoString* GetGmlName();
+
+    /// \brief
+    /// Gets the most specialized well-known base type
+    /// 
+    /// \return
+    /// Returns FdoString.
+    /// 
+    FDO_API FdoString* GetWkBaseName();
+
+    /// \brief
+    /// Gets the schema containing most specialized well-known base type
+    /// 
+    /// \return
+    /// Returns FdoString.
+    /// 
+    FDO_API FdoString* GetWkSchemaName();
+
+    /// \brief
+    /// Gets the mappings between GML elements for this class's properties and their
+    /// Fdo Classes. 
+    /// 
+    /// \return
+    /// Returns FdoXmlElementMappingCollection*
+    /// 
+	FDO_API FdoXmlElementMappingCollection* GetElementMappings();
+
+/// \cond DOXYGEN-IGNORE
+
+    /// \brief
+    /// Writes this XML Class Mapping to XML. Called when
+    /// the element is serialized to XML. 
+    /// 
+    /// \param xmlWriter 
+    /// Input write the element to this XML writer
+    /// \param flags 
+    /// Input flags that control the writing of the element.
+    /// 
+    /// \return
+    /// Returns nothing
+    /// 
+   	virtual void _writeXml(
+    	FdoXmlWriter* xmlWriter, 
+    	const FdoXmlFlags* flags
+	);
+/// \endcond
+
+/// \cond DOXYGEN-IGNORE
+protected:
+    FdoXmlClassMapping() {}
+
+    FdoXmlClassMapping(
+        FdoString* name, 
+        FdoString* gmlName,
+        FdoString* wkBaseName,
+        FdoString* wkSchemaName
+    );
+
+    virtual ~FdoXmlClassMapping();
+
+    virtual void Dispose();
+
+    /// Functions for XML support
+
+    /// \brief
+    /// Initializes this Xml Class Mapping from its XML attributes. Called when
+    /// the element is deserialized from XML. 
+    /// 
+    /// \param pContext 
+    /// Input context contain information about the current deserialization operation
+    /// \param attrs 
+    /// Input the XML attributes.
+    /// 
+    /// \return
+    /// Returns nothing
+    /// 
+    virtual void InitFromXml(FdoXmlSaxContext* pContext, FdoXmlAttributeCollection* attrs);
+
+/// \endcond
+
+private:
+    FdoStringP mGmlName;
+    FdoStringP mWkBaseName;
+    FdoStringP mWkSchemaName;
+    FdoXmlElementMappingsP mElementMappings;
+};
+
+/// \ingroup (typedefs)
+/// \brief
+/// FdoXmlClassMappingP is a FdoPtr on FdoXmlClassMapping, provided for convenience.
+typedef FdoPtr<FdoXmlClassMapping> FdoXmlClassMappingP;
+
+#endif
+
+


Property changes on: trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/ClassMapping.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/ElementMapping.h
===================================================================
--- trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/ElementMapping.h	                        (rev 0)
+++ trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/ElementMapping.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,218 @@
+#ifndef FDO_XMLELEMENTMAPPING_H
+#define FDO_XMLELEMENTMAPPING_H
+
+//
+// Copyright (C) 2004-2006  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <FdoStd.h>
+#include <Fdo/Commands/Schema/PhysicalElementMapping.h>
+#include <Fdo/Commands/Schema/PhysicalElementMappingCollection.h>
+
+class FdoXmlClassMapping;
+
+/// \brief
+/// FdoXmlElementMapping describes GML to FDO mappings for a particular GML Schema
+/// element. Only mappings that cannot be represented in FDO are described.
+class FdoXmlElementMapping : public FdoPhysicalElementMapping
+{
+public:
+    /// \brief
+    /// Constructs an object describing the GML-FDO mappings for a GML element
+    /// 
+    /// \param name 
+    /// Input element name
+    /// 
+    /// \return
+    /// Returns FdoXmlElementMapping
+    /// 
+    FDO_API static FdoXmlElementMapping* Create(
+        FdoString* name
+    );
+
+    /// \brief
+    /// Sets the class mapping for this element. The class mapping provides
+    /// information about the FDO Class for this element's type.
+    /// 
+    /// \param classMapping 
+    /// Input the class mapping
+    /// 
+    FDO_API void SetClassMapping(FdoXmlClassMapping* classMapping);
+
+    /// \brief
+    /// Gets the class mapping for this element. The class mapping provides
+    /// information about the FDO Class for this element's type.
+    /// 
+    /// \return
+    /// Returns FdoXmlClassMapping.
+    /// 
+    FDO_API FdoXmlClassMapping* GetClassMapping();
+
+    /// \brief
+    /// Sets the element class name to a dangling reference. This function can be
+    /// used to reference a class that has no FdoXmlClassMapping object.
+    /// 
+    /// \param className 
+    /// Input name of the FDO class corresponding to the 
+    /// element's type.
+    /// 
+    FDO_API void SetClassName(
+        FdoString* className
+    );
+
+    /// \brief
+    /// Gets the FDO Class name.
+    /// 
+    /// \return
+    /// Returns FdoString.
+    /// 
+    FDO_API FdoString* GetClassName();
+
+    /// \brief
+    /// Sets the schema name for a dangling reference to an element's class. 
+    /// 
+    /// \param schemaName 
+    /// Input name of the Feature Schema containing the FDO class. If
+    /// L"" then it defaults to the schema containing this element.
+    /// 
+    FDO_API void SetSchemaName(
+        FdoString* schemaName
+    );
+
+    /// \brief
+    /// Gets the Schema Name for the FDO Class.
+    /// 
+    /// \return
+    /// Returns FdoString.
+    /// 
+    FDO_API FdoString* GetSchemaName();
+
+    /// \brief
+    /// Sets the namespace URI for this element. 
+    /// 
+    /// \param gmlUri 
+    /// Input a URI. Defaults to the targetNamespace
+    /// for the schema containing this element.
+    /// 
+    FDO_API void SetGmlUri(
+        FdoString* gmlUri
+    );
+
+    /// \brief
+    /// Gets the URI for the referenced element. 
+    /// 
+    /// \return
+    /// Returns FdoString.
+    /// 
+    FDO_API FdoString* GetGmlUri();
+
+    /// \brief
+    /// Sets the local name for this element. 
+    /// 
+    /// \param gmlLocalName 
+    /// Input the local name (unprefixed name) of this
+    /// element. Defaults to the element name.
+    /// 
+    FDO_API void SetGmlLocalName(
+        FdoString* gmlLocalName
+    );
+
+    /// \brief
+    /// Gets the URI for the referenced element. 
+    /// 
+    /// \return
+    /// Returns FdoString. L"" if this element does not reference
+    /// another element.
+    /// 
+    FDO_API FdoString* GetGmlLocalName();
+
+    /// Functions for XML support
+
+/// \cond DOXYGEN-IGNORE
+//
+    /// \brief
+    /// Initializes this Xml Element Mapping from its XML attributes. Called when
+    /// the element is deserialized from XML. 
+    /// 
+    /// \param pContext 
+    /// Input context contain information about the current deserialization operation
+    /// \param attrs 
+    /// Input the XML attributes.
+    /// 
+    /// \return
+    /// Returns nothing
+    /// 
+    virtual void InitFromXml(FdoXmlSaxContext* pContext, FdoXmlAttributeCollection* attrs);
+
+    /// \brief
+    /// Writes this XML Element Mapping to XML. Called when
+    /// the element is serialized to XML. 
+    /// 
+    /// \param xmlWriter 
+    /// Input write the element to this XML writer
+    /// \param flags 
+    /// Input flags that control the writing of the element.
+    /// 
+    /// \return
+    /// Returns nothing
+    /// 
+   	virtual void _writeXml(
+    	FdoXmlWriter* xmlWriter, 
+    	const FdoXmlFlags* flags
+	);
+/// \endcond
+
+    virtual void SetAliasNames(FdoStringCollection* pAliasNames){m_AliasNames = FDO_SAFE_ADDREF(pAliasNames);}
+    virtual FdoStringCollection* GetAliasNames(){return FDO_SAFE_ADDREF(m_AliasNames.p);}
+    
+    virtual void SetChoiceName(FdoString* pChoiceName){m_choiceName = pChoiceName;}
+    virtual FdoString* GetChoiceName(){return m_choiceName;}
+
+/// \cond DOXYGEN-IGNORE
+protected:
+    FdoXmlElementMapping() {}
+
+    FdoXmlElementMapping(
+        FdoString* name
+    );
+
+    virtual ~FdoXmlElementMapping();
+
+    virtual void Dispose();
+/// \endcond
+
+private:
+    FdoStringP                  mClassName;
+    FdoStringP                  mSchemaName;
+    FdoStringP                  mGmlUri;
+    FdoStringP                  mGmlLocalName;
+    FdoPtr<FdoXmlClassMapping>  mClassMapping;
+    FdoPtr<FdoStringCollection> m_AliasNames;
+    FdoStringP                  m_choiceName;
+};
+
+/// \ingroup (typedefs)
+/// \brief
+/// FdoXmlElementMappingP is a FdoPtr on FdoXmlElementMapping, provided for convenience.
+typedef FdoPtr<FdoXmlElementMapping> FdoXmlElementMappingP;
+
+#endif
+
+


Property changes on: trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/ElementMapping.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/FeatureFlags.h
===================================================================
--- trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/FeatureFlags.h	                        (rev 0)
+++ trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/FeatureFlags.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,327 @@
+#ifndef FDO_XML_FEATUREFLAGS_H
+#define FDO_XML_FEATUREFLAGS_H
+
+//
+// Copyright (C) 2004-2006  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <FdoStd.h>
+#include <Fdo/Xml/Flags.h>
+
+/// \brief
+/// FdoXmlFeatureFlags extends FdoXmlFlags to specify flags specific to feature 
+/// serialization.
+/// \remarks
+/// The Error Levels inherited from FdoXmlFlags take on the following meaning when
+/// applied to features. Suppose we have GML Document A that conforms to GML Schema A.
+/// If Document A is read into FDO and then written to Document B then the Error Levels
+/// applied to the Document A read have the following meaning:
+/// <ul>
+///    <li>ErrorLevel_High: Document B will be structurally identical to Document A.
+///    Errors are issued if this cannot be guaranteed. Document B will have the 
+///    exact same elements and attributes as Document A.
+///    <li>ErrorLevel_Normal: There is no information loss. Document B contains
+///    all of the information from Document A and Document B conforms to Schema A.
+///    Errors are issued if this cannot be guaranteed.
+///    However, Documents A and B might not look exactly alike; some Document A elements
+///    may have an equivalent but different structure in Document B.
+///    <li>ErrorLevel_Low: There can be information loss. Document B is a subset
+///    of Document A but still conforms to Schema A. Errors are issued if 
+///    this cannot be guaranteed. Any Document A elements, not recognized by
+///    FDO, are discarded on read.
+///    <li>ErrorLevel_VeryLow: FDO does a best effort read of Document A and write of
+///    Document B. There is no guarantee that Document B will look anything like 
+///    Document A or that Document B will conform to Schema A.
+/// </ul>
+///    
+/// The above assumes that FDO is not provided the GML form of Schema A when writing
+/// Document B. For example, supposed that FDO can write a Schema A conformant 
+/// Document B only when supplied the GML version of Schema A. FDO will still generate 
+/// errors and fail to read Document A under ErrorLevel_Low.
+class FdoXmlFeatureFlags : public FdoXmlFlags
+{
+public:
+    	/// \brief
+    	/// The FdoXmlFeatureFlags::ConflictOption specifies how to handle features that 
+    	/// are already in the DataStore, when Deserializing:
+	enum ConflictOption {
+    		/// Add new features to the FDO DataStore and if a feature already exists, 
+    		/// throw an exception.
+		ConflictOption_Add,
+    		/// Update the feature if it already exists, add it if it doesn't exist.
+		/// This is the slowest option, since the feature must be queried from the DataStore
+    		/// before it is inserted or updated.
+		ConflictOption_Update,
+    		/// Add new features and silently skip features already in the DataStore.
+		ConflictOption_Skip
+	};
+
+    /// \brief
+    /// Constructs an FdoXmlFeatureFlags object.
+    /// 
+    /// \param url 
+    /// See FdoXmlFlags::Create()
+    /// \param errorLevel 
+    /// See FdoXmlFlags::Create()
+    /// \param nameAdjust 
+    /// See FdoXmlFlags::Create()
+    /// \param conflictOption 
+    /// Conflict option to apply to pre-existing features, when deserializing features
+    /// into an FDO datastore.
+    /// 
+    /// \return
+    /// Returns FdoXmlFeatureFlags
+    /// 
+    FDO_API static FdoXmlFeatureFlags* Create( 
+		FdoString*	    			                url,
+        ErrorLevel		                            errorLevel = ErrorLevel_Normal,
+		FdoBoolean				                    nameAdjust = true,
+        ConflictOption	                            conflictOption = ConflictOption_Add
+	);
+
+    /// \brief
+    /// Sets the current option for handling features already in the connection 
+    /// datastore.
+    /// 
+    /// \param conflictOption 
+    /// Specifies how feaures, already in the datastore, are handled.
+    /// 
+	FDO_API virtual void SetConflictOption( ConflictOption conflictOption );
+    
+    /// \brief
+    /// Get the current option for handling feature already in the connection datastore.
+    /// 
+    /// \return
+    /// Returns the current conflict option.
+    /// 
+	FDO_API virtual ConflictOption GetConflictOption() const;
+
+    /// \brief
+    /// Sets the write feature collection flag. This flag is initially set to true.
+    /// 
+    /// \param writeCollection 
+    /// Input 
+    /// true: The serialized features are wrapped in a GML FeatureCollection element.
+    /// false: features are serialize without a wrapping collection element.
+    /// 
+	FDO_API virtual void SetWriteCollection( FdoBoolean writeCollection );
+
+    /// \brief
+    /// Gets the write feature collection flag.
+    /// 
+    /// \return
+    /// Returns the write feature collection flag.
+    /// 
+	FDO_API virtual FdoBoolean GetWriteCollection() const;
+
+    /// \brief
+    /// Sets the write feature member flag. This flag is initially set to true.
+    /// 
+    /// \param writeMember 
+    /// Input 
+    /// true: Each serialized feature is wrapped in a GML featureMember element.
+    /// false: features are serialized without a wrapping member element. Normally,
+    /// writeMember would only be set to false when writing values to a collection
+    /// object property.
+    /// 
+	FDO_API virtual void SetWriteMember( FdoBoolean writeMember );
+
+    /// \brief
+    /// Gets the write feature member flag.
+    /// 
+    /// \return
+    /// Returns the write feature member flag.
+    /// 
+	FDO_API virtual FdoBoolean GetWriteMember() const;
+
+    /// \brief
+    /// Sets the URI for the feature collection element to wrap around serialized 
+    /// features. The initial value is 'http://www.opengis.net/gml'
+    /// 
+    /// \param uri 
+    /// Input the URI. If NULL or blank, the URI reverts back to the initial value.
+    /// 
+	FDO_API virtual void SetCollectionUri( FdoString* uri );
+
+    /// \brief
+    /// Gets the feature collection element URI.
+    /// 
+    /// \return
+    /// Returns the URI.
+    /// 
+	FDO_API virtual FdoString* GetCollectionUri() const;
+
+    /// \brief
+    /// Sets the name for the feature collection element to wrap around serialized 
+    /// features. The initial value is 'FeatureCollection'
+    /// 
+    /// \param name 
+    /// Input the name. If NULL or blank, the name reverts back to the initial value.
+    /// 
+	FDO_API virtual void SetCollectionName( FdoString* name );
+
+    /// \brief
+    /// Gets the feature collection element name.
+    /// 
+    /// \return
+    /// Returns FdoString*.
+    /// 
+	FDO_API virtual FdoString* GetCollectionName() const;
+
+    /// \brief
+    /// Sets the URI for the feature member element to wrap around each serialized 
+    /// feature. The initial value is 'http://www.opengis.net/gml'
+    /// 
+    /// \param uri 
+    /// Input the URI. If NULL or blank, the URI defaults to the URI of the feature 
+    /// collection element's sub-element. If this sub-element cannot be determined 
+    /// then the URI defaults to the initial value
+    /// 
+	FDO_API virtual void SetMemberUri( FdoString* uri );
+
+    /// \brief
+    /// Gets the feature member element URI.
+    /// 
+    /// \return
+    /// Returns FdoString*
+    /// 
+	FDO_API virtual FdoString* GetMemberUri() const;
+
+    /// \brief
+    /// Sets the name for the feature member element to wrap around each serialized 
+    /// feature. The initial value is 'featureMember'
+    /// 
+    /// \param name 
+    /// Input the name. If NULL or blank, the URI defaults to the name of the feature 
+    /// collection element's sub-element. If this sub-element cannot be determined then
+    /// the name defaults to the initial value
+    /// 
+	FDO_API virtual void SetMemberName( FdoString* name );
+
+    /// \brief
+    /// Gets the feature member element name.
+    /// 
+    /// \return
+    /// Returns FdoString*.
+    /// 
+	FDO_API virtual FdoString* GetMemberName() const;
+
+    /// \brief
+    /// Sets the GML ID prefix for writing features. This prefix is prepended to the 
+    /// gml:id value for each feature. When features from different FDO Datastores are
+    /// serialized to the same GML document, it is recommended that a different GML ID 
+    /// prefix be used for each Datastore, to ensure that the gml:id values in the GML
+    /// document are unique. The initial value is L"" (no prefix).
+    /// 
+    /// \param prefix 
+    /// Input the GML ID Prefix
+    /// 
+	FDO_API virtual void SetGmlIdPrefix( FdoString* prefix );
+
+    /// \brief
+    /// Gets the current GML ID prefix.
+    /// 
+    /// \return
+    /// Returns FdoString
+    /// 
+	FDO_API virtual FdoString* GetGmlIdPrefix() const;
+
+    /// \brief
+    /// Sets the schema locations for writing features. The output GML must have schema
+    /// definition for all its referenced namespaces, e.g, gml namespace, wfs namespace, 
+    /// user defined namespace. There are default values for gml namespace schema location
+    /// and wfs namespace schema location, so the user doesn't need to set locations for those
+    /// two namespaces. But the user can still set values to override the default values. The
+    /// user could call this function multiple times to set schema location for multiple namespace. 
+    /// 
+    /// \param nameSpace 
+    /// Namespace of which the schema location is to be set. Like "http://www.opengis.net/wfs" 
+    /// for wfs namespace.
+    /// \param schemaLocation 
+    /// Standard URL indicating the schema location, like "http://schemas.opengeospatial.net/wfs/1.0.0/WFS-basic.xsd"
+    /// for wfs namespace.
+    /// 
+    FDO_API virtual void SetSchemaLocation(FdoString* nameSpace, FdoString* schemaLocation);
+
+    /// \brief
+    /// Gets the schema location for the specified namespace.
+    /// 
+    /// \param nameSpace 
+    /// Namespace of which the schema location is to be retrieved. Like "http://www.opengis.net/wfs"
+    /// 
+    /// \return
+    /// Returns the URL indicating the schema location. 
+    /// 
+    FDO_API virtual FdoString* GetSchemaLocation(FdoString* nameSpace);
+
+    /// \brief
+    /// Gets all namespaces that have been set for schemaLocation by SetSchemaLocation().
+    /// 
+    /// \return
+    /// Returns all namespaces that have been set for schemaLocation.
+    /// 
+    FDO_API virtual FdoStringCollection* GetNamespaces();
+
+    /// \brief
+    /// Sets the default namespace which defines all feature/object types found in the input
+    /// feature reader which is to be serialized. The user is also supposed to set the schema
+    /// location for this namespace.
+    /// 
+    /// \param defaultNamespace 
+    /// Default namespace.
+    /// 
+    FDO_API virtual void SetDefaultNamespace(FdoString* defaultNamespace);
+
+    /// \brief
+    /// Gets the default namespace.
+    /// 
+    /// \return
+    /// Returns the default namespace.
+    /// 
+    FDO_API virtual FdoString* GetDefaultNamespace();
+
+protected:
+	FdoXmlFeatureFlags();
+    FdoXmlFeatureFlags(FdoString* url, ErrorLevel errorLevel, FdoBoolean nameAdjust, ConflictOption conflictOption);
+	virtual ~FdoXmlFeatureFlags();
+
+private:
+    ConflictOption mConflictOption;
+    FdoBoolean mWriteCollection;
+    FdoBoolean mWriteMember;
+    FdoStringP mCollectionUri;
+    FdoStringP mCollectionName;
+    FdoStringP mMemberUri;
+    FdoStringP mMemberName;
+    FdoStringP mGmlIdPrefix;
+    FdoPtr<FdoStringCollection> mNamespaces;
+    FdoPtr<FdoStringCollection> mSchemaLocations;
+    FdoStringP mDefaultNamespace;
+
+};
+
+/// \ingroup (typedefs)
+/// \brief
+/// FdoXmlFeatureFlagsP is a FdoPtr on FdoXmlFeatureFlags, provided for convenience.
+typedef FdoPtr<FdoXmlFeatureFlags> FdoXmlFeatureFlagsP;
+
+#endif
+
+


Property changes on: trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/FeatureFlags.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/Flags.h
===================================================================
--- trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/Flags.h	                        (rev 0)
+++ trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/Flags.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,261 @@
+#ifndef FDO_XML_FLAGS_H
+#define FDO_XML_FLAGS_H
+
+//
+// Copyright (C) 2004-2006  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#include <FdoStd.h>
+
+class FdoPhysicalSchemaMappingCollection;
+
+/// \brief
+/// FdoXmlFlags defines various options for serializing and deserializing
+/// FDO element to and from XML Documents.
+class FdoXmlFlags : public FdoIDisposable
+{
+public:
+    /// \brief
+    /// The FdoXmlFlags::ErrorLevel determines how strict the error reporting 
+    /// is when a Feature Schema is read from an XML Document. For each errorLevel a 
+    /// certain level of round-trip fidelity is guaranteed if the read succeeds.
+    /// \param ErrorLevel_VeryLow 
+    /// the read succeeds even if no level of 
+    /// round-trip fidelity is maintained. If the Feature Schema is read successfully 
+    /// from document A and then written to document B, any instance document that
+    /// conforms to the document A schema may or may not conform to the document B 
+    /// schema. A document that does not conform to the A schema may or may not 
+    /// conform to the B schema. This errorLevel is useful for reading schemas from 
+    /// external sources into FDO when it doesn’t matter how much the schemas are 
+    /// altered during the read.
+    /// 
+	enum ErrorLevel {
+    		/// The read fails with an exception when the Feature Schema cannot be read without alteration.
+		/// If the Feature Schema is read successfully from document A and then written to document B, 
+    		/// documents A and B are guaranteed to be identical.
+		/// This errorLevel should be used when no alterations to the Feature Schema can be tolerated
+		ErrorLevel_High,
+    		/// Fails if the Feature Schema cannot be read 
+    		/// without changing the domain of its conforming instance documents.
+		/// If the Feature Schema is read successfully from document A
+		/// and then written to document B,
+    		/// any instance document that conforms to the document A schema 
+    		/// will also conform to the document B schema.
+		/// Any instance document that does not conform to A does not conform to B.
+		/// However, documents A and B will not necessarily be identical.
+		ErrorLevel_Normal,
+    		/// Similar to ErrorLevel_Normal except that the 
+    		/// instance document domain is allowed to grow.
+		/// If the Feature Schema is read 
+    		/// successfully from document A and then written to document B,
+		/// any instance document that conforms to the document A schema will also conform to the document B schema.
+		/// However a document that does not conform to the A schema 
+    		/// may or may not conform to the B schema.
+		ErrorLevel_Low,
+    		/// The read succeeds even if no level of round-trip fidelity is maintained.
+		/// If the Feature Schema is read successfully from document A and then written to document B,
+		/// any instance document thatconforms to the document A schema
+		/// may or may not conform to the document B schema.
+    		/// A document that does not conform to the A schema may or may not conform to the B schema.
+		/// This errorLevel is useful for reading schemas from external sources into FDO
+		/// when it doesn’t matter how much the schemas are altered during the read.
+		ErrorLevel_VeryLow
+	};
+
+    /// \brief
+    /// Constructs an FdoXmlFlags object.
+    /// 
+    /// \param url 
+    /// Input When writing  Feature Schemas, this specifies the 
+    /// prefix for the target namespace for any schemas that are written. The XML 
+    /// format for Feature Schemas is OGC GML, so a targetNamespace for the 
+    /// xs:schema element is required. This namespace will be http://[url]/[schema_name].
+    /// \param errorLevel 
+    /// Input The error level for reading feature schemas.
+    /// \param nameAdjust 
+    /// Input true: apply name adjustment to all elements. 
+    /// false: apply name adjustment only to elements with fdo:nameAdjust="true"
+    /// 
+    /// \return
+    /// Returns FdoXmlFlags
+    /// 
+    FDO_API static FdoXmlFlags* Create( 
+        FdoString* url,
+		ErrorLevel errorLevel = ErrorLevel_Normal,
+        FdoBoolean nameAdjust = true
+	);
+
+    /// \brief
+    /// Sets the target namespace prefix, see FdoXmlFlags::Create().
+    /// 
+    /// \param url 
+    /// Input the target namespace prefix.
+    /// 
+    FDO_API void SetUrl( FdoString* url );
+
+    /// \brief
+    /// Gets the target namespace prefix, see FdoXmlFlags::Create().
+    /// 
+    /// \return
+    /// Returns the target namespace prefix.
+    /// 
+	FDO_API FdoString* GetUrl() const;
+
+    /// \brief
+    /// Sets the error level, see FdoXmlFlags::Create().
+    /// 
+    /// \param errorLevel 
+    /// Input the error level.
+    /// 
+	FDO_API void SetErrorLevel( ErrorLevel errorLevel );
+
+    /// \brief
+    /// Gets the current error level, see FdoXmlFlags::Create().
+    /// 
+    /// \return
+    /// Returns the error level.
+    /// 
+	FDO_API ErrorLevel GetErrorLevel() const;
+
+    /// \brief
+    /// Sets the name adjustment flag, see FdoXmlFlags::Create().
+    /// 
+    /// \param nameAdjust 
+    /// Input the name adjustment flag.
+    /// 
+  	FDO_API void SetNameAdjust( FdoBoolean nameAdjust );
+
+    /// \brief
+    /// Gets the name adjustment flag, see FdoXmlFlags::Create().
+    /// 
+    /// \return
+    /// Returns the name adjustment flag.
+    /// 
+	FDO_API FdoBoolean GetNameAdjust() const;
+
+    /// \brief
+    /// Sets the Schema Name as Prefix flag. This flag controls how
+    /// an FDO Feature Schema name is generated when the schema is read
+    /// from GML.
+    /// 
+    /// \param schemaNameAsPrefix 
+    /// Input when true, the Feature Schema 
+    /// name is set to the prefix from the xmlns namespace declaration for 
+    /// the schema's targetNamespace. The target namespace prefix flag on this 
+    /// object is ignored
+    /// in this case. If no suitable namespace declaration can be found,
+    /// the Feature Schema name is set as if this flag were false.
+    /// Schemas cannot be round-tripped when this flag is true. Therefore, it
+    /// may only be set to true when the current ErrorLevel is VeryLow.
+    /// Caution must be observed when using this flag. Unpredictable results
+    /// can occur if a GML Schema uses different prefixes for its 
+    /// targetNamespace in different parts of the schema.
+    /// 
+  	FDO_API void SetSchemaNameAsPrefix( FdoBoolean schemaNameAsPrefix );
+
+    /// \brief
+    /// Gets the Schema Name as Prefix flag.
+    /// 
+    /// \return
+    /// Returns the Schema Name as Prefix flag.
+    /// 
+	FDO_API FdoBoolean GetSchemaNameAsPrefix() const;
+
+    /// \brief
+    /// Sets the Use GML ID flag.
+    /// 
+    /// \param schemaNameAsPrefix 
+    /// Input when true, the feature id ( fid in GML 2, gml:id in GML 3)
+    /// becomes the identity property of all feature classes.
+    /// 
+  	FDO_API void SetUseGmlId( FdoBoolean schemaNameAsPrefix );
+
+    /// \brief
+    /// Gets the Use GML ID flag.
+    /// 
+    /// \return
+    /// Returns the Use GML ID flag.
+    /// 
+	FDO_API FdoBoolean GetUseGmlId() const;
+
+    /// \brief
+    /// Sets the Schema Mapping Overrides for translating schemas 
+    /// between GML and FDO. 
+    /// 
+    /// \param mappings 
+    /// Input the Schema Mapping Overrides. This collection
+    /// can contain an FdoXmlSchemaMapping element for each Feature Schema that
+    /// may be written or read. When a Feature Schema is read or written to or 
+    /// from GML, this collection is checked for an FdoXmlSchemaMapping item named 
+    /// the same as the feature schema. If present, the hints in this item 
+    /// affect how the feature schema is read or written. The Schema Mapping 
+    /// Overrides also control how features are read since they 
+    /// can override the default correspondences between feature class names 
+    /// and their GML element names.
+    /// 
+  	FDO_API void SetSchemaMappings( FdoPhysicalSchemaMappingCollection* mappings );
+
+    /// \brief
+    /// Gets the current Schema Mapping Overrides.
+    /// 
+    /// \return
+    /// Returns FdoXmlSchemaMappingCollection*.
+    /// 
+	FDO_API FdoPhysicalSchemaMappingCollection* GetSchemaMappings() const;
+
+protected:
+    /// default constructor to keep linux from complaining
+    FdoXmlFlags() {}
+	FDO_API FdoXmlFlags( FdoString* url, ErrorLevel errorLevel, FdoBoolean nameAdjust );
+    FDO_API virtual ~FdoXmlFlags();
+
+/// \cond DOXYGEN-IGNORE
+    //Deletes myself
+    FDO_API virtual void Dispose();
+/// \endcond
+
+private:
+    ErrorLevel mErrorLevel;
+    FdoStringP mUrl;
+    FdoBoolean mNameAdjust;
+    FdoBoolean mSchemaNameAsPrefix;
+    FdoBoolean mUseGmlId;
+    FdoPhysicalSchemaMappingCollection* mSchemaMappings;
+
+/// \cond DOXYGEN-IGNORE
+private:
+    FdoBoolean mElementDefaultNullability;
+public:
+    void SetElementDefaultNullability( FdoBoolean pValue )
+    {
+        mElementDefaultNullability = pValue;
+    }
+
+    FdoBoolean GetElementDefaultNullability() const
+    {
+        return mElementDefaultNullability;
+    }
+/// \endcond
+};
+
+/// \ingroup (typedefs)
+/// \brief
+/// FdoXmlFlagsP is a FdoPtr on FdoXmlFlags, provided for convenience.
+typedef FdoPtr<FdoXmlFlags> FdoXmlFlagsP;
+
+#endif
+
+


Property changes on: trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/Flags.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/SpatialContextFlags.h
===================================================================
--- trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/SpatialContextFlags.h	                        (rev 0)
+++ trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/SpatialContextFlags.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,144 @@
+#ifndef FDO_XML_SPATIALCONTEXTFLAGS_H
+#define FDO_XML_SPATIALCONTEXTFLAGS_H
+
+//
+// Copyright (C) 2004-2006  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <FdoStd.h>
+#include <Fdo/Xml/Flags.h>
+
+/// \brief
+/// FdoXmlSpatialContextFlags extends FdoXmlFlags to specify flags 
+/// specific to Spatial Contexts.
+class FdoXmlSpatialContextFlags : public FdoXmlFlags
+{
+public:
+    	/// \brief
+    	/// The FdoXmlSpatialContextFlags::ConflictOption specifies how 
+    	/// to handle Spatial Contexts that are already in the DataStore, 
+    	///  when Deserializing:
+	enum ConflictOption {
+    		/// Add new spatial contexts to the FDO DataStore and
+		/// if the Spatial Context already exists, throw an exception.
+    		/// is thrown.
+		ConflictOption_Add,
+    		/// Update the spatial context if it already exists and
+    		/// add it if it doesn't exist.
+		ConflictOption_Update,
+    		/// Add new spatial contexts and
+    		/// silently skip spatial contexts already in the DataStore.
+		ConflictOption_Skip
+	};
+
+    /// \brief
+    /// Constructs an FdoXmlSpatialContextFlags object.
+    /// 
+    /// \param url 
+    /// Base URL for generating well-known references to 
+    /// GML coordinate systems and transformations
+    /// \param errorLevel 
+    /// Input The error level for reading spatial contexts. Controls how 
+    /// strict the error reporting is.
+    /// \param nameAdjust 
+    /// Input true: apply name adjustment to all elements. 
+    /// false: apply name adjustment only to elements with fdo:nameAdjust="true"
+    /// \param conflictOption 
+    /// Input option for Deserializing Spatial Contexts. 
+    /// Specified how Spatial Contexts, already in the FDO connection, are handled.
+    /// \param includeDefault 
+    /// Input true: When Serializing Spatial Contexts, serialize
+    /// all contexts including the default.
+    /// false: skip the default Spatial Context.
+    /// 
+    /// \return
+    /// Returns FdoXmlSpatialContextFlags
+    /// 
+    FDO_API static FdoXmlSpatialContextFlags* Create( 
+		FdoString*	    			                url,
+        ErrorLevel		                            errorLevel = ErrorLevel_Normal,
+		FdoBoolean				                    nameAdjust = true,
+        ConflictOption	                            conflictOption = ConflictOption_Add,
+		FdoBoolean				                    includeDefault = false
+	);
+
+    /// \brief
+    /// Sets the current option for handling Spatial Contexts
+    /// already in the connection.
+    /// 
+    /// \param conflictOption 
+    /// Input option for Deserializing Spatial Contexts. 
+    /// Specified how Spatial Contexts, already in the FDO connection, are handled.
+    /// 
+	FDO_API void SetConflictOption( ConflictOption conflictOption );
+    
+    /// \brief
+    /// Get the current option for handling Spatial Contexts
+    /// already in the connection.
+    /// 
+    /// \return
+    /// Returns the current conflict option.
+    /// 
+	FDO_API ConflictOption GetConflictOption() const;
+
+    /// \brief
+    /// Sets the default Spatial Context inclusion flag.
+    /// 
+    /// \param includeDefault 
+    /// Input true: When Serializing Spatial Contexts, serialize
+    /// all contexts including the default.
+    /// false: skip the default Spatial Context.
+    /// 
+	FDO_API void SetIncludeDefault( FdoBoolean includeDefault );
+
+    /// \brief
+    /// Gets the default Spatial Context inclusion flag.
+    /// 
+    /// \return
+    /// Returns the default Spatial Context inclusion flag.
+    /// 
+	FDO_API FdoBoolean GetIncludeDefault() const;
+
+
+protected:
+    /// default constructor to keep linux from complaining
+    FdoXmlSpatialContextFlags() {}
+	FDO_API FdoXmlSpatialContextFlags( 
+		FdoString*				url,
+		ErrorLevel				errorLevel,
+		FdoBoolean				nameAdjust,
+		ConflictOption		    conflictOption,
+		FdoBoolean				includeDefault
+    );
+    FDO_API virtual ~FdoXmlSpatialContextFlags();
+
+private:
+	ConflictOption		    mConflictOption;
+	FdoBoolean				mIncludeDefault;
+};
+
+/// \ingroup (typedefs)
+/// \brief
+/// FdoXmlSpatialContextFlagsP is a FdoPtr on FdoXmlSpatialContextFlags, provided for convenience.
+typedef FdoPtr<FdoXmlSpatialContextFlags> FdoXmlSpatialContextFlagsP;
+
+#endif
+
+


Property changes on: trunk/Fdo/Python/Fdo_Inc/Fdo/Xml/SpatialContextFlags.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Inc/Common/FdoProxyConnectionManager.h
===================================================================
--- trunk/Fdo/Python/Inc/Common/FdoProxyConnectionManager.h	                        (rev 0)
+++ trunk/Fdo/Python/Inc/Common/FdoProxyConnectionManager.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,41 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#include "Common/FdowStd.h"
+#include "Fdo.h"
+#include "Common/StringBuffer.h"
+#include <wchar.h>
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#ifndef FDOPROXYCONNECTIONMANAGER_H
+#define FDOPROXYCONNECTIONMANAGER_H
+
+class FdoProxyConnectionManager
+{
+protected:
+	FdoProxyConnectionManager(void);
+	~FdoProxyConnectionManager(void);
+
+public:	
+	FDOW_API static FdoIConnection* CreateConnection(const wchar_t *providerName);
+};
+
+
+#endif


Property changes on: trunk/Fdo/Python/Inc/Common/FdoProxyConnectionManager.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Inc/Common/FdowStd.h
===================================================================
--- trunk/Fdo/Python/Inc/Common/FdowStd.h	                        (rev 0)
+++ trunk/Fdo/Python/Inc/Common/FdowStd.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,28 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <wchar.h>
+#include <stdlib.h>
+
+#define FDOW_API
+
+


Property changes on: trunk/Fdo/Python/Inc/Common/FdowStd.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Inc/Common/StringBuffer.h
===================================================================
--- trunk/Fdo/Python/Inc/Common/StringBuffer.h	                        (rev 0)
+++ trunk/Fdo/Python/Inc/Common/StringBuffer.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,80 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#if !defined(AFX_STRINGBUFFER_H__6F001295_BC04_4F33_A1F1_8C376B1A4076__INCLUDED_)
+#define AFX_STRINGBUFFER_H__6F001295_BC04_4F33_A1F1_8C376B1A4076__INCLUDED_
+
+#if _WIN32
+#pragma warning( disable : 4290 )
+#endif
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include <wchar.h>
+#include <string.h>
+#define STRINGBUFFER_INIT_CAPACITY 32
+
+
+class StringBuffer  
+// This class is modelled after the Java StringBuffer, and provides a convenient way 
+// of building a large string of an unknown size.
+{
+protected:
+	wchar_t* m_pBuffer;
+	unsigned long m_lCapacity;
+
+	// Create a new buffer at a given size, initialized with the null character
+	wchar_t* createEmptyBuffer( unsigned long size );
+
+
+public:
+	// Constructors
+	StringBuffer();
+	StringBuffer( const wchar_t* str );
+	StringBuffer( unsigned long initCapacity );
+
+	// Desctructor
+	virtual ~StringBuffer();
+
+	// Retrieve the length and capacity of the buffer
+	unsigned long getCapacity();
+	unsigned long getLength();
+
+	// Ensure that the capacity is at least the given size
+	void ensureCapacity( unsigned long size );	
+
+	// Resize the buffer to match the actual length of the string
+	void trim();
+	
+	// Insert and append strings into the buffer
+	// The buffer is extended automatically if the resulting string
+	// exceeds the capacity
+	void insert(unsigned long offset, const wchar_t* str );	
+	void append(const wchar_t* str);
+
+	// Retreive a substring of the current buffer.
+	// If end < start, a NULL is returned.
+	// If start > the string length, a NULL is returned.
+	wchar_t* substring(unsigned long start, unsigned long end);
+
+	// Returns a copy of the string value of the buffer
+	const wchar_t* toString();
+};
+
+#endif // !defined(AFX_STRINGBUFFER_H__6F001295_BC04_4F33_A1F1_8C376B1A4076__INCLUDED_)


Property changes on: trunk/Fdo/Python/Inc/Common/StringBuffer.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Inc/Common/utils.h
===================================================================
--- trunk/Fdo/Python/Inc/Common/utils.h	                        (rev 0)
+++ trunk/Fdo/Python/Inc/Common/utils.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,184 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#include "FdowStd.h"
+#include "Fdo.h"
+#include <wchar.h>
+#include <Python.h>
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef FALSE
+#   define  FALSE   (0)
+#endif
+
+#ifndef TRUE
+#   define  TRUE    (1)
+#endif
+
+// ------------------------------------------------------------------------
+// Function Name: utils_PyObjectToWideChar
+// Description:   Translates a Python string (as a PyObject) into a 
+//                wide character string.
+// 
+// Parameters:    pPyString (mandatory input)
+//					- The input Python string. No typechecking is performed.
+//
+//
+// Returns:       A fully allocated wchar_t* array with the message.
+//                Returns NULL if the pPyString == PyNone.
+// ------------------------------------------------------------------------
+wchar_t* utils_PyObjectToWideChar( PyObject* pPyString );
+
+
+
+// ------------------------------------------------------------------------
+// Function Name: utils_WideCharToPyObject
+//
+// Description:   Translates a wide character string into a Python string.
+// 
+// Parameters:    pString (mandatory input)
+//					- The wide character string
+//
+// Returns:       The Python object representing the string.
+//                Returns Py_None if pString is NULL.
+// ------------------------------------------------------------------------
+PyObject* utils_WideCharToPyObject( const wchar_t* pString );
+
+
+// ------------------------------------------------------------------------
+// Function Name: utils_WideCharArrayToPyList
+//
+// Description:   Translates a wide character double pointer into a Python list.
+// 
+// Parameters:    pStringArray (mandatory input)
+//					- The wide character string array
+//
+//				  arrayLength  (mandatory input)
+//                  - Length of the array
+//
+// Returns:       The Python list containing PyStrings.
+//                Returns Py_None if pString is NULL.
+// ------------------------------------------------------------------------
+PyObject* utils_WideCharArrayToPyList( const wchar_t** pStringArray, const long arrayLength );
+
+// ------------------------------------------------------------------------
+// Function Name: utils_FdoDictionaryToPyDict
+//
+// Description:   Translates a Fdo FdoDictionary to a Python Dictionary
+// 
+// Parameters:    pFdoDictionary (mandatory input)
+//					- The original FDO FdoDictionary
+//
+// Returns:       The Python dictionary containing PyStrings.
+//                Returns Py_None if pString is NULL.
+// ------------------------------------------------------------------------
+PyObject* utils_FdoDictionaryToPyDict( const FdoDictionary *pFdoDictionary );
+
+
+// ------------------------------------------------------------------------
+// Function Name: utils_StringCollectionToPyList
+//
+// Description:   Translates an FDO String Collection to a Python list.
+// 
+// Parameters:    pStringCollection (mandatory input)
+//					- The FDO String Collection
+//
+// Returns:       The Python List containing a copy of the string collection.
+//
+// Remarks:		  pStringCollection is not destroyed in this function. 
+// ------------------------------------------------------------------------
+PyObject* utils_StringCollectionToPyList( const FdoStringCollection* pStringCollection );
+
+
+// ------------------------------------------------------------------------
+// Function Name: utils_intArrayToPyList
+//
+// Description:   Translates an array of integers to a Python list.
+// 
+// Parameters:    array (mandatory input)
+//					- the integer array
+//
+//					arrayLength (mandatory input)
+//					- number of array elements
+//
+// Returns:       The Python List containing a copy of the integer values.
+//
+// Remarks:			array is not destroyed in this function. 
+// ------------------------------------------------------------------------
+PyObject* utils_intArrayToPyList( const int* array, const long arrayLength );
+
+
+// ------------------------------------------------------------------------
+// Function Name: utils_intArrayToPyTuple
+//
+// Description:   Translates an array of integers to a Python tuple.
+// 
+// Parameters:    array (mandatory input)
+//					- the integer array
+//
+//					arrayLength (mandatory input)
+//					- number of array elements
+//
+// Returns:       The Python Tuple containing a copy of the integer values.
+//
+// Remarks:       The original array is not destroyed in this function. 
+// ------------------------------------------------------------------------
+PyObject* utils_intArrayToPyTuple( const int* array, const long arrayLength );
+
+
+// ------------------------------------------------------------------------
+// Function Name: ut_utf8_from_unicode
+//
+// Description:   Convert a UTF8 string from a UNICODE string.
+// 
+// Parameters:    
+//                Wtext (mandatory input)
+//                  - The unicode string that will be transformed into UTF8
+//               
+//                str_out (mandatory output)
+//					- the result of the Unicode to UT8 conversion
+//
+//                out_max_size (mandatory input)
+//                  - the size of the output string
+//
+// Returns:       Returns TRUE on success.  FALSE on failure.
+// ------------------------------------------------------------------------
+int ut_utf8_from_unicode(const wchar_t *Wtext, char* str_out, int out_max_size);
+
+
+int ut_utf8_charlen(const char *str_in);
+
+
+// ------------------------------------------------------------------------
+// Function Name: ut_utf8_to_unicode
+//
+// Description:   Convert a UTF8 string to a UNICODE string.
+// 
+// Parameters:    str_in (mandatory input)
+//					- the input utf8 string
+//
+//                Wtext (mandatory output)
+//                  - the result of the conversion from UTF8 to UNICODE
+//
+//                out_size (mandatory input)
+//                  - the size of the output string
+//
+// Returns:       Returns TRUE on success.  FALSE on failure.
+// ------------------------------------------------------------------------
+int ut_utf8_to_unicode( const char* str_in, wchar_t* Wtext, int out_size);
+


Property changes on: trunk/Fdo/Python/Inc/Common/utils.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Inc/Fdo/PhysicalSchemaMappingCasts.h
===================================================================
--- trunk/Fdo/Python/Inc/Fdo/PhysicalSchemaMappingCasts.h	                        (rev 0)
+++ trunk/Fdo/Python/Inc/Fdo/PhysicalSchemaMappingCasts.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,248 @@
+// File :  //otwqa/Providers/qa/tools/FdoPythonWrappers/inc/Common/PhysicalSchemaMappingCasts.h
+//
+// (C) Copyright 2003 by Autodesk, Inc. All Rights Reserved.
+//
+// By using this code, you are agreeing to the terms and conditions of
+// the License Agreement included in the documentation for this code.
+//
+// AUTODESK MAKES NO WARRANTIES, EXPRESS OR IMPLIED, AS TO THE
+// CORRECTNESS OF THIS CODE OR ANY DERIVATIVE WORKS WHICH INCORPORATE
+// IT. AUTODESK PROVIDES THE CODE ON AN "AS-IS" BASIS AND EXPLICITLY
+// DISCLAIMS ANY LIABILITY, INCLUDING CONSEQUENTIAL AND INCIDENTAL
+// DAMAGES FOR ERRORS, OMISSIONS, AND OTHER PROBLEMS IN THE CODE.
+//
+// Use, duplication, or disclosure by the U.S. Government is subject
+// to restrictions set forth in FAR 52.227-19 (Commercial Computer
+// Software Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
+// (Rights in Technical Data and Computer Software), as applicable.
+//
+// Modification History
+// Date       Author          Description
+// ---------- --------------- ------------------------------
+// 2005-11-30 Sheldon Regular     Initial Release
+//
+//
+
+
+#include "Common/FdowStd.h"
+#include "Fdo.h"
+#include <wchar.h>
+#include "Python.h"
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef FALSE
+#   define  FALSE   (0)
+#endif
+
+#ifndef TRUE
+#   define  TRUE    (1)
+#endif
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalSchemaMappingToFdoOracleOvPhysicalSchemaMapping
+// Description:   Casts an FdoPhysicalSchemaMapping to an  
+//                FdoOracleOvPhysicalSchemaMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalSchemaMapping Object
+//
+//
+// Returns:       A FdoOracleOvPhysicalSchemaMapping
+//
+// Revision History:
+// Date:       Name:          Description:
+// ------------------------------------------------------------------------
+// 2005-11-30  Sheldon Regular    Initial Release
+//
+// ------------------------------------------------------------------------
+//FdoOracleOvPhysicalSchemaMapping* FdoPhysicalSchemaMappingToFdoOracleOvPhysicalSchemaMapping( FdoPhysicalSchemaMapping* mapping );
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalSchemaMappingToFdoXmlSchemaMapping
+// Description:   Casts an FdoPhysicalSchemaMapping to an  
+//                FdoXmlSchemaMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalSchemaMapping Object
+//
+//
+// Returns:       A FdoXmlSchemaMapping
+//
+// Revision History:
+// Date:       Name:          Description:
+// ------------------------------------------------------------------------
+// 2005-11-30  Sheldon Regular    Initial Release
+//
+// ------------------------------------------------------------------------
+inline FdoXmlSchemaMapping* FdoPhysicalSchemaMappingToFdoXmlSchemaMapping( FdoPhysicalSchemaMapping* mapping )
+{
+	return static_cast<FdoXmlSchemaMapping *>(mapping);
+}
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalSchemaMappingToFdoOdbcOvPhysicalSchemaMapping
+// Description:   Casts an FdoPhysicalSchemaMapping to an  
+//                FdoOdbcOvPhysicalSchemaMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalSchemaMapping Object
+//
+//
+// Returns:       A FdoOdbcOvPhysicalSchemaMapping
+//
+// Revision History:
+// Date:       Name:          Description:
+// ------------------------------------------------------------------------
+// 2005-11-30  Sheldon Regular    Initial Release
+//
+// ------------------------------------------------------------------------
+//FdoOdbcOvPhysicalSchemaMapping* FdoPhysicalSchemaMappingToFdoOdbcOvPhysicalSchemaMapping( FdoPhysicalSchemaMapping* mapping );
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalSchemaMappingToFdoRfpPhysicalSchemaMapping
+// Description:   Casts an FdoPhysicalSchemaMapping to an  
+//                FdoRfpPhysicalSchemaMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalSchemaMapping Object
+//
+//
+// Returns:       A FdoRfpPhysicalSchemaMapping
+//
+// Revision History:
+// Date:       Name:          Description:
+// ------------------------------------------------------------------------
+// 2005-11-30  Sheldon Regular    Initial Release
+//
+// ------------------------------------------------------------------------
+//FdoRfpPhysicalSchemaMapping* FdoPhysicalSchemaMappingToFdoRfpPhysicalSchemaMapping( FdoPhysicalSchemaMapping* mapping );
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalSchemaMappingToFdoShpPhysicalSchemaMapping
+// Description:   Casts an FdoPhysicalSchemaMapping to an  
+//                FdoShpPhysicalSchemaMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalSchemaMapping Object
+//
+//
+// Returns:       A FdoShpPhysicalSchemaMapping
+//
+// Revision History:
+// Date:       Name:          Description:
+// ------------------------------------------------------------------------
+// 2005-11-30  Sheldon Regular    Initial Release
+//
+// ------------------------------------------------------------------------
+//FdoShpPhysicalSchemaMapping* FdoPhysicalSchemaMappingToFdoShpPhysicalSchemaMapping( FdoPhysicalSchemaMapping* mapping );
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalSchemaMappingToFdoWmsOvPhysicalSchemaMapping
+// Description:   Casts an FdoPhysicalSchemaMapping to an  
+//                FdoWmsOvPhysicalSchemaMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalSchemaMapping Object
+//
+//
+// Returns:       A FdoWmsOvPhysicalSchemaMapping
+//
+// Revision History:
+// Date:       Name:          Description:
+// ------------------------------------------------------------------------
+// 2005-11-30  Sheldon Regular    Initial Release
+//
+// ------------------------------------------------------------------------
+//FdoWmsOvPhysicalSchemaMapping* FdoPhysicalSchemaMappingToFdoWmsOvPhysicalSchemaMapping( FdoPhysicalSchemaMapping* mapping );
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalElementMappingToFdoPhysicalClassMapping
+// Description:   Casts an FdoPhysicalElementMapping an  
+//                FdoPhysicalClassMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalElementMapping  Object
+//
+//
+// Returns:       A FdoPhysicalClassMapping Object
+//
+// Revision History:
+// Date:       Name:          Description:
+// ------------------------------------------------------------------------
+// 2005-12-07  Jake Zhong     Initial Release
+//
+// ------------------------------------------------------------------------
+inline FdoPhysicalClassMapping * FdoPhysicalElementMappingToFdoPhysicalClassMapping( FdoPhysicalElementMapping * mapping )
+{
+	return static_cast<FdoPhysicalClassMapping *>(mapping);
+}
+
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalElementMappingToFdoPhysicalPropertyMapping(
+// Description:   Casts an FdoPhysicalElementMapping an  
+//                FdoPhysicalPropertyMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalElementMapping  Object
+//
+//
+// Returns:       A FdoPhysicalPropertyMapping Object
+//
+// Revision History:
+// Date:       Name:          Description:
+// ------------------------------------------------------------------------
+// 2005-12-07  Jake Zhong     Initial Release
+//
+// ------------------------------------------------------------------------
+inline FdoPhysicalPropertyMapping * FdoPhysicalElementMappingToFdoPhysicalPropertyMapping( FdoPhysicalElementMapping * mapping )
+{
+	return static_cast<FdoPhysicalPropertyMapping *>(mapping);
+}
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalElementMappingToFdoPhysicalSchemaMapping
+// Description:   Casts an FdoPhysicalElementMapping an  
+//                FdoPhysicalSchemaMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalElementMapping  Object
+//
+//
+// Returns:       A FdoPhysicalSchemaMapping Object
+//
+// Revision History:
+// Date:       Name:          Description:
+// ------------------------------------------------------------------------
+// 2005-12-07  Jake Zhong     Initial Release
+//
+// ------------------------------------------------------------------------
+inline FdoPhysicalSchemaMapping * FdoPhysicalElementMappingToFdoPhysicalSchemaMapping( FdoPhysicalElementMapping * mapping )
+{
+	return static_cast<FdoPhysicalSchemaMapping *>(mapping);
+}
+
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalElementMappingToFdoXmlElementMapping
+// Description:   Casts an FdoPhysicalElementMapping an  
+//                FdoXmlElementMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalElementMapping  Object
+//
+//
+// Returns:       A FdoXmlElementMapping Object
+//
+// Revision History:
+// Date:       Name:          Description:
+// ------------------------------------------------------------------------
+// 2005-12-07  Jake Zhong     Initial Release
+//
+// ------------------------------------------------------------------------
+inline FdoXmlElementMapping * FdoPhysicalElementMappingToFdoXmlElementMapping( FdoPhysicalElementMapping * mapping )
+{
+	return static_cast<FdoXmlElementMapping *>(mapping);
+}
+


Property changes on: trunk/Fdo/Python/Inc/Fdo/PhysicalSchemaMappingCasts.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Inc/stdafx.h
===================================================================
--- trunk/Fdo/Python/Inc/stdafx.h	                        (rev 0)
+++ trunk/Fdo/Python/Inc/stdafx.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,43 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+
+#include <string.h>
+#include <windows.h>
+#include <stdio.h>
+
+//#if defined(_DEBUG)
+//#define _DEBUG_WAS_DEFINED
+//#undef _DEBUG
+//#pragma message ("Compiling Python header files in Release mode.")
+//#endif
+
+//#include <Python.h>
+
+//#ifdef _DEBUG_WAS_DEFINED
+//#define _DEBUG
+//#undef _DEBUG_WAS_DEFINED
+//#endif
+


Property changes on: trunk/Fdo/Python/Inc/stdafx.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/PythonWrappers.sln
===================================================================
--- trunk/Fdo/Python/PythonWrappers.sln	                        (rev 0)
+++ trunk/Fdo/Python/PythonWrappers.sln	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,18 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FdoWrapper", "FdoWrapper.vcproj", "{5BEDFEA3-F135-4B1F-A2E2-00C3EA4B0D5B}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{5BEDFEA3-F135-4B1F-A2E2-00C3EA4B0D5B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{5BEDFEA3-F135-4B1F-A2E2-00C3EA4B0D5B}.Release|Win32.ActiveCfg = Release|Win32
+		{5BEDFEA3-F135-4B1F-A2E2-00C3EA4B0D5B}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal


Property changes on: trunk/Fdo/Python/PythonWrappers.sln
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/README.txt
===================================================================
--- trunk/Fdo/Python/README.txt	                        (rev 0)
+++ trunk/Fdo/Python/README.txt	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,53 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+'FDO Python Wrappers'
+
+This directory contains the code for building the Python wrappers for FDO.
+
+Directory contents:
+-----------------------------------------------------------------------------
+
+Files:
+	build.cmd             (Win32) Build script. Builds wrapper for FDO API and all overrides
+	PythonWrappers.sln    (Win32) Visual Studio .NET solution file for all wrappers
+	Fdo*.vcproj           (Win32) Visual Studio .NET project files	
+	
+Directories:
+	/Inc                  C++ Header files for the wrapper utilities
+	
+	/Fdo_Inc	          Modified FDO C++ header files.  SWIG has problems with some
+	                      C++ constructs used in FDO.  /Fdo_Inc contains modified
+	                      versions of the header files to generate the wrappers.
+	                      
+	/Inc_Merged           Temporary directory created by build scripts.  A merge of
+	                      the header files in FDO SDK, and those in /fdo_inc
+	                      
+	/Lib                  Temporary directory created by Visual Studio. Target directory
+	                      of the build process.
+	                      
+	/Resource             Resource files for Win32
+	
+	/Src                  C++ source files for the wrapper utilities
+	
+	/Swig                 SWIG interface files
+		/Common           SWIG interface files shared for all wrappers
+		/Fdo              SWIG interface files for FDO API
+		
+	/UnitTests            Python unit tests for the FDO API wrapper
+
+


Property changes on: trunk/Fdo/Python/README.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Resource/FdoWrapper.rc
===================================================================
--- trunk/Fdo/Python/Resource/FdoWrapper.rc	                        (rev 0)
+++ trunk/Fdo/Python/Resource/FdoWrapper.rc	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,114 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "FdoWrapperResource.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
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    "FdoWrapperResource.h\0"
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// English (Canada) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 3,3,0,0
+ PRODUCTVERSION 3,3,0,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x0L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "100904b0"
+        BEGIN
+            VALUE "CompanyName", "Open Source Geospatial Foundation"
+            VALUE "FileDescription", "Python Wrapper for FDO API"
+            VALUE "FileVersion", "3, 3, 0, 0"
+            VALUE "InternalName", "FDOpy"
+            VALUE "LegalCopyright", "Copyright (C) 2007"
+            VALUE "OriginalFilename", "FDOpy"
+            VALUE "ProductName", "Feature Data Objects"
+            VALUE "ProductVersion", "3, 3, 0, 0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x1009, 1200
+    END
+END
+
+#endif    // English (Canada) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+


Property changes on: trunk/Fdo/Python/Resource/FdoWrapper.rc
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Resource/FdoWrapperResource.h
===================================================================
--- trunk/Fdo/Python/Resource/FdoWrapperResource.h	                        (rev 0)
+++ trunk/Fdo/Python/Resource/FdoWrapperResource.h	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,15 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by FdoWrapper.rc
+//
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        101
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1001
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif


Property changes on: trunk/Fdo/Python/Resource/FdoWrapperResource.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Src/Common/FdoProxyConnectionManager.cpp
===================================================================
--- trunk/Fdo/Python/Src/Common/FdoProxyConnectionManager.cpp	                        (rev 0)
+++ trunk/Fdo/Python/Src/Common/FdoProxyConnectionManager.cpp	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,78 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+ 
+
+#include "stdafx.h"
+#include "Common/FdoProxyConnectionManager.h"
+
+
+FdoProxyConnectionManager::FdoProxyConnectionManager(void)
+{
+}
+
+FdoProxyConnectionManager::~FdoProxyConnectionManager(void)
+{
+}
+
+
+FdoIConnection* FdoProxyConnectionManager::CreateConnection(const wchar_t *providerName) {
+	try {
+		const FdoProvider* provider = NULL;
+		const FdoProviderCollection* providers = NULL;
+		IConnectionManager* manager = NULL;
+		IProviderRegistry* registry = NULL;
+		FdoIConnection *pFdoConnection = NULL;
+		int providerIndex = 0;
+
+		// Validate the input parameters
+		if (providerName == NULL) {
+			throw FdoException::Create(L"Cannot create connection. Provider name is NULL.");
+		}
+
+		// Retrieve the providers from the registry
+		registry = FdoFeatureAccessManager::GetProviderRegistry();
+		providers = registry->GetProviders();
+
+		// Find the requested provider		
+		providerIndex = providers->IndexOf(providerName);
+		if (providerIndex == -1) {
+			StringBuffer *pBuffer = new StringBuffer();
+			pBuffer->append(L"Cannot create connection. Cannot find FDO Provider named ");
+			pBuffer->append(providerName);
+			FdoString *pErrorMsg = pBuffer->toString();
+			delete pBuffer;
+			throw FdoException::Create(pErrorMsg);
+		}
+
+		// Create the connection object
+		manager = FdoFeatureAccessManager::GetConnectionManager ();
+		pFdoConnection = manager->CreateConnection(providerName);
+
+		return pFdoConnection;
+	}
+	catch (FdoClientServiceException* exception) {
+		FdoException *newException = FdoException::Create(exception->ToString() );
+        exception->Release();
+		throw newException;
+    }
+	catch (FdoException* exception) {
+		throw exception;
+	}
+	catch (...){
+		throw;
+	}
+}


Property changes on: trunk/Fdo/Python/Src/Common/FdoProxyConnectionManager.cpp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Src/Common/StringBuffer.cpp
===================================================================
--- trunk/Fdo/Python/Src/Common/StringBuffer.cpp	                        (rev 0)
+++ trunk/Fdo/Python/Src/Common/StringBuffer.cpp	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,214 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+ 
+
+#include "stdafx.h"
+#include "Common/StringBuffer.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+StringBuffer::StringBuffer()
+{
+	m_pBuffer = this->createEmptyBuffer( STRINGBUFFER_INIT_CAPACITY );
+	m_lCapacity = STRINGBUFFER_INIT_CAPACITY;
+}
+
+StringBuffer::StringBuffer( const wchar_t* str ) 
+{
+	m_lCapacity = (long)wcslen(str) * 2;
+	m_pBuffer = this->createEmptyBuffer( m_lCapacity );	
+    wcscpy_s(m_pBuffer, m_lCapacity, str);
+}
+
+StringBuffer::StringBuffer( unsigned long initCapacity )
+{		
+	m_pBuffer = this->createEmptyBuffer( initCapacity );
+	m_lCapacity = initCapacity;	
+}
+
+StringBuffer::~StringBuffer()
+{
+	delete [] m_pBuffer;
+}
+
+
+wchar_t* StringBuffer::createEmptyBuffer( unsigned long size ) {	
+	wchar_t *newBuffer = new wchar_t[ size + 1 ];
+#ifdef _WIN32
+	_snwprintf(newBuffer, 1, L"");
+#else
+	swprintf(newBuffer, 1, L"");
+#endif	
+	return newBuffer;
+}
+
+
+
+void StringBuffer::ensureCapacity( unsigned long size )
+{	
+	wchar_t* newBuffer = NULL;
+	unsigned long bufferlength;
+
+	// Don't extend the buffer if the current capacity
+	// exceeds the requested size
+	if ( m_lCapacity >= size ) {
+		return;
+	}
+
+	// Extend the buffer to the larger of two values:
+	//  - twice the size of the existing buffer
+	//  - the requested size
+	if (m_lCapacity * 2 + 2 > size ) {
+		m_lCapacity = m_lCapacity * 2 + 2;
+	}
+	else {
+		m_lCapacity = size;
+	}
+	
+	newBuffer = this->createEmptyBuffer(m_lCapacity);
+#ifdef _WIN32
+	bufferlength = _snwprintf(newBuffer, m_lCapacity, L"%ls", m_pBuffer);
+#else
+	bufferlength = swprintf(newBuffer, m_lCapacity, L"%ls", m_pBuffer);
+#endif
+	delete [] m_pBuffer;
+	m_pBuffer = newBuffer;
+
+}
+
+
+void StringBuffer::append(const wchar_t* str)
+{
+	unsigned long prefixLength = (unsigned long)wcslen(m_pBuffer);
+	unsigned long suffixLength = (unsigned long)wcslen(str);
+
+	// Determine the required buffer length
+	unsigned long requiredLength = prefixLength + suffixLength + 4;	
+
+	// Extend the buffer if necessary
+	if (requiredLength > m_lCapacity ) {		
+		this->ensureCapacity(requiredLength);
+	}
+
+	// Concatenate the suffix string into the buffer
+	unsigned long bufferIndex = prefixLength;	
+	unsigned long offSet = bufferIndex;
+
+	while(bufferIndex < requiredLength ) {
+		m_pBuffer[bufferIndex] = str[bufferIndex - offSet];
+		bufferIndex++;
+	}
+
+	// Append the string-terminating NULL
+	m_pBuffer[bufferIndex] = '\0';
+}
+
+unsigned long StringBuffer::getLength()
+{
+	if (m_pBuffer == NULL) {
+		return 0;
+	}
+	return (unsigned long)wcslen( m_pBuffer );
+}
+
+unsigned long StringBuffer::getCapacity()
+{
+	return m_lCapacity;
+}
+
+void StringBuffer::insert(unsigned long offset, const wchar_t *str)
+{
+	long subStringLength = (long)wcslen(str);
+	wchar_t* oldSubString = this->substring(offset, this->getLength());
+
+	// Resize the buffer to the appropriate size
+	long requiredLength = (long)wcslen(m_pBuffer) + subStringLength + 1;	
+	this->ensureCapacity( requiredLength );
+
+	// Copy the new substring into the offset, and add the terminating NULL
+	for (long index = 0; index <= subStringLength; index ++ ) {
+		m_pBuffer[index + offset] = str[index];
+	}
+	m_pBuffer[offset + subStringLength] = L'\0';
+	
+	// Concatenate the previous substring
+	wcscat(m_pBuffer, oldSubString);
+}
+
+
+wchar_t* StringBuffer::substring(unsigned long start, unsigned long end) 
+{
+	wchar_t* pSubString;
+	unsigned long index;
+	unsigned long currentwcslength = this->getLength();
+
+	if ((end < start) || (start > currentwcslength )){
+		return NULL;
+	}	
+	if (end > currentwcslength ) {
+		end = currentwcslength;
+	}
+
+	pSubString = new wchar_t[ end - start + 2 ];
+
+	// Copy the substring from the original buffer
+	// into the new subString
+	for( index = start; index <= end; index ++ ) {
+		pSubString[ index - start ] = m_pBuffer[index];
+	}
+
+	// End the substring with a terminating NULL
+	pSubString[ end - start + 1] = '\0';
+
+	return pSubString;	
+}
+
+const wchar_t* StringBuffer::toString()
+{
+	long length = (long) wcslen(m_pBuffer) + 1;
+	int bufferLength = 0;
+	wchar_t *retString = this->createEmptyBuffer(length);
+
+#ifdef _WIN32
+	bufferLength = _snwprintf(retString, length, L"%ls", m_pBuffer);
+#else
+	bufferLength = swprintf(retString, length, L"%ls", m_pBuffer);
+#endif
+	if (bufferLength < 0) {
+		delete [] retString;
+		throw L"Cannot convert StringBuffer instance to string.";
+	}
+	return retString;
+}
+
+
+void StringBuffer::trim()
+// Resize the buffer to match the length of the string
+{
+	long requiredLength = (long)wcslen(m_pBuffer) + 1;
+	wchar_t* newBuffer = new wchar_t[requiredLength];
+	
+	for( long i=0; i < requiredLength; i++) {
+		newBuffer[i] = this->m_pBuffer[i];
+	}
+
+	delete [] m_pBuffer;
+	m_pBuffer = newBuffer;
+	this->m_lCapacity = requiredLength;
+}


Property changes on: trunk/Fdo/Python/Src/Common/StringBuffer.cpp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Src/Common/stdafx.cpp
===================================================================
--- trunk/Fdo/Python/Src/Common/stdafx.cpp	                        (rev 0)
+++ trunk/Fdo/Python/Src/Common/stdafx.cpp	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,23 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// stdafx.cpp : source file that includes just the standard includes
+// PythonWrapper.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+


Property changes on: trunk/Fdo/Python/Src/Common/stdafx.cpp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Src/Common/utils.cpp
===================================================================
--- trunk/Fdo/Python/Src/Common/utils.cpp	                        (rev 0)
+++ trunk/Fdo/Python/Src/Common/utils.cpp	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,512 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+
+#include "stdafx.h"
+#include "Common/utils.h"
+
+// ------------------------------------------------------------------------
+// Function Name: utils_PyObjectToWideChar
+// Description:   Translates a Python string (as a PyObject) into a 
+//                wide character string.
+// 
+// Parameters:    pPyStrin  g (mandatory input)
+//					- The input Python string. No typechecking is performed.
+//
+//
+// Returns:       A fully allocated wchar_t* array with the message.
+//                Returns NULL if the PyObject == PyNone.
+// ------------------------------------------------------------------------
+wchar_t* utils_PyObjectToWideChar( PyObject* pPyString ) {
+	int strLength;	
+	char* pIntermediateString = NULL;	
+	wchar_t* pWideCharString = NULL;
+	
+	if (pPyString == Py_None ) {
+		return NULL;
+	}
+	else {
+		// Convert PyString into char*. According to Python docs, do NOT
+		// delete pIntermediateString.
+		pIntermediateString = PyString_AsString(pPyString);
+
+		/* Convert char* to wchar_t */
+		strLength = PyUnicode_GET_SIZE(pPyString);
+		pWideCharString = new wchar_t[ strLength + 1 ];
+		if ( !ut_utf8_to_unicode( pIntermediateString, pWideCharString, strLength ) ) {
+			pWideCharString = NULL;
+		}
+	}
+	return pWideCharString;
+}
+
+
+
+// ------------------------------------------------------------------------
+// Function Name: utils_WideCharToPyObject
+//
+// Description:   Translates a wide character string into a Python string.
+// 
+// Parameters:    pString (mandatory input)
+//					- The wide character string
+//
+// Returns:       The Python object representing the string.
+//                Returns Py_None if pString is NULL.
+// ------------------------------------------------------------------------
+PyObject* utils_WideCharToPyObject( const wchar_t* pString ) {
+	PyObject *retObject = NULL;
+	size_t length;
+	char* pIntermediate;
+
+	if (pString == NULL) {		
+		Py_INCREF(Py_None);
+		retObject = Py_None;
+	}
+	else {			
+		// Convert from wchar_t* to char* 		
+		// Using multiplier of 3 to support maximum size of unicode to byte translation		
+		length = wcslen( pString );		
+		pIntermediate = new char[ ((int)(length) + 1) * 3 ];						
+	    if( ! ut_utf8_from_unicode( pString, pIntermediate, (int)length*3 ) )
+            retObject = NULL;               
+            
+		// Convert from char* to python	string
+		retObject = PyString_FromStringAndSize( pIntermediate, (int)length );		
+		delete [] pIntermediate;		
+	}	
+	return retObject;
+}
+
+
+
+// ------------------------------------------------------------------------
+// Function Name: utils_WideCharArrayToPyList
+//
+// Description:   Translates a wide character double pointer into a Python list.
+// 
+// Parameters:    pStringArray (mandatory input)
+//					- The wide character string array
+//				
+//				  arrayLength  (mandatory input)
+//                  - Length of the array
+//				
+//
+// Returns:       The Python list containing PyStrings.
+//                Returns Py_None if pString is NULL.
+// ------------------------------------------------------------------------
+PyObject* utils_WideCharArrayToPyList( const wchar_t** pStringArray, const long arrayLength )
+{
+	PyObject *retList = NULL;
+
+	// Check input parameters
+	if ((arrayLength < 0) || (pStringArray == NULL)) {
+		Py_INCREF(Py_None);
+		return Py_None;
+	}
+	
+	// Create and populate the python list from the C++ array
+	retList = PyList_New(arrayLength);
+	for (int i = 0; i < arrayLength; i++) {
+		PyObject *o = utils_WideCharToPyObject( pStringArray[i] );
+		PyList_SetItem(retList,i,o);
+	}
+
+	return retList;
+}
+
+
+
+// ------------------------------------------------------------------------
+// Function Name: utils_FdoDictionaryToPyDict
+//
+// Description:   Translates a Fdo FdoDictionary to a Python Dictionary
+// 
+// Parameters:    pFdoDictionary (mandatory input)
+//					- The original FDO FdoDictionary
+//
+// Returns:       The Python dictionary containing PyStrings.
+//                Returns Py_None if pString is NULL.
+// ------------------------------------------------------------------------
+PyObject* utils_FdoDictionaryToPyDict( const FdoDictionary *pFdoDictionary ) {
+	if (pFdoDictionary == NULL) {	
+		Py_INCREF(Py_None);
+		return Py_None;
+	}
+
+	PyObject *pPyDictionary = PyDict_New();
+	FdoDictionaryElement *pDictItem;
+	size_t stringLength;
+	char *pDictKey;
+	PyObject *pDictValue;
+	int errNum = 0;
+
+	for (int index=0; index < pFdoDictionary->GetCount(); index++) {
+		// Get the dictionary item
+		pDictItem = pFdoDictionary->GetItem(index);
+
+		// Translate the dictionary item key from wchar_t* to char*
+		stringLength = wcslen(pDictItem->GetName());
+		pDictKey = new char[int(stringLength) + 1];
+		errNum = ut_utf8_from_unicode(pDictItem->GetName(), pDictKey, int(stringLength) + 1);
+		if (!errNum) {
+			return Py_None;
+		}
+		
+		// Translate the dictionary item value from wchar_t* to PyString*
+		pDictValue = utils_WideCharToPyObject( pDictItem->GetValue() );		
+		if (pDictValue == NULL) {
+			return Py_None;
+		}
+
+		// Insert the dictionary item into the Python dictionary
+		errNum = PyDict_SetItemString( pPyDictionary, pDictKey, pDictValue );
+		if (errNum == -1) {
+			return Py_None;
+		}
+
+		// Cleanup
+		delete [] pDictKey;
+		pDictItem->Release();
+	}
+	return pPyDictionary;
+}
+
+// ------------------------------------------------------------------------
+// Function Name: utils_StringCollectionToPyList
+//
+// Description:   Translates an FDO String Collection to a Python list.
+// 
+// Parameters:    pStringCollection (mandatory input)
+//					- The FDO String Collection
+//
+// Returns:       The Python List containing a copy of the string collection.
+//
+// Remarks:			pStringCollection is not destroyed in this function. 
+// ------------------------------------------------------------------------
+PyObject* utils_StringCollectionToPyList( const FdoStringCollection* pStringCollection ) {
+	if ( pStringCollection == NULL ) {
+		Py_INCREF(Py_None);
+		return Py_None;
+	}
+	PyObject *pyList = PyList_New(pStringCollection->GetCount());
+	
+	for( int index=0; index < pStringCollection->GetCount(); index++ ){				
+		PyObject *o = utils_WideCharToPyObject( pStringCollection->GetString(index) );
+		PyList_SetItem(pyList,index,o);	
+	}
+
+	return pyList;
+}
+
+
+// ------------------------------------------------------------------------
+// Function Name: utils_intArrayToPyList
+//
+// Description:   Translates an array of integers to a Python list.
+// 
+// Parameters:    array (mandatory input)
+//					- the integer array
+//
+//					arrayLength (mandatory input)
+//					- number of array elements
+//
+// Returns:       The Python List containing a copy of the integer values.
+//
+// Remarks:			array is not destroyed in this function. 
+// ------------------------------------------------------------------------
+PyObject* utils_intArrayToPyList( const int* array, const long arrayLength ) {
+	PyObject* newList = NULL;
+	int status = 0;
+
+	if ( array == NULL ) {
+		Py_INCREF(Py_None);
+		return Py_None;
+	}
+	
+	// Create the Python List..
+	newList = PyList_New( arrayLength );
+
+	// And populate the list from the C++ array
+	for (int index = 0; index < arrayLength; index++) {
+		PyObject *newArrayElement = PyInt_FromLong( (long)array[index] );
+		status = PyList_SetItem(newList, index, newArrayElement);
+	}
+
+	return newList;
+}
+
+// ------------------------------------------------------------------------
+// Function Name: utils_intArrayToPyTuple
+//
+// Description:   Translates an array of integers to a Python tuple.
+// 
+// Parameters:    array (mandatory input)
+//					- the integer array
+//
+//					arrayLength (mandatory input)
+//					- number of array elements
+//
+// Returns:       The Python Tuple containing a copy of the integer values.
+//
+// Remarks:       The original array is not destroyed in this function. 
+// ------------------------------------------------------------------------
+PyObject* utils_intArrayToPyTuple( const int* array, const long arrayLength ) {
+	PyObject* newTuple = NULL;
+	int status = 0;
+
+	if ( array == NULL ) {
+		Py_INCREF(Py_None);
+		return Py_None;
+	}
+	
+	// Create the Python Tuple..
+	newTuple = PyTuple_New( arrayLength );
+	if (newTuple == NULL) {
+		throw ( L"utils_intArrayToPyTuple failed. Cannot create PyTuple" );
+	}
+
+	// And populate the list from the C++ array
+	for (int index = 0; index < arrayLength; index++) {
+		PyObject *newArrayElement = PyInt_FromLong( (long)array[index] );
+		status = PyTuple_SetItem(newTuple, index, newArrayElement);	
+	}
+
+	return newTuple;
+}
+
+
+
+
+/************************************************************************
+ *  Name                                                                *
+ *     ut_utf8_to_unicode - Convert a UTF8 string to a UNICODE string.  *
+ *     ut_utf8_from_unicode - Convert a UNICODE string to a UTF8 string.*
+ *                                                                      *  
+ *  Synopsis                                                            *
+ *                                                                      *  
+ *  Description                                                         *
+ *     This is a utility functions to convert a string from UTF8 to     *
+ *     wide char UNICODE string. And from UNICODE to UTF8.              *
+ *                                                                      *  
+ *   Parameters                                                         *
+ *                                                                      *  
+ *   Function value                                                     *
+ *     True if successful; false if severe error.                       *
+*************************************************************************/
+
+
+
+
+typedef struct
+{
+  int     cmask;
+  int     cval;
+  int     shift;
+  long    lmask;
+  long    lval;
+} Tab;
+
+static Tab tab[] =
+{
+  0x80,  0x00,   0*6,    0x7F,           0,              /* 1 byte sequence */
+  0xE0,  0xC0,   1*6,    0x7FF,          0x80,           /* 2 byte sequence */
+  0xF0,  0xE0,   2*6,    0xFFFF,         0x800,          /* 3 byte sequence */
+  0xF8,  0xF0,   3*6,    0x1FFFFF,       0x10000,        /* 4 byte sequence */
+  0xFC,  0xF8,   4*6,    0x3FFFFFF,      0x200000,       /* 5 byte sequence */
+  0xFE,  0xFC,   5*6,    0x7FFFFFFF,     0x4000000,      /* 6 byte sequence */
+  0,                                                     /* end of table    */
+};
+
+static int UTF8_to_Unicode ( wchar_t *p, char *s, size_t n )
+{
+  long l;
+  int c0, c, nc;
+  Tab *t;
+
+  if ( s == 0 )
+    return 0;
+
+  nc = 0;
+  if ( (int)n <= nc )
+    return -1;
+  c0 = *s & 0xff;
+  l = c0;
+  for ( t = tab; t->cmask; t++ ) {
+    nc++;
+    if ( ( c0 & t->cmask ) == t->cval ) {
+      l &= t->lmask;
+      if ( l < t->lval )
+        return -1;
+      *p = (short)l;
+      return nc;
+    }
+    if ( (int)n <= nc )      return -1;
+    s++;
+    c = ( *s ^ 0x80 ) & 0xFF;
+    if ( c & 0xC0 )
+      return -1;
+    l = ( l << 6 ) | c;
+  }
+  return -1;
+}
+
+static int Unicode_to_UTF8 ( char *s, wchar_t wc )
+{
+  long l;
+  int c, nc;
+  Tab *t;
+
+  if (s == 0 )
+    return 0;
+
+  l = wc;
+  nc = 0;
+  for ( t=tab; t->cmask; t++ ) {
+    nc++;
+    if ( l <= t->lmask ) {
+      c = t->shift;
+      *s = (char)(t->cval | ( l >> c ));
+      while ( c > 0 ) {
+        c -= 6;
+        s++;
+        *s = (char)(0x80 | ( ( l >> c ) & 0x3F ));
+      }
+      return nc;
+    }
+  }
+  return -1;
+}
+
+// ------------------------------------------------------------------------
+// Function Name: ut_utf8_to_unicode
+//
+// Description:   Convert a UTF8 string to a UNICODE string.
+// 
+// Parameters:    str_in (mandatory input)
+//					- the input utf8 string
+//
+//                Wtext (mandatory output)
+//                  - the result of the conversion from UTF8 to UNICODE
+//
+//                out_size (mandatory input)
+//                  - the size of the output string
+//
+// Returns:       Returns TRUE on success.  FALSE on failure.
+// ------------------------------------------------------------------------
+int ut_utf8_to_unicode(
+        const char  *   str_in,
+        wchar_t *   Wtext,
+        int         out_size)
+{
+    int     i,j;
+    int     length;
+
+        length = (int) strlen(str_in);
+        for(j=0,i=0; j<length && i<out_size; j++,i++) {
+            if (UTF8_to_Unicode ( &Wtext[i], (char *)&str_in[j], 4 ) < 0 )  {
+                return FALSE;
+            }
+            if (Wtext[i] > 2047) j++;
+            if (Wtext[i] > 127) j++;
+        }
+        Wtext[i] = 0;
+
+    return TRUE;
+}
+
+
+// ------------------------------------------------------------------------
+// Function Name: ut_utf8_from_unicode
+//
+// Description:   Convert a UTF8 string from a UNICODE string.
+// 
+// Parameters:    
+//                Wtext (mandatory input)
+//                  - The unicode string that will be transformed into UTF8
+//               
+//                str_out (mandatory output)
+//					- the result of the Unicode to UT8 conversion
+//
+//                out_max_size (mandatory input)
+//                  - the size of the output string
+//
+// Returns:       Returns TRUE on success.  FALSE on failure.
+// ------------------------------------------------------------------------
+int ut_utf8_from_unicode(
+    const wchar_t   *       Wtext,
+    char    *       str_out,
+    int         out_max_size)
+{
+    int i,j;
+
+    for( i=0,j=0; Wtext[i] && j<out_max_size; i++,j++)  {
+        if( Unicode_to_UTF8( &str_out[j], Wtext[i] ) < 0 ) {
+                return FALSE;
+        }
+        if (Wtext[i] > 127) j++;
+        if (Wtext[i] > 2047) j++;
+    }
+    str_out[j] = '\0';
+
+    return TRUE;
+}
+
+
+
+/* To avoid empty translation unit warnings */
+
+int ut_utf8_to_unicode_dummy()
+{
+	return 0;
+}
+
+int ut_utf8_charlen(const char *utf8String)
+{
+    long wChar;
+    int cFirst, cUtf8, nCount;
+    Tab *table_entry;
+
+    if ( utf8String == 0 )
+        return 0;
+
+    nCount = 0;
+    while (*utf8String)
+    {
+        cFirst = *utf8String & 0xff;
+        wChar = cFirst;
+
+        for ( table_entry = tab; table_entry->cmask; table_entry++ )
+        {
+            if ( ( cFirst & table_entry->cmask ) == table_entry->cval )
+            {
+                wChar &= table_entry->lmask;
+                if ( wChar < table_entry->lval )
+                    return -1; //error
+                break;
+            }
+
+            utf8String++;
+            cUtf8 = ( *utf8String ^ 0x80 ) & 0xFF;
+            if ( cUtf8 & 0xC0 )
+                return -1; //error
+            wChar = ( wChar << 6 ) | cUtf8;
+        }
+        utf8String++;
+        nCount++;
+    }
+    return nCount;
+}


Property changes on: trunk/Fdo/Python/Src/Common/utils.cpp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Src/Fdo/PhysicalSchemaMappingCasts.cpp
===================================================================
--- trunk/Fdo/Python/Src/Fdo/PhysicalSchemaMappingCasts.cpp	                        (rev 0)
+++ trunk/Fdo/Python/Src/Fdo/PhysicalSchemaMappingCasts.cpp	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2004-2006  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+
+#include "Fdo/PhysicalSchemaMappingCasts.h"
+
+// ------------------------------------------------------------------------
+// Function Name: FdoPhysicalSchemaMappingToFdoXmlSchemaMapping
+// Description:   Casts an FdoPhysicalSchemaMapping to an  
+//                FdoXmlSchemaMapping
+// 
+// Parameters:    mapping (mandatory input)
+//					- A FdoPhysicalSchemaMapping Object
+//
+//
+// Returns:       A FdoXmlSchemaMapping
+// ------------------------------------------------------------------------
+FdoXmlSchemaMapping* FdoPhysicalSchemaMappingToFdoXmlSchemaMapping( FdoPhysicalSchemaMapping* mapping ) {
+	FdoXmlSchemaMapping* xmlMapping = static_cast< FdoXmlSchemaMapping*>(mapping);
+	return xmlMapping;
+}


Property changes on: trunk/Fdo/Python/Src/Fdo/PhysicalSchemaMappingCasts.cpp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/Swig/Common/CommonExceptions.i
===================================================================
--- trunk/Fdo/Python/Swig/Common/CommonExceptions.i	                        (rev 0)
+++ trunk/Fdo/Python/Swig/Common/CommonExceptions.i	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,119 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+
+// -------------------------------------------------------------
+// PYTHON exceptions
+//	Description:	The standard global exception handler for
+//					all FDO method calls.  This exception handler
+//					will try to catch all known FDO exceptions,
+//					and throw the corresponding Python exception
+//					proxy class.
+//  
+//                  Any new FDO exception classes must have its
+//                  own "catch" construct, and should be added here.
+//                  Note: each exception has a global pointer,
+//                  and it should be declared in CommonInit.i
+//
+// -------------------------------------------------------------
+
+ %exception {
+	try {
+		$action
+	}
+	catch ( FdoExpressionException *ex ) {
+		PyErr_SetObject(pFdoExpressionException, SWIG_NewPointerObj((void *) ex, SWIGTYPE_p_FdoExpressionException, 1) );
+		goto fail;
+	}
+	catch ( FdoFilterException *ex ) {
+		PyErr_SetObject(pFdoFilterException, SWIG_NewPointerObj((void *) ex, SWIGTYPE_p_FdoFilterException, 1) );
+		goto fail;
+	}
+	catch ( FdoSchemaException *ex ) {
+		PyErr_SetObject(pFdoSchemaException, SWIG_NewPointerObj((void *) ex, SWIGTYPE_p_FdoSchemaException, 1) );
+		goto fail;
+	}
+	catch ( FdoCommandException *ex ) {
+		PyErr_SetObject(pFdoCommandException, SWIG_NewPointerObj((void *) ex, SWIGTYPE_p_FdoCommandException, 1) );
+		goto fail;
+	}
+	catch ( FdoConnectionException *ex ) {
+		PyErr_SetObject(pFdoConnectionException, SWIG_NewPointerObj((void *) ex, SWIGTYPE_p_FdoConnectionException, 1) );
+		goto fail;
+	}	
+	catch ( FdoXmlException *ex) {
+		PyErr_SetObject(pFdoXmlException, SWIG_NewPointerObj((void *) ex, SWIGTYPE_p_FdoXmlException, 1) );
+		goto fail;
+	}
+	catch (FdoSpatialContextMismatchException *ex) {
+		PyErr_SetObject(pFdoSpatialContextMismatchException, SWIG_NewPointerObj((void *) ex, SWIGTYPE_p_FdoSpatialContextMismatchException, 1) );
+		goto fail;
+	}
+	catch ( FdoException *ex ) {
+		PyErr_SetObject(pFdoException, SWIG_NewPointerObj((void *) ex, SWIGTYPE_p_FdoException, 1) );
+		goto fail;
+	}
+	catch ( wchar_t *wcharMsg ) {
+		PyErr_SetObject(PyExc_RuntimeError, SWIG_FromWCharPtr(wcharMsg));
+		goto fail;
+	}
+	catch ( char *errMsg ) {
+		PyErr_SetString(PyExc_RuntimeError, errMsg);
+		goto fail;
+	}
+	catch (...) {
+		PyErr_SetString(PyExc_RuntimeError, "Unknown exception occurred.");
+		goto fail;
+	}
+}
+
+
+ /* -------------------------------------------------------------
+ * Extend FdoException
+ *	Description:	Add the __str__ method to FdoException.
+ *					This makes FDO exceptions more "pythonic" by
+ *					providing a default string represntation of
+ *					an FdoException instance.
+ * -------------------------------------------------------------
+ */
+ %extend FdoException {	
+	 FdoString* __str__() {		
+		// Function: __str__
+		// Description: The __str__ method is the standard	Python method to return
+		//				a string representation of an object instance, and is analgous
+		//				to Java's 'ToString()' methods.  This method will support
+		//				a more 'Pythonic' way of handling exception and exception messages.
+		// Parameters:  None
+		// Returns:		A FdoString* represntation of the exception.  
+		
+		FdoString *returnVal = NULL;
+		StringBuffer *buffer = new StringBuffer(self->GetExceptionMessage());		
+		FdoException* exceptionCause = self->GetCause();
+
+		while (exceptionCause) {
+			buffer->append(L"\n\tException cause: ");
+			buffer->append(exceptionCause->GetExceptionMessage());
+			exceptionCause = exceptionCause->GetCause();
+		}	
+		
+		returnVal = buffer->toString();
+		delete buffer;
+		return returnVal;
+	 }
+ };
+
+

Added: trunk/Fdo/Python/Swig/Common/CommonInit.i
===================================================================
--- trunk/Fdo/Python/Swig/Common/CommonInit.i	                        (rev 0)
+++ trunk/Fdo/Python/Swig/Common/CommonInit.i	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,123 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+%{
+	// ----------- Includes from CommonInit.i ------------
+	#include "FdoStd.h"
+	#include "Common/utils.h"
+	#include "Common/StringBuffer.h"
+	#include <new>
+	#include <string.h>
+	#include "Fdo.h"
+	#include "Common/FdowStd.h"
+	#include "Common/FdoProxyConnectionManager.h"
+
+	// PyObjects representing Fdo exceptions
+	PyObject *pFdoException;
+	PyObject *pFdoCommandException;
+	PyObject *pFdoConnectionException;
+	PyObject *pFdoExpressionException;
+	PyObject *pFdoFilterException;
+	PyObject *pFdoSchemaException;
+	PyObject *pFdoXmlException;
+	PyObject *pFdoSpatialContextMismatchException;
+
+	// Add any new FDO exception pointers here.
+%}
+
+
+
+/* Handle operator overloading for all classes*/
+
+%rename(__divide__) *::operator/; 
+%rename(__multiply__) *::operator*; 
+%rename(__subtract__) *::operator-; 
+%rename(__add__) *::operator+; 
+%rename(__assign__) *::operator=; 
+%rename(__equals__) *::operator==; 
+%rename(__notequals__) *::operator!=;
+
+
+
+
+/* -------------------------------------------------------------
+ * Wrapper initialization
+ *	Description:	These commands are inserted during the initialization
+ *					of the wrapper.  The FdoException classes are
+ *					reFdotered here, and single pointers to the exceptions
+ *					are created.
+ * -------------------------------------------------------------
+ */
+ 
+%init %{
+	// Custom initialization code from FdoExceptions.i
+	// Create and initialize Python exception pointers used to represent
+	// FDO pointers 
+	pFdoException = PyErr_NewException( "FDOw.FdoException", NULL, NULL );
+	if (pFdoException != NULL ) {		
+		PyDict_SetItemString( d, "FdoException", pFdoException );
+	}
+
+	pFdoException = PyErr_NewException( "FDOw.FdoException", NULL, NULL );
+	if (pFdoException != NULL ) {		
+		PyDict_SetItemString( d, "FdoException", pFdoException );
+	}	
+
+	pFdoCommandException = PyErr_NewException( "FDOw.FdoCommandException", NULL, NULL );
+	if (pFdoCommandException != NULL ) {
+		PyDict_SetItemString( d, "FdoCommandException", pFdoCommandException );
+	}
+
+	pFdoConnectionException = PyErr_NewException( "FDOw.FdoConnectionException", NULL, NULL );
+	if (pFdoConnectionException != NULL ) {
+		PyDict_SetItemString( d, "FdoConnectionException", pFdoConnectionException );
+	}
+
+	pFdoExpressionException = PyErr_NewException( "FDOw.FdoExpressionException", NULL, NULL );
+	if (pFdoExpressionException != NULL ) {
+		PyDict_SetItemString( d, "FdoExpressionException", pFdoExpressionException );
+	}
+
+	pFdoFilterException = PyErr_NewException( "FDOw.FdoFilterException", NULL, NULL );
+	if (pFdoFilterException != NULL ) {
+		PyDict_SetItemString( d, "FdoFilterException", pFdoFilterException );
+	}
+
+	pFdoSchemaException = PyErr_NewException( "FDOw.FdoSchemaException", NULL, NULL );
+	if (pFdoSchemaException != NULL ) {
+		PyDict_SetItemString( d, "FdoSchemaException", pFdoSchemaException );
+	}
+
+	pFdoXmlException = PyErr_NewException( "FDOw.FdoXmlException", NULL, NULL );
+	if (pFdoXmlException != NULL ) {
+		PyDict_SetItemString( d, "FdoXmlException", pFdoXmlException );
+	}
+
+	pFdoSpatialContextMismatchException = PyErr_NewException( "FDOw.FdoSpatialContextMismatchException", NULL, NULL );
+	if (pFdoSpatialContextMismatchException != NULL ) {
+		PyDict_SetItemString( d, "FdoSpatialContextMismatchException", pFdoSpatialContextMismatchException );
+	}
+	// End custom initialization code from Main.i
+%}
+
+/* -------------------------------------------------------------
+ *  Description:    Ignore these constructs in the API
+ * -------------------------------------------------------------
+ */
+
+%ignore FdoException::Dispose();
+%ignore FdoException::NLSGetMessage;

Added: trunk/Fdo/Python/Swig/Common/CommonTypemaps.i
===================================================================
--- trunk/Fdo/Python/Swig/Common/CommonTypemaps.i	                        (rev 0)
+++ trunk/Fdo/Python/Swig/Common/CommonTypemaps.i	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,142 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+%include std_wstring.i 
+
+/* -------------------------------------------------------------
+ * PYTHON typemaps
+ *	Description:	These typemaps will convert between wchar_t*
+ *					and Python strings
+ * -------------------------------------------------------------
+ */
+ 
+
+/* Convert Python string to FdoStringP */
+%typemap (python, in) FdoStringP
+{
+	// Convert Python string to FdoStringP
+	$1 = FdoStringP(utils_PyObjectToWideChar($input));
+}
+
+/* Convert FdoStringP to Python string */
+%typemap (python, out) FdoStringP	
+{
+	$result = utils_WideCharToPyObject((const wchar_t*)$1); // Convert FdoStringP to Python string	
+}
+
+
+ /* -------------------------------------------------------------
+ * PYTHON typemaps
+ *	Description:	These typemaps will convert between FdoInt*
+ *					and Python numbers
+ * -------------------------------------------------------------
+ */
+
+/* Convert the Fdo integers into python long */
+%typemap (in) _int8, _int16, _int32, int8_t, int16_t, int32_t, FdoInt8, FdoInt16, FdoInt32, FdoSize = int;
+%typemap (out) _int8, _int16, _int32, int8_t, int16_t, int32_t, FdoInt8, FdoInt16, FdoInt32, FdoSize = int;
+
+/* Convert the Fdo long integers into python long long  */
+%typemap (in) _int64, int64_t, FdoInt64 = long long;
+%typemap (out) _int64, int64_t, FdoInt64 = long long;
+
+
+/* -------------------------------------------------------------
+ * PYTHON typemaps
+ *	Description:	These typemaps will convert between wchar_t**
+ *					and Python Tuples
+ * -------------------------------------------------------------
+ */
+/* Convert wchar_t** to Python Tuples  */
+%typemap (python, out) wchar_t**
+{
+	// Convert wchar_t** to Python Tuples		
+	int arrayLength = *arg2;
+	const wchar_t** array = $1;
+
+	if ( array == NULL ) {
+		Py_INCREF(Py_None);
+		return Py_None;
+	}
+	
+	// Create the Python Tuple.
+	$result = PyTuple_New( arrayLength );
+	if ($result == NULL) {
+		PyErr_SetString(PyExc_RuntimeError, "Internal error.  Cannot create tuple in 'wchar_t** out' typemap.");
+		goto fail;
+	}
+
+	// And populate the tuple from the C++ array
+	for (int index = 0; index < arrayLength; index++) {
+		PyObject *newElement = SWIG_FromWCharPtr( array[index] );	
+		if (PyTuple_SetItem($result, index, newElement) != 0) {
+			PyErr_SetString(PyExc_RuntimeError, "Internal error.  Cannot build tuple in 'wchar_t** out' typemap.");
+			goto fail;			
+		}
+	}	
+}
+
+/* -------------------------------------------------------------
+ * PYTHON typechecking
+ *	Description:	These typechecks are for wchar_t, wchar_t*,
+ *					and FdoStringP.
+ *					This will ensure that method overloading works
+ *					properly with wchar_t* parameters
+ * -------------------------------------------------------------
+ */
+
+
+%typecheck(SWIG_TYPECHECK_STRING) FdoStringP {
+	$1 = PyString_Check($input) ? 1 : 0;
+}
+
+%typecheck(SWIG_TYPECHECK_INTEGER) FdoInt8, FdoInt16, FdoInt32, FdoSize = int;
+
+%typecheck(SWIG_TYPECHECK_INTEGER) FdoInt8, FdoInt16, FdoInt32, FdoSize = int;
+
+%typecheck(SWIG_TYPECHECK_INTEGER) FdoInt64 = long long;
+
+%typecheck(SWIG_TYPECHECK_INTEGER) FdoInt64 = long long;
+
+
+
+
+/* -------------------------------------------------------------
+ * PYTHON typemaps
+ *	Description:	These typemaps will convert between C++
+ *					arrays to Python Lists
+ * -------------------------------------------------------------
+ */
+
+%include "typemaps.i"
+%apply int& OUTPUT { FdoInt32& count };
+%apply int& OUTPUT { FdoInt32& length };
+%apply int& OUTPUT { FdoInt32& size };
+
+
+/* Convert FdoDictionary* to Python Dictionary */
+%typemap(out) FdoDictionary* {	
+	// Translate the FdoDictionary to a Python dictionary
+	$result = utils_FdoDictionaryToPyDict($1);
+}
+
+
+/* Convert StringCollection* to Python List */
+%typemap(out) StringCollection* {	
+	// Translate the StringCollection to a Python list
+	$result = utils_StringCollectionToPyList($1);
+}

Added: trunk/Fdo/Python/Swig/Fdo/CommonIncludes.i
===================================================================
--- trunk/Fdo/Python/Swig/Fdo/CommonIncludes.i	                        (rev 0)
+++ trunk/Fdo/Python/Swig/Fdo/CommonIncludes.i	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,136 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+///////////////////////////////////////////////////////////////////// 
+//
+// Ignore these following constructs.  These will not be wrapped by the 
+// FDO python wrapper.
+//
+///////////////////////////////////////////////////////////////////// 
+
+%ignore FdoArray::operator[];
+%ignore FdoIDisposableCollection::Dispose(); 
+%ignore FdoIException::Dispose(); 
+%ignore NLSGetMessage; 
+%ignore FdoArrayHelper;
+%ignore FdoStringElement::Create;
+%ignore FdoStringElement::operator=;
+%ignore FdoStringElement::GetString;	
+%ignore FdoXmlReader::GetTextReader;
+%ignore FdoXmlReader::PopSaxHandler;
+%ignore FdoXmlReader::GetSaxHandler;
+%ignore FdoXmlReader::PushSaxHandler;
+%ignore FdoIoBufferStream::Create;
+%ignore FdoXmlWriter::UriToQName;
+
+///////////////////////////////////////////////////////////////////// 
+//
+// Import the basic FDO and Fdo common types
+//
+///////////////////////////////////////////////////////////////////// 
+
+%include "Common/Std.h"
+%include "Common/IDisposable.h"
+%include "Common/Disposable.h"
+%include "Common/Collection.h"
+%include "Common/FdoTypes.h"
+%include "FdoStd.h"
+%include "Common/Exception.h"
+%include "Common/Array.h"
+ 
+/* Handle FdoStringP */
+%ignore FdoStringP::operator FdoString*;
+%ignore FdoStringP::operator wchar_t*;
+%ignore FdoStringP::operator const char*;
+%ignore FdoStringP::operator char*;
+%ignore FdoStringP::Utf8FromUnicode;
+%ignore FdoStringP::Utf8ToUnicode;
+%ignore FdoStringP::Utf8Len(char const*);
+%ignore FdoStringP::FdoStringP(char const *);
+%ignore FdoStringP::operator =(FdoString *);
+%ignore FdoStringP::operator +(FdoStringP const) const; 
+%ignore FdoStringP::operator +=(FdoStringP const) ;
+%ignore FdoStringP::operator ==(FdoString const *) const;
+
+%ignore FdoDirectPositionImpl;
+//%ignore FdoGeometryFactoryAbstract::CreateGeometry;
+
+
+%include "Common/StringP.h"
+
+// Handle the FdoStringCollection
+//
+// Note: Do NOT wrap the FdoPtr<FdoStringCollection>.  This causes problems
+// with calls to FdoException::Dispose(), which causes linking problems.
+%ignore FdoPtr<FdoStringCollection>;
+%ignore FdoStringCollection::Create(FdoStringCollection const *);
+%template (BaseFdoStringCollection) FdoCollection<FdoStringElement,FdoException >;
+%include "Common/StringCollection.h"
+
+/* Handle FdoDictionary */
+%include "Common/DictionaryElement.h"
+%template (BaseFdoDictionaryElementCollection) FdoCollection<FdoDictionaryElement,FdoException >;
+%include "Common/NamedCollection.h"
+%template (BaseFdoDictionaryElementNamedCollection) FdoNamedCollection<FdoDictionaryElement,FdoException >;
+%include "Common/Dictionary.h"
+
+// Handle FdoVector
+//
+// Note: Do NOT wrap the FdoPtr<FdoVector>.  This causes problems
+// with calls to FdoException::Dispose(), which causes linking problems.
+%template (BaseVectorElementCollection) FdoCollection<FdoVectorElement,FdoException >;
+%include "Common/Vector.h"
+
+/* Handle the ByteStreamReader */
+%include "Common/Io/Stream.h"
+%include "Common/IStreamReader.h"
+%include "Common/Io/BufferStream.h"
+%include "Common/Io/MemoryStream.h"
+%include "Common/Io/FileStream.h"
+%include "Common/Io/ObjectStreamReader.h"
+%include "Common/IStreamReaderTmpl.h"
+%template (BaseFdoIoByStreamReaderTmpl) FdoIStreamReaderTmpl<FdoByte >;
+%template (BaseFdoIoByStreamReader) FdoIoObjectStreamReader<FdoByte >;
+%include "Common/Io/ByteStreamReader.h"
+
+/* Handle XmlAttributeCollection */
+%template (BaseFdoXmlCollection) FdoCollection<FdoXmlAttribute,FdoXmlException >;
+%template (BaseFdoXmlNamedCollection) FdoNamedCollection<FdoXmlAttribute,FdoXmlException >;
+%include "Common/Xml/AttributeCollection.h"
+
+/* Handle the rest of FdoCommon.h */
+%include "Common/Context.h"
+%include "Common/GeometryType.h"
+%include "Common/Dimensionality.h"
+%include "Common/Xml/Xml.h"
+%include "Common/Xml/XmlException.h"
+%include "Common/Xml/Attribute.h"
+%include "Common/ReadOnlyNamedCollection.h"
+%include "Common/RestrictedNamedCollection.h"
+%include "Common/Io/TextReader.h"
+%include "Common/Io/TextWriter.h"
+%include "Common/Xml/SaxContext.h"
+%include "Common/Xml/SaxHandler.h"
+%include "Common/Xml/CharDataHandler.h"
+%include "Common/Xml/SkipElementHandler.h"
+%include "Common/Xml/Reader.h"
+%include "Common/Xml/Writer.h"
+%include "Common/Xml/CopyHandler.h"
+%include "Common/Xsl/Transformer.h"
+%include "Common/Gml212/Schema.h"
+%include "Common/Gml212/Gml212.h"
+%include "Common/Stack.h"
\ No newline at end of file

Added: trunk/Fdo/Python/Swig/Fdo/FdoIncludes.i
===================================================================
--- trunk/Fdo/Python/Swig/Fdo/FdoIncludes.i	                        (rev 0)
+++ trunk/Fdo/Python/Swig/Fdo/FdoIncludes.i	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,529 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+ 
+ /* Declare header files to be inserted into the .cpp file */
+%{
+	// ----------- Includes from FdoIncludes.i ------------
+%}
+
+////////////////////////////////////////////////////////////////
+//
+// Ignore directives
+//
+// These FDO constructs will be ignored by the FDO wrapper.
+//
+////////////////////////////////////////////////////////////////
+
+/* Ignore all Topology classes */
+%ignore FdoIActivateTopologyArea;
+%ignore FdoIActivateTopologyInCommandResults;
+%ignore FdoIDeactivateTopologyArea;
+%ignore FdoIDeactivateTopologyInCommandResults;
+%ignore FdoIMoveTopoNode;
+%ignore FdoIReconnectTopoEdge;
+%ignore FdoTopoFeaturePropertyDefinition;
+%ignore FdoTopoGeometryPropertyDefinition;
+%ignore FdoTopology;
+
+/* Ignore the specialized operators used for Datavalue typecasting */
+%ignore FdoStringValue::operator wchar_t*;
+%ignore FdoBLOBValue::operator FdoByteArray*;
+%ignore FdoByteValue::operator FdoByte;
+%ignore FdoCLOBValue::operator FdoByteArray*;
+%ignore FdoDateTimeValue::operator FdoDateTime;
+%ignore FdoDecimalValue::operator double;
+%ignore FdoInt16Value::operator FdoInt16;
+%ignore FdoInt32Value::operator FdoInt32;
+%ignore FdoBooleanValue::operator bool;
+%ignore FdoSingleValue::operator float;
+%ignore FdoDoubleValue::operator double;
+%ignore FdoInt64Value::operator FdoInt64;
+
+/* Ignore all FdoGeometryAbstract methods */
+%ignore FdoGeometryFactoryAbstract;
+
+/* Ignore these schema methods */
+%ignore FdoSchemaElement::SetParent(FdoSchemaElement* value);
+%ignore FdoReadOnlyArgumentDefinitionCollection.Dispose;
+%ignore FdoISchemaCapabilities::SupportsInheritence;
+%ignore FdoFeatureSchema::GetRelations;
+%ignore FdoGeometricPropertyDefinition::GetAllDefaults;
+%ignore FdoGeometricPropertyDefinition::GetSpecificGeometryTypes;
+%ignore FdoIdentifierCollection::Dispose();
+%ignore FdoParameterValueCollection::Dispose();
+
+/* Ignore the FdoFeatureSchema methods */ 
+%ignore FdoFeatureSchema::_getFromInternalStylesheet();
+%ignore FdoFeatureSchema::Set;
+%ignore FdoFeatureSchema::XmlStartElement;
+%ignore FdoFeatureSchema::_writeXml; 
+
+/* Ignore certain long transaction methods */
+%ignore FdoIChangeLongTransactionPrivileges::GetUserName;
+%ignore FdoILongTransactionPrivilegeReader::GetUserName;
+
+/* Ignore the Feature Access manager method Reset */
+%ignore FdoFeatureAccessManager::Reset;
+%ignore FdoDataValue::Create(FdoString* value, FdoDataType dataType);
+%ignore FdoDataValue::GetXmlValue();
+
+%ignore FdoClassDefinition::writeXmlBaseProperties;
+%ignore FdoClassDefinition::_writeXmlBaseProperties;
+
+
+
+////////////////////////////////////////////////////////////////
+// Wrap the Common base classes
+////////////////////////////////////////////////////////////////
+%include "Fdo/ReadOnlyCollection.h"
+%include "Fdo/ReadOnlyUnnamedCollection.h"
+%include "Fdo/Xml/Serializable.h"
+%include "Fdo/Xml/Deserializable.h"
+
+////////////////////////////////////////////////////////////////
+// Wrap the Client Services classes
+////////////////////////////////////////////////////////////////
+%include "Fdo/ClientServices/ClientServices.h"
+%include "Fdo/ClientServices/ClientServiceException.h"
+%include "Fdo/IConnectionManager.h"
+%include "Fdo/ClientServices/ConnectionManager.h"
+%include "Fdo/ClientServices/Provider.h"
+%include "Fdo/ClientServices/ProviderNameTokens.h"
+%include "Fdo/ClientServices/ProviderCollection.h"
+%include "Fdo/IProviderRegistry.h"
+%include "Fdo/ClientServices/ProviderRegistry.h"
+%include "Fdo/ClientServices/FeatureAccessManager.h"
+
+
+
+////////////////////////////////////////////////////////////////
+//
+// Wrap the FDO Connection classes
+//
+// Note: The template base classes are defined here before the
+// classes are imported.  Note that the FDO collection class heirarchy
+// consists of FdoCollections derived from FdoCollections.
+//
+////////////////////////////////////////////////////////////////
+
+// Handle FdoArgumentDefinition collections
+%template (BaseFdoBaseArgumentDefinitionCollection) FdoCollection<FdoArgumentDefinition,FdoConnectionException >;
+%template (BaseFdoFunctionDefinitionCollection) FdoCollection<FdoFunctionDefinition,FdoConnectionException >;
+%template (BaseFdoNamedFunctionDefinitionCollection) FdoNamedCollection<FdoFunctionDefinition,FdoConnectionException >;
+
+// Handle FdoSignatureDefinition collections
+%template (BaseFdoSignatureDefinitionCollection) FdoCollection<FdoSignatureDefinition,FdoConnectionException >;
+
+// Handle FdoArgumentDefinition ReadOnly Collections
+%template (BaseReadOnlyArgumentDefinitionCollection) FdoReadOnlyCollection<FdoArgumentDefinition,FdoArgumentDefinitionCollection,FdoConnectionException >;
+
+// Handle FdoReadOnlySignatureDefinition collections
+%template (BaseReadOnlyFdoSignatureDefinitionCollection) FdoReadOnlyUnnamedCollection<FdoSignatureDefinition,FdoSignatureDefinitionCollection,FdoSchemaException >;
+
+%include "Fdo/Connections/ConnectionException.h"
+%include "Fdo/Connections/ConnectionState.h"
+%include "Fdo/Connections/IConnection.h"
+%include "Fdo/Connections/IConnectionInfo.h"
+%include "Fdo/Connections/IPropertyDictionary.h"
+%include "Fdo/Connections/IConnectionPropertyDictionary.h"
+%include "Fdo/Connections/ITransaction.h"
+%include "Fdo/Connections/ProviderDatastoreType.h"
+
+%include "Fdo/Connections/Capabilities/ArgumentDefinition.h"
+%include "Fdo/Connections/Capabilities/ArgumentDefinitionCollection.h"
+%include "Fdo/Connections/Capabilities/FunctionDefinition.h"
+%include "Fdo/Connections/Capabilities/FunctionDefinitionCollection.h"
+%include "Fdo/Connections/Capabilities/IGeometryCapabilities.h"
+%include "Fdo/Connections/Capabilities/ICommandCapabilities.h"
+%include "Fdo/Connections/Capabilities/IConnectionCapabilities.h"
+%include "Fdo/Connections/Capabilities/IExpressionCapabilities.h"
+%include "Fdo/Connections/Capabilities/IFilterCapabilities.h"
+%include "Fdo/Connections/Capabilities/ISchemaCapabilities.h"
+%include "Fdo/Connections/Capabilities/ThreadCapability.h"
+%include "Fdo/Connections/Capabilities/IRasterCapabilities.h"
+%include "Fdo/Connections/Capabilities/ITopologyCapabilities.h"
+%include "Fdo/Connections/Capabilities/SchemaElementNameType.h"
+%include "Fdo/Connections/Capabilities/ReadOnlyArgumentDefinitionCollection.h"
+%include "Fdo/Connections/Capabilities/SignatureDefinition.h"
+
+////////////////////////////////////////////////////////////////
+// Wrap the FDO Command classes
+//
+// Note: The template base classes are defined here before the
+// classes are imported.  Note that the FDO collection class heirarchy
+// consists of FdoCollections derived from FdoCollections.
+//
+////////////////////////////////////////////////////////////////
+
+// Handle FdoPropertyValue collections
+//%template (BaseFdoPropertyValueCollection) FdoCollection<FdoPropertyValue,FdoCommandException >;
+%template (BaseFdoPropertyValueCollection) FdoCollection<FdoPropertyValue,FdoCommandException >;
+
+// Handle FdoParameterValue collections
+//%template (BaseFdoParameterValueCollection) FdoCollection<FdoParameterValue,FdoCommandException >;
+%template (BaseFdoParameterValueCollection) FdoCollection<FdoParameterValue,FdoCommandException >;
+
+// Handle FdoParameterValueCollection collections
+//%template (BaseFdoBatchParameterValueCollection) FdoCollection<FdoParameterValueCollection,FdoCommandException >;
+%template (BaseFdoBatchParameterValueCollection) FdoCollection<FdoParameterValueCollection,FdoCommandException >;
+
+// Handle FdoIdentifier collections
+//%template (BaseFdoIdentfierCollection) FdoCollection<FdoIdentifier,FdoCommandException >;
+%template (BaseFdoIdentfierCollection) FdoCollection<FdoIdentifier,FdoCommandException >;
+
+// Handle FdoPhysicalSchemaMapping collections
+%template (BaseFdoPhysicalSchemaMappingCollection) FdoCollection<FdoPhysicalSchemaMapping,FdoCommandException >;
+
+%include "Fdo/Commands/ICommand.h"
+%include "Fdo/Commands/IFeatureCommand.h"
+%include "Fdo/Commands/Feature/IBaseSelect.h"
+%include "Fdo/Commands/Feature/IReader.h"
+%include "Fdo/Commands/BatchParameterValueCollection.h"
+%include "Fdo/Commands/CommandException.h"
+%include "Fdo/Commands/CommandType.h"
+%include "Fdo/Commands/IdentifierCollection.h"
+%include "Fdo/Commands/ParameterValue.h"
+%include "Fdo/Commands/ParameterValueCollection.h"
+%include "Fdo/Commands/PropertyValue.h"
+%include "Fdo/Commands/PropertyValueCollection.h"
+%include "Fdo/Commands/Feature/IDelete.h"
+%include "Fdo/Commands/Feature/IFeatureReader.h"
+%include "Fdo/Commands/Feature/IInsert.h"
+%include "Fdo/Commands/Feature/ISelect.h"
+%include "Fdo/Commands/Feature/IUpdate.h"
+%include "Fdo/Commands/Locking/IAcquireLock.h"
+%include "Fdo/Commands/Locking/IGetLockedObjects.h"
+%include "Fdo/Commands/Locking/IGetLockInfo.h"
+%include "Fdo/Commands/Locking/IGetLockOwners.h"
+%include "Fdo/Commands/Locking/ILockConflictReader.h"
+%include "Fdo/Commands/Locking/ILockedObjectReader.h"
+%include "Fdo/Commands/Locking/ILockOwnersReader.h"
+%include "Fdo/Commands/Locking/IReleaseLock.h"
+%include "Fdo/Commands/Locking/LockStrategy.h"
+%include "Fdo/Commands/Locking/LockType.h"
+%include "Fdo/Commands/Locking/ConflictType.h"
+%include "Fdo/Commands/Feature/ISelectAggregates.h"
+%include "Fdo/Commands/Feature/IDataReader.h"
+%include "Fdo/Commands/OrderingOption.h"
+
+// Data Store Commands and supporting classes
+%include "Fdo/Commands/DataStore/ICreateDataStore.h"
+%include "Fdo/Commands/DataStore/IDataStorePropertyDictionary.h"
+%include "Fdo/Commands/DataStore/IDestroyDataStore.h"
+%include "Fdo/Commands/DataStore/IListDataStores.h"
+%include "Fdo/Commands/DataStore/IDataStoreReader.h"
+
+
+// Long transaction commands
+%include "Fdo/Commands/LongTransaction/IActivateLongTransaction.h"
+%include "Fdo/Commands/LongTransaction/IActivateLongTransactionCheckpoint.h"
+%include "Fdo/Commands/LongTransaction/IChangeLongTransactionPrivileges.h"
+%include "Fdo/Commands/LongTransaction/IChangeLongTransactionSet.h"
+%include "Fdo/Commands/LongTransaction/ICommitLongTransaction.h"
+%include "Fdo/Commands/LongTransaction/ICreateLongTransaction.h"
+%include "Fdo/Commands/LongTransaction/ICreateLongTransactionCheckpoint.h"
+%include "Fdo/Commands/LongTransaction/IDeactivateLongTransaction.h"
+%include "Fdo/Commands/LongTransaction/IFreezeLongTransaction.h"
+%include "Fdo/Commands/LongTransaction/IGetLongTransactionCheckpoints.h"
+%include "Fdo/Commands/LongTransaction/IGetLongTransactionPrivileges.h"
+%include "Fdo/Commands/LongTransaction/IGetLongTransactions.h"
+%include "Fdo/Commands/LongTransaction/IGetLongTransactionsInSet.h"
+%include "Fdo/Commands/LongTransaction/ILongTransactionCheckpointReader.h"
+%include "Fdo/Commands/LongTransaction/ILTConflictDirectiveEnumerator.h"
+%include "Fdo/Commands/LongTransaction/ILongTransactionPrivilegeReader.h"
+%include "Fdo/Commands/LongTransaction/ILongTransactionReader.h"
+%include "Fdo/Commands/LongTransaction/ILongTransactionSetReader.h"
+%include "Fdo/Commands/LongTransaction/IRollbackLongTransaction.h"
+%include "Fdo/Commands/LongTransaction/IRollbackLongTransactionCheckpoint.h"
+%include "Fdo/Commands/LongTransaction/LongTransactionConflictResolution.h"
+%include "Fdo/Commands/LongTransaction/LongTransactionConstants.h"
+%include "Fdo/Commands/LongTransaction/LongTransactionFreezeOperations.h"
+%include "Fdo/Commands/LongTransaction/LongTransactionPrivilegeOperations.h"
+%include "Fdo/Commands/LongTransaction/LongTransactionPrivileges.h"
+%include "Fdo/Commands/LongTransaction/LongTransactionSetOperations.h"
+
+// Schema commands
+%include "Fdo/Commands/Schema/IApplySchema.h"
+%include "Fdo/Commands/Schema/IDescribeSchema.h"
+%include "Fdo/Commands/Schema/IDescribeSchemaMapping.h"
+%include "Fdo/Commands/Schema/IDestroySchema.h"
+%include "Fdo/Commands/Schema/PhysicalElementMapping.h"
+%include "Fdo/Commands/Schema/PhysicalElementMappingCollection.h"
+%include "Fdo/Commands/Schema/PhysicalClassMapping.h"
+%include "Fdo/Commands/Schema/PhysicalPropertyMapping.h"
+%include "Fdo/Commands/Schema/PhysicalSchemaMapping.h"
+%include "Fdo/Commands/Schema/PhysicalSchemaMappingCollection.h"
+
+// Spatial context commands
+%ignore FdoISpatialContextReader::Dispose();
+%include "Fdo/Commands/SpatialContext/SpatialContextMismatchException.h"
+%include "Fdo/Commands/SpatialContext/IActivateSpatialContext.h"
+%include "Fdo/Commands/SpatialContext/ICreateSpatialContext.h"
+%include "Fdo/Commands/SpatialContext/IDestroySpatialContext.h"
+%include "Fdo/Commands/SpatialContext/IGetSpatialContexts.h"
+%include "Fdo/Commands/SpatialContext/ISpatialContextReader.h"
+%include "Fdo/Commands/SpatialContext/SpatialContextExtentType.h"
+
+// SQL Commands
+%include "Fdo/Commands/Sql/ISQLCommand.h"
+%include "Fdo/Commands/Sql/ISQLDataReader.h"
+
+// UnitMeasure commands
+%include "Fdo/Commands/UnitOfMeasure/BaseUnit.h"
+%include "Fdo/Commands/UnitOfMeasure/ICreateMeasureUnit.h"
+%include "Fdo/Commands/UnitOfMeasure/IDestroyMeasureUnit.h"
+%include "Fdo/Commands/UnitOfMeasure/IGetMeasureUnits.h"
+%include "Fdo/Commands/UnitOfMeasure/IMeasureUnitReader.h"
+
+
+//////////////////////////////////////////////////////////////
+// Wrap the FDO Expression classes
+//
+// Note: The template base classes are defined here before the
+// classes are imported.  Note that the FDO collection class heirarchy
+// consists of FdoCollections derived from FdoCollections.
+//
+//////////////////////////////////////////////////////////////
+
+// Rename "Create" methods in FdoDataValue.  This removes any abiguity when
+// overriding the "Create()" method.
+%rename(CreateBool) FdoDataValue::Create(bool value);    
+%rename(CreateByte) FdoDataValue::Create(FdoByte value);
+%rename(CreateDateTime) FdoDataValue::Create(FdoDateTime value);
+%rename(CreateDouble) FdoDataValue::Create(double value, FdoDataType dataType);
+%rename(CreateInt16) FdoDataValue::Create(FdoInt16 value);
+%rename(CreateInt32) FdoDataValue::Create(FdoInt32 value);
+%rename(CreateInt64) FdoDataValue::Create(FdoInt64 value);
+%rename(CreateFloat) FdoDataValue::Create(float value);
+%rename(CreateString) FdoDataValue::Create(FdoString* value);
+%rename(CreateBLOBorCLOB) FdoDataValue::Create(FdoByte* value, FdoInt32 length, FdoDataType dataType);
+%rename(CreateBLOBValueOrCLOBValue) FdoDataValue::Create(FdoByteArray* value, FdoDataType dataType);
+%rename(ToFdoByteArray) FdoLOBValue::operator FdoByteArray*;
+
+// Handle FdoDataVale Collections
+%template (BaseFdoDataValueCollection) FdoCollection<FdoDataValue,FdoException >;
+
+// Handle FdoExpression Collections
+%template (BaseFdoExpressionCollection) FdoCollection<FdoExpression,FdoExpressionException >;
+
+%include "Fdo/Expression/Expression.h"
+%include "Fdo/Expression/ValueExpression.h"
+%include "Fdo/Expression/LiteralValue.h"
+%include "Fdo/Expression/DataValue.h"
+%include "Fdo/Expression/BinaryExpression.h"
+%include "Fdo/Expression/BinaryOperations.h"
+%include "Fdo/Expression/ByteValue.h"
+%include "Fdo/Expression/BooleanValue.h"
+%include "Fdo/Expression/LOBValue.h"
+%include "Fdo/Expression/BLOBValue.h"
+%include "Fdo/Expression/CLOBValue.h"
+%include "Fdo/Expression/Identifier.h"
+%include "Fdo/Expression/ComputedIdentifier.h"
+%include "Fdo/Expression/BLOBStreamReader.h"
+%include "Fdo/Expression/DateTimeValue.h"
+%include "Fdo/Expression/DecimalValue.h"
+%include "Fdo/Expression/DoubleValue.h"
+%include "Fdo/Expression/ExpressionCollection.h"
+%include "Fdo/Expression/ExpressionException.h"
+%include "Fdo/Expression/ExpressionType.h"
+%include "Fdo/Expression/Function.h"
+%include "Fdo/Expression/GeometryValue.h"
+%include "Fdo/Expression/Int16Value.h"
+%include "Fdo/Expression/Int32Value.h"
+%include "Fdo/Expression/Int64Value.h"
+%include "Fdo/Expression/IExpressionProcessor.h"
+%include "Fdo/Expression/Parameter.h"
+%include "Fdo/Expression/SingleValue.h"
+%include "Fdo/Expression/StringValue.h"
+%include "Fdo/Expression/UnaryExpression.h"
+%include "Fdo/Expression/UnaryOperations.h"
+
+
+////////////////////////////////////////////////////////////////
+// Filters
+////////////////////////////////////////////////////////////////
+
+//  Handle FdoValueExpression collections
+%template (BaseFdoValueExpressionCollection) FdoCollection<FdoValueExpression,FdoFilterException >;
+
+%include "Fdo/Filter/Filter.h"
+%include "Fdo/Filter/LogicalOperator.h"
+%include "Fdo/Filter/SearchCondition.h"
+%include "Fdo/Filter/FilterException.h"
+%include "Fdo/Filter/GeometricCondition.h"
+%include "Fdo/Filter/BinaryLogicalOperations.h"
+%include "Fdo/Filter/BinaryLogicalOperator.h"
+%include "Fdo/Filter/ComparisonCondition.h"
+%include "Fdo/Filter/ComparisonOperations.h"
+%include "Fdo/Filter/ConditionType.h"
+%include "Fdo/Filter/DistanceCondition.h"
+%include "Fdo/Filter/DistanceOperations.h"
+%include "Fdo/Filter/IFilterProcessor.h"
+%include "Fdo/Filter/InCondition.h"
+%include "Fdo/Filter/NullCondition.h"
+%include "Fdo/Filter/SpatialCondition.h"
+%include "Fdo/Filter/SpatialOperations.h"
+%include "Fdo/Filter/UnaryLogicalOperations.h"
+%include "Fdo/Filter/UnaryLogicalOperator.h"
+%include "Fdo/Filter/ValueExpressionCollection.h"
+
+
+
+////////////////////////////////////////////////////////////////
+// Schema
+//
+// Note: the SchemaElement, SchemaElementState, SchemaCollection
+// and PropertyDefinition classes must be included BEFORE
+// the template declarations.
+////////////////////////////////////////////////////////////////
+%include "Fdo/Schema/SchemaElement.h"
+%include "Fdo/Schema/SchemaElementState.h"
+%include "Fdo/Schema/SchemaCollection.h"
+%include "Fdo/Schema/PropertyDefinition.h"
+
+// Handle FdoClassDefinition Collections
+%template (BaseClassDefinitionCollection) FdoCollection<FdoClassDefinition, FdoSchemaException >;
+%template (BaseNamedClassDefinitionCollection) FdoNamedCollection<FdoClassDefinition, FdoSchemaException >;
+%template (BaseSchemaClassDefinitionCollection) FdoSchemaCollection<FdoClassDefinition >;
+
+// Handle FdoDataPropertyDefinition Collections
+%template (BaseDataPropertyDefinitionCollection) FdoCollection<FdoDataPropertyDefinition, FdoSchemaException >;
+%template (BaseNamedDataPropertyDefinitionCollection) FdoNamedCollection<FdoDataPropertyDefinition, FdoSchemaException >;
+%template (BaseSchemaDataPropertyDefinitionCollection) FdoSchemaCollection<FdoDataPropertyDefinition >;
+
+// Handle FdoFeatureClass Collections
+%template (BaseFeatureClassCollection) FdoCollection<FdoFeatureClass, FdoSchemaException >;
+%template (BaseNamedFeatureClassCollection) FdoNamedCollection<FdoFeatureClass, FdoSchemaException >;
+%template (BaseSchemaFeatureClassCollection) FdoSchemaCollection<FdoFeatureClass >;
+
+// Handle FdoFeatureSchema Collections
+%template (BaseFeatureSchemaCollection) FdoCollection<FdoFeatureSchema, FdoSchemaException >;
+%template (BaseNamedFeatureSchemaCollection) FdoNamedCollection<FdoFeatureSchema, FdoSchemaException >;
+%template (BaseSchemaFeatureSchemaCollection) FdoSchemaCollection<FdoFeatureSchema >;
+
+// Handle FdoPropertyDefinition Collections
+%template (BasePropertyDefinitionCollection) FdoCollection<FdoPropertyDefinition, FdoSchemaException >;
+%template (BaseNamedPropertyDefinitionCollection) FdoNamedCollection<FdoPropertyDefinition, FdoSchemaException >;
+%template (BaseSchemaPropertyDefinitionCollection) FdoSchemaCollection<FdoPropertyDefinition >;
+
+// Handle FdoPropertyDefinition ReadOnly Collections
+%template (BaseReadOnlyPropertyDefinitionCollection) FdoReadOnlyCollection<FdoPropertyDefinition,FdoIDisposableCollection,FdoSchemaException >;
+%template (BaseReadOnlyDataPropertyDefinitionCollection) FdoReadOnlyCollection<FdoDataPropertyDefinition,FdoIDisposableCollection,FdoSchemaException >;
+
+// Handle FdoUniqueConstraint Collections
+%template (BaseFdoUniqueConstraintDefinitionCollection) FdoCollection<FdoUniqueConstraint,FdoSchemaException >;
+%template (BaseUniqueConstraintDefinitionCollection) FdoCollection<FdoUniqueConstraint,FdoSchemaException >;
+													
+
+%include "Fdo/Schema/SchemaException.h"
+%include "Fdo/Schema/ClassDefinition.h"
+%include "Fdo/Schema/AutogenerationException.h"
+%include "Fdo/Schema/Class.h"
+%include "Fdo/Schema/ClassCapabilities.h"
+%include "Fdo/Schema/ClassCollection.h"
+%include "Fdo/Schema/ClassType.h"
+%include "Fdo/Schema/DataPropertyDefinition.h"
+%include "Fdo/Schema/DataPropertyDefinitionCollection.h"
+%include "Fdo/Schema/DataType.h"
+%include "Fdo/Schema/DeleteRule.h"
+%include "Fdo/Schema/FeatureClass.h"
+%include "Fdo/Schema/FeatureClassCollection.h"
+%include "Fdo/Schema/FeatureSchema.h"
+%include "Fdo/Schema/FeatureSchemaCollection.h"
+%include "Fdo/Schema/GeometricPropertyDefinition.h"
+%include "Fdo/Schema/GeometricType.h"
+%include "Fdo/Schema/ObjectPropertyDefinition.h"
+%include "Fdo/Schema/ObjectType.h"
+%include "Fdo/Schema/OrderType.h"
+%include "Fdo/Schema/PropertyDefinitionCollection.h"
+%include "Fdo/Schema/PropertyType.h"
+%include "Fdo/Schema/PropertyValueConstraint.h"
+%include "Fdo/Schema/PropertyValueConstraintList.h"
+%include "Fdo/Schema/PropertyValueConstraintRange.h"
+%include "Fdo/Schema/PropertyValueConstraintType.h"
+%include "Fdo/Schema/ReadOnlyPropertyDefinitionCollection.h"
+%include "Fdo/Schema/ReadOnlyDataPropertyDefinitionCollection.h"
+%include "Fdo/Schema/SchemaAttributeDictionary.h"
+%include "Fdo/Schema/RasterPropertyDefinition.h"
+%include "Fdo/Schema/AssociationPropertyDefinition.h"
+%include "Fdo/Schema/NetworkFeatureClass.h"
+%include "Fdo/Schema/NetworkLayerClass.h"
+%include "Fdo/Schema/NetworkNodeFeatureClass.h"
+%include "Fdo/Schema/NetworkLinkFeatureClass.h"
+%include "Fdo/Schema/NetworkClass.h"
+%include "Fdo/Schema/TopoFeaturePropertyDefinition.h"
+%include "Fdo/Schema/TopoGeometryPropertyDefinition.h"
+%include "Fdo/Schema/Topology.h"
+%include "Fdo/Schema/UniqueConstraint.h"
+%include "Fdo/Schema/UniqueConstraintCollection.h"
+
+
+
+////////////////////////////////////////////////////////////////
+// Raster
+////////////////////////////////////////////////////////////////
+%include "Fdo/Raster/RasterDataOrganization.h"
+%include "Fdo/Raster/RasterDataModelType.h"
+%include "Fdo/Raster/DataValueCollection.h"
+%include "Fdo/Raster/RasterDataModel.h"
+%include "Fdo/Raster/IRaster.h"
+%include "Fdo/Raster/RasterDataType.h"
+%include "Fdo/Raster/IRasterPropertyDictionary.h"
+
+
+////////////////////////////////////////////////////////////////
+// XML Services
+////////////////////////////////////////////////////////////////
+
+// Handle FdoXmlElementMapping collections
+%template (BaseFdoXmlElementMappingCollection) FdoCollection<FdoXmlElementMapping, FdoCommandException >;
+%template (BaseNamedXmlElementMappingCollection) FdoNamedCollection<FdoXmlElementMapping, FdoCommandException >;
+%template (BaseFdoXmlElementMappingCollection2) FdoPhysicalElementMappingCollection<FdoXmlElementMapping >;
+
+// Handle FdoXmlClassMapping collections
+%template (BaseFdoXmlClassMappingCollection) FdoCollection<FdoXmlClassMapping, FdoCommandException >;
+%template (BaseNamedXmlClassMappingCollection) FdoNamedCollection<FdoXmlClassMapping, FdoCommandException >;
+%template (BaseFdoXmlClassMappingCollection2) FdoPhysicalElementMappingCollection<FdoXmlClassMapping >;
+
+%include "Fdo/Xml/Serializable.h"
+%include "Fdo/Xml/Deserializable.h"
+%include "Fdo/Xml/Context.h"
+%include "Fdo/Xml/ElementMapping.h"
+%include "Fdo/Xml/ElementMappingCollection.h"
+%include "Fdo/Xml/Flags.h"
+%include "Fdo/Xml/NameCollectionHandler.h"
+%include "Fdo/Xml/ClassMapping.h"
+%include "Fdo/Xml/ClassMappingCollection.h"
+%include "Fdo/Xml/SchemaMapping.h"
+%include "Fdo/Xml/SpatialContextFlags.h"
+%include "Fdo/Xml/SpatialContextReader.h"
+%include "Fdo/Xml/SpatialContextSerializer.h"
+%include "Fdo/Xml/SpatialContextWriter.h"
+%include "Fdo/Xml/FeatureContext.h"
+%include "Fdo/Xml/FeatureFlags.h"
+%include "Fdo/Xml/FeatureHandler.h"
+%include "Fdo/Xml/FeaturePropertyReader.h"
+%include "Fdo/Xml/FeaturePropertyWriter.h"
+%include "Fdo/Xml/FeatureReader.h"
+%include "Fdo/Xml/FeatureWriter.h"
+%include "Fdo/Xml/FeatureSerializer.h"
+
+
+
+ 
+

Added: trunk/Fdo/Python/Swig/Fdo/FdoPointercasts.i
===================================================================
--- trunk/Fdo/Python/Swig/Fdo/FdoPointercasts.i	                        (rev 0)
+++ trunk/Fdo/Python/Swig/Fdo/FdoPointercasts.i	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,258 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+
+/* Define typecasting for FdoICommand objects */
+%pointer_cast(FdoICommand*, FdoISelectAggregates*, FdoICommandToFdoISelectAggregates);
+%pointer_cast(FdoIFeatureCommand*, FdoISelectAggregates*, FdoIFeatureCommandToFdoISelectAggregates);
+%pointer_cast(FdoICommand*, FdoIFeatureCommand*, FdoICommandToFdoIFeatureCommand);
+%pointer_cast(FdoICommand*, FdoIInsert*, FdoICommandToFdoIInsert);
+%pointer_cast(FdoICommand*, FdoISQLCommand*, FdoICommandToFdoISQLCommand);
+%pointer_cast(FdoICommand*, FdoISelect*, FdoICommandToFdoISelect);
+%pointer_cast(FdoIFeatureCommand*, FdoISelect*, FdoIFeatureCommandToFdoISelect);
+%pointer_cast(FdoICommand*, FdoIDelete*, FdoICommandToFdoIDelete);
+%pointer_cast(FdoIFeatureCommand*, FdoIDelete*, FdoIFeatureCommandToFdoIDelete);
+%pointer_cast(FdoICommand*, FdoIUpdate*, FdoICommandToFdoIUpdate);
+%pointer_cast(FdoIFeatureCommand*, FdoIUpdate*, FdoIFeatureCommandToFdoIUpdate);
+%pointer_cast(FdoICommand*, FdoIDescribeSchema*, FdoICommandToFdoIDescribeSchema);
+%pointer_cast(FdoICommand*, FdoIDestroySchema*, FdoICommandToFdoIDestroySchema);
+%pointer_cast(FdoICommand*, FdoIApplySchema*, FdoICommandToFdoIApplySchema);
+%pointer_cast(FdoICommand*, FdoIDescribeSchemaMapping*, FdoICommandToFdoIDescribeSchemaMapping);
+
+/* Define typecasting between FdoICommand and the Data Store commands */
+%pointer_cast(FdoICommand*, FdoICreateDataStore*, FdoICommandToFdoICreateDataStore);
+%pointer_cast(FdoICommand*, FdoIDestroyDataStore*, FdoICommandToFdoIDestroyDataStore);
+%pointer_cast(FdoICommand*, FdoIListDataStores*, FdoICommandToFdoIListDataStores); 
+
+/* Define typecasting between FdoICommand and the locking commands */
+%pointer_cast(FdoICommand*, FdoIAcquireLock*, FdoICommandToFdoIAcquireLock);
+%pointer_cast(FdoIFeatureCommand*, FdoIAcquireLock*, FdoIFeatureCommandToFdoIAcquireLock);
+%pointer_cast(FdoICommand*, FdoIReleaseLock*, FdoICommandToFdoIReleaseLock);
+%pointer_cast(FdoIFeatureCommand*, FdoIReleaseLock*, FdoIFeatureCommandFdoIReleaseLock);
+%pointer_cast(FdoICommand*, FdoIGetLockedObjects*, FdoICommandToFdoIGetLockedObjects);
+%pointer_cast(FdoICommand*, FdoIGetLockInfo*, FdoICommandToFdoIGetLockInfo);
+%pointer_cast(FdoIFeatureCommand*, FdoIGetLockInfo*, FdoIFeatureCommandToFdoIGetLockInfo);
+%pointer_cast(FdoICommand*, FdoIGetLockOwners*, FdoICommandToFdoIGetLockOwners);
+
+/* Define typecasting for Unit of measure commands */
+%pointer_cast(FdoICommand*, FdoIDestroyMeasureUnit*, FdoICommandToFdoIDestroyMeasureUnit);
+%pointer_cast(FdoICommand*, FdoICreateMeasureUnit*, FdoICommandToFdoICreateMeasureUnit);
+%pointer_cast(FdoICommand*, FdoIGetMeasureUnits*, FdoICommandToFdoIGetMeatureUnits);
+
+/* Define typecasting for Spatial Contexts */
+%pointer_cast(FdoICommand*, FdoIActivateSpatialContext*, FdoICommandToFdoIActivateSpatialContext);
+%pointer_cast(FdoICommand*, FdoIGetSpatialContexts*, FdoICommandToFdoIGetSpatialContexts);
+%pointer_cast(FdoICommand*, FdoIDestroySpatialContext*, FdoICommandToFdoIDestroySpatialContext);
+%pointer_cast(FdoICommand*, FdoICreateSpatialContext*, FdoICommandToFdoICreateSpatialContext);
+
+/* Define typecasting for Long Transaction commands */
+%pointer_cast(FdoICommand*, FdoICommitLongTransaction*, FdoICommandToFdoICommitLongTransaction);
+%pointer_cast(FdoICommand*, FdoIRollbackLongTransaction*, FdoICommandToFdoIRollbackLongTransaction);
+%pointer_cast(FdoICommand*, FdoIChangeLongTransactionSet*, FdoICommandToFdoIChangeLongTransactionSet);
+%pointer_cast(FdoICommand*, FdoIGetLongTransactionsInSet*, FdoICommandToFdoIGetLongTransactionsInSet);
+%pointer_cast(FdoICommand*, FdoIActivateLongTransaction*, FdoICommandToFdoIActivateLongTransaction);
+%pointer_cast(FdoICommand*, FdoIFreezeLongTransaction*, FdoICommandToFdoIFreezeLongTransaction);
+%pointer_cast(FdoICommand*, FdoICreateLongTransaction*, FdoICommandToFdoICreateLongTransaction);
+%pointer_cast(FdoICommand*, FdoIGetLongTransactions*, FdoICommandToFdoIGetLongTransactions);
+%pointer_cast(FdoICommand*, FdoIDeactivateLongTransaction*, FdoICommandToFdoIDeactivateLongTransaction);
+%pointer_cast(FdoIFeatureCommand*, FdoICommitLongTransaction*, FdoIFeatureCommandToFdoICommitLongTransaction);
+%pointer_cast(FdoIFeatureCommand*, FdoIRollbackLongTransaction*, FdoIFeatureCommandToFdoIRollbackLongTransaction);
+
+// The following long transaction commands are shown from API Marble doc
+%pointer_cast(FdoICommand*, FdoIActivateLongTransactionCheckpoint*, FdoICommandToFdoIActivateLongTransactionCheckpoint);
+%pointer_cast(FdoICommand*, FdoIGetLongTransactionPrivileges*, FdoICommandToFdoIGetLongTransactionPrivileges);
+%pointer_cast(FdoICommand*, FdoICreateLongTransactionCheckpoint*, FdoICommandToFdoICreateLongTransactionCheckpoint);
+%pointer_cast(FdoICommand*, FdoIGetLongTransactionCheckpoints*, FdoICommandToFdoIGetLongTransactionCheckpoints);
+%pointer_cast(FdoICommand*, FdoIRollbackLongTransactionCheckpoint*, FdoICommandToFdoIRollbackLongTransactionCheckpoint);
+%pointer_cast(FdoICommand*, FdoIChangeLongTransactionPrivileges*, FdoICommandToFdoILongChangeTransactionPrivileges);
+
+
+/* Define typecasting for Network commands */
+//%pointer_cast(FdoICommand*, FdoINetworkCommand*, FdoICommandToFdoINetworkCommand);
+//%pointer_cast(FdoICommand*, FdoINetworkShortestPathCommand*, FdoICommandToFdoINetworkShortestPathCommand);
+//%pointer_cast(FdoICommand*, FdoINetworkTSPCommand*, FdoICommandToFdoINetworkTSPCommand);
+//%pointer_cast(FdoICommand*, FdoINetworkReachingNodesCommand*, FdoICommandToFdoINetworkReachingNodesCommand);
+//%pointer_cast(FdoICommand*, FdoINetworkAllPathsCommand*, FdoICommandToFdoINetworkAllPathsCommand);
+//%pointer_cast(FdoICommand*, FdoINetworkNearestNeighborsCommand*, FdoICommandToFdoINetworkNearestNeighborsCommand);
+//%pointer_cast(FdoICommand*, FdoINetworkWithinCostCommand*, FdoICommandToFdoINetworkWithinCostCommand);
+//%pointer_cast(FdoICommand*, FdoINetworkReachableNodesCommand*, FdoICommandToFdoINetworkReachableNodesCommand);
+
+//%pointer_cast(FdoINetworkCommand*, FdoINetworkShortestPathCommand*, FdoINetworkCommandToFdoINetworkShortestPathCommand);
+//%pointer_cast(FdoINetworkCommand*, FdoINetworkTSPCommand*, FdoINetworkCommandToFdoINetworkTSPCommand);
+//%pointer_cast(FdoINetworkCommand*, FdoINetworkReachingNodesCommand*, FdoINetworkCommandToFdoINetworkReachingNodesCommand);
+//%pointer_cast(FdoINetworkCommand*, FdoINetworkAllPathsCommand*, FdoINetworkCommandToFdoINetworkAllPathsCommand);
+//%pointer_cast(FdoINetworkCommand*, FdoINetworkNearestNeighborsCommand*, FdoINetworkCommandToFdoINetworkNearestNeighborsCommand);
+//%pointer_cast(FdoINetworkCommand*, FdoINetworkWithinCostCommand*, FdoINetworkCommandToFdoINetworkWithinCostCommand);
+//%pointer_cast(FdoINetworkCommand*, FdoINetworkReachableNodesCommand*, FdoINetworkCommandToFdoINetworkReachableNodesCommand);
+
+/* Define typecasting for Topology commands */
+// %pointer_cast(FdoICommand*, FdoIReconnectTopoEdge*, FdoICommandToFdoIReconnectTopoEdge);
+// %pointer_cast(FdoICommand*, FdoIMoveTopoNode*, FdoICommandToFdoIMoveTopoNode);
+// %pointer_cast(FdoICommand*, FdoIDeactivateTopologyInCommandResults*, FdoICommandToFdoIDeactivateTopologyInCommandResults);
+// %pointer_cast(FdoICommand*, FdoIActivateTopologyInCommandResults*, FdoICommandToFdoIActivateTopologyInCommandResults);
+// %pointer_cast(FdoICommand*, FdoIActivateTopologyArea*, FdoICommandToFdoIActivateTopologyArea);
+// %pointer_cast(FdoICommand*, FdoIDeactivateTopologyArea*, FdoICommandToFdoIDeactivateTopologyArea);
+
+/* Define typecasting for FdoDataValue subclasses */
+%pointer_cast(FdoDataValue*, FdoInt16Value*, FdoDataValueToFdoInt16Value);
+%pointer_cast(FdoDataValue*, FdoInt32Value*, FdoDataValueToFdoInt32Value);
+%pointer_cast(FdoDataValue*, FdoInt64Value*, FdoDataValueToFdoInt64Value);
+%pointer_cast(FdoDataValue*, FdoDoubleValue*, FdoDataValueToFdoDoubleValue);
+%pointer_cast(FdoDataValue*, FdoCLOBValue*, FdoDataValueToFdoCLOBValue);
+%pointer_cast(FdoDataValue*, FdoBLOBValue*, FdoDataValueToFdoBLOBValue);
+%pointer_cast(FdoDataValue*, FdoDateTimeValue*, FdoDataValueToFdoDateTimeValue);
+%pointer_cast(FdoDataValue*, FdoDecimalValue*, FdoDataValueToFdoDecimalValue);
+%pointer_cast(FdoDataValue*, FdoSingleValue*, FdoDataValueToFdoSingleValue);
+%pointer_cast(FdoDataValue*, FdoBooleanValue*, FdoDataValueToFdoBooleanValue);
+%pointer_cast(FdoDataValue*, FdoByteValue*, FdoDataValueToFdoByteValue);
+%pointer_cast(FdoDataValue*, FdoStringValue*, FdoDataValueToFdoStringValue);
+
+/* Define typecasting for FdoExpression subclasses */
+%pointer_cast(FdoExpression*, FdoFunction*, FdoExpressionToFdoFunction);
+%pointer_cast(FdoExpression*, FdoIdentifier*, FdoExpressionToFdoIdentifier);
+%pointer_cast(FdoExpression*, FdoValueExpression*, FdoExpressionToFdoValueExpression);
+%pointer_cast(FdoExpression*, FdoBinaryExpression*, FdoExpressionToFdoBinaryExpression);
+%pointer_cast(FdoExpression*, FdoUnaryExpression*, FdoExpressionToFdoUnaryExpression);
+
+/* Define typecasting for FdoValueExpression subclasses */
+%pointer_cast(FdoValueExpression*, FdoParameter*, FdoValueExpressionToFdoParameter);
+%pointer_cast(FdoValueExpression*, FdoLiteralValue*, FdoValueExpressionToFdoLiteralValue);
+%pointer_cast(FdoExpression*, FdoParameter*, FdoExpressionToFdoParameter);
+%pointer_cast(FdoExpression*, FdoLiteralValue*, FdoExpressionToFdoLiteralValue);
+
+/* Define typecasting for FdoLiteralValue subclasses */
+%pointer_cast(FdoLiteralValue*, FdoGeometryValue*, FdoLiteralValueToFdoGeometryValue);
+%pointer_cast(FdoLiteralValue*, FdoDataValue*, FdoLiteralValueToFdoDataValue);
+%pointer_cast(FdoValueExpression*, FdoGeometryValue*, FdoValueExpressionToFdoGeometryValue);
+%pointer_cast(FdoValueExpression*, FdoDataValue*, FdoValueExpressionToFdoDataValue);
+%pointer_cast(FdoExpression*, FdoGeometryValue*, FdoExpressionToFdoGeometryValue);
+%pointer_cast(FdoExpression*, FdoDataValue*, FdoExpressionToFdoDataValue); 
+
+
+
+/* Define typecasting for subclasses of FdoFilter */
+%pointer_cast(FdoFilter*, FdoSearchCondition*, FdoFilterToFdoSearchCondition);
+%pointer_cast(FdoFilter*, FdoLogicalOperator*, FdoFilterToFdoLogicalOperator);
+
+/* Define typecasting for subclasses of FdoSearchCondition */
+%pointer_cast(FdoSearchCondition*, FdoGeometricCondition*, FdoSearchConditionToFdoGeometricCondition);
+%pointer_cast(FdoSearchCondition*, FdoNullCondition*, FdoSearchConditionToFdoNullCondition);
+%pointer_cast(FdoSearchCondition*, FdoComparisonCondition*, FdoSearchConditionToFdoComparisonCondition);
+%pointer_cast(FdoSearchCondition*, FdoInCondition*, FdoSearchConditionToFdoInCondition);
+%pointer_cast(FdoFilter*, FdoGeometricCondition*, FdoFilterToFdoGeometricCondition);
+%pointer_cast(FdoFilter*, FdoNullCondition*, FdoFilterToFdoNullCondition);
+%pointer_cast(FdoFilter*, FdoComparisonCondition*, FdoFilterToFdoComparisonCondition);
+%pointer_cast(FdoFilter*, FdoInCondition*, FdoFilterToFdoInCondition);
+
+/* Define typecasting for subclasses of FdoLogicalOperator */
+%pointer_cast(FdoLogicalOperator*, FdoUnaryLogicalOperator*, FdoLogicalOperatorToFdoUnaryLogicalOperator);
+%pointer_cast(FdoLogicalOperator*, FdoBinaryLogicalOperator*, FdoLogicalOperatorToFdoBinaryLogicalOperator);
+%pointer_cast(FdoFilter*, FdoUnaryLogicalOperator*, FdoFilterToFdoUnaryLogicalOperator);
+%pointer_cast(FdoFilter*, FdoBinaryLogicalOperator*, FdoFilterToFdoBinaryLogicalOperator);
+ 
+/* Define typecasting for subclasses of FdoGeometricCondition */
+%pointer_cast(FdoGeometricCondition*, FdoDistanceCondition*, FdoGeometricConditionToFdoDistanceCondition);
+%pointer_cast(FdoGeometricCondition*, FdoSpatialCondition*, FdoGeometricConditionToFdoSpatialCondition);
+%pointer_cast(FdoFilter*, FdoDistanceCondition*, FdoFilterToFdoDistanceCondition);
+%pointer_cast(FdoFilter*, FdoSpatialCondition*, FdoFilterToFdoSpatialCondition);
+
+
+/* Define typecasting for FdoIGeometry subtypes */
+%pointer_cast(FdoIGeometry*, FdoISurfaceAbstract*, FdoIGeometryToFdoISurfaceAbstract);
+%pointer_cast(FdoIGeometry*, FdoIPoint*, FdoIGeometryToFdoIPoint);
+%pointer_cast(FdoIGeometry*, FdoIGeometricAggregateAbstract*, FdoIGeometryToFdoIGeometricAggregateAbstract );
+%pointer_cast(FdoIGeometry*, FdoICurveAbstract*, FdoIGeometryToFdoICurveAbstract );
+%pointer_cast(FdoIGeometry*, FdoIMultiPolygon*, FdoIGeometryToFdoIMultiPolygon );
+%pointer_cast(FdoIGeometry*, FdoIMultiGeometry*, FdoIGeometryToFdoIMultiGeometry );
+%pointer_cast(FdoIGeometry*, FdoIMultiCurveString*, FdoIGeometryToFdoIMultiCurveString );
+%pointer_cast(FdoIGeometry*, FdoIMultiLineString*, FdoIGeometryToFdoIMultiLineString );
+%pointer_cast(FdoIGeometry*, FdoIMultiPoint*, FdoIGeometryToFdoIMultiPoint );
+%pointer_cast(FdoIGeometry*, FdoIMultiCurvePolygon*, FdoIGeometryToFdoIMultiCurvePolygon );
+%pointer_cast(FdoIGeometry*, FdoICurvePolygon*, FdoIGeometryToFdoICurvePolygon );
+%pointer_cast(FdoIGeometry*, FdoIPolygon*, FdoIGeometryToFdoIPolygon );
+%pointer_cast(FdoIGeometry*, FdoILineString*, FdoIGeometryToFdoILineString );
+%pointer_cast(FdoIGeometry*, FdoICurveString*, FdoIGeometryToFdoICurveString );
+
+/* Define typecasting for subclasses of FdoSchemaElement */
+%pointer_cast(FdoSchemaElement*, FdoFeatureSchema*, FdoSchemaElementToFdoFeatureSchema);
+// %pointer_cast(FdoSchemaElement*, FdoRelation*, FdoSchemaElementToFdoRelation);
+%pointer_cast(FdoSchemaElement*, FdoPropertyDefinition*, FdoSchemaElementToFdoPropertyDefinition);
+// %pointer_cast(FdoSchemaElement*, FdoRelationEnd*, FdoSchemaElementToFdoRelationEnd);
+%pointer_cast(FdoSchemaElement*, FdoClassDefinition*, FdoSchemaElementToFdoClassDefinition);
+
+/* Define typecasting for subclasses of FdoClassDefinition */
+/* This is required for the IFeatureReader */
+%pointer_cast(FdoClassDefinition*, FdoFeatureClass*, FdoClassDefinitionToFdoFeatureClass);
+%pointer_cast(FdoClassDefinition*, FdoClass*, FdoClassDefinitionToFdoClass);
+// %pointer_cast(FdoClassDefinition*, FdoTopology*, FdoClassDefinitionToFdoTopology);
+%pointer_cast(FdoClassDefinition*, FdoNetworkLayerClass*, FdoClassDefinitionToFdoNetworkLayerClass);
+%pointer_cast(FdoClassDefinition*, FdoNetworkClass*, FdoClassDefinitionToFdoNetworkClass);
+
+/* Define typecasting for subclasses of FdoPropertyDefinition */
+%pointer_cast(FdoPropertyDefinition*, FdoDataPropertyDefinition*, FdoPropertyDefinitionToFdoDataPropertyDefinition);
+%pointer_cast(FdoPropertyDefinition*, FdoGeometricPropertyDefinition*, FdoPropertyDefinitionToFdoGeometricPropertyDefinition);
+%pointer_cast(FdoPropertyDefinition*, FdoObjectPropertyDefinition*, FdoPropertyDefinitionToFdoObjectPropertyDefinition);
+%pointer_cast(FdoPropertyDefinition*, FdoRasterPropertyDefinition*, FdoPropertyDefinitionToFdoRasterPropertyDefinition);
+// %pointer_cast(FdoPropertyDefinition*, FdoTopoFeaturePropertyDefinition*, FdoPropertyDefinitionToFdoTopoFeaturePropertyDefinition);
+%pointer_cast(FdoPropertyDefinition*, FdoAssociationPropertyDefinition*, FdoPropertyDefinitionToFdoAssociationPropertyDefinition);
+%pointer_cast(FdoSchemaElement*, FdoDataPropertyDefinition*, FdoSchemaElementToFdoDataPropertyDefinition);
+%pointer_cast(FdoSchemaElement*, FdoGeometricPropertyDefinition*, FdoSchemaElementToFdoGeometricPropertyDefinition);
+%pointer_cast(FdoSchemaElement*, FdoRasterPropertyDefinition*, FdoSchemaElementToFdoRasterPropertyDefinition);
+%pointer_cast(FdoSchemaElement*, FdoObjectPropertyDefinition*, FdoSchemaElementToFdoObjectPropertyDefinition);
+// %pointer_cast(FdoSchemaElement*, FdoTopoFeaturePropertyDefinition*, FdoSchemaElementToFdoTopoFeaturePropertyDefinition);
+%pointer_cast(FdoSchemaElement*, FdoAssociationPropertyDefinition*, FdoSchemaElementToFdoAssociationPropertyDefinition);
+
+/* Define typecasting for subclasses of FdoGeometricPropertyDefinition */
+// %pointer_cast(FdoGeometricPropertyDefinition*, FdoTopoGeometricPropertyDefinition*, FdoGeometricPropertyDefinitionToFdoTopoGeometricPropertyDefinition);
+// %pointer_cast(FdoPropertyDefinition*, FdoTopoGeometricPropertyDefinition*, FdoPropertyDefinitionToFdoTopoGeometricPropertyDefinition);
+// %pointer_cast(FdoSchemaElement*, FdoTopoGeometricPropertyDefinition*, FdoSchemaElementToFdoTopoGeometricPropertyDefinition);
+
+/* Define typecasting for subclasses of FdoFeatureClass */
+%pointer_cast(FdoFeatureClass*, FdoNetworkFeatureClass*, FdoFeatureClassToFdoNetworkFeatureClass);
+%pointer_cast(FdoClassDefinition*, FdoNetworkFeatureClass*, FdoClassDefinitionToFdoNetworkFeatureClass);
+%pointer_cast(FdoSchemaElement*, FdoNetworkFeatureClass*, FdoSchemaElementToFdoNetworkFeatureClass);
+
+/* Define typecasting for subclasses of FdoNetworkFeatureClass */
+%pointer_cast(FdoNetworkFeatureClass*, FdoNetworkNodeFeatureClass*, FdoNetworkFeatureClassToFdoNetworkNodeFeatureClass);
+%pointer_cast(FdoNetworkFeatureClass*, FdoNetworkLinkFeatureClass*, FdoNetworkFeatureClassToFdoNetworkLinkFeatureClass);
+%pointer_cast(FdoFeatureClass*, FdoNetworkNodeFeatureClass*, FdoFeatureClassToFdoNetworkNodeFeatureClass);
+%pointer_cast(FdoFeatureClass*, FdoNetworkLinkFeatureClass*, FdoFeatureClassToFdoNetworkLinkFeatureClass);
+%pointer_cast(FdoClassDefinition*, FdoNetworkNodeFeatureClass*, FdoClassDefinitionToFdoNetworkNodeFeatureClass);
+%pointer_cast(FdoClassDefinition*, FdoNetworkLinkFeatureClass*, FdoClassDefinitionToFdoNetworkLinkFeatureClass);
+%pointer_cast(FdoSchemaElement*, FdoNetworkNodeFeatureClass*, FdoSchemaElementToFdoNetworkNodeFeatureClass);
+%pointer_cast(FdoSchemaElement*, FdoNetworkLinkFeatureClass*, FdoSchemaElementToFdoNetworkLinkFeatureClass);
+
+/* Define typecasting for Physical Schema Mapping classes */
+// %pointer_cast(FdoPhysicalElementMappingCollection*, FdoPhysicalSchemaMappingCollection*, FdoPhysicalElementMappingCollectionToFdoPhysicalSchemaMappingCollection);
+// %pointer_cast(FdoPhysicalElementMapping*, FdoPhysicalSchemaMapping*, FdoPhysicalElementMappingToFdoPhysicalSchemaMapping);
+
+/* Define typecasting for FdoIoStream classes */
+%pointer_cast(FdoIoStream*, FdoIoBufferStream*, FdoIoStreamToFdoIoBufferStream);
+%pointer_cast(FdoIoStream*, FdoIoMemoryStream*, FdoIoStreamToFdoIoMemoryStream);
+%pointer_cast(FdoIoStream*, FdoIoFileStream*, FdoIoStreamToFdoIoFileStream);
+%pointer_cast(FdoIoBufferStream*, FdoIoStream*, FdoIoBufferStreamToFdoIoStream);
+%pointer_cast(FdoIoMemoryStream*, FdoIoStream*, FdoIoMemoryStreamToFdoIoStream);
+%pointer_cast(FdoIoFileStream*, FdoIoStream*, FdoIoFileStreamToFdoIoStream);
+
+/* Define typecasting for FdoIoObjectStreamReader classes */
+%pointer_cast(FdoIoByteStreamReader*, FdoIStreamReader*, FdoIoByteStreamReaderToFdoIStreamReader);
+%pointer_cast(FdoIStreamReader*, FdoBLOBStreamReader*, FdoIStreamReaderToFdoBLOBStreamReader);
+%pointer_cast(FdoIStreamReader*, FdoIoByteStreamReader*, FdoIStreamReaderToFdoIoByteStreamReader);
+
+/* Define typecasting for subclasses of FdoPropertyValueConstraint */
+%pointer_cast(FdoPropertyValueConstraint*, FdoPropertyValueConstraintList*, FdoPropertyValueConstraintToFdoPropertyValueConstraintList);
+%pointer_cast(FdoPropertyValueConstraint*, FdoPropertyValueConstraintRange*, FdoPropertyValueConstraintToFdoPropertyValueConstraintRange);
\ No newline at end of file

Added: trunk/Fdo/Python/Swig/Fdo/FdoTypemaps.i
===================================================================
--- trunk/Fdo/Python/Swig/Fdo/FdoTypemaps.i	                        (rev 0)
+++ trunk/Fdo/Python/Swig/Fdo/FdoTypemaps.i	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,243 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// -------------------------------------------------------------
+// PYTHON typemaps
+//	Description:	These typemaps will convert between C++
+//					arrays to Python Lists
+//
+// -------------------------------------------------------------
+//
+
+%include "typemaps.i"
+%apply int& OUTPUT { FdoInt32& count };
+%apply int& OUTPUT { FdoInt32& length };
+%apply int& OUTPUT { FdoInt32& size };
+
+/* Convert FdoClassType* to Python list of FdoClassType integers */
+%typemap(out) FdoClassType* {
+	// Verify that we are in the FdoISchemaCapability.GetClassTypes() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper to prevent conflicts where the FdoClassType*
+	// points to a single FdoClassType instance instead of an array.
+	if (strcmp("$symname", "FdoISchemaCapabilities_GetClassTypes") == 0) {
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}
+	}
+}
+
+/* Convert FdoDataType*  to Python list of FdoDataType integers */
+%typemap(out) FdoDataType* {
+	// Verify that we are in the FdoISchemaCapability.GetDataTypes() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper
+	if (strcmp("$symname", "FdoISchemaCapabilities_GetDataTypes") == 0 || 
+		strcmp("$symname", "FdoISchemaCapabilities_GetSupportedAutoGeneratedTypes") == 0 ||
+		strcmp("$symname", "FdoISchemaCapabilities_GetSupportedIdentityPropertyTypes") == 0)
+	{
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}
+	}
+}
+
+/* Convert FdoRasterDataModelType*  to Python list of FdoRasterDataModelType integers */
+%typemap(out) FdoRasterDataModelType* {
+	// Verify that we are in the FdoRasterDataModel.GetDataModelType() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper
+	if (strcmp("$symname", "FdoRasterDataModel_GetDataModelType") == 0 )
+	{
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}
+	}
+}
+
+/* Convert FdoRasterDataType*  to Python list of FdoRasterDataType integers */
+%typemap(out) FdoRasterDataType* {
+	// Verify that we are in the FdoRasterDataModel.GetDataType() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper
+	if (strcmp("$symname", "FdoRasterDataModel_GetDataType") == 0 )
+	{
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}
+	}
+}
+
+/* Convert FdoRasterDataOrganization*  to Python list of FdoRasterDataOrganization integers */
+%typemap(out) FdoRasterDataOrganization* {
+	// Verify that we are in the FdoRasterDataModel.GetOrganization() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper
+	if (strcmp("$symname", "FdoRasterDataModel_GetOrganization") == 0 )
+	{
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}
+	}
+}
+
+/* Convert FdoSpatialContextExtentType*  to Python list of FdoSpatialContextExtentType integers */
+%typemap(out) FdoSpatialContextExtentType* {
+	// Verify that we are in the FdoIConnectionCapabilities.GetSpatialContextTypes() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper
+	if (strcmp("$symname", "FdoIConnectionCapabilities_GetSpatialContextTypes") == 0) {
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}
+	}
+}
+
+
+/* Convert FdoInt32*  to Python list of FdoICommandType integers */
+%typemap(out) FdoInt32* {
+	// Verify that we are in the FdoICommandCapabilities.GetCommands() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper
+	if (strcmp("$symname", "FdoICommandCapabilities_GetCommands") == 0) {
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}		
+	}	
+}
+
+/* Convert FdoGeometryType* to Python List */
+%typemap(out) FdoGeometryType* {
+	if ($1 == NULL) {
+		$result = PyTuple_New( 0 );
+	}
+	else {
+		$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+	}
+}
+
+/* Convert FdoGeometryComponentType* to Python List */
+%typemap(out) FdoGeometryComponentType* {
+	if ($1 == NULL) {
+		$result = PyTuple_New( 0 );
+	}
+	else {
+		$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+	}
+}
+
+
+
+/* Convert FdoExpressionType* to Python list of FdoExpressionType integers */
+%typemap(out) FdoExpressionType* {
+	// Verify that we are in the FdoIExpressionCapabilities.GetExpressionTypes() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper to prevent conflicts where the FdoFunctionDefinition*
+	// points to a single FdoFunctionDefinition instance instead of an array.
+	if (strcmp("$symname", "FdoIExpressionCapabilities_GetExpressionTypes") == 0) {
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}
+	}
+}
+
+
+
+/* Convert FdoConditionType* to Python list of FdoConditionType integers */
+%typemap(out) FdoConditionType* {
+	// Verify that we are in the FdoIFilterCapabilities.FdoConditionType() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper to prevent conflicts where the FdoConditionType*
+	// points to a single FdoConditionType instance instead of an array.
+	if (strcmp("$symname", "FdoIFilterCapabilities_GetConditionTypes") == 0) {
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}
+	}
+}
+
+/* Convert FdoSpatialOperations* to Python list of FdoSpatialOperations integers */
+%typemap(out) FdoSpatialOperations* {
+	// Verify that we are in the FdoIExpressionCapabilities.GetSpatialOperations() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper to prevent conflicts where the FdoSpatialOperations*
+	// points to a single FdoSpatialOperations instance instead of an array.
+	if (strcmp("$symname", "FdoIFilterCapabilities_GetSpatialOperations") == 0) {
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}
+	}
+}
+
+
+/* Convert FdoDistanceOperations* to Python list of FdoDistanceOperations integers */
+%typemap(out) FdoDistanceOperations* {
+	// Verify that we are in the FdoIExpressionCapabilities.GetDistanceOperations() method.
+	// This will look redundant in the final C++ wrapper code, but is required
+	// by the SWIG wrapper to prevent conflicts where the FdoDistanceOperations*
+	// points to a single FdoDistanceOperations instance instead of an array.
+	if (strcmp("$symname", "FdoIFilterCapabilities_GetDistanceOperations") == 0) {
+		if ($1 == NULL) {
+			$result = PyTuple_New( 0 );
+		}
+		else {
+			$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+		}
+	}
+}
+
+
+/* Convert FdoLockType* to Python list of FdoLockType integers */
+%typemap(out) FdoLockType* {	
+	if ($1 == NULL) {
+		$result = PyTuple_New( 0 );
+	}
+	else {
+		$result = utils_intArrayToPyTuple( (int*)$1, *arg2 );
+	}
+}
+

Added: trunk/Fdo/Python/Swig/Fdo/GeometryIncludes.i
===================================================================
--- trunk/Fdo/Python/Swig/Fdo/GeometryIncludes.i	                        (rev 0)
+++ trunk/Fdo/Python/Swig/Fdo/GeometryIncludes.i	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,65 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+ 
+/* Handle the collection templates FdoIGeometry and FdoICurveSegmentAbstractCollection */
+%template (BaseFdoIGeometryCollection) FdoCollection<FdoIGeometry,FdoException>;
+%template (BaseFdoICurveSegmentAbstractCollection) FdoCollection<FdoICurveSegmentAbstract,FdoException>;
+%template (BaseFdoIDirectPositionCollection) FdoCollection<FdoIDirectPosition,FdoException>;
+%template (BaseFdoILineStringCollection) FdoCollection<FdoILineString,FdoException>;
+%template (BaseFdoIPointCollection) FdoCollection<FdoIPoint,FdoException>;
+%template (BaseFdoILinearRingCollection) FdoCollection<FdoILinearRing,FdoException>;
+%template (BaseFdoIPolygonCollection) FdoCollection<FdoIPolygon,FdoException>;
+%template (BaseFdoICurveStringCollection) FdoCollection<FdoICurveString,FdoException>;
+%template (BaseFdoIRingCollection) FdoCollection<FdoIRing,FdoException>;
+%template (BaseFdoIICurvePolygonCollection) FdoCollection<FdoICurvePolygon,FdoException>;
+
+
+/* Include the geometry base classes */
+%include "Common/Array.h"
+%include "Common/Dimensionality.h"
+%include "Common/GeometryType.h"
+%include "Geometry/IGeometry.h"
+%include "Geometry/IRingAbstract.h"
+%include "Geometry/ICurveAbstract.h"
+%include "Geometry/ISurfaceAbstract.h"
+%include "Geometry/ICurveSegmentAbstract.h"
+%include "Geometry/IArcSegmentAbstract.h"
+%include "Geometry/IGeometricAggregateAbstract.h"
+%include "Geometry/IEnvelope.h"
+%include "Geometry/IDirectPosition.h"
+%include "Geometry/DirectPositionImpl.h"
+%include "Geometry/ILineString.h"
+%include "Geometry/IPoint.h"
+%include "Geometry/ILinearRing.h"
+%include "Geometry/ILineStringSegment.h"
+%include "Geometry/IPolygon.h"
+%include "Geometry/IMultiPoint.h"
+%include "Geometry/IMultiGeometry.h"
+%include "Geometry/IMultiLineString.h"
+%include "Geometry/IMultiPolygon.h"
+%include "Geometry/ICircularArcSegment.h"
+%include "Geometry/ICurveString.h"
+%include "Geometry/IMultiCurveString.h"
+%include "Geometry/IRing.h"
+%include "Geometry/ICurvePolygon.h"
+%include "Geometry/IMultiCurvePolygon.h"
+
+%include "Geometry/GeometryStream/GeometryStreamFactory.h"
+%include "Geometry/GeometryStream/GeometryStreamReader.h"
+%include "Geometry/GeometryStream/GeometryStreamWriter.h"
+%include "Geometry/GeometryFactoryAbstract.h"
+%include "Geometry/Fgf/Factory.h"
\ No newline at end of file

Added: trunk/Fdo/Python/Swig/Fdo/Main.i
===================================================================
--- trunk/Fdo/Python/Swig/Fdo/Main.i	                        (rev 0)
+++ trunk/Fdo/Python/Swig/Fdo/Main.i	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,58 @@
+//
+// Copyright (C) 2004-2007  Autodesk, Inc.
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// -------------------------------------------------------------
+//	Includes for the wrapper fdordbms_wrap.cpp file
+//	Description:	Insert these preprocessor commands at the
+//					beginning of the wrapper file.
+// -------------------------------------------------------------
+
+%{
+	#include "Fdo/PhysicalSchemaMappingCasts.h"
+%}
+
+// -------------------------------------------------------------
+//  Description:	Include the external SWIG modules
+//
+//  Notes:			The .i and .h files MUST be included
+//					in the order that is listed below.  This
+//					is very important for the SWIG code generator
+//					to read the definitions in the correct order.
+// -------------------------------------------------------------
+//
+ 
+// Define the common initialization routines for all FDO-based wrappers
+%include "Common/CommonInit.i"
+
+// Define typemaps, exceptions and pointer casts
+%include "Common/CommonTypemaps.i"
+%include "Fdo/FdoTypemaps.i"
+%include "Common/CommonExceptions.i"
+%include "cpointer.i"
+%include "Fdo/FdoPointercasts.i"
+
+// Import the GIS and FDO classes
+%include "Common/FdowStd.h"
+%include "Fdo/CommonIncludes.i"
+%include "Fdo/GeometryIncludes.i"
+%include "Fdo/FdoIncludes.i"
+
+// Import the utility classes
+%include "Common/FdoProxyConnectionManager.h"
+%include "Common/StringBuffer.h"
+%include "Fdo/PhysicalSchemaMappingCasts.h"
+

Added: trunk/Fdo/Python/UnitTest/Input/UnitTestConfig.ini
===================================================================
--- trunk/Fdo/Python/UnitTest/Input/UnitTestConfig.ini	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Input/UnitTestConfig.ini	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,12 @@
+[Connection]
+ConnectString=File=Input/SDFDatastore.sdf
+ProviderName=OSGeo.SDF.3.3
+[SDFFile]
+FileName=Input/SDFDatastore.sdf
+CoordinateSystemWKT=
+SpatialContextName=DefaultSpatialContext
+SpatialContextDescription=Default
+XYTolerance=0.0
+ZTolerance=0.0
+
+

Added: trunk/Fdo/Python/UnitTest/Input/clock.avi
===================================================================
(Binary files differ)


Property changes on: trunk/Fdo/Python/UnitTest/Input/clock.avi
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/Fdo/Python/UnitTest/Lib/SdfConnectionFactory.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Lib/SdfConnectionFactory.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Lib/SdfConnectionFactory.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,91 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+# Import Python libs
+import traceback
+import os.path
+import re
+
+# Import FDO libs
+from FDO import *
+
+class SdfConnectionFactory(object):
+	"""
+	A factory class used to create FdoIConnection instances
+	of SDF Provider connections
+	"""
+	def create():
+		"""
+		Creates an SDF connection object
+
+		Arguments:
+			None
+
+		Returns:	
+			An FdoIConnection object instance
+		"""		
+
+		oProvider = SdfConnectionFactory._getProvider("OSGeo.SDF.3.3")
+		oManager = FdoFeatureAccessManager.GetConnectionManager()
+		oConnection = oManager.CreateConnection(oProvider.GetName())
+		return oConnection
+
+	# Make create() as static method
+	create = staticmethod(create)
+
+
+	def _getProvider(sProviderName):
+		"""
+		Retrieves a FdoProvider instance for a FDO provider.
+		The provider name can be specified as a name, or
+		a regular expression
+
+		Arguments:
+			sProviderName (mandatory input)
+				- Name of the provider to get. Can also be a regular expression
+
+		Returns:
+			A list of FdoProvider instances that matches
+			the provider name or the regular expression
+		"""
+			
+		oRegistry = FdoFeatureAccessManager.GetProviderRegistry()
+		oRePattern = re.compile(sProviderName)
+		
+		try:
+			oProviders = oRegistry.GetProviders()
+			oSdfProvider = None
+	
+			# Interrogate the Provider oRegistry for the SDF oProvider
+			for index in range(oProviders.GetCount()):
+				oProvider = oProviders.GetItem(index)
+				if not oRePattern.match(oProvider.GetName()) is None:
+					oSdfProvider = oProvider
+					break
+	
+			if oSdfProvider is None:
+				raise RuntimeError("Cannot find SDF oProvider in the oProvider oRegistry")
+	
+			return oSdfProvider	
+		
+		finally:
+			del oRePattern
+
+	# Make _getProvider a static method
+	_getProvider = staticmethod(_getProvider)
+
+

Added: trunk/Fdo/Python/UnitTest/Lib/SdfFileCreationParams.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Lib/SdfFileCreationParams.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Lib/SdfFileCreationParams.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+from ConfigParser import *
+
+class SdfFileCreationParams(object):
+	fileName = ""
+	coordinateSystemWKT = ""
+	spatialContextDescription  = ""
+	spatialContextName  = ""
+	XYTolerance = 0
+	ZTolerance = 0
+	
+	def __init__(self, sFileName=None, sSectionName=None):
+		if sFileName is None:
+			return none
+
+		# Initialze the object through the .ini file
+		oConfig = ConfigParser()
+
+		try:
+			oConfig.read([sFileName])
+			self.fileName = oConfig.get(sSectionName, "FileName")
+			self.coordinateSystemWKT = oConfig.get(sSectionName, "CoordinateSystemWKT")
+			self.spatialContextName = oConfig.get(sSectionName, "SpatialContextName")
+			self.spatialContextDescription = oConfig.get(sSectionName, "SpatialContextDescription")
+			self.XYTolerance = float(oConfig.get(sSectionName, "XYTolerance"))
+			self.ZTolerance = float(oConfig.get(sSectionName, "ZTolerance"))
+
+		finally:
+			del oConfig
+
+

Added: trunk/Fdo/Python/UnitTest/Lib/SdfFileFactory.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Lib/SdfFileFactory.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Lib/SdfFileFactory.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,121 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+# Import Python libs
+import traceback
+import os.path
+from ConfigParser import *
+
+# Import FDO libs
+from SdfConnectionFactory import *
+from SdfFileCreationParams import *
+
+
+class SdfFileFactory(object):
+	def create(oParams, bOverwrite=False):	
+		"""
+		Creates an SDF file.
+
+		Arguments:
+			oParams (mandatory input):
+				A SdfFileCreationParams instance
+
+			bOverwrite (optional input):
+				If True, overwrites the SDF file, if it exists.
+				If False, any existing SDF file will not be overwritten.
+					If a SDF file exists, an exception is thrown.
+
+		Returns:
+			None
+		"""
+
+		# Delete the existing SDF file, if it exists
+		if bOverwrite:
+			if os.path.exists(oParams.fileName):
+				os.remove(oParams.fileName)			
+
+		# Use the SDF connection to create the SDF file
+		oConnection = SdfConnectionFactory.create()
+		oCmd = oConnection.CreateCommand(FdoCommandType_CreateDataStore)
+		oSCCmd = oConnection.CreateCommand(FdoCommandType_CreateSpatialContext)
+		
+		try:
+			oCmd = FdoICommandToFdoICreateDataStore(oCmd)
+			
+			oDictionary = oCmd.GetDataStoreProperties()
+
+			oPropertyNames, iPropertyNamesCount = oDictionary.GetPropertyNames()
+			for i in range (iPropertyNamesCount):
+				if oPropertyNames[i] == 'File': 
+					oDictionary.SetProperty(oPropertyNames[i], oParams.fileName)
+
+			oCmd.Execute()
+			
+			oDictionary.Release()
+			
+			oConnectionInfo = oConnection.GetConnectionInfo()
+			cConnectionProperties = oConnectionInfo.GetConnectionProperties()
+			cConnectionProperties.SetProperty('File', oParams.fileName)
+			oConnection.Open()
+
+			cConnectionProperties.Release()
+			oConnectionInfo.Release()
+			
+			oSCCmd = FdoICommandToFdoICreateSpatialContext(oSCCmd)
+			
+			oSCCmd.SetName(oParams.spatialContextName)
+			oSCCmd.SetDescription(oParams.spatialContextDescription)
+			oSCCmd.SetCoordinateSystemWkt(oParams.coordinateSystemWKT)
+			oSCCmd.SetXYTolerance(oParams.XYTolerance)
+			oSCCmd.SetZTolerance(oParams.ZTolerance)
+			
+			oSCCmd.Execute()
+
+		finally:
+			oCmd.Release()
+			oSCCmd.Release()
+			oConnection.Release()
+
+	create = staticmethod(create)
+
+
+	def createFromIni(sFileName, bOverwrite=False, sSectionName="SDFFile"):
+		"""
+		Creates an SDF file based on the parameters
+		found in a .ini file
+
+		Arguments:
+			sFileName (mandatory input):
+				The relative pathname of the .ini file
+
+			sSectionName (optional input):
+				The name of the .ini file section where the connection
+				params exist
+
+		Returns:
+			None
+		"""
+		params = SdfFileCreationParams(sFileName, sSectionName)
+		try:
+			SdfFileFactory.create(params, bOverwrite)	
+
+		finally:
+			del params 
+		
+
+	createFromIni = staticmethod(createFromIni)
+

Added: trunk/Fdo/Python/UnitTest/SetEnvironment.bat
===================================================================
--- trunk/Fdo/Python/UnitTest/SetEnvironment.bat	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/SetEnvironment.bat	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,10 @@
+:@echo off
+
+:: Add FDO to the PATH
+SET PATH=%PATH%;%FDO%\Python\UnitTests\Bin\Win32\Release;%FDO%\Python\Bin\Win32\Release
+
+:: Add _FDO dll and FDO.py to PYTHONPATH
+SET PYTHONPATH=%PYTHONPATH%;%PYTHON_HOME%;%PYTHON_HOME%\Lib;%FDO%\Python\Lib\Win32;%FDO%\Python\UnitTests\Lib;%FDO%\Python\Bin\Win32\Release
+
+:end
+exit /B 0


Property changes on: trunk/Fdo/Python/UnitTest/SetEnvironment.bat
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/UnitTest/Src/ApplySchemaTest.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Src/ApplySchemaTest.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Src/ApplySchemaTest.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,211 @@
+# File : \\otwqa\Providers\qa\tools\FdoPythonWrappers\UnitTests\lib\ApplySchemaTest.py
+#
+# Description: Defines the ApplySchema unit test class
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+# Import Python libs
+import unittest
+import traceback
+import string
+import os.path
+from ConfigParser import *
+import re
+
+# Import FDO libs
+from FDO import *
+from SdfConnectionFactory import *
+from SdfFileFactory import *
+
+
+G_INI_FILENAME="./input/UnitTestConfig.ini"
+
+
+class ApplySchemaTest(unittest.TestCase):
+	"""
+	Unit test for FDO Command classes.  
+
+	This class has the following dependencies:
+	1. A config file called input/UnitTestConfig.ini must exist
+	2. input/UnitTestConfig.ini must contain the following entries:
+
+		[Connection]
+		ConnectString=<A FDO connection string>
+		ProviderName=<An FDO provider name. Can also be a regular expression>
+
+	"""	
+	_oConfig = ConfigParser()	
+	_oConnection = None
+
+	def setUp(self):
+		"""
+		Initialize resources required by the test.
+		Creates, initializes and open a FdoIConnection
+
+		Arguments:
+			None
+
+		Returns:
+			none
+		"""
+
+		# Create the SDF file
+		SdfFileFactory.createFromIni(G_INI_FILENAME, True)
+
+		# Get a SDF connection
+		self._oConfig.read([G_INI_FILENAME])
+		self._oConnection = SdfConnectionFactory.create()		
+		
+		# Read the .ini file and configure the connection
+		sConnectString = self._oConfig.get("Connection", "ConnectString")
+		self._oConnection.SetConnectionString(sConnectString)
+		self._oConnection.Open()
+
+	
+	def testApplySchema(self):
+		"""Test the Apply Schema command against an SDF datasource"""
+		self.assertEquals(self._oConnection.GetConnectionState(), FdoConnectionState_Open)
+		
+		# Apply the schema to the datastore
+		oApplySchemaCmd = self._oConnection.CreateCommand(FdoCommandType_ApplySchema)
+		oApplySchemaCmd = FdoICommandToFdoIApplySchema(oApplySchemaCmd)
+		oApplySchemaCmd.SetFeatureSchema(self._createFeatureSchema("TestSchema"))
+		oApplySchemaCmd.Execute()		
+		oApplySchemaCmd.Release()		
+		
+		# Verify that the Feature Schema has been correctly created
+		oDescribeSchemaCmd = self._oConnection.CreateCommand(FdoCommandType_DescribeSchema)
+		oDescribeSchemaCmd = FdoICommandToFdoIDescribeSchema(oDescribeSchemaCmd)
+		self.assertEquals(oDescribeSchemaCmd.__class__.__name__, "FdoIDescribeSchema")
+		oSchemaCol = oDescribeSchemaCmd.Execute()
+		oDescribeSchemaCmd.Release()
+		self.assertEquals(oSchemaCol.GetCount(), 1)
+		
+		# Validate the properties of the schema
+		oSchema = oSchemaCol.GetItem(0)
+		self.assert_(oSchema.GetName(), 'TestSchema')		
+		
+		# Validate the classes in the schema
+		oClasses = oSchema.GetClasses()
+		self.assertEquals(oClasses.GetCount(), 2)
+		
+		# Validate the SewerPipe feature class
+		oClass = oClasses.FindItem("SewerPipe")
+		self.assert_(oClass.GetName(), 'SewerPipe')
+		self.assert_(oClass.GetQualifiedName(), 'TestSchema:SewerPipe')
+		
+		# Validate the properties of the SewerPipe feature class
+		oProperties = oClass.GetProperties()
+		self.assertEquals(oProperties.GetCount(), 4)		
+				
+		# Cleanup
+		oProperties.Release()
+		oClass.Release()		
+		oClasses.Release()
+		oSchema.Release()
+		oSchemaCol.Release()
+		
+
+	def _createFeatureSchema(self, sSchemaName):
+		"""Creates a FDO Feature schema instance"""
+		oNewSchema = FdoFeatureSchema.Create(sSchemaName, sSchemaName)
+		oClasses = oNewSchema.GetClasses()
+		
+		# Create the classes to add to the schema
+		# Note: if you add more classes here, you must update testApplySchema()
+		oClasses.Add(self._createFeatureClass("SewerPipe"))
+		oClasses.Add(self._createFeatureClass("WaterPipe"))				
+		oClasses.Release()
+		
+		return oNewSchema	
+	
+	
+	def _createFeatureClass(self, sClassName):
+		"""
+		Creates an FDO Feature class definition
+		
+		Note: if you add more properties here, you must update testApplySchema()
+		"""
+		
+		# Initialize a FdoFeatureclass instance
+		oNewClass = FdoFeatureClass.Create(sClassName, sClassName)
+		oProperties = oNewClass.GetProperties()
+		oIdentityProperties = oNewClass.GetIdentityProperties()
+		
+		# Create the identity property
+		oIdProperty = self._createDataProperty("FeatureId", FdoDataType_Int32)
+		oProperties.Add(oIdProperty)
+		oIdentityProperties.Add(oIdProperty)
+		oIdentityProperties.Release()
+		
+		# Create the properties for the class		
+		oProperties.Add(self._createDataProperty("Length", FdoDataType_Double))
+		oProperties.Add(self._createDataProperty("Diameter", FdoDataType_Double))
+		oProperties.Add(self._createDataProperty("Owner", FdoDataType_String))		
+			
+		oProperties.Release()
+		return oNewClass
+		
+		
+	def _createDataProperty(self, sPropertyName, enumDataType):
+		"""
+		Creates a simple data property.  Default characteristics, such as length
+		and scale are assigned.
+		
+		Arguments:
+			sPropertyName (mandatory input)
+				Name of the new property to create
+				
+			enumDataType (mandatory input)
+				A FdoDataType value
+				
+		Returns:
+			A FdoDataPropertyDefinition instance
+		
+		"""
+		oNewProperty = FdoDataPropertyDefinition.Create(sPropertyName, sPropertyName)
+		oNewProperty.SetDataType(enumDataType)
+		oNewProperty.SetNullable(True)
+		
+		if enumDataType == FdoDataType_String:
+			oNewProperty.SetLength(32)
+			
+		if enumDataType == FdoDataType_Decimal:
+			oNewProperty.SetPrecision(16)
+			oNewProperty.SetScale(4)
+			
+		return oNewProperty
+
+
+	def tearDown(self):
+		"""
+		Releases any resources created or connected during the test
+
+		Arguments:
+			None
+
+		Returns:
+			none
+		"""
+		# Close any open FdoIConnections
+		if not self._oConnection is None:
+			if self._oConnection.__class__.__name__ == 'FdoIConnection':
+				self._oConnection.Close()
+				self._oConnection.Release()
+		print "\nTesting ApplySchemaTest..."
+
+

Added: trunk/Fdo/Python/UnitTest/Src/CapabilitiesTest.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Src/CapabilitiesTest.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Src/CapabilitiesTest.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,81 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+import traceback
+import string
+import os.path
+from FDO import *
+import unittest
+
+class CapabilitiesTest(unittest.TestCase):
+	"""
+	Unit test for handling FDO capabilities in Python
+	"""
+	def testCapabilities(self):
+		print "\nTesting CapabilitiesTest:Capabilities..."
+
+		# ArgumentDefinition
+		argue1 = FdoArgumentDefinition.Create("Arg1", "Argument 1 (Boolean)", FdoDataType_Boolean)
+		argue2 = FdoArgumentDefinition.Create("Arg2", "Argument 2 (Byte)", FdoDataType_Byte);
+		argue3 = FdoArgumentDefinition.Create("Arg3", "Argument 3 (BLOB)", FdoDataType_BLOB);
+		argue4 = FdoArgumentDefinition.Create("Arg4", "Argument 4 (Int64)", FdoDataType_Int64);
+
+		self.assert_(argue1.GetName(), "Arg1")
+		self.assert_(argue1.GetDescription(), "Argument 1 (Boolean)")
+		self.assertEquals(argue1.GetDataType(), FdoDataType_Boolean)
+		self.assert_(argue2.GetName(), "Arg2")
+		self.assert_(argue2.GetDescription(), "Argument 2 (Byte)")
+		self.assertEquals(argue2.GetDataType(), FdoDataType_Byte)
+		self.assert_(argue3.GetName(), "Arg3")
+		self.assert_(argue3.GetDescription(), "Argument 3 (BLOB)")
+		self.assertEquals(argue3.GetDataType(), FdoDataType_BLOB)
+		self.assert_(argue4.GetName(), "Arg4")
+		self.assert_(argue4.GetDescription(), "Argument 4 (Int64)")
+		self.assertEquals(argue4.GetDataType(), FdoDataType_Int64)
+
+		# ArgumentDefinitionCollection
+		collect = FdoArgumentDefinitionCollection.Create()
+		collect.Add(argue1)
+		collect.Add(argue2)
+		collect.Add(argue3)
+		collect.Add(argue4)
+
+		# FunctionDefinition
+		fun = FdoFunctionDefinition.Create("Function", "Test of FdoFunctionDefinition", FdoDataType_Double, collect)
+
+		# ReadOnlyArgumentDefinitionCollection
+		readonlyargues = fun.GetArguments()
+		count = readonlyargues.GetCount()
+		self.assertEquals(count, 4)
+
+		arg = readonlyargues.GetItem(0)
+		self.assert_(arg.GetName, argue1)
+
+		self.assert_(readonlyargues.Contains(argue1))
+
+		arguement = readonlyargues.GetItem("Arg2");
+		self.assert_(arguement.GetName(), "Arg2");
+
+		self.assert_(fun.GetReturnType(), FdoDataType_Double);
+		self.assert_(fun.GetName(), "Function");
+		self.assert_(fun.GetDescription(), "Test of FdoFunctionDefinition");
+
+		argue1.Release()
+		argue2.Release()
+		argue3.Release()
+		argue4.Release()
+		collect.Release()

Added: trunk/Fdo/Python/UnitTest/Src/ClientServicesTest.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Src/ClientServicesTest.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Src/ClientServicesTest.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,74 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+import traceback
+import string
+import os.path
+import os
+
+from FDO import *
+
+import unittest
+
+class ClientServicesTest(unittest.TestCase):
+	"""
+	Unit test for the ClientServices classes.  The Provider Registry and
+	the FdoIConnections are tested.
+
+	Additionally, the FdoProxyConnectionManager utility class is tested
+	"""
+
+	def testClientServices(self):
+		print "\nTesting ClientServicesTest:ClientServices..."
+		"""FeatureAccessManager accessor functions should return the correct type"""
+		manager = FdoFeatureAccessManager.GetConnectionManager()
+		registry = FdoFeatureAccessManager.GetProviderRegistry()
+		providerCollection = registry.GetProviders()
+        
+		# Verify the instance classnames
+		self.assert_(manager.__class__.__name__ == "IConnectionManager")
+		self.assert_(registry.__class__.__name__ == "IProviderRegistry")
+		self.assert_(providerCollection.__class__.__name__ == "FdoProviderCollection")
+
+
+	def testConnectionCreation(self):
+		print "\nTesting ClientServicesTest:ConnectionCreation..."
+		"""Check that FdoIConnections can be created correctly"""
+		manager = FdoFeatureAccessManager.GetConnectionManager()
+		registry = FdoFeatureAccessManager.GetProviderRegistry()
+		providerCollection = registry.GetProviders()
+		
+		# Iterate through each provider; instantiate the provider
+		for index in range(providerCollection.GetCount()):
+			provider = providerCollection.GetItem(index)
+
+			name = provider.GetName()
+			self.assert_( provider.__class__.__name__ == 'FdoProvider')
+			
+			# Unable to load the SDF provider for some reason.
+			if name == "OSGeo.SDF.3.3":
+				connection = manager.CreateConnection(name)
+				self.assert_(connection.__class__.__name__ == 'FdoIConnection')
+				self.assert_(connection.Release() == 0)
+				
+				connection = FdoProxyConnectionManager.CreateConnection(name)
+				self.assert_(connection.__class__.__name__ == 'FdoIConnection')
+				self.assert_(connection.Release() == 0)
+					
+				# Check if the library exists in the path
+				self.assert_(provider.GetLibraryPath() == '.\SDFProvider.dll')
+				
\ No newline at end of file

Added: trunk/Fdo/Python/UnitTest/Src/CommandTest.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Src/CommandTest.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Src/CommandTest.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,121 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+# Import Python libs
+import unittest
+import traceback
+import string
+import os.path
+from ConfigParser import *
+import re
+
+# Import FDO libs
+from FDO import *
+from SdfConnectionFactory import *
+from SdfFileFactory import *
+
+
+G_INI_FILENAME="./Input/UnitTestConfig.ini"
+
+
+class CommandTest(unittest.TestCase):
+	"""
+	Unit test for FDO Command classes.  
+
+	This class has the following dependencies:
+	1. A config file called input/UnitTestConfig.ini must exist
+	2. input/UnitTestConfig.ini must contain the following entries:
+
+		[Connection]
+		ConnectString=<A FDO connection string>
+		ProviderName=<An FDO provider name. Can also be a regular expression>
+
+	"""	
+	_oConfig = ConfigParser()	
+	_oConnection = None
+
+	def setUp(self):
+		"""
+		Initialize resources required by the test.
+		Creates, initializes and open a FdoIConnection
+
+		Arguments:
+			None
+
+		Returns:
+			none
+		"""
+
+		# Create the SDF file
+		SdfFileFactory.createFromIni(G_INI_FILENAME, True)
+
+		# Get a SDF connection
+		self._oConfig.read([G_INI_FILENAME])
+		self._oConnection = SdfConnectionFactory.create()
+		self.assertEquals(self._oConnection.__class__.__name__, "FdoIConnection")
+		
+		# Read the .ini file and configure the connection
+		sConnectString = self._oConfig.get("Connection", "ConnectString")
+		self._oConnection.SetConnectionString(sConnectString)
+		self._oConnection.Open()
+
+	
+	def testSelectCommandCreation(self):
+		"""Test the creation of the select command"""
+		cmd = self._oConnection.CreateCommand(FdoCommandType_Select)
+		self.assertEquals(cmd.__class__.__name__, "FdoICommand")
+		cmd = FdoICommandToFdoISelect(cmd)
+		self.assertEquals(cmd.__class__.__name__, "FdoISelect")
+		self.assertEquals(cmd.Release(), 0)
+		print "\nTesting CommandTest:SelectCommandCreation..."
+
+
+	def testApplySchemaCommandCreation(self):
+		"""Test the creation of the Apply Schema command"""
+		cmd = self._oConnection.CreateCommand(FdoCommandType_ApplySchema)
+		self.assertEquals(cmd.__class__.__name__, "FdoICommand")
+		cmd = FdoICommandToFdoIApplySchema(cmd)
+		self.assertEquals(cmd.__class__.__name__, "FdoIApplySchema")
+		self.assertEquals(cmd.Release(), 0)
+		print "\nTesting CommandTest:ApplySchemaCommandCreation..."
+
+	def testInsertCommandCreation(self):
+		"""Test the creation of the Insert command"""
+		cmd = self._oConnection.CreateCommand(FdoCommandType_Insert)
+		self.assertEquals(cmd.__class__.__name__, "FdoICommand")
+		cmd = FdoICommandToFdoIInsert(cmd)
+		self.assertEquals(cmd.__class__.__name__, "FdoIInsert")
+		self.assertEquals(cmd.Release(), 0)
+		print "\nTesting CommandTest:InsertCommandCreation..."
+
+
+	def tearDown(self):
+		"""
+		Releases any resources created or connected during the test
+
+		Arguments:
+			None
+
+		Returns:
+			none
+		"""
+		# Close any open FdoIConnections
+		if not self._oConnection is None:
+			self._oConnection.Close()
+			self._oConnection.Release()
+
+

Added: trunk/Fdo/Python/UnitTest/Src/LOBTest.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Src/LOBTest.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Src/LOBTest.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,39 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+import traceback
+import string
+import os.path
+from FDO import *
+import unittest
+
+class LOBTest(unittest.TestCase):
+	"""
+	Unit test for handling binary LOB values in Python
+	"""
+	def testLOBHandling(self):
+		fileStream1 = FdoIoFileStream.Create( "input/clock.avi", "rb" )
+		fileReader1 = FdoIoByteStreamReader.Create( fileStream1 )	
+
+		# Initialize the 'data' property value with the filestream reader
+		propertyValue = FdoPropertyValue.Create()
+		propertyValue.SetName("data")
+		propertyValue.SetStreamReader( FdoIoByteStreamReaderToFdoIStreamReader(fileReader1) );
+
+		streamReader = propertyValue.GetStreamReader()
+		assert streamReader.GetType() == FdoStreamReaderType_Byte
+		print "\nTesting LOBTest..."

Added: trunk/Fdo/Python/UnitTest/Src/StringBufferTest.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Src/StringBufferTest.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Src/StringBufferTest.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+from FDO import *
+import unittest
+
+class StringBufferTest(unittest.TestCase):
+	"""
+	Unit test for the StringBuffer utility class
+	"""
+	def testStringBufferBasics(self):
+		buffer = StringBuffer()
+		self.assert_( buffer.getLength() == 0)
+		self.assert_( buffer.getCapacity() == 32)
+
+		buffer.ensureCapacity(1000)
+		self.assert_( buffer.getCapacity() == 1000)
+
+		buffer.append("Hello world")
+		self.assert_( buffer.toString() == "Hello world")
+		self.assert_( buffer.getLength() == 11)
+
+		buffer.insert(6, "Happy ")
+		self.assert_( buffer.toString() == "Hello Happy world")
+		self.assert_( buffer.getLength() == 17)
+
+		del buffer
+		print "\nTesting StringBufferTest..."
+	

Added: trunk/Fdo/Python/UnitTest/Src/TypeMapTest.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Src/TypeMapTest.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Src/TypeMapTest.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,262 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+
+import traceback
+import string
+import os.path
+import sys
+from FDO import *
+import unittest
+
+class TypeMapTest(unittest.TestCase):
+	"""
+	Unit test for SWIG typemaps.  The typemaps handle the marshalling
+	of C++ datatypes into the Python environment.  The marshalling
+	includes:
+		- converting wchar_t* into a Python string
+		- converting enumerations into Python numbers
+		- converting int* to Python lists, whose first item is a tuple of
+		immutable string values, and the second item is the size of the tuple
+		- converting wchar_t** to Python lists, whose first item is a tuple
+		of strings, and the second item is the size of the tuple
+	"""
+	def testPrimitives(self):
+		"""
+		Test the marshalling of primitives back and forth between
+		Python and C++
+		"""
+		
+		# Check doubles
+		doubleVal = FdoDoubleValue.Create(1234.123212)
+		self.assert_(doubleVal.GetDouble() == 1234.123212)
+		doubleVal.Release()
+
+		# Check int 64s
+		int64Val = FdoInt64Value.Create()
+		int64Val.SetInt64(123)
+		self.assert_(int64Val.GetInt64() == 123)
+		int64Val.Release()
+		
+		# Check int 32s
+		int32Val = FdoInt32Value.Create()
+		int32Val.SetInt32(12345)
+		self.assert_(int32Val.GetInt32() == 12345)
+		int32Val.Release()
+	
+		# Check int 16s	
+		int16Val = FdoInt16Value.Create()
+		int16Val.SetInt16(12345)
+		self.assert_(int16Val.GetInt16() == 12345)
+		int16Val.Release()
+		
+		# Check utf-8 strings
+		stringVal = FdoStringValue.Create()
+		stringVal.SetString("Hello World")
+		self.assert_(stringVal.ToString() == "'Hello World'")
+		stringVal.Release()
+		
+		# Check unicode strings
+		stringVal = FdoStringValue.Create()
+		stringVal.SetString(u"Andr\202 Encyclop\221dia")		
+		uString = stringVal.ToString().encode('ascii', 'xmlcharrefreplace')		
+		self.assert_(uString == "'Andr&#130; Encyclop&#145;dia'")
+		stringVal.Release()
+		print "\nTesting TypeMapTest:Primitives..."
+		
+	def testExceptions(self):
+		"""
+		Verify the marshalling of FdoException objects
+		"""
+		try:
+			print "\nTesting TypeMapTest:Exceptions..."
+			FdoProxyConnectionManager.CreateConnection("This doesn't exist")
+		except:
+			excType, excValue, excTraceback = sys.exc_info()			
+			self.assert_(str(excType) == "FDOw.FdoException")			
+			return None
+			
+		# An exception was expected here.  Raise an exception
+		raise AssertionError("Exception expected")
+
+	def testEnumerations(self):
+		"""
+		Test the marshalling of FDO enumerated types into
+		Python integers.  These are a spotcheck for
+		most of the FDO enumerated types.
+		"""	
+		self.assert_(FdoDataType_Boolean == 0)
+		self.assert_(FdoDataType_Int32 == 6	)
+		self.assert_(FdoConnectionState_Closed == 1)
+		self.assert_(FdoClassType_NetworkLinkClass == 5)
+		self.assert_(FdoGeometryType_MultiCurveString == 12)
+		print "\nTesting TypeMapTest:Enumerations..."
+
+
+	def testPrimitiveArrays(self):
+		"""
+		Test the marshalling of int* arrays into Python lists.
+		Most of these typemaps are required in the FdoCapabilities API
+		"""	
+		provider = self._getSdfProvider()
+		connection = FdoProxyConnectionManager.CreateConnection(provider.GetName())
+
+		# Check the typemapping for FdoICommandCapabilities::GetCommands()
+		cmdCapabilities = connection.GetCommandCapabilities()
+		self._validateIntList(cmdCapabilities.GetCommands())
+		cmdCapabilities.Release()
+
+		# Check the typemapping for FdoIConnectionCapabilities::GetLockTypes()
+		# and FdoIConnectionCapabilities::GetSpatialContextTypes() 
+		conCapabilities = connection.GetConnectionCapabilities()
+		self._validateIntList(conCapabilities.GetLockTypes())
+		self._validateIntList(conCapabilities.GetSpatialContextTypes())
+		conCapabilities.Release() 	
+
+		# Check the typemapping for FdoIExpressionCapabilities::GetExpressionTypes()
+		expCapabilities = connection.GetExpressionCapabilities()
+		self._validateIntList(expCapabilities.GetExpressionTypes())
+		expCapabilities.Release()
+		
+		# Check the typemapping for FdoIFilterCapabilities::GetConditionTypes()
+		# and FdoIFilterCapabilities::GetDistanceOperations()
+		filterCapabilities = connection.GetFilterCapabilities()
+		self._validateIntList(filterCapabilities.GetConditionTypes())
+		self._validateIntList(filterCapabilities.GetDistanceOperations())
+		self._validateIntList(filterCapabilities.GetSpatialOperations())
+		filterCapabilities.Release()
+	
+		# Check the typemapping for FdoIGeometryCapabilities::GetGeometryTypes()
+		# and FdoIGeometryCapabilities::GetGeometryComponentTypes()
+		geoCapabilities = connection.GetGeometryCapabilities()
+		self._validateIntList(geoCapabilities.GetGeometryTypes())
+		self._validateIntList(geoCapabilities.GetGeometryComponentTypes())
+		geoCapabilities.Release()
+
+		# Check the typemapping for FdoISchemaCapabilities::GetClassTypes()
+		# and FdoISchemaCapabilities::GetDataTypes()
+		schemaCapabilities = connection.GetSchemaCapabilities()
+		self._validateIntList(schemaCapabilities.GetClassTypes())
+		self._validateIntList(schemaCapabilities.GetDataTypes())
+		self._validateIntList(schemaCapabilities.GetSupportedAutoGeneratedTypes())
+		schemaCapabilities.Release()
+		
+		# Check the typemapping for FdoIConnectionPropertyDictionary::GetPropertyNames()		
+		connectionInfo = connection.GetConnectionInfo()
+		properties = connectionInfo.GetConnectionProperties()
+		
+		# !!! The following test is failing !!!
+		self._validateUnicodeList(properties.GetPropertyNames())
+		
+		properties.Release()
+		connectionInfo.Release()
+		print "\nTesting TypeMapTest:PrimitiveArrays..."
+		
+
+	def _validateIntList(self, capabilityList):
+		"""
+		Validate the output from the FDO capabilities API.  There is a 
+		'family' of methods with a signature like this:
+
+		GisInt* GetSomething(GisInt32& length)
+
+		This output consists of two things:
+			- a C++ 'array' of integers or enumerations
+			- the length of the array
+
+		The typemapping in Python will translate the output into
+		a two-element List with two things:
+			- a Python Tuple containing the contents of the C++ array
+			- the length of the array as a number
+
+		This function validates that the first item in the list is a
+		Tuple, and the second value is an integer.
+
+		Arguments:
+			capabilityList - the list created by an FDO Get... function
+
+		Returns:
+			None
+
+		Raises an exception is there's a problem
+		"""
+		self.assert_(isinstance(capabilityList, list))
+		self.assert_(isinstance(capabilityList[0], tuple))
+		self.assert_(isinstance(capabilityList[1], int))
+		self.assert_(len(capabilityList[0]) == capabilityList[1])
+		
+
+	def _validateUnicodeList(self, capabilityList):
+		"""
+		Validate the output from the FDO capabilities API.
+		There is a  'family' of methods with a signature like this:
+
+		wchar_t** GetSomething(GisInt32& length)
+
+		This output consists of two things:
+			- a C++ 'array' of wide char strings
+			- the length of the array
+
+		The typemapping in Python will translate the output into
+		a two-element List with two things:
+			- a Python Tuple containing the contents of the C++ array
+			- the length of the array as a number
+
+		This function validates that the first item in the list is a
+		Tuple, and the second value is an integer.
+
+		Arguments:
+			capabilityList - the list created by an FDO Get... function
+
+		Returns:
+			None
+
+		Raises an exception is there's a problem
+		"""		
+		self.assert_(isinstance(capabilityList, list))
+		self.assert_(isinstance(capabilityList[0], tuple))				
+		self.assert_(isinstance(capabilityList[1], int))
+		self.assert_(len(capabilityList[0]) == capabilityList[1])
+		
+		# If the capability list has at least one item, check the type
+		if capabilityList[1] > 0:
+			self.assert_(isinstance(capabilityList[0][0], unicode))
+
+
+	def _getSdfProvider(self):
+		"""
+		Returns an instance of the SDF provider.
+		"""
+
+		retVal = None
+
+		registry = FdoFeatureAccessManager.GetProviderRegistry()
+		providers = registry.GetProviders()
+
+		# Iterate through the provider registry, and find
+		# providers with 'Sdf' in their name
+		for index in range(providers.GetCount()):
+			provider = providers.GetItem(index)
+
+			if string.find(provider.GetName(), "OSGeo.SDF.3.3") > -1:
+				retVal = provider
+				break
+	
+		if provider is None:
+			raise RuntimeError("Cannot find the SDF provider")
+
+		return provider

Added: trunk/Fdo/Python/UnitTest/Src/main.py
===================================================================
--- trunk/Fdo/Python/UnitTest/Src/main.py	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/Src/main.py	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2004-2007  Autodesk, Inc.
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+# Import Python libs
+import sys
+import traceback
+import unittest
+
+# Import unit tests
+from StringBufferTest import *
+from ClientServicesTest import *
+from TypeMapTest import *
+from LOBTest import *
+from ApplySchemaTest import *
+from CommandTest import *
+from CapabilitiesTest import *
+
+if __name__ == "__main__":
+	suite = unittest.TestSuite()
+	suite.addTest(StringBufferTest)
+	suite.addTest(ClientServicesTest)
+	suite.addTest(TypeMapTest)
+	suite.addTest(LOBTest)
+	suite.addTest(ApplySchemaTest)
+	suite.addTest(CommandTest)
+	suite.addTest(CapabilitiesTest)
+
+	unittest.main()
+

Added: trunk/Fdo/Python/UnitTest/UnitTests.cmd
===================================================================
--- trunk/Fdo/Python/UnitTest/UnitTests.cmd	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/UnitTests.cmd	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,61 @@
+ at setlocal
+echo off
+
+::
+:: Copyright (C) 2004-2007  Autodesk, Inc.
+:: 
+:: This library is free software; you can redistribute it and/or
+:: modify it under the terms of version 2.1 of the GNU Lesser
+:: General Public License as published by the Free Software Foundation.
+:: 
+:: This library is distributed in the hope that it will be useful,
+:: but WITHOUT ANY WARRANTY; without even the implied warranty of
+:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+:: Lesser General Public License for more details.
+:: 
+:: You should have received a copy of the GNU Lesser General Public
+:: License along with this library; if not, write to the Free Software
+:: Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+::
+
+:: Check for the required files and directories
+if NOT exist %FDO%\Python\Lib\Win32 GOTO NO_WRAPPERS
+if NOT exist %FDO%\Python\Bin\Win32\Release\_FDO.dll GOTO NO_WRAPPERS
+if NOT exist %FDO%\Python\Lib\Win32\FDO.py GOTO NO_WRAPPERS
+if NOT exist %FDO%\Unmanaged\bin\win32\Release GOTO NO_FDO_SDK
+
+:: Set Environment
+call .\SetEnvironment.bat
+
+:: Display the current environment
+echo Script: unittest.cmd
+echo ---------------------------------------------------------------------
+echo Using the following environment:
+echo FDO:                %FDO%
+echo PYTHON_HOME:        %PYTHON_HOME%
+echo PYTHONPATH:         %PYTHONPATH%
+echo ---------------------------------------------------------------------
+
+:: Execute the unit test script
+python Src/main.py
+GOTO END
+
+:: Show error message - FDO wrapper DLLs are missing
+:NO_WRAPPERS
+echo Script: unittest.cmd
+echo -------------------------------------------------------------------------
+echo This script requires the FDO and FDO Python Wrapper DLLs to exist
+GOTO END
+
+
+:: Show error message - FDO is missing
+:NO_FDO_SDK
+echo Script: unittest.cmd
+echo -------------------------------------------------------------------------
+echo This script requires FDO to be built in Release Mode. Please rebuild FDO
+echo before running the unit tests
+GOTO END
+
+
+:END
+echo Done.


Property changes on: trunk/Fdo/Python/UnitTest/UnitTests.cmd
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Fdo/Python/UnitTest/providers.xml
===================================================================
--- trunk/Fdo/Python/UnitTest/providers.xml	                        (rev 0)
+++ trunk/Fdo/Python/UnitTest/providers.xml	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<FeatureProviderRegistry>
+  <FeatureProvider>
+    <Name>OSGeo.SDF.3.3</Name>
+    <DisplayName>OSGeo FDO Provider for SDF</DisplayName>
+    <Description>Read/write access to Autodesk's spatial database format, a file-based personal geodatabase that supports multiple features/attributes, spatial indexing, and file-locking.</Description>
+    <IsManaged>False</IsManaged>
+    <Version>3.3.0.0</Version>
+    <FeatureDataObjectsVersion>3.3.0.0</FeatureDataObjectsVersion>
+    <LibraryPath>.\SDFProvider.dll</LibraryPath>
+  </FeatureProvider>
+  <FeatureProvider>
+    <Name>OSGeo.SHP.3.3</Name>
+    <DisplayName>OSGeo FDO Provider for SHP</DisplayName>
+    <Description>Read/write access to spatial and attribute data in an ESRI SHP file.</Description>
+    <IsManaged>False</IsManaged>
+    <Version>3.3.0.0</Version>
+    <FeatureDataObjectsVersion>3.3.0.0</FeatureDataObjectsVersion>
+    <LibraryPath>.\SHPProvider.dll</LibraryPath>
+  </FeatureProvider>
+</FeatureProviderRegistry>

Added: trunk/Fdo/Python/build.cmd
===================================================================
--- trunk/Fdo/Python/build.cmd	                        (rev 0)
+++ trunk/Fdo/Python/build.cmd	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,78 @@
+ at echo off
+ at setlocal
+
+::
+:: Copyright (C) 2004-2007  Autodesk, Inc.
+:: 
+:: This library is free software; you can redistribute it and/or
+:: modify it under the terms of version 2.1 of the GNU Lesser
+:: General Public License as published by the Free Software Foundation.
+:: 
+:: This library is distributed in the hope that it will be useful,
+:: but WITHOUT ANY WARRANTY; without even the implied warranty of
+:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+:: Lesser General Public License for more details.
+:: 
+:: You should have received a copy of the GNU Lesser General Public
+:: License along with this library; if not, write to the Free Software
+:: Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+::
+:: Description: Build the Windows version of the FDO Phython wrappers.  This script assumes
+::              that the following software packages are installed:
+::              - Microsoft Visual Studio .NET 2002
+::              - SWIG 1.3.31
+::              - Python 2.4.4
+::  
+::  NOTE: The following environment variables must be set:
+::              - PYTHON_HOME: home directory of Python (e.g. c:\python24)
+::              - SWIG_HOME:   home directory of SWIG (e.g. c:\swig)
+::
+
+:: Check for the required environment variables
+if NOT defined PYTHON_HOME        goto NO_ENV_VARS
+if NOT defined SWIG_HOME          goto NO_ENV_VARS
+
+:: Check that the required files exist
+if NOT exist "%PYTHON_HOME%\python.exe" goto NO_PYTHON_LIB
+if NOT exist "%SWIG_HOME%\swig.exe" goto NO_SWIG
+set PATH=%windir%\system32;%windir%;%PATH%
+
+:: Compile the DLLs
+echo %0: Build FDO Python Wrappers
+msbuild PythonWrappers.sln /t:"rebuild" /p:Configuration="Release" /p:Platform="Win32" /nologo /consoleloggerparameters:NoSummary
+SET FDOERROR=%errorlevel%
+if "%FDOERROR%"=="1" goto error
+goto END
+
+:COMPILE_FAIL
+echo %0: ERROR: Compile failed
+echo %0: View build log at Fdo\Python\Lib\Win32\Release\Intermediate\BuildLog.htm
+exit /B 1
+
+:NO_ENV_VARS
+echo This script requires the following environment variables to be set:
+if not defined PYTHON_HOME  set PYTHON_HOME=
+if not defined SWIG_HOME    set SWIG_HOME=
+
+echo ------------ ------------------------------------- ------------------------
+echo NAME         DESCRIPTION                   	    CURRENT VALUE
+echo ------------ ------------------------------------- ------------------------
+echo PYTHON_HOME  home directory of python              %PYTHON_HOME%
+echo SWIG_HOME    home directory of SWIG                %SWIG_HOME%
+echo ------------ ------------------------------------- ------------------------
+echo Build aborted.
+goto END
+
+:NO_PYTHON_LIB
+echo %PYTHON_HOME%\python.exe not found. 
+echo Build aborted.
+goto END
+
+:NO_SWIG
+echo %SWIG_HOME%\swig.exe not found. 
+echo Build aborted.
+goto END
+
+:END
+exit /B 0
+


Property changes on: trunk/Fdo/Python/build.cmd
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/Fdo/build.bat
===================================================================
--- trunk/Fdo/build.bat	2007-03-12 19:26:12 UTC (rev 2681)
+++ trunk/Fdo/build.bat	2007-03-13 23:42:45 UTC (rev 2682)
@@ -27,6 +27,7 @@
 SET FDOLIBPATHFDO=%cd%\Fdo\Lib
 SET FDODOCPATHFDO=%cd%\Fdo\Docs
 SET DOCENABLEFDO=skip
+SET PYTHONENABLE=skip
 SET FDOERROR=0
 
 :study_params
@@ -47,6 +48,9 @@
 if "%1"=="-d"       goto get_docs
 if "%1"=="-docs"    goto get_docs
 
+if "%1"=="-p"       goto get_python
+if "%1"=="-python"  goto get_python
+
 goto custom_error
 
 :get_docs
@@ -55,6 +59,12 @@
 if "%2"=="skip" goto next_param
 goto custom_error
 
+:get_python
+SET PYTHONENABLE=%2
+if "%2"=="build" goto next_param
+if "%2"=="skip" goto next_param
+goto custom_error
+
 :get_conf
 SET TYPEBUILDFDO=%2
 if "%2"=="release" goto next_param
@@ -67,6 +77,7 @@
 if "%2"=="build" goto next_param
 if "%2"=="buildinstall" goto next_param
 if "%2"=="clean" goto next_param
+if "%2"=="builddocsonly" goto next_param
 goto custom_error
 
 :get_path
@@ -93,6 +104,7 @@
 
 if "%TYPEACTIONFDO%"=="build" goto start_exbuild
 if "%TYPEACTIONFDO%"=="clean" goto start_exbuild
+if "%TYPEACTIONFDO%"=="builddocsonly" goto start_exbuild
 if not exist "%FDOINSPATHFDO%" mkdir "%FDOINSPATHFDO%"
 if not exist "%FDOBINPATHFDO%" mkdir "%FDOBINPATHFDO%"
 if not exist "%FDOINCPATHFDO%" mkdir "%FDOINCPATHFDO%"
@@ -101,14 +113,28 @@
 
 :start_exbuild
 if "%TYPEACTIONFDO%"=="clean" SET MSACTIONFDO=Clean
+if "%TYPEACTIONFDO%"=="builddocsonly" goto generate_docs
 if "%TYPEACTIONFDO%"=="install" goto install_files
 
 echo %MSACTIONFDO% %TYPEBUILDFDO% Fdo dlls
 msbuild FDO.sln /t:%MSACTIONFDO% /p:Configuration=%TYPEBUILDFDO% /p:Platform="Win32" /nologo /consoleloggerparameters:NoSummary
 SET FDOERROR=%errorlevel%
 if "%FDOERROR%"=="1" goto error
+
+:rebuild_python
+if "%PYTHONENABLE%"=="skip" goto finish_build
+if "%TYPEACTIONFDO%"=="clean" goto finish_build
+if "%TYPEBUILDFDO%"=="debug" goto finish_build
+if not exist Python\build.cmd goto end
+pushd Python
+call build.cmd
+popd
+if "%FDOERROR%"=="1" goto error
+
+:finish_build
 if "%TYPEACTIONFDO%"=="build" goto generate_docs
 if "%TYPEACTIONFDO%"=="clean" goto end
+if "%TYPEACTIONFDO%"=="builddocsonly" goto generate_docs
 
 :install_files
 echo copy FDO %TYPEBUILDFDO% output files
@@ -124,6 +150,7 @@
 copy /y "Unmanaged\Lib\Win32\%TYPEBUILDFDO%\FDO.lib" "%FDOLIBPATHFDO%"
 copy /y "Unmanaged\Lib\Win32\%TYPEBUILDFDO%\FDOCommon.lib" "%FDOLIBPATHFDO%"
 copy /y "Unmanaged\Lib\Win32\%TYPEBUILDFDO%\FDOGeometry.lib" "%FDOLIBPATHFDO%"
+copy /y "Python\Lib\Win32\FDO.py" "%FDOLIBPATHFDO%"
 cscript //Nologo //job:install ../preparebuilds.wsf
 
 echo copy FDO header files
@@ -131,9 +158,8 @@
 del /F /Q "%FDOINCPATHFDO%\FdoSpatial.h"
 rmdir /S /Q "%FDOINCPATHFDO%\Spatial"
 
-
 :generate_docs
-if "%DOCENABLEFDO%"=="skip" goto install_docs
+if not "%DOCENABLEFDO%"=="build" goto install_docs
 echo Creating FDO Unmanaged and Managed html and chm API documentation
 if exist "Docs\HTML\FDO_API" rmdir /S /Q "Docs\HTML\FDO_API"
 if exist "Docs\HTML\FDO_API_managed" rmdir /S /Q "Docs\HTML\FDO_API_managed"
@@ -148,6 +174,9 @@
 
 :install_docs
 if "%TYPEACTIONFDO%"=="build" goto end
+if "%TYPEACTIONFDO%"=="clean" goto end
+if "%TYPEACTIONFDO%"=="builddocsonly" goto end
+
 pushd Docs\doc_src
 if exist "%FDODOCPATHFDO%\HTML\FDO_API" rmdir /S /Q "%FDODOCPATHFDO%\HTML\FDO_API"
 if exist "%FDODOCPATHFDO%\HTML\FDO_API_managed" rmdir /S /Q "%FDODOCPATHFDO%\HTML\FDO_API_managed"
@@ -189,13 +218,23 @@
 echo The command is not recognized.
 echo Please use the format:
 :help_show
-echo **************************************************************************
-echo build.bat [-h] [-o=OutFolder] [-c=BuildType] [-a=Action] [-d=BuildDocs]
+echo ********************************************************************************
+echo build.bat [-h]
+echo           [-o=OutFolder]
+echo           [-c=BuildType]
+echo           [-a=Action]
+echo           [-d=BuildDocs]
+echo           [-p=BuildPythonWrappers]
 echo *
-echo Help:           -h[elp]
-echo OutFolder:      -o[utpath]=destination folder for binaries
-echo BuildType:      -c[onfig]=release(default), debug
-echo Action:         -a[ction]=build(default), buildinstall, install, clean
-echo BuildDocs:      -d[ocs]=skip(default), build
-echo **************************************************************************
+echo Help:                  -h[elp]
+echo OutFolder:             -o[utpath]=destination folder for binaries
+echo BuildType:             -c[onfig]=release(default), debug
+echo Action:                -a[ction]=build(default), 
+echo                                  buildinstall, 
+echo                                  install, 
+echo                                  clean, 
+echo                                  builddocsonly, 
+echo BuildDocs:             -d[ocs]=skip(default), build
+echo BuildPythonWrappers:   -p[ython]=skip(default), build
+echo ********************************************************************************
 exit /B 0
\ No newline at end of file

Modified: trunk/License_README.txt
===================================================================
--- trunk/License_README.txt	2007-03-12 19:26:12 UTC (rev 2681)
+++ trunk/License_README.txt	2007-03-13 23:42:45 UTC (rev 2682)
@@ -534,7 +534,7 @@
 DEALINGS IN THE SOFTWARE.
 
 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-FDO amd CppUnit are each licensed under the GNU Lesser General 
+FDO, GSAR and CppUnit are each licensed under the GNU Lesser General 
 Public License.
 
 GNU Lesser General Public License

Modified: trunk/OpenSourceBuild__README.txt
===================================================================
--- trunk/OpenSourceBuild__README.txt	2007-03-12 19:26:12 UTC (rev 2681)
+++ trunk/OpenSourceBuild__README.txt	2007-03-13 23:42:45 UTC (rev 2682)
@@ -191,7 +191,26 @@
         set PATH=%PATH%;C:\Program Files\doxygen\bin
         set PATH=%PATH%;C:\Program Files\ATT\Graphviz\bin
 
-  9. Use the [FDO OpenSource]\setenvironment.bat script to assist in setting and
+  8. OPTIONAL: The FDO build process supports the generation of a set of python 
+     wrapper scripts for the FDO API. The pyhton scripts are generated using SWIG. To
+	 generate the phyton scripts, you must have Python and SWIG installed.
+  
+     To install SWIG, refer to: http://www.swig.org/
+	 To install Python, refer to: http://www.python.org/
+	 
+	 The FDO python scripts have been tested using SWIG 1.3.31 and Python 2.4.4
+	 
+	 Once SWIG and Phyton have been installed set the PYTHON_HOME and SWIG_HOME environment
+	 variables to point to the respective installation locations.
+	 
+        e.g.
+	 	 
+	    SET PYTHON_HOME=C:\progra~1\Python24
+	    SET SWIG_HOME=C:\progra~1\swigwin-1.3.31
+		
+	 ** NOTE: These variables are maintained in the setenvironment.bat script. 
+
+9. Use the [FDO OpenSource]\setenvironment.bat script to assist in setting and
      maintaing the correct environment settings for the FDO build process. 
      This script can be modifed and used to set the correct environment variables 
      and PATH settings.

Added: trunk/Thirdparty/gsar/bin/gsar.exe
===================================================================
(Binary files differ)


Property changes on: trunk/Thirdparty/gsar/bin/gsar.exe
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/Thirdparty/gsar/contrib/gsar/1.12/depends-GnuWin32.lst
===================================================================
--- trunk/Thirdparty/gsar/contrib/gsar/1.12/depends-GnuWin32.lst	                        (rev 0)
+++ trunk/Thirdparty/gsar/contrib/gsar/1.12/depends-GnuWin32.lst	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,8 @@
+advapi32.dll
+gdi32.dll
+kernel32.dll
+msvcrt.dll
+ntdll.dll
+ole32.dll
+rpcrt4.dll
+user32.dll

Added: trunk/Thirdparty/gsar/contrib/gsar/1.12/gsar-1.12/copying
===================================================================
--- trunk/Thirdparty/gsar/contrib/gsar/1.12/gsar-1.12/copying	                        (rev 0)
+++ trunk/Thirdparty/gsar/contrib/gsar/1.12/gsar-1.12/copying	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+        Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

Added: trunk/Thirdparty/gsar/contrib/gsar/1.12/gsar-1.12-GnuWin32.README
===================================================================
--- trunk/Thirdparty/gsar/contrib/gsar/1.12/gsar-1.12-GnuWin32.README	                        (rev 0)
+++ trunk/Thirdparty/gsar/contrib/gsar/1.12/gsar-1.12-GnuWin32.README	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,64 @@
+* Gsar-1.12 for Windows *
+=========================
+
+What is it?
+-----------
+Gsar: general search and replace utility
+
+Description
+-----------
+gsar (General Search And Replace) is a utility for searching for and
+--- optionally --- replacing strings in both text and binary files.
+The search and replace strings can contain all kinds of characters
+(0--255), i.e. Ctrl characters and extended ASCII as well.
+
+The algorithm used is a variation of the Boyer-Moore search algorithm,
+modified to search binary files. As a result of this, gsar is blindingly
+fast.
+
+Opposed to line oriented search programs (like grep(1)), gsar will find
+all matches on a line. Actually, gsar doesn't know anything about lines
+at all, all files and strings are treated as binary.
+
+Gsar can search one or several files for a string and report the
+occurrences. Gsar can read one file, search for a string, replace it with
+some other string, and create a new file containing the changes. Gsar can
+perform a search and replace in multiple files, overwriting the originals.
+Finally, gsar can work as a filter, reading from standard input and
+writing to standard output.
+	 
+Homepage
+--------
+http://home.online.no/~tjaberg
+	 
+System
+------
+- MS-Windows 95 / 98 / ME / NT / 2000 / XP with msvcrt.dll
+- if msvcrt.dll is not in your Windows/System folder, get it from
+  Microsoft <http://support.microsoft.com/default.aspx?scid=kb;en-us;259403">
+  or by installing Internet Explorer 4.0 or higher
+  <http://www.microsoft.com/windows/ie>
+
+Notes
+-----
+- Bugs and questions on this MS-Windows port: gnuwin32 at users.sourceforge.net
+
+Package Availability
+--------------------
+- in: http://gnuwin32.sourceforge.net
+
+Sources
+-------
+- gsar-1.11-src.zip
+
+Compilation
+-----------
+The package has been compiled with GNU auto-tools, GNU make, and Mingw
+(GCC for MS-Windows). Any differences from the original sources are given
+in gsar-1.12-GnuWin32.diffs in gsar-1.12-src.zip. Libraries needed
+for compilation can be found at the lines starting with 'LIBS = ' in the
+Makefiles. Usually, these are standard libraries provided with Mingw, or
+libraries from the package itself; 'gw32c' refers to the libgw32c package,
+which provides MS-Windows substitutes or stubs for functions normally found in
+Unix. For more information, see: http://gnuwin32.sourceforge.net/compile.html
+and http://gnuwin32.sourceforge.net/packages/libgw32c.htm.

Added: trunk/Thirdparty/gsar/man/cat1/gsar.1.txt
===================================================================
--- trunk/Thirdparty/gsar/man/cat1/gsar.1.txt	                        (rev 0)
+++ trunk/Thirdparty/gsar/man/cat1/gsar.1.txt	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,229 @@
+gsar(1)                                                 gsar(1)
+
+
+
+
+
+NAME
+       gsar - General Search And Replace utility
+
+
+SYNOPSIS
+       gsar [options] [infile(s)] [outfile]
+
+
+DESCRIPTION
+       gsar  (General  Search  And  Replace)  is  a utility for
+       searching for and --- optionally ---  replacing  strings
+       in  both  text  and binary files. The search and replace
+       strings can contain all kinds  of  characters  (0--255),
+       i.e. Ctrl characters and extended ASCII as well.
+
+       The  algorithm  used  is  a variation of the Boyer-Moore
+       search algorithm, modified to search binary files. As  a
+       result of this, gsar is blindingly fast.
+
+       Opposed to line oriented search programs (like grep(1)),
+       gsar will find all matches on  a  line.  Actually,  gsar
+       doesn't  know anything about lines at all, all files and
+       strings are treated as binary.
+
+       Gsar can search one or several files for  a  string  and
+       report  the  occurrences. Gsar can read one file, search
+       for a string, replace it with  some  other  string,  and
+       create  a new file containing the changes. Gsar can per-
+       form a search and replace in multiple files, overwriting
+       the originals. Finally, gsar can work as a filter, read-
+       ing from standard input and writing to standard  output.
+
+
+OPTIONS
+       All  options  can be concatenated into one single option
+       i.e the command: gsar  -i -b -l is the same as gsar -ibl
+
+       An  option  which takes an argument must be the last one
+       in the concatenated option, since the rest of the option
+       is taken as a possible argument.
+
+       Fields  enclosed  in [] are optional, but mandatory when
+       enclosed in <>.  Options are case sensitive  i.e  -b  is
+       not the same as -B.
+
+       If  no  options  are given, gsar just gives a brief help
+       message.
+
+   [infile(s)]
+       Name(s) of input file(s) (wildcards allowed on most Unix
+       shells and most DOS compilers). If the -F option is used
+       input is taken from stdin.
+
+   [outfile]
+       Name of output file that is to contain the replacements.
+       If  the -F option is used, transformed output is sent to
+       stdout.
+
+   -s<string>
+       String to search for in file.  Ctrl  characters  can  be
+       entered  by  using  a  `:' in the string followed by the
+       ASCII value of the character. The value is entered using
+       a  `:' followed by three decimal digits or `:x' followed
+       by two hex numbers.  To enter a colon (:) in the  search
+       pattern use `::'.  The string must follow directly after
+       s.
+
+       Example: To search for the string :foo (`o' is 111 deci-
+       mal, 6F in hex) use the search options:
+         -s::foo or -s::fo:111 or -s::fo:x6F
+
+       If  you  want  to search for a string with spaces in it,
+       under MSDOS surround the expression with quotes.   Under
+       Unix,  use  the mechanisms your shell provides (commonly
+       quotes) to include space or other special characters.
+
+       Example: search for gsar is fast use:
+         gsar "-sgsar is fast" foobar.txt
+
+       The precompiled MSDOS executable in the archive supports
+       response  files.  Just put you gsar commands into a file
+       and put a `@' in front of the filename on the gsar  com-
+       mand line.
+
+       Example:  file  foobar.txt contains -ssupercalifragilis-
+       ticexpialidocus:
+         gsar @foobar.txt poppins.txt
+
+       If response files are  needed,  most  Unix  shells  will
+       allow
+         gsar `cat foobar.txt` poppins.txt
+
+   -r[string]
+       String which is to replace search string in file. Use -r
+       to delete the search string from the file  i.e.  replace
+       with nothing. Ctrl characters can be entered in the same
+       way as in the search string. If this option is left out,
+       gsar  only  performs  a  search.  The string must follow
+       directly after r.
+
+   -i
+       Ignore case difference  when  comparing  strings.   I.e.
+       foobar matches fooBAR.
+
+   -B
+       Just display the search & replace buffers, for test pur-
+       poses.
+
+   -f
+       If the output file already exists  this  switch  can  be
+       used  to force an overwrite of the existing output file.
+
+   -o
+       Search and replace  of  multiple  files,  overwrite  the
+       input file(s). For each input file, gsar creates a temp-
+       file which contains  the  replacements  and  copies  the
+       tempfile  to the original input file name. If no matches
+       were found, the input file stays the same. The  tempfile
+       is removed.
+
+       Example:
+         gsar -s__ZTC__ -r__TURBOC__ -o foo.c bar.c bat.c
+       The files foo.c, bar.c & bat.c are all changed.
+
+   -c[n]
+       Display  the context around a match in a textual manner.
+       Undisplayable characters are displayed as a dot (`.'). n
+       is  optional  number  of bytes in context. n must follow
+       directly after c.
+
+   -x[n]
+       Display the context around  a  match  as  a  hexadecimal
+       dump.   Undisplayable  characters are displayed as a dot
+       (`.'). n is optional number of bytes in context. n  must
+       follow directly after x.
+
+   -b
+       Display the byte offset of the match in hex.
+
+   -l
+       Only   list  filename  and  number  of  matches  if  any
+       (default).
+
+   -h
+       Suppress display of filename when displaying context  or
+       byte offsets.
+
+   -du
+       Convert  a  DOS  ASCII  file  to  UNIX  (strips carriage
+       return).
+
+   -ud
+       Convert a UNIX ASCII file to DOS (adds carriage return).
+
+   -F
+       Filter  mode, gsar takes it's input from stdin and redi-
+       rects eventual output to stdout. All error messages  are
+       sent stderr.
+
+   -G
+       Display the GNU General Public Licence.
+
+
+Examples
+       Search  for  two  spaces at the end of a line (DOS text)
+       and replace with just a carriage return overwriting  the
+       original files:
+
+         gsar  -s:x20:x20:x0d  -r:x0d  -o  foobar.txt  *.c
+
+       Convert  a  UNIX text file to DOS format overwriting the
+       original file:
+
+         gsar  -ud  -o  unix.txt
+
+       Search for the string WATCOM and  replace  with  __ZTC__
+       using  gsar  as  a filter. Output is redirected to a new
+       file:
+
+         gsar  -sWATCOM  -r__ZTC__  -F  <  foo_w.c  >  foo_z.c
+
+       Display textual context of the string error in the  file
+       gsar.exe  disregarding  case.  With 40 bytes in the con-
+       text:
+
+         gsar  -serror  -i  -c40  gsar.exe
+
+       Search for the string gnu in the file fsf and replace it
+       with wildebeest, creating a new output file africa:
+
+         gsar  -sgnu  -rwildebeest  fsf  africa
+
+       (if  the  file  africa  exists,  you  have to use the -f
+       option to overwrite it.)
+
+       Search for the string error in the file command.com  and
+       display the byte offset of each match:
+
+         gsar  -serror  -b  command.com
+
+
+Limitations
+       No  wildcards  or  regular expressions allowed in search
+       string.
+
+       On MSDOS platforms stdin  from  a  tty  is  not  allowed
+       because  stdin  has  been turned into binary. MSDOS will
+       not catch the Ctrl-Z signifying EOF.
+
+Authors
+       Tormod Tjaberg (coding, design (all bugs are his))
+       Hans Peter Verne (ideas, demands,  testing,  UNIX  plat-
+       forms)
+
+       If  you  have  any comments, bug reports or whatever, we
+       can be reached through email at:
+
+       tjaberg at online.no
+       hpv at kjemi.uio.no
+
+
+
+                          14 Aug 1996                   gsar(1)


Property changes on: trunk/Thirdparty/gsar/man/cat1/gsar.1.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/Thirdparty/gsar/manifest/gsar-1.12-bin.mft
===================================================================
--- trunk/Thirdparty/gsar/manifest/gsar-1.12-bin.mft	                        (rev 0)
+++ trunk/Thirdparty/gsar/manifest/gsar-1.12-bin.mft	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,7 @@
+bin/gsar.exe
+contrib/gsar/1.12/depends-GnuWin32.lst
+contrib/gsar/1.12/gsar-1.12-GnuWin32.README
+contrib/gsar/1.12/gsar-1.12/copying
+man/cat1/gsar.1.txt
+manifest/gsar-1.12-bin.mft
+manifest/gsar-1.12-bin.ver

Added: trunk/Thirdparty/gsar/manifest/gsar-1.12-bin.ver
===================================================================
--- trunk/Thirdparty/gsar/manifest/gsar-1.12-bin.ver	                        (rev 0)
+++ trunk/Thirdparty/gsar/manifest/gsar-1.12-bin.ver	2007-03-13 23:42:45 UTC (rev 2682)
@@ -0,0 +1,2 @@
+Gsar-1.12: Binaries
+Gsar: general search and replace utility
\ No newline at end of file

Modified: trunk/build.bat
===================================================================
--- trunk/build.bat	2007-03-12 19:26:12 UTC (rev 2681)
+++ trunk/build.bat	2007-03-13 23:42:45 UTC (rev 2682)
@@ -32,6 +32,7 @@
 SET GDALENABLE=yes
 SET FDOENABLE=yes
 SET DOCENABLE=skip
+SET PYTHONENABLE=skip
 SET FDOERROR=0
 
 :study_params
@@ -55,6 +56,9 @@
 if "%1"=="-d"       goto get_docs
 if "%1"=="-docs"    goto get_docs
 
+if "%1"=="-p"       goto get_python
+if "%1"=="-python"  goto get_python
+
 goto custom_error
 
 :get_with
@@ -129,7 +133,7 @@
 	SET MYSQLENABLE=yes
 	SET FDOENABLE=yes
 	SET GDALENABLE=yes
-goto next_param
+	goto next_param
 
 :get_docs
 SET DOCENABLE=%2
@@ -137,6 +141,12 @@
 if "%2"=="skip" goto next_param
 goto custom_error
 
+:get_python
+SET PYTHONENABLE=%2
+if "%2"=="build" goto next_param
+if "%2"=="skip" goto next_param
+goto custom_error
+
 :get_action
 SET TYPEACTION=%2
 if "%2"=="install" goto next_param
@@ -171,18 +181,20 @@
 if "%TYPEACTION%"=="build" goto start_exbuild
 if "%TYPEACTION%"=="clean" goto start_exbuild
 if not ("%FDOORGPATH%")==("") goto start_exbuildinstall
-echo Please provide destination binaries folder using '-o' option.
+echo Please provide destination folder location using '-o' option.
 exit /B 1
+
 :start_exbuildinstall
 if not exist "%FDOORGPATH%" mkdir "%FDOORGPATH%"
 
 :start_exbuild
+SET PROVCALLCMDEXFDO=-o="%FDOORGPATH%" -c=%TYPEBUILD% -a=%TYPEACTION% -d=%DOCENABLE% -p=%PYTHONENABLE%
 SET PROVCALLCMDEX=-o="%FDOORGPATH%" -c=%TYPEBUILD% -a=%TYPEACTION% -d=%DOCENABLE%
 
 :rebuild_fdo
 if "%FDOENABLE%"=="no" goto rebuild_shp
 pushd Fdo
-call build.bat %PROVCALLCMDEX%
+call build.bat %PROVCALLCMDEXFDO%
 popd
 if "%FDOERROR%"=="1" goto error
 
@@ -262,15 +274,26 @@
 echo The command is not recognized.
 echo Please use the format:
 :help_show
-echo **************************************************************************
-echo build.bat [-h] [-o=OutFolder] [-c=BuildType] [-a=Action] [-w=WithModule] [-d=BuildDocs]
+echo ********************************************************************************
+echo build.bat [-h]
+echo           [-o=OutFolder]
+echo           [-c=BuildType]
+echo           [-a=Action]
+echo           [-w=WithModule]
+echo           [-d=BuildDocs]
+echo           [-p=BuildPythonWrappers]
 echo *
-echo Help:           -h[elp]
-echo OutFolder:      -o[utpath]=destination folder for binaries
-echo BuildType:      -c[onfig]=release(default), debug
-echo Action:         -a[ction]=build(default), buildinstall, install, clean
+echo Help:                  -h[elp]
+echo OutFolder:             -o[utpath]=destination folder for binaries
+echo BuildType:             -c[onfig]=release(default), debug
+echo Action:                -a[ction]=build(default), 
+echo                                  buildinstall, 
+echo                                  install, 
+echo                                  clean
+echo BuildDocs:             -d[ocs]=skip(default), build
+echo BuildPythonWrappers:   -p[ython]=skip(default), build
 SET MROVBYPROVP=
-SET MPROVECAPABP=WithModule:     -w[ith]=all(default), fdo
+SET MPROVECAPABP=WithModule:            -w[ith]=all(default), fdo
 :shp_check
 if not exist Providers\SHP\build.bat goto sdf_check
 	SET MROVBYPROVP=%MROVBYPROVP%, shp
@@ -300,6 +323,5 @@
 	SET MPROVECAPABP=%MPROVECAPABP%, providers%MROVBYPROVP%
 :show_capabilities
 echo %MPROVECAPABP%
-echo BuildDocs:      -d[ocs]=skip(default), build
-echo **************************************************************************
+echo ********************************************************************************
 exit /B 0
\ No newline at end of file

Modified: trunk/setenvironment.bat
===================================================================
--- trunk/setenvironment.bat	2007-03-12 19:26:12 UTC (rev 2681)
+++ trunk/setenvironment.bat	2007-03-13 23:42:45 UTC (rev 2682)
@@ -73,6 +73,18 @@
 if exist %ACTIVEPATHCHECK% set PATH=%PATH%;%ACTIVEPATHCHECK%
 if not exist %ACTIVEPATHCHECK% echo Optional %ACTIVENAMECHECK% package not recognized in the Windows PATH. Update the setenvironment.bat script file with the correct path
 
+SET ACTIVENAMECHECK="Python 2.4"
+SET ACTIVEPATHCHECK=C:\progra~1\Python24
+if exist %ACTIVEPATHCHECK% SET PYTHON_HOME=C:\progra~1\Python24
+if exist %ACTIVEPATHCHECK% set PATH=%PATH%;%ACTIVEPATHCHECK%
+if not exist %ACTIVEPATHCHECK% echo Optional %ACTIVENAMECHECK% package not found. Update the setenvironment.bat script file with the correct path
+
+SET ACTIVENAMECHECK="SWIG 1.3.31"
+SET ACTIVEPATHCHECK=C:\progra~1\swigwin-1.3.31
+if exist %ACTIVEPATHCHECK% SET SWIG_HOME=C:\progra~1\swigwin-1.3.31
+if exist %ACTIVEPATHCHECK% set PATH=%PATH%;%ACTIVEPATHCHECK%
+if not exist %ACTIVEPATHCHECK% echo Optional %ACTIVENAMECHECK% package not found. Update the setenvironment.bat script file with the correct path
+
 :end
 exit /B 0
 



More information about the fdo-commits mailing list