[ismrmrd] 01/281: Initial Commit

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Wed Jan 14 20:00:48 UTC 2015


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to annotated tag ismrmrd0.5
in repository ismrmrd.

commit 875d4b5e253fbc20ef0c03d76456924ab2e70034
Author: Michael S. Hansen <michael.hansen at nih.gov>
Date:   Wed Jul 25 10:14:11 2012 -0400

    Initial Commit
---
 .gitignore                                         |    1 +
 CMakeLists.txt                                     |   17 +
 build/CMakeCache.txt                               |  302 ++
 build/CMakeFiles/CMakeCCompiler.cmake              |   49 +
 build/CMakeFiles/CMakeCXXCompiler.cmake            |   50 +
 build/CMakeFiles/CMakeDetermineCompilerABI_C.bin   |  Bin 0 -> 8461 bytes
 build/CMakeFiles/CMakeDetermineCompilerABI_CXX.bin |  Bin 0 -> 8539 bytes
 build/CMakeFiles/CMakeDirectoryInformation.cmake   |   23 +
 build/CMakeFiles/CMakeOutput.log                   |  253 ++
 build/CMakeFiles/CMakeRuleHashes.txt               |    2 +
 build/CMakeFiles/CMakeSystem.cmake                 |   15 +
 build/CMakeFiles/CompilerIdC/CMakeCCompilerId.c    |  232 ++
 build/CMakeFiles/CompilerIdC/a.out                 |  Bin 0 -> 8520 bytes
 .../CompilerIdCXX/CMakeCXXCompilerId.cpp           |  215 ++
 build/CMakeFiles/CompilerIdCXX/a.out               |  Bin 0 -> 8589 bytes
 build/CMakeFiles/Makefile.cmake                    |   62 +
 build/CMakeFiles/Makefile2                         |   99 +
 build/CMakeFiles/TargetDirectories.txt             |    1 +
 build/CMakeFiles/cmake.check_cache                 |    1 +
 build/CMakeFiles/ismrmrd.dir/CXX.includecache      |  256 ++
 build/CMakeFiles/ismrmrd.dir/DependInfo.cmake      |   20 +
 build/CMakeFiles/ismrmrd.dir/build.make            |  137 +
 build/CMakeFiles/ismrmrd.dir/cmake_clean.cmake     |   13 +
 build/CMakeFiles/ismrmrd.dir/depend.internal       |    9 +
 build/CMakeFiles/ismrmrd.dir/depend.make           |    9 +
 build/CMakeFiles/ismrmrd.dir/flags.make            |    8 +
 build/CMakeFiles/ismrmrd.dir/link.txt              |    1 +
 build/CMakeFiles/ismrmrd.dir/main.cpp.o            |  Bin 0 -> 32696 bytes
 build/CMakeFiles/ismrmrd.dir/progress.make         |    4 +
 build/CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o |  Bin 0 -> 915544 bytes
 build/CMakeFiles/progress.marks                    |    1 +
 build/Makefile                                     |  190 +
 build/cmake_install.cmake                          |   44 +
 build/ismrmrd                                      |  Bin 0 -> 586379 bytes
 build/schema/ismrmrd.xsd                           |  127 +
 build/src/xsd/ismrmrd.cxx                          | 3874 ++++++++++++++++++++
 build/src/xsd/ismrmrd.hxx                          | 1802 +++++++++
 cmake/FindXSD.cmake                                |   87 +
 cmake/FindXercesC.cmake                            |   37 +
 ismrmrd.h                                          |   76 +
 main.cpp                                           |   26 +
 schema/ismrmrd.xsd                                 |  128 +
 schema/ismrmrd_example.xml                         |   76 +
 43 files changed, 8247 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e4e5f6c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*~
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..0879d99
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,17 @@
+cmake_minimum_required(VERSION 2.8)
+project(ISMRMRD)
+
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+
+find_package(XSD REQUIRED)
+find_package(XercesC REQUIRED)
+
+#Process the XSD files
+SET(XSDS schema/ismrmrd.xsd)
+SET(XSD_ARGS cxx-tree --generate-serialization)
+
+WRAP_XSD(XSDS_SOURCES XSD_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/schema ${XSDS} OPTIONS ${XSD_ARGS})
+
+INCLUDE_DIRECTORIES(${XSD_INCLUDES})
+add_executable(ismrmrd main.cpp ${XSDS_SOURCES})
+target_link_libraries(ismrmrd ${XERCESC_LIBRARIES})
diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt
new file mode 100644
index 0000000..92df9c1
--- /dev/null
+++ b/build/CMakeCache.txt
@@ -0,0 +1,302 @@
+# This is the CMakeCache file.
+# For build in directory: /home/hansenms/mrprogs/ismrmrd/build
+# It was generated by CMake: /usr/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUI's for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Path to a program.
+CMAKE_AR:FILEPATH=/usr/bin/ar
+
+//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
+// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
+CMAKE_BUILD_TYPE:STRING=
+
+//Enable/Disable color output during build.
+CMAKE_COLOR_MAKEFILE:BOOL=ON
+
+//CXX compiler.
+CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release minsize builds.
+CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds (/MD /Ob1 /Oi
+// /Ot /Oy /Gs will produce slightly less optimized but smaller
+// files).
+CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during Release with Debug Info builds.
+CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g
+
+//C compiler.
+CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release minsize builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds (/MD /Ob1 /Oi
+// /Ot /Oy /Gs will produce slightly less optimized but smaller
+// files).
+CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during Release with Debug Info builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=' '
+
+//Flags used by the linker during debug builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Enable/Disable output of compile commands during generation.
+CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/usr/bin/ld
+
+//Path to a program.
+CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=' '
+
+//Flags used by the linker during debug builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/usr/bin/nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=ISMRMRD
+
+//Path to a program.
+CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=' '
+
+//Flags used by the linker during debug builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Path to a program.
+CMAKE_STRIP:FILEPATH=/usr/bin/strip
+
+//If true, cmake will use relative paths in makefiles and projects.
+CMAKE_USE_RELATIVE_PATHS:BOOL=OFF
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make.  This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//Value Computed by CMake
+ISMRMRD_BINARY_DIR:STATIC=/home/hansenms/mrprogs/ismrmrd/build
+
+//Value Computed by CMake
+ISMRMRD_SOURCE_DIR:STATIC=/home/hansenms/mrprogs/ismrmrd
+
+//Path to a file.
+XERCESC_INCLUDE_DIR:PATH=/usr/include
+
+//Path to a library.
+XERCESC_LIBRARIES:FILEPATH=/usr/lib/libxerces-c.so
+
+//Path to a file.
+XSD_EXECUTABLE:FILEPATH=/usr/bin/xsdcxx
+
+//Path to a file.
+XSD_INCLUDE_DIR:PATH=/usr/include
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_BUILD_TOOL
+CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1
+//What is the target build tool cmake is generating for.
+CMAKE_BUILD_TOOL:INTERNAL=/usr/bin/make
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/home/hansenms/mrprogs/ismrmrd/build
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=8
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=7
+//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
+CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest
+//ADVANCED property for variable: CMAKE_CXX_COMPILER
+CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
+CMAKE_CXX_COMPILER_WORKS:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS
+CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
+CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
+CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
+CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
+CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER
+CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
+CMAKE_C_COMPILER_WORKS:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Result of TRY_COMPILE
+CMAKE_DETERMINE_CXX_ABI_COMPILED:INTERNAL=TRUE
+//Result of TRY_COMPILE
+CMAKE_DETERMINE_C_ABI_COMPILED:INTERNAL=TRUE
+//Path to cache edit program executable.
+CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake
+//Executable file format
+CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
+CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Unix Makefiles
+//Start directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/home/hansenms/mrprogs/ismrmrd
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
+CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/usr/share/cmake-2.8
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/bin/uname
+//ADVANCED property for variable: CMAKE_USE_RELATIVE_PATHS
+CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: XERCESC_INCLUDE_DIR
+XERCESC_INCLUDE_DIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: XERCESC_LIBRARIES
+XERCESC_LIBRARIES-ADVANCED:INTERNAL=1
+
diff --git a/build/CMakeFiles/CMakeCCompiler.cmake b/build/CMakeFiles/CMakeCCompiler.cmake
new file mode 100644
index 0000000..cc6503e
--- /dev/null
+++ b/build/CMakeFiles/CMakeCCompiler.cmake
@@ -0,0 +1,49 @@
+SET(CMAKE_C_COMPILER "/usr/bin/gcc")
+SET(CMAKE_C_COMPILER_ARG1 "")
+SET(CMAKE_C_COMPILER_ID "GNU")
+SET(CMAKE_C_PLATFORM_ID "Linux")
+
+SET(CMAKE_AR "/usr/bin/ar")
+SET(CMAKE_RANLIB "/usr/bin/ranlib")
+SET(CMAKE_LINKER "/usr/bin/ld")
+SET(CMAKE_COMPILER_IS_GNUCC 1)
+SET(CMAKE_C_COMPILER_LOADED 1)
+SET(CMAKE_COMPILER_IS_MINGW )
+SET(CMAKE_COMPILER_IS_CYGWIN )
+IF(CMAKE_COMPILER_IS_CYGWIN)
+  SET(CYGWIN 1)
+  SET(UNIX 1)
+ENDIF(CMAKE_COMPILER_IS_CYGWIN)
+
+SET(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+IF(CMAKE_COMPILER_IS_MINGW)
+  SET(MINGW 1)
+ENDIF(CMAKE_COMPILER_IS_MINGW)
+SET(CMAKE_C_COMPILER_ID_RUN 1)
+SET(CMAKE_C_SOURCE_FILE_EXTENSIONS c)
+SET(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+SET(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+SET(CMAKE_C_SIZEOF_DATA_PTR "8")
+SET(CMAKE_C_COMPILER_ABI "ELF")
+SET(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+
+IF(CMAKE_C_SIZEOF_DATA_PTR)
+  SET(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+ENDIF(CMAKE_C_SIZEOF_DATA_PTR)
+
+IF(CMAKE_C_COMPILER_ABI)
+  SET(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+ENDIF(CMAKE_C_COMPILER_ABI)
+
+IF(CMAKE_C_LIBRARY_ARCHITECTURE)
+  SET(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+ENDIF()
+
+SET(CMAKE_C_HAS_ISYSROOT "")
+
+
+SET(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c")
+SET(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.4.7;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
diff --git a/build/CMakeFiles/CMakeCXXCompiler.cmake b/build/CMakeFiles/CMakeCXXCompiler.cmake
new file mode 100644
index 0000000..2a5215c
--- /dev/null
+++ b/build/CMakeFiles/CMakeCXXCompiler.cmake
@@ -0,0 +1,50 @@
+SET(CMAKE_CXX_COMPILER "/usr/bin/c++")
+SET(CMAKE_CXX_COMPILER_ARG1 "")
+SET(CMAKE_CXX_COMPILER_ID "GNU")
+SET(CMAKE_CXX_PLATFORM_ID "Linux")
+
+SET(CMAKE_AR "/usr/bin/ar")
+SET(CMAKE_RANLIB "/usr/bin/ranlib")
+SET(CMAKE_LINKER "/usr/bin/ld")
+SET(CMAKE_COMPILER_IS_GNUCXX 1)
+SET(CMAKE_CXX_COMPILER_LOADED 1)
+SET(CMAKE_COMPILER_IS_MINGW )
+SET(CMAKE_COMPILER_IS_CYGWIN )
+IF(CMAKE_COMPILER_IS_CYGWIN)
+  SET(CYGWIN 1)
+  SET(UNIX 1)
+ENDIF(CMAKE_COMPILER_IS_CYGWIN)
+
+SET(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
+
+IF(CMAKE_COMPILER_IS_MINGW)
+  SET(MINGW 1)
+ENDIF(CMAKE_COMPILER_IS_MINGW)
+SET(CMAKE_CXX_COMPILER_ID_RUN 1)
+SET(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+SET(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP)
+SET(CMAKE_CXX_LINKER_PREFERENCE 30)
+SET(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
+
+# Save compiler ABI information.
+SET(CMAKE_CXX_SIZEOF_DATA_PTR "8")
+SET(CMAKE_CXX_COMPILER_ABI "ELF")
+SET(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+
+IF(CMAKE_CXX_SIZEOF_DATA_PTR)
+  SET(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
+ENDIF(CMAKE_CXX_SIZEOF_DATA_PTR)
+
+IF(CMAKE_CXX_COMPILER_ABI)
+  SET(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
+ENDIF(CMAKE_CXX_COMPILER_ABI)
+
+IF(CMAKE_CXX_LIBRARY_ARCHITECTURE)
+  SET(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+ENDIF()
+
+SET(CMAKE_CXX_HAS_ISYSROOT "")
+
+
+SET(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c")
+SET(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.4.7;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
diff --git a/build/CMakeFiles/CMakeDetermineCompilerABI_C.bin b/build/CMakeFiles/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..3bd7e97
Binary files /dev/null and b/build/CMakeFiles/CMakeDetermineCompilerABI_C.bin differ
diff --git a/build/CMakeFiles/CMakeDetermineCompilerABI_CXX.bin b/build/CMakeFiles/CMakeDetermineCompilerABI_CXX.bin
new file mode 100755
index 0000000..499d39c
Binary files /dev/null and b/build/CMakeFiles/CMakeDetermineCompilerABI_CXX.bin differ
diff --git a/build/CMakeFiles/CMakeDirectoryInformation.cmake b/build/CMakeFiles/CMakeDirectoryInformation.cmake
new file mode 100644
index 0000000..afa4015
--- /dev/null
+++ b/build/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -0,0 +1,23 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# Relative path conversion top directories.
+SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/hansenms/mrprogs/ismrmrd")
+SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/hansenms/mrprogs/ismrmrd/build")
+
+# Force unix paths in dependencies.
+SET(CMAKE_FORCE_UNIX_PATHS 1)
+
+# The C and CXX include file search paths:
+SET(CMAKE_C_INCLUDE_PATH
+  "src/xsd"
+  )
+SET(CMAKE_CXX_INCLUDE_PATH ${CMAKE_C_INCLUDE_PATH})
+SET(CMAKE_Fortran_INCLUDE_PATH ${CMAKE_C_INCLUDE_PATH})
+SET(CMAKE_ASM_INCLUDE_PATH ${CMAKE_C_INCLUDE_PATH})
+
+# The C and CXX include file regular expressions for this directory.
+SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
+SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
+SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
+SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
diff --git a/build/CMakeFiles/CMakeOutput.log b/build/CMakeFiles/CMakeOutput.log
new file mode 100644
index 0000000..6f1274e
--- /dev/null
+++ b/build/CMakeFiles/CMakeOutput.log
@@ -0,0 +1,253 @@
+The system is: Linux - 3.2.0-24-generic - x86_64
+Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
+Compiler: /usr/bin/gcc 
+Build flags: 
+Id flags: 
+
+The output was:
+0
+
+
+Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out"
+
+The C compiler identification is GNU, found in "/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CompilerIdC/a.out"
+
+Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
+Compiler: /usr/bin/c++ 
+Build flags: 
+Id flags: 
+
+The output was:
+0
+
+
+Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
+
+The CXX compiler identification is GNU, found in "/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CompilerIdCXX/a.out"
+
+Determining if the C compiler works passed with the following output:
+Change Dir: /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec/fast"
+/usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make CMakeFiles/cmTryCompileExec.dir/build
+make[1]: Entering directory `/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp'
+/usr/bin/cmake -E cmake_progress_report /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building C object CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o
+/usr/bin/gcc    -o CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o   -c /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp/testCCompiler.c
+Linking C executable cmTryCompileExec
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1
+/usr/bin/gcc         CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o  -o cmTryCompileExec -rdynamic 
+make[1]: Leaving directory `/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp'
+
+
+Detecting C compiler ABI info compiled with the following output:
+Change Dir: /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec/fast"
+/usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make CMakeFiles/cmTryCompileExec.dir/build
+make[1]: Entering directory `/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp'
+/usr/bin/cmake -E cmake_progress_report /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building C object CMakeFiles/cmTryCompileExec.dir/CMakeCCompilerABI.c.o
+/usr/bin/gcc    -o CMakeFiles/cmTryCompileExec.dir/CMakeCCompilerABI.c.o   -c /usr/share/cmake-2.8/Modules/CMakeCCompilerABI.c
+Linking C executable cmTryCompileExec
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1
+/usr/bin/gcc       -v CMakeFiles/cmTryCompileExec.dir/CMakeCCompilerABI.c.o  -o cmTryCompileExec -rdynamic  
+Using built-in specs.
+Target: x86_64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.7-1ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debu [...]
+Thread model: posix
+gcc version 4.4.7 (Ubuntu/Linaro 4.4.7-1ubuntu2) 
+COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/
+LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../:/lib/:/usr/lib/
+COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec' '-rdynamic' '-mtune=generic'
+ /usr/lib/gcc/x86_64-linux-gnu/4.4.7/collect2 --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTryCompileExec -z relro /usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.4.7/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/. [...]
+make[1]: Leaving directory `/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp'
+
+
+Parsed C implicit link information from above output:
+  link line regex: [^( *|.*[/\])(ld|ld|collect2)[^/\]*( |$)]
+  ignore line: [Change Dir: /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp]
+  ignore line: []
+  ignore line: [Run Build Command:/usr/bin/make "cmTryCompileExec/fast"]
+  ignore line: [/usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make CMakeFiles/cmTryCompileExec.dir/build]
+  ignore line: [make[1]: Entering directory `/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp']
+  ignore line: [/usr/bin/cmake -E cmake_progress_report /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp/CMakeFiles 1]
+  ignore line: [Building C object CMakeFiles/cmTryCompileExec.dir/CMakeCCompilerABI.c.o]
+  ignore line: [/usr/bin/gcc    -o CMakeFiles/cmTryCompileExec.dir/CMakeCCompilerABI.c.o   -c /usr/share/cmake-2.8/Modules/CMakeCCompilerABI.c]
+  ignore line: [Linking C executable cmTryCompileExec]
+  ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1]
+  ignore line: [/usr/bin/gcc       -v CMakeFiles/cmTryCompileExec.dir/CMakeCCompilerABI.c.o  -o cmTryCompileExec -rdynamic  ]
+  ignore line: [Using built-in specs.]
+  ignore line: [Target: x86_64-linux-gnu]
+  ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.7-1ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enabl [...]
+  ignore line: [Thread model: posix]
+  ignore line: [gcc version 4.4.7 (Ubuntu/Linaro 4.4.7-1ubuntu2) ]
+  ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/]
+  ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../:/lib/:/usr/lib/]
+  ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec' '-rdynamic' '-mtune=generic']
+  link line: [ /usr/lib/gcc/x86_64-linux-gnu/4.4.7/collect2 --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTryCompileExec -z relro /usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.4.7/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7 -L/usr/lib/gcc/x86_64-lin [...]
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/collect2] ==> ignore
+    arg [--build-id] ==> ignore
+    arg [--eh-frame-hdr] ==> ignore
+    arg [-m] ==> ignore
+    arg [elf_x86_64] ==> ignore
+    arg [--hash-style=gnu] ==> ignore
+    arg [-export-dynamic] ==> ignore
+    arg [-dynamic-linker] ==> ignore
+    arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
+    arg [-o] ==> ignore
+    arg [cmTryCompileExec] ==> ignore
+    arg [-zrelro] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crt1.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crti.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/crtbegin.o] ==> ignore
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.4.7] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.4.7] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../../lib]
+    arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
+    arg [-L/lib/../lib] ==> dir [/lib/../lib]
+    arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
+    arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../..]
+    arg [CMakeFiles/cmTryCompileExec.dir/CMakeCCompilerABI.c.o] ==> ignore
+    arg [-lgcc] ==> lib [gcc]
+    arg [--as-needed] ==> ignore
+    arg [-lgcc_s] ==> lib [gcc_s]
+    arg [--no-as-needed] ==> ignore
+    arg [-lc] ==> lib [c]
+    arg [-lgcc] ==> lib [gcc]
+    arg [--as-needed] ==> ignore
+    arg [-lgcc_s] ==> lib [gcc_s]
+    arg [--no-as-needed] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/crtend.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crtn.o] ==> ignore
+  remove lib [gcc]
+  remove lib [gcc_s]
+  remove lib [gcc]
+  remove lib [gcc_s]
+  collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.4.7]
+  collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.4.7]
+  collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+  collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../../lib] ==> [/usr/lib]
+  collapse dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
+  collapse dir [/lib/../lib] ==> [/lib]
+  collapse dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+  collapse dir [/usr/lib/../lib] ==> [/usr/lib]
+  collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../..] ==> [/usr/lib]
+  implicit libs: [c]
+  implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/4.4.7;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
+
+
+Determining if the CXX compiler works passed with the following output:
+Change Dir: /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec/fast"
+/usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make CMakeFiles/cmTryCompileExec.dir/build
+make[1]: Entering directory `/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp'
+/usr/bin/cmake -E cmake_progress_report /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building CXX object CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o
+/usr/bin/c++     -o CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o -c /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
+Linking CXX executable cmTryCompileExec
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1
+/usr/bin/c++          CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o  -o cmTryCompileExec -rdynamic 
+make[1]: Leaving directory `/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp'
+
+
+Detecting CXX compiler ABI info compiled with the following output:
+Change Dir: /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec/fast"
+/usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make CMakeFiles/cmTryCompileExec.dir/build
+make[1]: Entering directory `/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp'
+/usr/bin/cmake -E cmake_progress_report /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building CXX object CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o
+/usr/bin/c++     -o CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-2.8/Modules/CMakeCXXCompilerABI.cpp
+Linking CXX executable cmTryCompileExec
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1
+/usr/bin/c++        -v CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o  -o cmTryCompileExec -rdynamic  
+Using built-in specs.
+Target: x86_64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.7-1ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debu [...]
+Thread model: posix
+gcc version 4.4.7 (Ubuntu/Linaro 4.4.7-1ubuntu2) 
+COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/
+LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../:/lib/:/usr/lib/
+COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec' '-rdynamic' '-shared-libgcc' '-mtune=generic'
+ /usr/lib/gcc/x86_64-linux-gnu/4.4.7/collect2 --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTryCompileExec -z relro /usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.4.7/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/. [...]
+make[1]: Leaving directory `/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp'
+
+
+Parsed CXX implicit link information from above output:
+  link line regex: [^( *|.*[/\])(ld|ld|collect2)[^/\]*( |$)]
+  ignore line: [Change Dir: /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp]
+  ignore line: []
+  ignore line: [Run Build Command:/usr/bin/make "cmTryCompileExec/fast"]
+  ignore line: [/usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make CMakeFiles/cmTryCompileExec.dir/build]
+  ignore line: [make[1]: Entering directory `/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp']
+  ignore line: [/usr/bin/cmake -E cmake_progress_report /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/CMakeTmp/CMakeFiles 1]
+  ignore line: [Building CXX object CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o]
+  ignore line: [/usr/bin/c++     -o CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-2.8/Modules/CMakeCXXCompilerABI.cpp]
+  ignore line: [Linking CXX executable cmTryCompileExec]
+  ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1]
+  ignore line: [/usr/bin/c++        -v CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o  -o cmTryCompileExec -rdynamic  ]
+  ignore line: [Using built-in specs.]
+  ignore line: [Target: x86_64-linux-gnu]
+  ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.7-1ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enabl [...]
+  ignore line: [Thread model: posix]
+  ignore line: [gcc version 4.4.7 (Ubuntu/Linaro 4.4.7-1ubuntu2) ]
+  ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/]
+  ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../:/lib/:/usr/lib/]
+  ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec' '-rdynamic' '-shared-libgcc' '-mtune=generic']
+  link line: [ /usr/lib/gcc/x86_64-linux-gnu/4.4.7/collect2 --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTryCompileExec -z relro /usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.4.7/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7 -L/usr/lib/gcc/x86_64-lin [...]
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/collect2] ==> ignore
+    arg [--build-id] ==> ignore
+    arg [--eh-frame-hdr] ==> ignore
+    arg [-m] ==> ignore
+    arg [elf_x86_64] ==> ignore
+    arg [--hash-style=gnu] ==> ignore
+    arg [-export-dynamic] ==> ignore
+    arg [-dynamic-linker] ==> ignore
+    arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
+    arg [-o] ==> ignore
+    arg [cmTryCompileExec] ==> ignore
+    arg [-zrelro] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crt1.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crti.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/crtbegin.o] ==> ignore
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.4.7] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.4.7] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../../lib]
+    arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
+    arg [-L/lib/../lib] ==> dir [/lib/../lib]
+    arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
+    arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../..]
+    arg [CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
+    arg [-lstdc++] ==> lib [stdc++]
+    arg [-lm] ==> lib [m]
+    arg [-lgcc_s] ==> lib [gcc_s]
+    arg [-lgcc] ==> lib [gcc]
+    arg [-lc] ==> lib [c]
+    arg [-lgcc_s] ==> lib [gcc_s]
+    arg [-lgcc] ==> lib [gcc]
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/crtend.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu/crtn.o] ==> ignore
+  remove lib [gcc_s]
+  remove lib [gcc]
+  remove lib [gcc_s]
+  remove lib [gcc]
+  collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.4.7]
+  collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.4.7]
+  collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+  collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../../../lib] ==> [/usr/lib]
+  collapse dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
+  collapse dir [/lib/../lib] ==> [/lib]
+  collapse dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+  collapse dir [/usr/lib/../lib] ==> [/usr/lib]
+  collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.4.7/../../..] ==> [/usr/lib]
+  implicit libs: [stdc++;m;c]
+  implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/4.4.7;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
+
+
diff --git a/build/CMakeFiles/CMakeRuleHashes.txt b/build/CMakeFiles/CMakeRuleHashes.txt
new file mode 100644
index 0000000..37b4a27
--- /dev/null
+++ b/build/CMakeFiles/CMakeRuleHashes.txt
@@ -0,0 +1,2 @@
+# Hashes of file build rules.
+aecd97411357e0c58fbcf27c2f3514a5 src/xsd/ismrmrd.cxx
diff --git a/build/CMakeFiles/CMakeSystem.cmake b/build/CMakeFiles/CMakeSystem.cmake
new file mode 100644
index 0000000..234ad02
--- /dev/null
+++ b/build/CMakeFiles/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+
+
+SET(CMAKE_SYSTEM "Linux-3.2.0-24-generic")
+SET(CMAKE_SYSTEM_NAME "Linux")
+SET(CMAKE_SYSTEM_VERSION "3.2.0-24-generic")
+SET(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+SET(CMAKE_HOST_SYSTEM "Linux-3.2.0-24-generic")
+SET(CMAKE_HOST_SYSTEM_NAME "Linux")
+SET(CMAKE_HOST_SYSTEM_VERSION "3.2.0-24-generic")
+SET(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+SET(CMAKE_CROSSCOMPILING "FALSE")
+
+SET(CMAKE_SYSTEM_LOADED 1)
diff --git a/build/CMakeFiles/CompilerIdC/CMakeCCompilerId.c b/build/CMakeFiles/CompilerIdC/CMakeCCompilerId.c
new file mode 100644
index 0000000..936ae30
--- /dev/null
+++ b/build/CMakeFiles/CompilerIdC/CMakeCCompilerId.c
@@ -0,0 +1,232 @@
+#ifdef __cplusplus
+# error "A C++ compiler has been selected for C."
+#endif
+
+#if defined(__18CXX)
+# define ID_VOID_MAIN
+#endif
+
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "Watcom"
+
+#elif defined(__SUNPRO_C)
+# define COMPILER_ID "SunPro"
+
+#elif defined(__HP_cc)
+# define COMPILER_ID "HP"
+
+#elif defined(__DECC)
+# define COMPILER_ID "Compaq"
+
+#elif defined(__IBMC__)
+# if defined(__COMPILER_VER__)
+#  define COMPILER_ID "zOS"
+# elif __IBMC__ >= 800
+#  define COMPILER_ID "XL"
+# else
+#  define COMPILER_ID "VisualAge"
+# endif
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+
+#elif defined(__PATHSCALE__)
+# define COMPILER_ID "PathScale"
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI_DSP"
+
+#elif defined(__TINYC__)
+# define COMPILER_ID "TinyCC"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+
+#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+/* Analog Devices C++ compiler for Blackfin, TigerSHARC and
+   SHARC (21000) DSPs */
+# define COMPILER_ID "ADSP"
+
+/* IAR Systems compiler for embedded systems.
+   http://www.iar.com
+   Not supported yet by CMake
+#elif defined(__IAR_SYSTEMS_ICC__)
+# define COMPILER_ID "IAR" */
+
+/* sdcc, the small devices C compiler for embedded systems,
+   http://sdcc.sourceforge.net  */
+#elif defined(SDCC)
+# define COMPILER_ID "SDCC"
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+
+/* This compiler is either not known or is too old to define an
+   identification macro.  Try to identify the platform and guess that
+   it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU)
+# define PLATFORM_ID "Haiku"
+/* Haiku also defines __BEOS__ so we must 
+   put it prior to the check for __BEOS__
+*/
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#else /* unknown platform */
+# define PLATFORM_ID ""
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64" 
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef ID_VOID_MAIN
+void main() {}
+#else
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+  require += info_arch[argc];
+  (void)argv;
+  return require;
+}
+#endif
diff --git a/build/CMakeFiles/CompilerIdC/a.out b/build/CMakeFiles/CompilerIdC/a.out
new file mode 100755
index 0000000..f85818f
Binary files /dev/null and b/build/CMakeFiles/CompilerIdC/a.out differ
diff --git a/build/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp b/build/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp
new file mode 100644
index 0000000..7414ddf
--- /dev/null
+++ b/build/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp
@@ -0,0 +1,215 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+   recognize the extension without flags.  Borland does not know .cxx for
+   example.  */
+#ifndef __cplusplus
+# error "A C compiler has been selected for C++."
+#endif
+
+#if defined(__COMO__)
+# define COMPILER_ID "Comeau"
+
+#elif defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "Watcom"
+
+#elif defined(__SUNPRO_CC)
+# define COMPILER_ID "SunPro"
+
+#elif defined(__HP_aCC)
+# define COMPILER_ID "HP"
+
+#elif defined(__DECCXX)
+# define COMPILER_ID "Compaq"
+
+#elif defined(__IBMCPP__)
+# if defined(__COMPILER_VER__)
+#  define COMPILER_ID "zOS"
+# elif __IBMCPP__ >= 800
+#  define COMPILER_ID "XL"
+# else
+#  define COMPILER_ID "VisualAge"
+# endif
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+
+#elif defined(__PATHSCALE__)
+# define COMPILER_ID "PathScale"
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI_DSP"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+
+#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+/* Analog Devices C++ compiler for Blackfin, TigerSHARC and
+   SHARC (21000) DSPs */
+# define COMPILER_ID "ADSP"
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+
+/* This compiler is either not known or is too old to define an
+   identification macro.  Try to identify the platform and guess that
+   it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU)
+# define PLATFORM_ID "Haiku"
+/* Haiku also defines __BEOS__ so we must 
+   put it prior to the check for __BEOS__
+*/
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#else /* unknown platform */
+# define PLATFORM_ID ""
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64" 
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+  (void)argv;
+  return require;
+}
diff --git a/build/CMakeFiles/CompilerIdCXX/a.out b/build/CMakeFiles/CompilerIdCXX/a.out
new file mode 100755
index 0000000..8938a16
Binary files /dev/null and b/build/CMakeFiles/CompilerIdCXX/a.out differ
diff --git a/build/CMakeFiles/Makefile.cmake b/build/CMakeFiles/Makefile.cmake
new file mode 100644
index 0000000..eedbdba
--- /dev/null
+++ b/build/CMakeFiles/Makefile.cmake
@@ -0,0 +1,62 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# The generator used is:
+SET(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
+
+# The top level Makefile was generated from the following files:
+SET(CMAKE_MAKEFILE_DEPENDS
+  "CMakeCache.txt"
+  "../CMakeLists.txt"
+  "CMakeFiles/CMakeCCompiler.cmake"
+  "CMakeFiles/CMakeCXXCompiler.cmake"
+  "CMakeFiles/CMakeSystem.cmake"
+  "../cmake/FindXSD.cmake"
+  "../cmake/FindXercesC.cmake"
+  "../schema/ismrmrd.xsd"
+  "/usr/share/cmake-2.8/Modules/CMakeCCompiler.cmake.in"
+  "/usr/share/cmake-2.8/Modules/CMakeCCompilerABI.c"
+  "/usr/share/cmake-2.8/Modules/CMakeCInformation.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeCXXCompiler.cmake.in"
+  "/usr/share/cmake-2.8/Modules/CMakeCXXCompilerABI.cpp"
+  "/usr/share/cmake-2.8/Modules/CMakeCXXInformation.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeCommonLanguageInclude.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeDetermineCCompiler.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeDetermineCXXCompiler.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeDetermineCompilerABI.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeDetermineSystem.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeFindBinUtils.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeGenericSystem.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeParseImplicitLinkInfo.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeSystem.cmake.in"
+  "/usr/share/cmake-2.8/Modules/CMakeSystemSpecificInformation.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeTestCXXCompiler.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeTestCompilerCommon.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeUnixFindMake.cmake"
+  "/usr/share/cmake-2.8/Modules/Compiler/GNU-C.cmake"
+  "/usr/share/cmake-2.8/Modules/Compiler/GNU-CXX.cmake"
+  "/usr/share/cmake-2.8/Modules/Compiler/GNU.cmake"
+  "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU-C.cmake"
+  "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU-CXX.cmake"
+  "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU.cmake"
+  "/usr/share/cmake-2.8/Modules/Platform/Linux.cmake"
+  "/usr/share/cmake-2.8/Modules/Platform/UnixPaths.cmake"
+  )
+
+# The corresponding makefile is:
+SET(CMAKE_MAKEFILE_OUTPUTS
+  "Makefile"
+  "CMakeFiles/cmake.check_cache"
+  )
+
+# Byproducts of CMake generate step:
+SET(CMAKE_MAKEFILE_PRODUCTS
+  "CMakeFiles/CMakeDirectoryInformation.cmake"
+  )
+
+# Dependency information for all targets:
+SET(CMAKE_DEPEND_INFO_FILES
+  "CMakeFiles/ismrmrd.dir/DependInfo.cmake"
+  )
diff --git a/build/CMakeFiles/Makefile2 b/build/CMakeFiles/Makefile2
new file mode 100644
index 0000000..c19dba4
--- /dev/null
+++ b/build/CMakeFiles/Makefile2
@@ -0,0 +1,99 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+# The main recursive all target
+all:
+.PHONY : all
+
+# The main recursive preinstall target
+preinstall:
+.PHONY : preinstall
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# The program to use to edit the cache.
+CMAKE_EDIT_COMMAND = /usr/bin/ccmake
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/hansenms/mrprogs/ismrmrd
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/hansenms/mrprogs/ismrmrd/build
+
+#=============================================================================
+# Target rules for target CMakeFiles/ismrmrd.dir
+
+# All Build rule for target.
+CMakeFiles/ismrmrd.dir/all:
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/depend
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles  1 2 3
+	@echo "Built target ismrmrd"
+.PHONY : CMakeFiles/ismrmrd.dir/all
+
+# Include target in all.
+all: CMakeFiles/ismrmrd.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/ismrmrd.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles 3
+	$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/ismrmrd.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles 0
+.PHONY : CMakeFiles/ismrmrd.dir/rule
+
+# Convenience name for target.
+ismrmrd: CMakeFiles/ismrmrd.dir/rule
+.PHONY : ismrmrd
+
+# clean rule for target.
+CMakeFiles/ismrmrd.dir/clean:
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/clean
+.PHONY : CMakeFiles/ismrmrd.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/ismrmrd.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/build/CMakeFiles/TargetDirectories.txt b/build/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..96e8cc7
--- /dev/null
+++ b/build/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1 @@
+/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/ismrmrd.dir
diff --git a/build/CMakeFiles/cmake.check_cache b/build/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/build/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/build/CMakeFiles/ismrmrd.dir/CXX.includecache b/build/CMakeFiles/ismrmrd.dir/CXX.includecache
new file mode 100644
index 0000000..8487325
--- /dev/null
+++ b/build/CMakeFiles/ismrmrd.dir/CXX.includecache
@@ -0,0 +1,256 @@
+#IncludeRegexLine: ^[ 	]*#[ 	]*(include|import)[ 	]*[<"]([^">]+)([">])
+
+#IncludeRegexScan: ^.*$
+
+#IncludeRegexComplain: ^$
+
+#IncludeRegexTransform: 
+
+/home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.cxx
+xsd/cxx/pre.hxx
+-
+ismrmrd.hxx
+/home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.hxx
+xsd/cxx/xml/dom/parsing-source.hxx
+-
+istream
+-
+xsd/cxx/xml/sax/std-input-source.hxx
+-
+xsd/cxx/tree/error-handler.hxx
+-
+ostream
+-
+xsd/cxx/tree/error-handler.hxx
+-
+xsd/cxx/xml/dom/serialization-source.hxx
+-
+xsd/cxx/post.hxx
+-
+
+/home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.hxx
+xsd/cxx/config.hxx
+-
+xsd/cxx/pre.hxx
+-
+xsd/cxx/xml/char-utf8.hxx
+-
+xsd/cxx/tree/exceptions.hxx
+-
+xsd/cxx/tree/elements.hxx
+-
+xsd/cxx/tree/types.hxx
+-
+xsd/cxx/xml/error-handler.hxx
+-
+xsd/cxx/xml/dom/auto-ptr.hxx
+-
+xsd/cxx/tree/parsing.hxx
+-
+xsd/cxx/tree/parsing/byte.hxx
+-
+xsd/cxx/tree/parsing/unsigned-byte.hxx
+-
+xsd/cxx/tree/parsing/short.hxx
+-
+xsd/cxx/tree/parsing/unsigned-short.hxx
+-
+xsd/cxx/tree/parsing/int.hxx
+-
+xsd/cxx/tree/parsing/unsigned-int.hxx
+-
+xsd/cxx/tree/parsing/long.hxx
+-
+xsd/cxx/tree/parsing/unsigned-long.hxx
+-
+xsd/cxx/tree/parsing/boolean.hxx
+-
+xsd/cxx/tree/parsing/float.hxx
+-
+xsd/cxx/tree/parsing/double.hxx
+-
+xsd/cxx/tree/parsing/decimal.hxx
+-
+xsd/cxx/xml/dom/serialization-header.hxx
+-
+xsd/cxx/tree/serialization.hxx
+-
+xsd/cxx/tree/serialization/byte.hxx
+-
+xsd/cxx/tree/serialization/unsigned-byte.hxx
+-
+xsd/cxx/tree/serialization/short.hxx
+-
+xsd/cxx/tree/serialization/unsigned-short.hxx
+-
+xsd/cxx/tree/serialization/int.hxx
+-
+xsd/cxx/tree/serialization/unsigned-int.hxx
+-
+xsd/cxx/tree/serialization/long.hxx
+-
+xsd/cxx/tree/serialization/unsigned-long.hxx
+-
+xsd/cxx/tree/serialization/boolean.hxx
+-
+xsd/cxx/tree/serialization/float.hxx
+-
+xsd/cxx/tree/serialization/double.hxx
+-
+xsd/cxx/tree/serialization/decimal.hxx
+-
+memory
+-
+limits
+-
+algorithm
+-
+xsd/cxx/xml/char-utf8.hxx
+-
+xsd/cxx/tree/exceptions.hxx
+-
+xsd/cxx/tree/elements.hxx
+-
+xsd/cxx/tree/containers.hxx
+-
+xsd/cxx/tree/list.hxx
+-
+xsd/cxx/xml/dom/parsing-header.hxx
+-
+iosfwd
+-
+xercesc/sax/InputSource.hpp
+-
+xercesc/dom/DOMDocument.hpp
+-
+xercesc/dom/DOMErrorHandler.hpp
+-
+iosfwd
+-
+xercesc/dom/DOMDocument.hpp
+-
+xercesc/dom/DOMErrorHandler.hpp
+-
+xercesc/framework/XMLFormatter.hpp
+-
+xsd/cxx/xml/dom/auto-ptr.hxx
+-
+xsd/cxx/post.hxx
+-
+
+/home/hansenms/mrprogs/ismrmrd/main.cpp
+iostream
+-
+ismrmrd.hxx
+/home/hansenms/mrprogs/ismrmrd/ismrmrd.hxx
+
+src/xsd/ismrmrd.hxx
+xsd/cxx/config.hxx
+-
+xsd/cxx/pre.hxx
+-
+xsd/cxx/xml/char-utf8.hxx
+-
+xsd/cxx/tree/exceptions.hxx
+-
+xsd/cxx/tree/elements.hxx
+-
+xsd/cxx/tree/types.hxx
+-
+xsd/cxx/xml/error-handler.hxx
+-
+xsd/cxx/xml/dom/auto-ptr.hxx
+-
+xsd/cxx/tree/parsing.hxx
+-
+xsd/cxx/tree/parsing/byte.hxx
+-
+xsd/cxx/tree/parsing/unsigned-byte.hxx
+-
+xsd/cxx/tree/parsing/short.hxx
+-
+xsd/cxx/tree/parsing/unsigned-short.hxx
+-
+xsd/cxx/tree/parsing/int.hxx
+-
+xsd/cxx/tree/parsing/unsigned-int.hxx
+-
+xsd/cxx/tree/parsing/long.hxx
+-
+xsd/cxx/tree/parsing/unsigned-long.hxx
+-
+xsd/cxx/tree/parsing/boolean.hxx
+-
+xsd/cxx/tree/parsing/float.hxx
+-
+xsd/cxx/tree/parsing/double.hxx
+-
+xsd/cxx/tree/parsing/decimal.hxx
+-
+xsd/cxx/xml/dom/serialization-header.hxx
+-
+xsd/cxx/tree/serialization.hxx
+-
+xsd/cxx/tree/serialization/byte.hxx
+-
+xsd/cxx/tree/serialization/unsigned-byte.hxx
+-
+xsd/cxx/tree/serialization/short.hxx
+-
+xsd/cxx/tree/serialization/unsigned-short.hxx
+-
+xsd/cxx/tree/serialization/int.hxx
+-
+xsd/cxx/tree/serialization/unsigned-int.hxx
+-
+xsd/cxx/tree/serialization/long.hxx
+-
+xsd/cxx/tree/serialization/unsigned-long.hxx
+-
+xsd/cxx/tree/serialization/boolean.hxx
+-
+xsd/cxx/tree/serialization/float.hxx
+-
+xsd/cxx/tree/serialization/double.hxx
+-
+xsd/cxx/tree/serialization/decimal.hxx
+-
+memory
+-
+limits
+-
+algorithm
+-
+xsd/cxx/xml/char-utf8.hxx
+-
+xsd/cxx/tree/exceptions.hxx
+-
+xsd/cxx/tree/elements.hxx
+-
+xsd/cxx/tree/containers.hxx
+-
+xsd/cxx/tree/list.hxx
+-
+xsd/cxx/xml/dom/parsing-header.hxx
+-
+iosfwd
+-
+xercesc/sax/InputSource.hpp
+-
+xercesc/dom/DOMDocument.hpp
+-
+xercesc/dom/DOMErrorHandler.hpp
+-
+iosfwd
+-
+xercesc/dom/DOMDocument.hpp
+-
+xercesc/dom/DOMErrorHandler.hpp
+-
+xercesc/framework/XMLFormatter.hpp
+-
+xsd/cxx/xml/dom/auto-ptr.hxx
+-
+xsd/cxx/post.hxx
+-
+
diff --git a/build/CMakeFiles/ismrmrd.dir/DependInfo.cmake b/build/CMakeFiles/ismrmrd.dir/DependInfo.cmake
new file mode 100644
index 0000000..5738b89
--- /dev/null
+++ b/build/CMakeFiles/ismrmrd.dir/DependInfo.cmake
@@ -0,0 +1,20 @@
+# The set of languages for which implicit dependencies are needed:
+SET(CMAKE_DEPENDS_LANGUAGES
+  "CXX"
+  )
+# The set of files for implicit dependencies of each language:
+SET(CMAKE_DEPENDS_CHECK_CXX
+  "/home/hansenms/mrprogs/ismrmrd/main.cpp" "/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/ismrmrd.dir/main.cpp.o"
+  "/home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.cxx" "/home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o"
+  )
+SET(CMAKE_CXX_COMPILER_ID "GNU")
+
+# Pairs of files generated by the same build rule.
+SET(CMAKE_MULTIPLE_OUTPUT_PAIRS
+  "/home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.hxx" "/home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.cxx"
+  )
+
+
+# Targets to which this target links.
+SET(CMAKE_TARGET_LINKED_INFO_FILES
+  )
diff --git a/build/CMakeFiles/ismrmrd.dir/build.make b/build/CMakeFiles/ismrmrd.dir/build.make
new file mode 100644
index 0000000..c8503c8
--- /dev/null
+++ b/build/CMakeFiles/ismrmrd.dir/build.make
@@ -0,0 +1,137 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# The program to use to edit the cache.
+CMAKE_EDIT_COMMAND = /usr/bin/ccmake
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/hansenms/mrprogs/ismrmrd
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/hansenms/mrprogs/ismrmrd/build
+
+# Include any dependencies generated for this target.
+include CMakeFiles/ismrmrd.dir/depend.make
+
+# Include the progress variables for this target.
+include CMakeFiles/ismrmrd.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include CMakeFiles/ismrmrd.dir/flags.make
+
+CMakeFiles/ismrmrd.dir/main.cpp.o: CMakeFiles/ismrmrd.dir/flags.make
+CMakeFiles/ismrmrd.dir/main.cpp.o: ../main.cpp
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles $(CMAKE_PROGRESS_1)
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/ismrmrd.dir/main.cpp.o"
+	/usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/ismrmrd.dir/main.cpp.o -c /home/hansenms/mrprogs/ismrmrd/main.cpp
+
+CMakeFiles/ismrmrd.dir/main.cpp.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/ismrmrd.dir/main.cpp.i"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /home/hansenms/mrprogs/ismrmrd/main.cpp > CMakeFiles/ismrmrd.dir/main.cpp.i
+
+CMakeFiles/ismrmrd.dir/main.cpp.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/ismrmrd.dir/main.cpp.s"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /home/hansenms/mrprogs/ismrmrd/main.cpp -o CMakeFiles/ismrmrd.dir/main.cpp.s
+
+CMakeFiles/ismrmrd.dir/main.cpp.o.requires:
+.PHONY : CMakeFiles/ismrmrd.dir/main.cpp.o.requires
+
+CMakeFiles/ismrmrd.dir/main.cpp.o.provides: CMakeFiles/ismrmrd.dir/main.cpp.o.requires
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/main.cpp.o.provides.build
+.PHONY : CMakeFiles/ismrmrd.dir/main.cpp.o.provides
+
+CMakeFiles/ismrmrd.dir/main.cpp.o.provides.build: CMakeFiles/ismrmrd.dir/main.cpp.o
+
+CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o: CMakeFiles/ismrmrd.dir/flags.make
+CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o: src/xsd/ismrmrd.cxx
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles $(CMAKE_PROGRESS_2)
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o"
+	/usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o -c /home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.cxx
+
+CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.i"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.cxx > CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.i
+
+CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.s"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.cxx -o CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.s
+
+CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o.requires:
+.PHONY : CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o.requires
+
+CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o.provides: CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o.requires
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o.provides.build
+.PHONY : CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o.provides
+
+CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o.provides.build: CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o
+
+src/xsd/ismrmrd.cxx: ../schema/ismrmrd.xsd
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles $(CMAKE_PROGRESS_3)
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold "Generating src/xsd/ismrmrd.cxx, src/xsd/ismrmrd.hxx"
+	/usr/bin/xsdcxx cxx-tree --generate-serialization --output-dir /home/hansenms/mrprogs/ismrmrd/build/src/xsd /home/hansenms/mrprogs/ismrmrd/build/schema/ismrmrd.xsd
+
+src/xsd/ismrmrd.hxx: src/xsd/ismrmrd.cxx
+
+# Object files for target ismrmrd
+ismrmrd_OBJECTS = \
+"CMakeFiles/ismrmrd.dir/main.cpp.o" \
+"CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o"
+
+# External object files for target ismrmrd
+ismrmrd_EXTERNAL_OBJECTS =
+
+ismrmrd: CMakeFiles/ismrmrd.dir/main.cpp.o
+ismrmrd: CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o
+ismrmrd: /usr/lib/libxerces-c.so
+ismrmrd: CMakeFiles/ismrmrd.dir/build.make
+ismrmrd: CMakeFiles/ismrmrd.dir/link.txt
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX executable ismrmrd"
+	$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/ismrmrd.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+CMakeFiles/ismrmrd.dir/build: ismrmrd
+.PHONY : CMakeFiles/ismrmrd.dir/build
+
+CMakeFiles/ismrmrd.dir/requires: CMakeFiles/ismrmrd.dir/main.cpp.o.requires
+CMakeFiles/ismrmrd.dir/requires: CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o.requires
+.PHONY : CMakeFiles/ismrmrd.dir/requires
+
+CMakeFiles/ismrmrd.dir/clean:
+	$(CMAKE_COMMAND) -P CMakeFiles/ismrmrd.dir/cmake_clean.cmake
+.PHONY : CMakeFiles/ismrmrd.dir/clean
+
+CMakeFiles/ismrmrd.dir/depend: src/xsd/ismrmrd.cxx
+CMakeFiles/ismrmrd.dir/depend: src/xsd/ismrmrd.hxx
+	cd /home/hansenms/mrprogs/ismrmrd/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/hansenms/mrprogs/ismrmrd /home/hansenms/mrprogs/ismrmrd /home/hansenms/mrprogs/ismrmrd/build /home/hansenms/mrprogs/ismrmrd/build /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/ismrmrd.dir/DependInfo.cmake --color=$(COLOR)
+.PHONY : CMakeFiles/ismrmrd.dir/depend
+
diff --git a/build/CMakeFiles/ismrmrd.dir/cmake_clean.cmake b/build/CMakeFiles/ismrmrd.dir/cmake_clean.cmake
new file mode 100644
index 0000000..ff3a97b
--- /dev/null
+++ b/build/CMakeFiles/ismrmrd.dir/cmake_clean.cmake
@@ -0,0 +1,13 @@
+FILE(REMOVE_RECURSE
+  "CMakeFiles/ismrmrd.dir/main.cpp.o"
+  "CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o"
+  "src/xsd/ismrmrd.cxx"
+  "src/xsd/ismrmrd.hxx"
+  "ismrmrd.pdb"
+  "ismrmrd"
+)
+
+# Per-language clean rules from dependency scanning.
+FOREACH(lang CXX)
+  INCLUDE(CMakeFiles/ismrmrd.dir/cmake_clean_${lang}.cmake OPTIONAL)
+ENDFOREACH(lang)
diff --git a/build/CMakeFiles/ismrmrd.dir/depend.internal b/build/CMakeFiles/ismrmrd.dir/depend.internal
new file mode 100644
index 0000000..a3e05a2
--- /dev/null
+++ b/build/CMakeFiles/ismrmrd.dir/depend.internal
@@ -0,0 +1,9 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+CMakeFiles/ismrmrd.dir/main.cpp.o
+ /home/hansenms/mrprogs/ismrmrd/main.cpp
+ src/xsd/ismrmrd.hxx
+CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o
+ /home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.cxx
+ /home/hansenms/mrprogs/ismrmrd/build/src/xsd/ismrmrd.hxx
diff --git a/build/CMakeFiles/ismrmrd.dir/depend.make b/build/CMakeFiles/ismrmrd.dir/depend.make
new file mode 100644
index 0000000..16f9d89
--- /dev/null
+++ b/build/CMakeFiles/ismrmrd.dir/depend.make
@@ -0,0 +1,9 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+CMakeFiles/ismrmrd.dir/main.cpp.o: ../main.cpp
+CMakeFiles/ismrmrd.dir/main.cpp.o: src/xsd/ismrmrd.hxx
+
+CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o: src/xsd/ismrmrd.cxx
+CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o: src/xsd/ismrmrd.hxx
+
diff --git a/build/CMakeFiles/ismrmrd.dir/flags.make b/build/CMakeFiles/ismrmrd.dir/flags.make
new file mode 100644
index 0000000..3991dab
--- /dev/null
+++ b/build/CMakeFiles/ismrmrd.dir/flags.make
@@ -0,0 +1,8 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# compile CXX with /usr/bin/c++
+CXX_FLAGS = -I/home/hansenms/mrprogs/ismrmrd/build/src/xsd   
+
+CXX_DEFINES = 
+
diff --git a/build/CMakeFiles/ismrmrd.dir/link.txt b/build/CMakeFiles/ismrmrd.dir/link.txt
new file mode 100644
index 0000000..5eb0304
--- /dev/null
+++ b/build/CMakeFiles/ismrmrd.dir/link.txt
@@ -0,0 +1 @@
+/usr/bin/c++       CMakeFiles/ismrmrd.dir/main.cpp.o CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o  -o ismrmrd -rdynamic -lxerces-c 
diff --git a/build/CMakeFiles/ismrmrd.dir/main.cpp.o b/build/CMakeFiles/ismrmrd.dir/main.cpp.o
new file mode 100644
index 0000000..ba17947
Binary files /dev/null and b/build/CMakeFiles/ismrmrd.dir/main.cpp.o differ
diff --git a/build/CMakeFiles/ismrmrd.dir/progress.make b/build/CMakeFiles/ismrmrd.dir/progress.make
new file mode 100644
index 0000000..6a9dc74
--- /dev/null
+++ b/build/CMakeFiles/ismrmrd.dir/progress.make
@@ -0,0 +1,4 @@
+CMAKE_PROGRESS_1 = 1
+CMAKE_PROGRESS_2 = 2
+CMAKE_PROGRESS_3 = 3
+
diff --git a/build/CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o b/build/CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o
new file mode 100644
index 0000000..8c35eff
Binary files /dev/null and b/build/CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o differ
diff --git a/build/CMakeFiles/progress.marks b/build/CMakeFiles/progress.marks
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/build/CMakeFiles/progress.marks
@@ -0,0 +1 @@
+3
diff --git a/build/Makefile b/build/Makefile
new file mode 100644
index 0000000..418c2b2
--- /dev/null
+++ b/build/Makefile
@@ -0,0 +1,190 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# The program to use to edit the cache.
+CMAKE_EDIT_COMMAND = /usr/bin/ccmake
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/hansenms/mrprogs/ismrmrd
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/hansenms/mrprogs/ismrmrd/build
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target edit_cache
+edit_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
+	/usr/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+.PHONY : edit_cache/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+	/usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+.PHONY : rebuild_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles/progress.marks
+	$(MAKE) -f CMakeFiles/Makefile2 all
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/hansenms/mrprogs/ismrmrd/build/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+	$(MAKE) -f CMakeFiles/Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+	$(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+	$(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named ismrmrd
+
+# Build rule for target.
+ismrmrd: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 ismrmrd
+.PHONY : ismrmrd
+
+# fast build rule for target.
+ismrmrd/fast:
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/build
+.PHONY : ismrmrd/fast
+
+main.o: main.cpp.o
+.PHONY : main.o
+
+# target to build an object file
+main.cpp.o:
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/main.cpp.o
+.PHONY : main.cpp.o
+
+main.i: main.cpp.i
+.PHONY : main.i
+
+# target to preprocess a source file
+main.cpp.i:
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/main.cpp.i
+.PHONY : main.cpp.i
+
+main.s: main.cpp.s
+.PHONY : main.s
+
+# target to generate assembly for a file
+main.cpp.s:
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/main.cpp.s
+.PHONY : main.cpp.s
+
+src/xsd/ismrmrd.o: src/xsd/ismrmrd.cxx.o
+.PHONY : src/xsd/ismrmrd.o
+
+# target to build an object file
+src/xsd/ismrmrd.cxx.o:
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.o
+.PHONY : src/xsd/ismrmrd.cxx.o
+
+src/xsd/ismrmrd.i: src/xsd/ismrmrd.cxx.i
+.PHONY : src/xsd/ismrmrd.i
+
+# target to preprocess a source file
+src/xsd/ismrmrd.cxx.i:
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.i
+.PHONY : src/xsd/ismrmrd.cxx.i
+
+src/xsd/ismrmrd.s: src/xsd/ismrmrd.cxx.s
+.PHONY : src/xsd/ismrmrd.s
+
+# target to generate assembly for a file
+src/xsd/ismrmrd.cxx.s:
+	$(MAKE) -f CMakeFiles/ismrmrd.dir/build.make CMakeFiles/ismrmrd.dir/src/xsd/ismrmrd.cxx.s
+.PHONY : src/xsd/ismrmrd.cxx.s
+
+# Help Target
+help:
+	@echo "The following are some of the valid targets for this Makefile:"
+	@echo "... all (the default if no target is provided)"
+	@echo "... clean"
+	@echo "... depend"
+	@echo "... edit_cache"
+	@echo "... ismrmrd"
+	@echo "... rebuild_cache"
+	@echo "... main.o"
+	@echo "... main.i"
+	@echo "... main.s"
+	@echo "... src/xsd/ismrmrd.o"
+	@echo "... src/xsd/ismrmrd.i"
+	@echo "... src/xsd/ismrmrd.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/build/cmake_install.cmake b/build/cmake_install.cmake
new file mode 100644
index 0000000..54c4767
--- /dev/null
+++ b/build/cmake_install.cmake
@@ -0,0 +1,44 @@
+# Install script for directory: /home/hansenms/mrprogs/ismrmrd
+
+# Set the install prefix
+IF(NOT DEFINED CMAKE_INSTALL_PREFIX)
+  SET(CMAKE_INSTALL_PREFIX "/usr/local")
+ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)
+STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+  IF(BUILD_TYPE)
+    STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+           CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+  ELSE(BUILD_TYPE)
+    SET(CMAKE_INSTALL_CONFIG_NAME "")
+  ENDIF(BUILD_TYPE)
+  MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+
+# Set the component getting installed.
+IF(NOT CMAKE_INSTALL_COMPONENT)
+  IF(COMPONENT)
+    MESSAGE(STATUS "Install component: \"${COMPONENT}\"")
+    SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+  ELSE(COMPONENT)
+    SET(CMAKE_INSTALL_COMPONENT)
+  ENDIF(COMPONENT)
+ENDIF(NOT CMAKE_INSTALL_COMPONENT)
+
+# Install shared libraries without execute permission?
+IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+  SET(CMAKE_INSTALL_SO_NO_EXE "1")
+ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+
+IF(CMAKE_INSTALL_COMPONENT)
+  SET(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+ELSE(CMAKE_INSTALL_COMPONENT)
+  SET(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+ENDIF(CMAKE_INSTALL_COMPONENT)
+
+FILE(WRITE "/home/hansenms/mrprogs/ismrmrd/build/${CMAKE_INSTALL_MANIFEST}" "")
+FOREACH(file ${CMAKE_INSTALL_MANIFEST_FILES})
+  FILE(APPEND "/home/hansenms/mrprogs/ismrmrd/build/${CMAKE_INSTALL_MANIFEST}" "${file}\n")
+ENDFOREACH(file)
diff --git a/build/ismrmrd b/build/ismrmrd
new file mode 100755
index 0000000..9418ab8
Binary files /dev/null and b/build/ismrmrd differ
diff --git a/build/schema/ismrmrd.xsd b/build/schema/ismrmrd.xsd
new file mode 100644
index 0000000..fd2f5a5
--- /dev/null
+++ b/build/schema/ismrmrd.xsd
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+targetNamespace="http://www.ismrm.org/ISMRMRD"
+xmlns="http://www.ismrm.org/ISMRMRD"
+elementFormDefault="qualified">
+
+  <xs:element name="ismrmrdHeader">
+    <xs:complexType>
+      <xs:sequence>
+	<xs:element name="subjectInformation" type="subjectInformationType" minOccurs="0" maxOccurs="1" />
+	<xs:element name="acquisitionSystemInformation" type="acquisitionSystemInformationType" minOccurs="0" maxOccurs="1" /> 
+	<xs:element name="experimentalConditions" type="experimentalConditionsType" minOccurs="1" maxOccurs="1"/>
+	<xs:element name="encoding" maxOccurs="65535" minOccurs="1">
+	  <xs:complexType>
+	    <xs:all>
+	      <xs:element name="encodedSpace"   type="encodingSpaceType"  minOccurs="1" maxOccurs="1"/>
+	      <xs:element name="reconSpace"     type="encodingSpaceType"  minOccurs="1" maxOccurs="1"/>
+	      <xs:element name="encodingLimits" type="encodingLimitsType" minOccurs="1" maxOccurs="1"/>
+	      <xs:element name="trajectory"     type="trajectoryType"     minOccurs="1" maxOccurs="1"/>
+	    </xs:all>
+	  </xs:complexType>
+	</xs:element>
+	<xs:element name="userParameters" minOccurs="0" maxOccurs="1">
+	  <xs:complexType>
+	    <xs:sequence>
+	      <xs:element name="userParameterLong"   type="userParameterLongType"   minOccurs="0" maxOccurs="unbounded"/>
+	      <xs:element name="userParameterDouble" type="userParameterDoubleType" minOccurs="0" maxOccurs="unbounded"/>
+	    </xs:sequence>
+	  </xs:complexType>
+	</xs:element>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:complexType name="subjectInformationType">
+    <xs:all>
+      <xs:element name="patientName" type="xs:string" minOccurs="0"/>
+      <xs:element name="patientWeight_kg" type="xs:float" minOccurs="0"/>
+    </xs:all>
+  </xs:complexType>
+  
+  <xs:complexType name="experimentalConditionsType">
+    <xs:all>
+      <xs:element name="H1resonanceFrequencyHz" type="xs:long"/>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="acquisitionSystemInformationType">
+    <xs:all>
+      <xs:element name="systemVendor" type="xs:string"  minOccurs="0"/>
+      <xs:element name="systemModel"  type="xs:string"  minOccurs="0"/>
+      <xs:element name="systemFieldStrength_T" type="xs:float" minOccurs="0"/>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="encodingSpaceType">
+    <xs:all>
+      <xs:element name="matrixSize">
+	<xs:complexType>
+	  <xs:sequence>
+	    <xs:element type="xs:unsignedShort" name="x" default="1" minOccurs="1" maxOccurs="1"/>
+	    <xs:element type="xs:unsignedShort" name="y" default="1" minOccurs="1" maxOccurs="1"/>
+	    <xs:element type="xs:unsignedShort" name="z" default="1" minOccurs="1" maxOccurs="1"/>
+	  </xs:sequence>
+	</xs:complexType>
+      </xs:element>
+      <xs:element name="fieldOfView_m">
+	<xs:complexType>
+	  <xs:sequence>
+	    <xs:element type="xs:float" name="x" minOccurs="1" maxOccurs="1"/>
+	    <xs:element type="xs:float" name="y" minOccurs="1" maxOccurs="1"/>
+	    <xs:element type="xs:float" name="z" minOccurs="1" maxOccurs="1"/>
+	  </xs:sequence>
+	</xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="limitType">
+    <xs:all> 
+      <xs:element name="minimum" type="xs:unsignedShort" default="0"/>
+      <xs:element name="maximum" type="xs:unsignedShort" default="0"/>
+      <xs:element name="center" type="xs:unsignedShort" default="0"/>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="encodingLimitsType">
+    <xs:all>
+      <xs:element name="kspace_encoding_step_1" type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="kspace_encoding_step_2" type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="average"                type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="slice"                  type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="contrast"               type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="phase"                  type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="repetition"             type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="set"                    type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="segment"                type="limitType" minOccurs="0" maxOccurs="1"/>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:simpleType name="trajectoryType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="cartesian"/>
+      <xs:enumeration value="epi"/>
+      <xs:enumeration value="radial"/>
+      <xs:enumeration value="goldenangle"/>
+      <xs:enumeration value="spiral"/>
+      <xs:enumeration value="other"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:complexType name="userParameterLongType">
+    <xs:all>
+      <xs:element name="name"  type="xs:string"/>
+      <xs:element name="value" type="xs:long"/> 
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="userParameterDoubleType">
+    <xs:all>
+      <xs:element name="name"  type="xs:string"/>
+      <xs:element name="value" type="xs:double"/> 
+    </xs:all>
+  </xs:complexType>
+
+</xs:schema>
diff --git a/build/src/xsd/ismrmrd.cxx b/build/src/xsd/ismrmrd.cxx
new file mode 100644
index 0000000..4e7050d
--- /dev/null
+++ b/build/src/xsd/ismrmrd.cxx
@@ -0,0 +1,3874 @@
+// Copyright (C) 2005-2010 Code Synthesis Tools CC
+//
+// This program was generated by CodeSynthesis XSD, an XML Schema to
+// C++ data binding compiler.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation.
+//
+// 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+// In addition, as a special exception, Code Synthesis Tools CC gives
+// permission to link this program with the Xerces-C++ library (or with
+// modified versions of Xerces-C++ that use the same license as Xerces-C++),
+// and distribute linked combinations including the two. You must obey
+// the GNU General Public License version 2 in all respects for all of
+// the code used other than Xerces-C++. If you modify this copy of the
+// program, you may extend this exception to your version of the program,
+// but you are not obligated to do so. If you do not wish to do so, delete
+// this exception statement from your version.
+//
+// Furthermore, Code Synthesis Tools CC makes a special exception for
+// the Free/Libre and Open Source Software (FLOSS) which is described
+// in the accompanying FLOSSE file.
+//
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+#include <xsd/cxx/pre.hxx>
+
+#include "ismrmrd.hxx"
+
+namespace ISMRMRD
+{
+  // subjectInformationType
+  // 
+
+  const subjectInformationType::patientName_optional& subjectInformationType::
+  patientName () const
+  {
+    return this->patientName_;
+  }
+
+  subjectInformationType::patientName_optional& subjectInformationType::
+  patientName ()
+  {
+    return this->patientName_;
+  }
+
+  void subjectInformationType::
+  patientName (const patientName_type& x)
+  {
+    this->patientName_.set (x);
+  }
+
+  void subjectInformationType::
+  patientName (const patientName_optional& x)
+  {
+    this->patientName_ = x;
+  }
+
+  void subjectInformationType::
+  patientName (::std::auto_ptr< patientName_type > x)
+  {
+    this->patientName_.set (x);
+  }
+
+  const subjectInformationType::patientWeight_kg_optional& subjectInformationType::
+  patientWeight_kg () const
+  {
+    return this->patientWeight_kg_;
+  }
+
+  subjectInformationType::patientWeight_kg_optional& subjectInformationType::
+  patientWeight_kg ()
+  {
+    return this->patientWeight_kg_;
+  }
+
+  void subjectInformationType::
+  patientWeight_kg (const patientWeight_kg_type& x)
+  {
+    this->patientWeight_kg_.set (x);
+  }
+
+  void subjectInformationType::
+  patientWeight_kg (const patientWeight_kg_optional& x)
+  {
+    this->patientWeight_kg_ = x;
+  }
+
+
+  // experimentalConditionsType
+  // 
+
+  const experimentalConditionsType::H1resonanceFrequencyHz_type& experimentalConditionsType::
+  H1resonanceFrequencyHz () const
+  {
+    return this->H1resonanceFrequencyHz_.get ();
+  }
+
+  experimentalConditionsType::H1resonanceFrequencyHz_type& experimentalConditionsType::
+  H1resonanceFrequencyHz ()
+  {
+    return this->H1resonanceFrequencyHz_.get ();
+  }
+
+  void experimentalConditionsType::
+  H1resonanceFrequencyHz (const H1resonanceFrequencyHz_type& x)
+  {
+    this->H1resonanceFrequencyHz_.set (x);
+  }
+
+
+  // acquisitionSystemInformationType
+  // 
+
+  const acquisitionSystemInformationType::systemVendor_optional& acquisitionSystemInformationType::
+  systemVendor () const
+  {
+    return this->systemVendor_;
+  }
+
+  acquisitionSystemInformationType::systemVendor_optional& acquisitionSystemInformationType::
+  systemVendor ()
+  {
+    return this->systemVendor_;
+  }
+
+  void acquisitionSystemInformationType::
+  systemVendor (const systemVendor_type& x)
+  {
+    this->systemVendor_.set (x);
+  }
+
+  void acquisitionSystemInformationType::
+  systemVendor (const systemVendor_optional& x)
+  {
+    this->systemVendor_ = x;
+  }
+
+  void acquisitionSystemInformationType::
+  systemVendor (::std::auto_ptr< systemVendor_type > x)
+  {
+    this->systemVendor_.set (x);
+  }
+
+  const acquisitionSystemInformationType::systemModel_optional& acquisitionSystemInformationType::
+  systemModel () const
+  {
+    return this->systemModel_;
+  }
+
+  acquisitionSystemInformationType::systemModel_optional& acquisitionSystemInformationType::
+  systemModel ()
+  {
+    return this->systemModel_;
+  }
+
+  void acquisitionSystemInformationType::
+  systemModel (const systemModel_type& x)
+  {
+    this->systemModel_.set (x);
+  }
+
+  void acquisitionSystemInformationType::
+  systemModel (const systemModel_optional& x)
+  {
+    this->systemModel_ = x;
+  }
+
+  void acquisitionSystemInformationType::
+  systemModel (::std::auto_ptr< systemModel_type > x)
+  {
+    this->systemModel_.set (x);
+  }
+
+  const acquisitionSystemInformationType::systemFieldStrength_T_optional& acquisitionSystemInformationType::
+  systemFieldStrength_T () const
+  {
+    return this->systemFieldStrength_T_;
+  }
+
+  acquisitionSystemInformationType::systemFieldStrength_T_optional& acquisitionSystemInformationType::
+  systemFieldStrength_T ()
+  {
+    return this->systemFieldStrength_T_;
+  }
+
+  void acquisitionSystemInformationType::
+  systemFieldStrength_T (const systemFieldStrength_T_type& x)
+  {
+    this->systemFieldStrength_T_.set (x);
+  }
+
+  void acquisitionSystemInformationType::
+  systemFieldStrength_T (const systemFieldStrength_T_optional& x)
+  {
+    this->systemFieldStrength_T_ = x;
+  }
+
+
+  // encodingSpaceType
+  // 
+
+  const encodingSpaceType::matrixSize_type& encodingSpaceType::
+  matrixSize () const
+  {
+    return this->matrixSize_.get ();
+  }
+
+  encodingSpaceType::matrixSize_type& encodingSpaceType::
+  matrixSize ()
+  {
+    return this->matrixSize_.get ();
+  }
+
+  void encodingSpaceType::
+  matrixSize (const matrixSize_type& x)
+  {
+    this->matrixSize_.set (x);
+  }
+
+  void encodingSpaceType::
+  matrixSize (::std::auto_ptr< matrixSize_type > x)
+  {
+    this->matrixSize_.set (x);
+  }
+
+  const encodingSpaceType::fieldOfView_m_type& encodingSpaceType::
+  fieldOfView_m () const
+  {
+    return this->fieldOfView_m_.get ();
+  }
+
+  encodingSpaceType::fieldOfView_m_type& encodingSpaceType::
+  fieldOfView_m ()
+  {
+    return this->fieldOfView_m_.get ();
+  }
+
+  void encodingSpaceType::
+  fieldOfView_m (const fieldOfView_m_type& x)
+  {
+    this->fieldOfView_m_.set (x);
+  }
+
+  void encodingSpaceType::
+  fieldOfView_m (::std::auto_ptr< fieldOfView_m_type > x)
+  {
+    this->fieldOfView_m_.set (x);
+  }
+
+
+  // limitType
+  // 
+
+  const limitType::minimum_type& limitType::
+  minimum () const
+  {
+    return this->minimum_.get ();
+  }
+
+  limitType::minimum_type& limitType::
+  minimum ()
+  {
+    return this->minimum_.get ();
+  }
+
+  void limitType::
+  minimum (const minimum_type& x)
+  {
+    this->minimum_.set (x);
+  }
+
+  limitType::minimum_type limitType::
+  minimum_default_value ()
+  {
+    return minimum_type (0);
+  }
+
+  const limitType::maximum_type& limitType::
+  maximum () const
+  {
+    return this->maximum_.get ();
+  }
+
+  limitType::maximum_type& limitType::
+  maximum ()
+  {
+    return this->maximum_.get ();
+  }
+
+  void limitType::
+  maximum (const maximum_type& x)
+  {
+    this->maximum_.set (x);
+  }
+
+  limitType::maximum_type limitType::
+  maximum_default_value ()
+  {
+    return maximum_type (0);
+  }
+
+  const limitType::center_type& limitType::
+  center () const
+  {
+    return this->center_.get ();
+  }
+
+  limitType::center_type& limitType::
+  center ()
+  {
+    return this->center_.get ();
+  }
+
+  void limitType::
+  center (const center_type& x)
+  {
+    this->center_.set (x);
+  }
+
+  limitType::center_type limitType::
+  center_default_value ()
+  {
+    return center_type (0);
+  }
+
+
+  // encodingLimitsType
+  // 
+
+  const encodingLimitsType::kspace_encoding_step_1_optional& encodingLimitsType::
+  kspace_encoding_step_1 () const
+  {
+    return this->kspace_encoding_step_1_;
+  }
+
+  encodingLimitsType::kspace_encoding_step_1_optional& encodingLimitsType::
+  kspace_encoding_step_1 ()
+  {
+    return this->kspace_encoding_step_1_;
+  }
+
+  void encodingLimitsType::
+  kspace_encoding_step_1 (const kspace_encoding_step_1_type& x)
+  {
+    this->kspace_encoding_step_1_.set (x);
+  }
+
+  void encodingLimitsType::
+  kspace_encoding_step_1 (const kspace_encoding_step_1_optional& x)
+  {
+    this->kspace_encoding_step_1_ = x;
+  }
+
+  void encodingLimitsType::
+  kspace_encoding_step_1 (::std::auto_ptr< kspace_encoding_step_1_type > x)
+  {
+    this->kspace_encoding_step_1_.set (x);
+  }
+
+  const encodingLimitsType::kspace_encoding_step_2_optional& encodingLimitsType::
+  kspace_encoding_step_2 () const
+  {
+    return this->kspace_encoding_step_2_;
+  }
+
+  encodingLimitsType::kspace_encoding_step_2_optional& encodingLimitsType::
+  kspace_encoding_step_2 ()
+  {
+    return this->kspace_encoding_step_2_;
+  }
+
+  void encodingLimitsType::
+  kspace_encoding_step_2 (const kspace_encoding_step_2_type& x)
+  {
+    this->kspace_encoding_step_2_.set (x);
+  }
+
+  void encodingLimitsType::
+  kspace_encoding_step_2 (const kspace_encoding_step_2_optional& x)
+  {
+    this->kspace_encoding_step_2_ = x;
+  }
+
+  void encodingLimitsType::
+  kspace_encoding_step_2 (::std::auto_ptr< kspace_encoding_step_2_type > x)
+  {
+    this->kspace_encoding_step_2_.set (x);
+  }
+
+  const encodingLimitsType::average_optional& encodingLimitsType::
+  average () const
+  {
+    return this->average_;
+  }
+
+  encodingLimitsType::average_optional& encodingLimitsType::
+  average ()
+  {
+    return this->average_;
+  }
+
+  void encodingLimitsType::
+  average (const average_type& x)
+  {
+    this->average_.set (x);
+  }
+
+  void encodingLimitsType::
+  average (const average_optional& x)
+  {
+    this->average_ = x;
+  }
+
+  void encodingLimitsType::
+  average (::std::auto_ptr< average_type > x)
+  {
+    this->average_.set (x);
+  }
+
+  const encodingLimitsType::slice_optional& encodingLimitsType::
+  slice () const
+  {
+    return this->slice_;
+  }
+
+  encodingLimitsType::slice_optional& encodingLimitsType::
+  slice ()
+  {
+    return this->slice_;
+  }
+
+  void encodingLimitsType::
+  slice (const slice_type& x)
+  {
+    this->slice_.set (x);
+  }
+
+  void encodingLimitsType::
+  slice (const slice_optional& x)
+  {
+    this->slice_ = x;
+  }
+
+  void encodingLimitsType::
+  slice (::std::auto_ptr< slice_type > x)
+  {
+    this->slice_.set (x);
+  }
+
+  const encodingLimitsType::contrast_optional& encodingLimitsType::
+  contrast () const
+  {
+    return this->contrast_;
+  }
+
+  encodingLimitsType::contrast_optional& encodingLimitsType::
+  contrast ()
+  {
+    return this->contrast_;
+  }
+
+  void encodingLimitsType::
+  contrast (const contrast_type& x)
+  {
+    this->contrast_.set (x);
+  }
+
+  void encodingLimitsType::
+  contrast (const contrast_optional& x)
+  {
+    this->contrast_ = x;
+  }
+
+  void encodingLimitsType::
+  contrast (::std::auto_ptr< contrast_type > x)
+  {
+    this->contrast_.set (x);
+  }
+
+  const encodingLimitsType::phase_optional& encodingLimitsType::
+  phase () const
+  {
+    return this->phase_;
+  }
+
+  encodingLimitsType::phase_optional& encodingLimitsType::
+  phase ()
+  {
+    return this->phase_;
+  }
+
+  void encodingLimitsType::
+  phase (const phase_type& x)
+  {
+    this->phase_.set (x);
+  }
+
+  void encodingLimitsType::
+  phase (const phase_optional& x)
+  {
+    this->phase_ = x;
+  }
+
+  void encodingLimitsType::
+  phase (::std::auto_ptr< phase_type > x)
+  {
+    this->phase_.set (x);
+  }
+
+  const encodingLimitsType::repetition_optional& encodingLimitsType::
+  repetition () const
+  {
+    return this->repetition_;
+  }
+
+  encodingLimitsType::repetition_optional& encodingLimitsType::
+  repetition ()
+  {
+    return this->repetition_;
+  }
+
+  void encodingLimitsType::
+  repetition (const repetition_type& x)
+  {
+    this->repetition_.set (x);
+  }
+
+  void encodingLimitsType::
+  repetition (const repetition_optional& x)
+  {
+    this->repetition_ = x;
+  }
+
+  void encodingLimitsType::
+  repetition (::std::auto_ptr< repetition_type > x)
+  {
+    this->repetition_.set (x);
+  }
+
+  const encodingLimitsType::set_optional& encodingLimitsType::
+  set () const
+  {
+    return this->set_;
+  }
+
+  encodingLimitsType::set_optional& encodingLimitsType::
+  set ()
+  {
+    return this->set_;
+  }
+
+  void encodingLimitsType::
+  set (const set_type& x)
+  {
+    this->set_.set (x);
+  }
+
+  void encodingLimitsType::
+  set (const set_optional& x)
+  {
+    this->set_ = x;
+  }
+
+  void encodingLimitsType::
+  set (::std::auto_ptr< set_type > x)
+  {
+    this->set_.set (x);
+  }
+
+  const encodingLimitsType::segment_optional& encodingLimitsType::
+  segment () const
+  {
+    return this->segment_;
+  }
+
+  encodingLimitsType::segment_optional& encodingLimitsType::
+  segment ()
+  {
+    return this->segment_;
+  }
+
+  void encodingLimitsType::
+  segment (const segment_type& x)
+  {
+    this->segment_.set (x);
+  }
+
+  void encodingLimitsType::
+  segment (const segment_optional& x)
+  {
+    this->segment_ = x;
+  }
+
+  void encodingLimitsType::
+  segment (::std::auto_ptr< segment_type > x)
+  {
+    this->segment_.set (x);
+  }
+
+
+  // trajectoryType
+  // 
+
+  trajectoryType::
+  trajectoryType (value v)
+  : ::xml_schema::string (_xsd_trajectoryType_literals_[v])
+  {
+  }
+
+  trajectoryType::
+  trajectoryType (const char* v)
+  : ::xml_schema::string (v)
+  {
+  }
+
+  trajectoryType::
+  trajectoryType (const ::std::string& v)
+  : ::xml_schema::string (v)
+  {
+  }
+
+  trajectoryType::
+  trajectoryType (const ::xml_schema::string& v)
+  : ::xml_schema::string (v)
+  {
+  }
+
+  trajectoryType::
+  trajectoryType (const trajectoryType& v,
+                  ::xml_schema::flags f,
+                  ::xml_schema::container* c)
+  : ::xml_schema::string (v, f, c)
+  {
+  }
+
+  trajectoryType& trajectoryType::
+  operator= (value v)
+  {
+    static_cast< ::xml_schema::string& > (*this) = 
+    ::xml_schema::string (_xsd_trajectoryType_literals_[v]);
+
+    return *this;
+  }
+
+
+  // userParameterLongType
+  // 
+
+  const userParameterLongType::name_type& userParameterLongType::
+  name () const
+  {
+    return this->name_.get ();
+  }
+
+  userParameterLongType::name_type& userParameterLongType::
+  name ()
+  {
+    return this->name_.get ();
+  }
+
+  void userParameterLongType::
+  name (const name_type& x)
+  {
+    this->name_.set (x);
+  }
+
+  void userParameterLongType::
+  name (::std::auto_ptr< name_type > x)
+  {
+    this->name_.set (x);
+  }
+
+  const userParameterLongType::value_type& userParameterLongType::
+  value () const
+  {
+    return this->value_.get ();
+  }
+
+  userParameterLongType::value_type& userParameterLongType::
+  value ()
+  {
+    return this->value_.get ();
+  }
+
+  void userParameterLongType::
+  value (const value_type& x)
+  {
+    this->value_.set (x);
+  }
+
+
+  // userParameterDoubleType
+  // 
+
+  const userParameterDoubleType::name_type& userParameterDoubleType::
+  name () const
+  {
+    return this->name_.get ();
+  }
+
+  userParameterDoubleType::name_type& userParameterDoubleType::
+  name ()
+  {
+    return this->name_.get ();
+  }
+
+  void userParameterDoubleType::
+  name (const name_type& x)
+  {
+    this->name_.set (x);
+  }
+
+  void userParameterDoubleType::
+  name (::std::auto_ptr< name_type > x)
+  {
+    this->name_.set (x);
+  }
+
+  const userParameterDoubleType::value_type& userParameterDoubleType::
+  value () const
+  {
+    return this->value_.get ();
+  }
+
+  userParameterDoubleType::value_type& userParameterDoubleType::
+  value ()
+  {
+    return this->value_.get ();
+  }
+
+  void userParameterDoubleType::
+  value (const value_type& x)
+  {
+    this->value_.set (x);
+  }
+
+
+  // ismrmrdHeader
+  // 
+
+  const ismrmrdHeader::subjectInformation_optional& ismrmrdHeader::
+  subjectInformation () const
+  {
+    return this->subjectInformation_;
+  }
+
+  ismrmrdHeader::subjectInformation_optional& ismrmrdHeader::
+  subjectInformation ()
+  {
+    return this->subjectInformation_;
+  }
+
+  void ismrmrdHeader::
+  subjectInformation (const subjectInformation_type& x)
+  {
+    this->subjectInformation_.set (x);
+  }
+
+  void ismrmrdHeader::
+  subjectInformation (const subjectInformation_optional& x)
+  {
+    this->subjectInformation_ = x;
+  }
+
+  void ismrmrdHeader::
+  subjectInformation (::std::auto_ptr< subjectInformation_type > x)
+  {
+    this->subjectInformation_.set (x);
+  }
+
+  const ismrmrdHeader::acquisitionSystemInformation_optional& ismrmrdHeader::
+  acquisitionSystemInformation () const
+  {
+    return this->acquisitionSystemInformation_;
+  }
+
+  ismrmrdHeader::acquisitionSystemInformation_optional& ismrmrdHeader::
+  acquisitionSystemInformation ()
+  {
+    return this->acquisitionSystemInformation_;
+  }
+
+  void ismrmrdHeader::
+  acquisitionSystemInformation (const acquisitionSystemInformation_type& x)
+  {
+    this->acquisitionSystemInformation_.set (x);
+  }
+
+  void ismrmrdHeader::
+  acquisitionSystemInformation (const acquisitionSystemInformation_optional& x)
+  {
+    this->acquisitionSystemInformation_ = x;
+  }
+
+  void ismrmrdHeader::
+  acquisitionSystemInformation (::std::auto_ptr< acquisitionSystemInformation_type > x)
+  {
+    this->acquisitionSystemInformation_.set (x);
+  }
+
+  const ismrmrdHeader::experimentalConditions_type& ismrmrdHeader::
+  experimentalConditions () const
+  {
+    return this->experimentalConditions_.get ();
+  }
+
+  ismrmrdHeader::experimentalConditions_type& ismrmrdHeader::
+  experimentalConditions ()
+  {
+    return this->experimentalConditions_.get ();
+  }
+
+  void ismrmrdHeader::
+  experimentalConditions (const experimentalConditions_type& x)
+  {
+    this->experimentalConditions_.set (x);
+  }
+
+  void ismrmrdHeader::
+  experimentalConditions (::std::auto_ptr< experimentalConditions_type > x)
+  {
+    this->experimentalConditions_.set (x);
+  }
+
+  const ismrmrdHeader::encoding_sequence& ismrmrdHeader::
+  encoding () const
+  {
+    return this->encoding_;
+  }
+
+  ismrmrdHeader::encoding_sequence& ismrmrdHeader::
+  encoding ()
+  {
+    return this->encoding_;
+  }
+
+  void ismrmrdHeader::
+  encoding (const encoding_sequence& s)
+  {
+    this->encoding_ = s;
+  }
+
+  const ismrmrdHeader::userParameters_optional& ismrmrdHeader::
+  userParameters () const
+  {
+    return this->userParameters_;
+  }
+
+  ismrmrdHeader::userParameters_optional& ismrmrdHeader::
+  userParameters ()
+  {
+    return this->userParameters_;
+  }
+
+  void ismrmrdHeader::
+  userParameters (const userParameters_type& x)
+  {
+    this->userParameters_.set (x);
+  }
+
+  void ismrmrdHeader::
+  userParameters (const userParameters_optional& x)
+  {
+    this->userParameters_ = x;
+  }
+
+  void ismrmrdHeader::
+  userParameters (::std::auto_ptr< userParameters_type > x)
+  {
+    this->userParameters_.set (x);
+  }
+
+
+  // matrixSize
+  // 
+
+  const matrixSize::x_type& matrixSize::
+  x () const
+  {
+    return this->x_.get ();
+  }
+
+  matrixSize::x_type& matrixSize::
+  x ()
+  {
+    return this->x_.get ();
+  }
+
+  void matrixSize::
+  x (const x_type& x)
+  {
+    this->x_.set (x);
+  }
+
+  matrixSize::x_type matrixSize::
+  x_default_value ()
+  {
+    return x_type (1);
+  }
+
+  const matrixSize::y_type& matrixSize::
+  y () const
+  {
+    return this->y_.get ();
+  }
+
+  matrixSize::y_type& matrixSize::
+  y ()
+  {
+    return this->y_.get ();
+  }
+
+  void matrixSize::
+  y (const y_type& x)
+  {
+    this->y_.set (x);
+  }
+
+  matrixSize::y_type matrixSize::
+  y_default_value ()
+  {
+    return y_type (1);
+  }
+
+  const matrixSize::z_type& matrixSize::
+  z () const
+  {
+    return this->z_.get ();
+  }
+
+  matrixSize::z_type& matrixSize::
+  z ()
+  {
+    return this->z_.get ();
+  }
+
+  void matrixSize::
+  z (const z_type& x)
+  {
+    this->z_.set (x);
+  }
+
+  matrixSize::z_type matrixSize::
+  z_default_value ()
+  {
+    return z_type (1);
+  }
+
+
+  // fieldOfView_m
+  // 
+
+  const fieldOfView_m::x_type& fieldOfView_m::
+  x () const
+  {
+    return this->x_.get ();
+  }
+
+  fieldOfView_m::x_type& fieldOfView_m::
+  x ()
+  {
+    return this->x_.get ();
+  }
+
+  void fieldOfView_m::
+  x (const x_type& x)
+  {
+    this->x_.set (x);
+  }
+
+  const fieldOfView_m::y_type& fieldOfView_m::
+  y () const
+  {
+    return this->y_.get ();
+  }
+
+  fieldOfView_m::y_type& fieldOfView_m::
+  y ()
+  {
+    return this->y_.get ();
+  }
+
+  void fieldOfView_m::
+  y (const y_type& x)
+  {
+    this->y_.set (x);
+  }
+
+  const fieldOfView_m::z_type& fieldOfView_m::
+  z () const
+  {
+    return this->z_.get ();
+  }
+
+  fieldOfView_m::z_type& fieldOfView_m::
+  z ()
+  {
+    return this->z_.get ();
+  }
+
+  void fieldOfView_m::
+  z (const z_type& x)
+  {
+    this->z_.set (x);
+  }
+
+
+  // encoding
+  // 
+
+  const encoding::encodedSpace_type& encoding::
+  encodedSpace () const
+  {
+    return this->encodedSpace_.get ();
+  }
+
+  encoding::encodedSpace_type& encoding::
+  encodedSpace ()
+  {
+    return this->encodedSpace_.get ();
+  }
+
+  void encoding::
+  encodedSpace (const encodedSpace_type& x)
+  {
+    this->encodedSpace_.set (x);
+  }
+
+  void encoding::
+  encodedSpace (::std::auto_ptr< encodedSpace_type > x)
+  {
+    this->encodedSpace_.set (x);
+  }
+
+  const encoding::reconSpace_type& encoding::
+  reconSpace () const
+  {
+    return this->reconSpace_.get ();
+  }
+
+  encoding::reconSpace_type& encoding::
+  reconSpace ()
+  {
+    return this->reconSpace_.get ();
+  }
+
+  void encoding::
+  reconSpace (const reconSpace_type& x)
+  {
+    this->reconSpace_.set (x);
+  }
+
+  void encoding::
+  reconSpace (::std::auto_ptr< reconSpace_type > x)
+  {
+    this->reconSpace_.set (x);
+  }
+
+  const encoding::encodingLimits_type& encoding::
+  encodingLimits () const
+  {
+    return this->encodingLimits_.get ();
+  }
+
+  encoding::encodingLimits_type& encoding::
+  encodingLimits ()
+  {
+    return this->encodingLimits_.get ();
+  }
+
+  void encoding::
+  encodingLimits (const encodingLimits_type& x)
+  {
+    this->encodingLimits_.set (x);
+  }
+
+  void encoding::
+  encodingLimits (::std::auto_ptr< encodingLimits_type > x)
+  {
+    this->encodingLimits_.set (x);
+  }
+
+  const encoding::trajectory_type& encoding::
+  trajectory () const
+  {
+    return this->trajectory_.get ();
+  }
+
+  encoding::trajectory_type& encoding::
+  trajectory ()
+  {
+    return this->trajectory_.get ();
+  }
+
+  void encoding::
+  trajectory (const trajectory_type& x)
+  {
+    this->trajectory_.set (x);
+  }
+
+  void encoding::
+  trajectory (::std::auto_ptr< trajectory_type > x)
+  {
+    this->trajectory_.set (x);
+  }
+
+
+  // userParameters
+  // 
+
+  const userParameters::userParameterLong_sequence& userParameters::
+  userParameterLong () const
+  {
+    return this->userParameterLong_;
+  }
+
+  userParameters::userParameterLong_sequence& userParameters::
+  userParameterLong ()
+  {
+    return this->userParameterLong_;
+  }
+
+  void userParameters::
+  userParameterLong (const userParameterLong_sequence& s)
+  {
+    this->userParameterLong_ = s;
+  }
+
+  const userParameters::userParameterDouble_sequence& userParameters::
+  userParameterDouble () const
+  {
+    return this->userParameterDouble_;
+  }
+
+  userParameters::userParameterDouble_sequence& userParameters::
+  userParameterDouble ()
+  {
+    return this->userParameterDouble_;
+  }
+
+  void userParameters::
+  userParameterDouble (const userParameterDouble_sequence& s)
+  {
+    this->userParameterDouble_ = s;
+  }
+}
+
+#include <xsd/cxx/xml/dom/parsing-source.hxx>
+
+namespace ISMRMRD
+{
+  // subjectInformationType
+  //
+
+  subjectInformationType::
+  subjectInformationType ()
+  : ::xml_schema::type (),
+    patientName_ (::xml_schema::flags (), this),
+    patientWeight_kg_ (::xml_schema::flags (), this)
+  {
+  }
+
+  subjectInformationType::
+  subjectInformationType (const subjectInformationType& x,
+                          ::xml_schema::flags f,
+                          ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    patientName_ (x.patientName_, f, this),
+    patientWeight_kg_ (x.patientWeight_kg_, f, this)
+  {
+  }
+
+  subjectInformationType::
+  subjectInformationType (const ::xercesc::DOMElement& e,
+                          ::xml_schema::flags f,
+                          ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    patientName_ (f, this),
+    patientWeight_kg_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void subjectInformationType::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // patientName
+      //
+      if (n.name () == "patientName" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< patientName_type > r (
+          patientName_traits::create (i, f, this));
+
+        if (!this->patientName_)
+        {
+          this->patientName_.set (r);
+          continue;
+        }
+      }
+
+      // patientWeight_kg
+      //
+      if (n.name () == "patientWeight_kg" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!this->patientWeight_kg_)
+        {
+          this->patientWeight_kg_.set (patientWeight_kg_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      break;
+    }
+  }
+
+  subjectInformationType* subjectInformationType::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class subjectInformationType (*this, f, c);
+  }
+
+  subjectInformationType::
+  ~subjectInformationType ()
+  {
+  }
+
+  // experimentalConditionsType
+  //
+
+  experimentalConditionsType::
+  experimentalConditionsType (const H1resonanceFrequencyHz_type& H1resonanceFrequencyHz)
+  : ::xml_schema::type (),
+    H1resonanceFrequencyHz_ (H1resonanceFrequencyHz, ::xml_schema::flags (), this)
+  {
+  }
+
+  experimentalConditionsType::
+  experimentalConditionsType (const experimentalConditionsType& x,
+                              ::xml_schema::flags f,
+                              ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    H1resonanceFrequencyHz_ (x.H1resonanceFrequencyHz_, f, this)
+  {
+  }
+
+  experimentalConditionsType::
+  experimentalConditionsType (const ::xercesc::DOMElement& e,
+                              ::xml_schema::flags f,
+                              ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    H1resonanceFrequencyHz_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void experimentalConditionsType::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // H1resonanceFrequencyHz
+      //
+      if (n.name () == "H1resonanceFrequencyHz" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!H1resonanceFrequencyHz_.present ())
+        {
+          this->H1resonanceFrequencyHz_.set (H1resonanceFrequencyHz_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      break;
+    }
+
+    if (!H1resonanceFrequencyHz_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "H1resonanceFrequencyHz",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+  }
+
+  experimentalConditionsType* experimentalConditionsType::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class experimentalConditionsType (*this, f, c);
+  }
+
+  experimentalConditionsType::
+  ~experimentalConditionsType ()
+  {
+  }
+
+  // acquisitionSystemInformationType
+  //
+
+  acquisitionSystemInformationType::
+  acquisitionSystemInformationType ()
+  : ::xml_schema::type (),
+    systemVendor_ (::xml_schema::flags (), this),
+    systemModel_ (::xml_schema::flags (), this),
+    systemFieldStrength_T_ (::xml_schema::flags (), this)
+  {
+  }
+
+  acquisitionSystemInformationType::
+  acquisitionSystemInformationType (const acquisitionSystemInformationType& x,
+                                    ::xml_schema::flags f,
+                                    ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    systemVendor_ (x.systemVendor_, f, this),
+    systemModel_ (x.systemModel_, f, this),
+    systemFieldStrength_T_ (x.systemFieldStrength_T_, f, this)
+  {
+  }
+
+  acquisitionSystemInformationType::
+  acquisitionSystemInformationType (const ::xercesc::DOMElement& e,
+                                    ::xml_schema::flags f,
+                                    ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    systemVendor_ (f, this),
+    systemModel_ (f, this),
+    systemFieldStrength_T_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void acquisitionSystemInformationType::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // systemVendor
+      //
+      if (n.name () == "systemVendor" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< systemVendor_type > r (
+          systemVendor_traits::create (i, f, this));
+
+        if (!this->systemVendor_)
+        {
+          this->systemVendor_.set (r);
+          continue;
+        }
+      }
+
+      // systemModel
+      //
+      if (n.name () == "systemModel" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< systemModel_type > r (
+          systemModel_traits::create (i, f, this));
+
+        if (!this->systemModel_)
+        {
+          this->systemModel_.set (r);
+          continue;
+        }
+      }
+
+      // systemFieldStrength_T
+      //
+      if (n.name () == "systemFieldStrength_T" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!this->systemFieldStrength_T_)
+        {
+          this->systemFieldStrength_T_.set (systemFieldStrength_T_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      break;
+    }
+  }
+
+  acquisitionSystemInformationType* acquisitionSystemInformationType::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class acquisitionSystemInformationType (*this, f, c);
+  }
+
+  acquisitionSystemInformationType::
+  ~acquisitionSystemInformationType ()
+  {
+  }
+
+  // encodingSpaceType
+  //
+
+  encodingSpaceType::
+  encodingSpaceType (const matrixSize_type& matrixSize,
+                     const fieldOfView_m_type& fieldOfView_m)
+  : ::xml_schema::type (),
+    matrixSize_ (matrixSize, ::xml_schema::flags (), this),
+    fieldOfView_m_ (fieldOfView_m, ::xml_schema::flags (), this)
+  {
+  }
+
+  encodingSpaceType::
+  encodingSpaceType (::std::auto_ptr< matrixSize_type >& matrixSize,
+                     ::std::auto_ptr< fieldOfView_m_type >& fieldOfView_m)
+  : ::xml_schema::type (),
+    matrixSize_ (matrixSize, ::xml_schema::flags (), this),
+    fieldOfView_m_ (fieldOfView_m, ::xml_schema::flags (), this)
+  {
+  }
+
+  encodingSpaceType::
+  encodingSpaceType (const encodingSpaceType& x,
+                     ::xml_schema::flags f,
+                     ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    matrixSize_ (x.matrixSize_, f, this),
+    fieldOfView_m_ (x.fieldOfView_m_, f, this)
+  {
+  }
+
+  encodingSpaceType::
+  encodingSpaceType (const ::xercesc::DOMElement& e,
+                     ::xml_schema::flags f,
+                     ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    matrixSize_ (f, this),
+    fieldOfView_m_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void encodingSpaceType::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // matrixSize
+      //
+      if (n.name () == "matrixSize" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< matrixSize_type > r (
+          matrixSize_traits::create (i, f, this));
+
+        if (!matrixSize_.present ())
+        {
+          this->matrixSize_.set (r);
+          continue;
+        }
+      }
+
+      // fieldOfView_m
+      //
+      if (n.name () == "fieldOfView_m" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< fieldOfView_m_type > r (
+          fieldOfView_m_traits::create (i, f, this));
+
+        if (!fieldOfView_m_.present ())
+        {
+          this->fieldOfView_m_.set (r);
+          continue;
+        }
+      }
+
+      break;
+    }
+
+    if (!matrixSize_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "matrixSize",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!fieldOfView_m_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "fieldOfView_m",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+  }
+
+  encodingSpaceType* encodingSpaceType::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class encodingSpaceType (*this, f, c);
+  }
+
+  encodingSpaceType::
+  ~encodingSpaceType ()
+  {
+  }
+
+  // limitType
+  //
+
+  limitType::
+  limitType (const minimum_type& minimum,
+             const maximum_type& maximum,
+             const center_type& center)
+  : ::xml_schema::type (),
+    minimum_ (minimum, ::xml_schema::flags (), this),
+    maximum_ (maximum, ::xml_schema::flags (), this),
+    center_ (center, ::xml_schema::flags (), this)
+  {
+  }
+
+  limitType::
+  limitType (const limitType& x,
+             ::xml_schema::flags f,
+             ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    minimum_ (x.minimum_, f, this),
+    maximum_ (x.maximum_, f, this),
+    center_ (x.center_, f, this)
+  {
+  }
+
+  limitType::
+  limitType (const ::xercesc::DOMElement& e,
+             ::xml_schema::flags f,
+             ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    minimum_ (f, this),
+    maximum_ (f, this),
+    center_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void limitType::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // minimum
+      //
+      if (n.name () == "minimum" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!minimum_.present ())
+        {
+          this->minimum_.set (minimum_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      // maximum
+      //
+      if (n.name () == "maximum" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!maximum_.present ())
+        {
+          this->maximum_.set (maximum_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      // center
+      //
+      if (n.name () == "center" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!center_.present ())
+        {
+          this->center_.set (center_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      break;
+    }
+
+    if (!minimum_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "minimum",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!maximum_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "maximum",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!center_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "center",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+  }
+
+  limitType* limitType::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class limitType (*this, f, c);
+  }
+
+  limitType::
+  ~limitType ()
+  {
+  }
+
+  // encodingLimitsType
+  //
+
+  encodingLimitsType::
+  encodingLimitsType ()
+  : ::xml_schema::type (),
+    kspace_encoding_step_1_ (::xml_schema::flags (), this),
+    kspace_encoding_step_2_ (::xml_schema::flags (), this),
+    average_ (::xml_schema::flags (), this),
+    slice_ (::xml_schema::flags (), this),
+    contrast_ (::xml_schema::flags (), this),
+    phase_ (::xml_schema::flags (), this),
+    repetition_ (::xml_schema::flags (), this),
+    set_ (::xml_schema::flags (), this),
+    segment_ (::xml_schema::flags (), this)
+  {
+  }
+
+  encodingLimitsType::
+  encodingLimitsType (const encodingLimitsType& x,
+                      ::xml_schema::flags f,
+                      ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    kspace_encoding_step_1_ (x.kspace_encoding_step_1_, f, this),
+    kspace_encoding_step_2_ (x.kspace_encoding_step_2_, f, this),
+    average_ (x.average_, f, this),
+    slice_ (x.slice_, f, this),
+    contrast_ (x.contrast_, f, this),
+    phase_ (x.phase_, f, this),
+    repetition_ (x.repetition_, f, this),
+    set_ (x.set_, f, this),
+    segment_ (x.segment_, f, this)
+  {
+  }
+
+  encodingLimitsType::
+  encodingLimitsType (const ::xercesc::DOMElement& e,
+                      ::xml_schema::flags f,
+                      ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    kspace_encoding_step_1_ (f, this),
+    kspace_encoding_step_2_ (f, this),
+    average_ (f, this),
+    slice_ (f, this),
+    contrast_ (f, this),
+    phase_ (f, this),
+    repetition_ (f, this),
+    set_ (f, this),
+    segment_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void encodingLimitsType::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // kspace_encoding_step_1
+      //
+      if (n.name () == "kspace_encoding_step_1" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< kspace_encoding_step_1_type > r (
+          kspace_encoding_step_1_traits::create (i, f, this));
+
+        if (!this->kspace_encoding_step_1_)
+        {
+          this->kspace_encoding_step_1_.set (r);
+          continue;
+        }
+      }
+
+      // kspace_encoding_step_2
+      //
+      if (n.name () == "kspace_encoding_step_2" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< kspace_encoding_step_2_type > r (
+          kspace_encoding_step_2_traits::create (i, f, this));
+
+        if (!this->kspace_encoding_step_2_)
+        {
+          this->kspace_encoding_step_2_.set (r);
+          continue;
+        }
+      }
+
+      // average
+      //
+      if (n.name () == "average" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< average_type > r (
+          average_traits::create (i, f, this));
+
+        if (!this->average_)
+        {
+          this->average_.set (r);
+          continue;
+        }
+      }
+
+      // slice
+      //
+      if (n.name () == "slice" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< slice_type > r (
+          slice_traits::create (i, f, this));
+
+        if (!this->slice_)
+        {
+          this->slice_.set (r);
+          continue;
+        }
+      }
+
+      // contrast
+      //
+      if (n.name () == "contrast" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< contrast_type > r (
+          contrast_traits::create (i, f, this));
+
+        if (!this->contrast_)
+        {
+          this->contrast_.set (r);
+          continue;
+        }
+      }
+
+      // phase
+      //
+      if (n.name () == "phase" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< phase_type > r (
+          phase_traits::create (i, f, this));
+
+        if (!this->phase_)
+        {
+          this->phase_.set (r);
+          continue;
+        }
+      }
+
+      // repetition
+      //
+      if (n.name () == "repetition" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< repetition_type > r (
+          repetition_traits::create (i, f, this));
+
+        if (!this->repetition_)
+        {
+          this->repetition_.set (r);
+          continue;
+        }
+      }
+
+      // set
+      //
+      if (n.name () == "set" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< set_type > r (
+          set_traits::create (i, f, this));
+
+        if (!this->set_)
+        {
+          this->set_.set (r);
+          continue;
+        }
+      }
+
+      // segment
+      //
+      if (n.name () == "segment" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< segment_type > r (
+          segment_traits::create (i, f, this));
+
+        if (!this->segment_)
+        {
+          this->segment_.set (r);
+          continue;
+        }
+      }
+
+      break;
+    }
+  }
+
+  encodingLimitsType* encodingLimitsType::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class encodingLimitsType (*this, f, c);
+  }
+
+  encodingLimitsType::
+  ~encodingLimitsType ()
+  {
+  }
+
+  // trajectoryType
+  //
+
+  trajectoryType::
+  trajectoryType (const ::xercesc::DOMElement& e,
+                  ::xml_schema::flags f,
+                  ::xml_schema::container* c)
+  : ::xml_schema::string (e, f, c)
+  {
+    _xsd_trajectoryType_convert ();
+  }
+
+  trajectoryType::
+  trajectoryType (const ::xercesc::DOMAttr& a,
+                  ::xml_schema::flags f,
+                  ::xml_schema::container* c)
+  : ::xml_schema::string (a, f, c)
+  {
+    _xsd_trajectoryType_convert ();
+  }
+
+  trajectoryType::
+  trajectoryType (const ::std::string& s,
+                  const ::xercesc::DOMElement* e,
+                  ::xml_schema::flags f,
+                  ::xml_schema::container* c)
+  : ::xml_schema::string (s, e, f, c)
+  {
+    _xsd_trajectoryType_convert ();
+  }
+
+  trajectoryType* trajectoryType::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class trajectoryType (*this, f, c);
+  }
+
+  trajectoryType::value trajectoryType::
+  _xsd_trajectoryType_convert () const
+  {
+    ::xsd::cxx::tree::enum_comparator< char > c (_xsd_trajectoryType_literals_);
+    const value* i (::std::lower_bound (
+                      _xsd_trajectoryType_indexes_,
+                      _xsd_trajectoryType_indexes_ + 6,
+                      *this,
+                      c));
+
+    if (i == _xsd_trajectoryType_indexes_ + 6 || _xsd_trajectoryType_literals_[*i] != *this)
+    {
+      throw ::xsd::cxx::tree::unexpected_enumerator < char > (*this);
+    }
+
+    return *i;
+  }
+
+  const char* const trajectoryType::
+  _xsd_trajectoryType_literals_[6] =
+  {
+    "cartesian",
+    "epi",
+    "radial",
+    "goldenangle",
+    "spiral",
+    "other"
+  };
+
+  const trajectoryType::value trajectoryType::
+  _xsd_trajectoryType_indexes_[6] =
+  {
+    ::ISMRMRD::trajectoryType::cartesian,
+    ::ISMRMRD::trajectoryType::epi,
+    ::ISMRMRD::trajectoryType::goldenangle,
+    ::ISMRMRD::trajectoryType::other,
+    ::ISMRMRD::trajectoryType::radial,
+    ::ISMRMRD::trajectoryType::spiral
+  };
+
+  // userParameterLongType
+  //
+
+  userParameterLongType::
+  userParameterLongType (const name_type& name,
+                         const value_type& value)
+  : ::xml_schema::type (),
+    name_ (name, ::xml_schema::flags (), this),
+    value_ (value, ::xml_schema::flags (), this)
+  {
+  }
+
+  userParameterLongType::
+  userParameterLongType (const userParameterLongType& x,
+                         ::xml_schema::flags f,
+                         ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    name_ (x.name_, f, this),
+    value_ (x.value_, f, this)
+  {
+  }
+
+  userParameterLongType::
+  userParameterLongType (const ::xercesc::DOMElement& e,
+                         ::xml_schema::flags f,
+                         ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    name_ (f, this),
+    value_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void userParameterLongType::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // name
+      //
+      if (n.name () == "name" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< name_type > r (
+          name_traits::create (i, f, this));
+
+        if (!name_.present ())
+        {
+          this->name_.set (r);
+          continue;
+        }
+      }
+
+      // value
+      //
+      if (n.name () == "value" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!value_.present ())
+        {
+          this->value_.set (value_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      break;
+    }
+
+    if (!name_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "name",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!value_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "value",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+  }
+
+  userParameterLongType* userParameterLongType::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class userParameterLongType (*this, f, c);
+  }
+
+  userParameterLongType::
+  ~userParameterLongType ()
+  {
+  }
+
+  // userParameterDoubleType
+  //
+
+  userParameterDoubleType::
+  userParameterDoubleType (const name_type& name,
+                           const value_type& value)
+  : ::xml_schema::type (),
+    name_ (name, ::xml_schema::flags (), this),
+    value_ (value, ::xml_schema::flags (), this)
+  {
+  }
+
+  userParameterDoubleType::
+  userParameterDoubleType (const userParameterDoubleType& x,
+                           ::xml_schema::flags f,
+                           ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    name_ (x.name_, f, this),
+    value_ (x.value_, f, this)
+  {
+  }
+
+  userParameterDoubleType::
+  userParameterDoubleType (const ::xercesc::DOMElement& e,
+                           ::xml_schema::flags f,
+                           ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    name_ (f, this),
+    value_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void userParameterDoubleType::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // name
+      //
+      if (n.name () == "name" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< name_type > r (
+          name_traits::create (i, f, this));
+
+        if (!name_.present ())
+        {
+          this->name_.set (r);
+          continue;
+        }
+      }
+
+      // value
+      //
+      if (n.name () == "value" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!value_.present ())
+        {
+          this->value_.set (value_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      break;
+    }
+
+    if (!name_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "name",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!value_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "value",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+  }
+
+  userParameterDoubleType* userParameterDoubleType::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class userParameterDoubleType (*this, f, c);
+  }
+
+  userParameterDoubleType::
+  ~userParameterDoubleType ()
+  {
+  }
+
+  // ismrmrdHeader
+  //
+
+  ismrmrdHeader::
+  ismrmrdHeader (const experimentalConditions_type& experimentalConditions)
+  : ::xml_schema::type (),
+    subjectInformation_ (::xml_schema::flags (), this),
+    acquisitionSystemInformation_ (::xml_schema::flags (), this),
+    experimentalConditions_ (experimentalConditions, ::xml_schema::flags (), this),
+    encoding_ (::xml_schema::flags (), this),
+    userParameters_ (::xml_schema::flags (), this)
+  {
+  }
+
+  ismrmrdHeader::
+  ismrmrdHeader (::std::auto_ptr< experimentalConditions_type >& experimentalConditions)
+  : ::xml_schema::type (),
+    subjectInformation_ (::xml_schema::flags (), this),
+    acquisitionSystemInformation_ (::xml_schema::flags (), this),
+    experimentalConditions_ (experimentalConditions, ::xml_schema::flags (), this),
+    encoding_ (::xml_schema::flags (), this),
+    userParameters_ (::xml_schema::flags (), this)
+  {
+  }
+
+  ismrmrdHeader::
+  ismrmrdHeader (const ismrmrdHeader& x,
+                 ::xml_schema::flags f,
+                 ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    subjectInformation_ (x.subjectInformation_, f, this),
+    acquisitionSystemInformation_ (x.acquisitionSystemInformation_, f, this),
+    experimentalConditions_ (x.experimentalConditions_, f, this),
+    encoding_ (x.encoding_, f, this),
+    userParameters_ (x.userParameters_, f, this)
+  {
+  }
+
+  ismrmrdHeader::
+  ismrmrdHeader (const ::xercesc::DOMElement& e,
+                 ::xml_schema::flags f,
+                 ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    subjectInformation_ (f, this),
+    acquisitionSystemInformation_ (f, this),
+    experimentalConditions_ (f, this),
+    encoding_ (f, this),
+    userParameters_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void ismrmrdHeader::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // subjectInformation
+      //
+      if (n.name () == "subjectInformation" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< subjectInformation_type > r (
+          subjectInformation_traits::create (i, f, this));
+
+        if (!this->subjectInformation_)
+        {
+          this->subjectInformation_.set (r);
+          continue;
+        }
+      }
+
+      // acquisitionSystemInformation
+      //
+      if (n.name () == "acquisitionSystemInformation" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< acquisitionSystemInformation_type > r (
+          acquisitionSystemInformation_traits::create (i, f, this));
+
+        if (!this->acquisitionSystemInformation_)
+        {
+          this->acquisitionSystemInformation_.set (r);
+          continue;
+        }
+      }
+
+      // experimentalConditions
+      //
+      if (n.name () == "experimentalConditions" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< experimentalConditions_type > r (
+          experimentalConditions_traits::create (i, f, this));
+
+        if (!experimentalConditions_.present ())
+        {
+          this->experimentalConditions_.set (r);
+          continue;
+        }
+      }
+
+      // encoding
+      //
+      if (n.name () == "encoding" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< encoding_type > r (
+          encoding_traits::create (i, f, this));
+
+        this->encoding_.push_back (r);
+        continue;
+      }
+
+      // userParameters
+      //
+      if (n.name () == "userParameters" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< userParameters_type > r (
+          userParameters_traits::create (i, f, this));
+
+        if (!this->userParameters_)
+        {
+          this->userParameters_.set (r);
+          continue;
+        }
+      }
+
+      break;
+    }
+
+    if (!experimentalConditions_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "experimentalConditions",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+  }
+
+  ismrmrdHeader* ismrmrdHeader::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class ismrmrdHeader (*this, f, c);
+  }
+
+  ismrmrdHeader::
+  ~ismrmrdHeader ()
+  {
+  }
+
+  // matrixSize
+  //
+
+  matrixSize::
+  matrixSize (const x_type& x,
+              const y_type& y,
+              const z_type& z)
+  : ::xml_schema::type (),
+    x_ (x, ::xml_schema::flags (), this),
+    y_ (y, ::xml_schema::flags (), this),
+    z_ (z, ::xml_schema::flags (), this)
+  {
+  }
+
+  matrixSize::
+  matrixSize (const matrixSize& x,
+              ::xml_schema::flags f,
+              ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    x_ (x.x_, f, this),
+    y_ (x.y_, f, this),
+    z_ (x.z_, f, this)
+  {
+  }
+
+  matrixSize::
+  matrixSize (const ::xercesc::DOMElement& e,
+              ::xml_schema::flags f,
+              ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    x_ (f, this),
+    y_ (f, this),
+    z_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void matrixSize::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // x
+      //
+      if (n.name () == "x" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!x_.present ())
+        {
+          this->x_.set (x_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      // y
+      //
+      if (n.name () == "y" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!y_.present ())
+        {
+          this->y_.set (y_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      // z
+      //
+      if (n.name () == "z" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!z_.present ())
+        {
+          this->z_.set (z_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      break;
+    }
+
+    if (!x_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "x",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!y_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "y",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!z_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "z",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+  }
+
+  matrixSize* matrixSize::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class matrixSize (*this, f, c);
+  }
+
+  matrixSize::
+  ~matrixSize ()
+  {
+  }
+
+  // fieldOfView_m
+  //
+
+  fieldOfView_m::
+  fieldOfView_m (const x_type& x,
+                 const y_type& y,
+                 const z_type& z)
+  : ::xml_schema::type (),
+    x_ (x, ::xml_schema::flags (), this),
+    y_ (y, ::xml_schema::flags (), this),
+    z_ (z, ::xml_schema::flags (), this)
+  {
+  }
+
+  fieldOfView_m::
+  fieldOfView_m (const fieldOfView_m& x,
+                 ::xml_schema::flags f,
+                 ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    x_ (x.x_, f, this),
+    y_ (x.y_, f, this),
+    z_ (x.z_, f, this)
+  {
+  }
+
+  fieldOfView_m::
+  fieldOfView_m (const ::xercesc::DOMElement& e,
+                 ::xml_schema::flags f,
+                 ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    x_ (f, this),
+    y_ (f, this),
+    z_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void fieldOfView_m::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // x
+      //
+      if (n.name () == "x" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!x_.present ())
+        {
+          this->x_.set (x_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      // y
+      //
+      if (n.name () == "y" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!y_.present ())
+        {
+          this->y_.set (y_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      // z
+      //
+      if (n.name () == "z" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        if (!z_.present ())
+        {
+          this->z_.set (z_traits::create (i, f, this));
+          continue;
+        }
+      }
+
+      break;
+    }
+
+    if (!x_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "x",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!y_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "y",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!z_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "z",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+  }
+
+  fieldOfView_m* fieldOfView_m::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class fieldOfView_m (*this, f, c);
+  }
+
+  fieldOfView_m::
+  ~fieldOfView_m ()
+  {
+  }
+
+  // encoding
+  //
+
+  encoding::
+  encoding (const encodedSpace_type& encodedSpace,
+            const reconSpace_type& reconSpace,
+            const encodingLimits_type& encodingLimits,
+            const trajectory_type& trajectory)
+  : ::xml_schema::type (),
+    encodedSpace_ (encodedSpace, ::xml_schema::flags (), this),
+    reconSpace_ (reconSpace, ::xml_schema::flags (), this),
+    encodingLimits_ (encodingLimits, ::xml_schema::flags (), this),
+    trajectory_ (trajectory, ::xml_schema::flags (), this)
+  {
+  }
+
+  encoding::
+  encoding (::std::auto_ptr< encodedSpace_type >& encodedSpace,
+            ::std::auto_ptr< reconSpace_type >& reconSpace,
+            ::std::auto_ptr< encodingLimits_type >& encodingLimits,
+            const trajectory_type& trajectory)
+  : ::xml_schema::type (),
+    encodedSpace_ (encodedSpace, ::xml_schema::flags (), this),
+    reconSpace_ (reconSpace, ::xml_schema::flags (), this),
+    encodingLimits_ (encodingLimits, ::xml_schema::flags (), this),
+    trajectory_ (trajectory, ::xml_schema::flags (), this)
+  {
+  }
+
+  encoding::
+  encoding (const encoding& x,
+            ::xml_schema::flags f,
+            ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    encodedSpace_ (x.encodedSpace_, f, this),
+    reconSpace_ (x.reconSpace_, f, this),
+    encodingLimits_ (x.encodingLimits_, f, this),
+    trajectory_ (x.trajectory_, f, this)
+  {
+  }
+
+  encoding::
+  encoding (const ::xercesc::DOMElement& e,
+            ::xml_schema::flags f,
+            ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    encodedSpace_ (f, this),
+    reconSpace_ (f, this),
+    encodingLimits_ (f, this),
+    trajectory_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void encoding::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // encodedSpace
+      //
+      if (n.name () == "encodedSpace" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< encodedSpace_type > r (
+          encodedSpace_traits::create (i, f, this));
+
+        if (!encodedSpace_.present ())
+        {
+          this->encodedSpace_.set (r);
+          continue;
+        }
+      }
+
+      // reconSpace
+      //
+      if (n.name () == "reconSpace" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< reconSpace_type > r (
+          reconSpace_traits::create (i, f, this));
+
+        if (!reconSpace_.present ())
+        {
+          this->reconSpace_.set (r);
+          continue;
+        }
+      }
+
+      // encodingLimits
+      //
+      if (n.name () == "encodingLimits" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< encodingLimits_type > r (
+          encodingLimits_traits::create (i, f, this));
+
+        if (!encodingLimits_.present ())
+        {
+          this->encodingLimits_.set (r);
+          continue;
+        }
+      }
+
+      // trajectory
+      //
+      if (n.name () == "trajectory" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< trajectory_type > r (
+          trajectory_traits::create (i, f, this));
+
+        if (!trajectory_.present ())
+        {
+          this->trajectory_.set (r);
+          continue;
+        }
+      }
+
+      break;
+    }
+
+    if (!encodedSpace_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "encodedSpace",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!reconSpace_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "reconSpace",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!encodingLimits_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "encodingLimits",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+
+    if (!trajectory_.present ())
+    {
+      throw ::xsd::cxx::tree::expected_element< char > (
+        "trajectory",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+  }
+
+  encoding* encoding::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class encoding (*this, f, c);
+  }
+
+  encoding::
+  ~encoding ()
+  {
+  }
+
+  // userParameters
+  //
+
+  userParameters::
+  userParameters ()
+  : ::xml_schema::type (),
+    userParameterLong_ (::xml_schema::flags (), this),
+    userParameterDouble_ (::xml_schema::flags (), this)
+  {
+  }
+
+  userParameters::
+  userParameters (const userParameters& x,
+                  ::xml_schema::flags f,
+                  ::xml_schema::container* c)
+  : ::xml_schema::type (x, f, c),
+    userParameterLong_ (x.userParameterLong_, f, this),
+    userParameterDouble_ (x.userParameterDouble_, f, this)
+  {
+  }
+
+  userParameters::
+  userParameters (const ::xercesc::DOMElement& e,
+                  ::xml_schema::flags f,
+                  ::xml_schema::container* c)
+  : ::xml_schema::type (e, f | ::xml_schema::flags::base, c),
+    userParameterLong_ (f, this),
+    userParameterDouble_ (f, this)
+  {
+    if ((f & ::xml_schema::flags::base) == 0)
+    {
+      ::xsd::cxx::xml::dom::parser< char > p (e, true, false);
+      this->parse (p, f);
+    }
+  }
+
+  void userParameters::
+  parse (::xsd::cxx::xml::dom::parser< char >& p,
+         ::xml_schema::flags f)
+  {
+    for (; p.more_elements (); p.next_element ())
+    {
+      const ::xercesc::DOMElement& i (p.cur_element ());
+      const ::xsd::cxx::xml::qualified_name< char > n (
+        ::xsd::cxx::xml::dom::name< char > (i));
+
+      // userParameterLong
+      //
+      if (n.name () == "userParameterLong" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< userParameterLong_type > r (
+          userParameterLong_traits::create (i, f, this));
+
+        this->userParameterLong_.push_back (r);
+        continue;
+      }
+
+      // userParameterDouble
+      //
+      if (n.name () == "userParameterDouble" && n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+      {
+        ::std::auto_ptr< userParameterDouble_type > r (
+          userParameterDouble_traits::create (i, f, this));
+
+        this->userParameterDouble_.push_back (r);
+        continue;
+      }
+
+      break;
+    }
+  }
+
+  userParameters* userParameters::
+  _clone (::xml_schema::flags f,
+          ::xml_schema::container* c) const
+  {
+    return new class userParameters (*this, f, c);
+  }
+
+  userParameters::
+  ~userParameters ()
+  {
+  }
+}
+
+#include <istream>
+#include <xsd/cxx/xml/sax/std-input-source.hxx>
+#include <xsd/cxx/tree/error-handler.hxx>
+
+namespace ISMRMRD
+{
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (const ::std::string& u,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xsd::cxx::xml::auto_initializer i (
+      (f & ::xml_schema::flags::dont_initialize) == 0,
+      (f & ::xml_schema::flags::keep_dom) == 0);
+
+    ::xsd::cxx::tree::error_handler< char > h;
+
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::xsd::cxx::xml::dom::parse< char > (
+        u, h, p, f));
+
+    h.throw_if_failed< ::xsd::cxx::tree::parsing< char > > ();
+
+    ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader > r (
+      ::ISMRMRD::ismrmrdHeader_ (
+        d, f | ::xml_schema::flags::own_dom, p));
+
+    return r;
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (const ::std::string& u,
+                  ::xml_schema::error_handler& h,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xsd::cxx::xml::auto_initializer i (
+      (f & ::xml_schema::flags::dont_initialize) == 0,
+      (f & ::xml_schema::flags::keep_dom) == 0);
+
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::xsd::cxx::xml::dom::parse< char > (
+        u, h, p, f));
+
+    if (!d.get ())
+      throw ::xsd::cxx::tree::parsing< char > ();
+
+    ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader > r (
+      ::ISMRMRD::ismrmrdHeader_ (
+        d, f | ::xml_schema::flags::own_dom, p));
+
+    return r;
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (const ::std::string& u,
+                  ::xercesc::DOMErrorHandler& h,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::xsd::cxx::xml::dom::parse< char > (
+        u, h, p, f));
+
+    if (!d.get ())
+      throw ::xsd::cxx::tree::parsing< char > ();
+
+    ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader > r (
+      ::ISMRMRD::ismrmrdHeader_ (
+        d, f | ::xml_schema::flags::own_dom, p));
+
+    return r;
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xsd::cxx::xml::auto_initializer i (
+      (f & ::xml_schema::flags::dont_initialize) == 0,
+      (f & ::xml_schema::flags::keep_dom) == 0);
+
+    ::xsd::cxx::xml::sax::std_input_source isrc (is);
+    return ::ISMRMRD::ismrmrdHeader_ (isrc, f, p);
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  ::xml_schema::error_handler& h,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xsd::cxx::xml::auto_initializer i (
+      (f & ::xml_schema::flags::dont_initialize) == 0,
+      (f & ::xml_schema::flags::keep_dom) == 0);
+
+    ::xsd::cxx::xml::sax::std_input_source isrc (is);
+    return ::ISMRMRD::ismrmrdHeader_ (isrc, h, f, p);
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  ::xercesc::DOMErrorHandler& h,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xsd::cxx::xml::sax::std_input_source isrc (is);
+    return ::ISMRMRD::ismrmrdHeader_ (isrc, h, f, p);
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  const ::std::string& sid,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xsd::cxx::xml::auto_initializer i (
+      (f & ::xml_schema::flags::dont_initialize) == 0,
+      (f & ::xml_schema::flags::keep_dom) == 0);
+
+    ::xsd::cxx::xml::sax::std_input_source isrc (is, sid);
+    return ::ISMRMRD::ismrmrdHeader_ (isrc, f, p);
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  const ::std::string& sid,
+                  ::xml_schema::error_handler& h,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xsd::cxx::xml::auto_initializer i (
+      (f & ::xml_schema::flags::dont_initialize) == 0,
+      (f & ::xml_schema::flags::keep_dom) == 0);
+
+    ::xsd::cxx::xml::sax::std_input_source isrc (is, sid);
+    return ::ISMRMRD::ismrmrdHeader_ (isrc, h, f, p);
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  const ::std::string& sid,
+                  ::xercesc::DOMErrorHandler& h,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xsd::cxx::xml::sax::std_input_source isrc (is, sid);
+    return ::ISMRMRD::ismrmrdHeader_ (isrc, h, f, p);
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::xercesc::InputSource& i,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xsd::cxx::tree::error_handler< char > h;
+
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::xsd::cxx::xml::dom::parse< char > (
+        i, h, p, f));
+
+    h.throw_if_failed< ::xsd::cxx::tree::parsing< char > > ();
+
+    ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader > r (
+      ::ISMRMRD::ismrmrdHeader_ (
+        d, f | ::xml_schema::flags::own_dom, p));
+
+    return r;
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::xercesc::InputSource& i,
+                  ::xml_schema::error_handler& h,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::xsd::cxx::xml::dom::parse< char > (
+        i, h, p, f));
+
+    if (!d.get ())
+      throw ::xsd::cxx::tree::parsing< char > ();
+
+    ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader > r (
+      ::ISMRMRD::ismrmrdHeader_ (
+        d, f | ::xml_schema::flags::own_dom, p));
+
+    return r;
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::xercesc::InputSource& i,
+                  ::xercesc::DOMErrorHandler& h,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::xsd::cxx::xml::dom::parse< char > (
+        i, h, p, f));
+
+    if (!d.get ())
+      throw ::xsd::cxx::tree::parsing< char > ();
+
+    ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader > r (
+      ::ISMRMRD::ismrmrdHeader_ (
+        d, f | ::xml_schema::flags::own_dom, p));
+
+    return r;
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (const ::xercesc::DOMDocument& d,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties& p)
+  {
+    if (f & ::xml_schema::flags::keep_dom)
+    {
+      ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > c (
+        static_cast< ::xercesc::DOMDocument* > (d.cloneNode (true)));
+
+      ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader > r (
+        ::ISMRMRD::ismrmrdHeader_ (
+          c, f | ::xml_schema::flags::own_dom, p));
+
+      return r;
+    }
+
+    const ::xercesc::DOMElement& e (*d.getDocumentElement ());
+    const ::xsd::cxx::xml::qualified_name< char > n (
+      ::xsd::cxx::xml::dom::name< char > (e));
+
+    if (n.name () == "ismrmrdHeader" &&
+        n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+    {
+      ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader > r (
+        ::xsd::cxx::tree::traits< ::ISMRMRD::ismrmrdHeader, char >::create (
+          e, f, 0));
+      return r;
+    }
+
+    throw ::xsd::cxx::tree::unexpected_element < char > (
+      n.name (),
+      n.namespace_ (),
+      "ismrmrdHeader",
+      "http://www.ismrm.org/ISMRMRD");
+  }
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument >& d,
+                  ::xml_schema::flags f,
+                  const ::xml_schema::properties&)
+  {
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > c (
+      ((f & ::xml_schema::flags::keep_dom) &&
+       !(f & ::xml_schema::flags::own_dom))
+      ? static_cast< ::xercesc::DOMDocument* > (d->cloneNode (true))
+      : 0);
+
+    ::xercesc::DOMDocument& doc (c.get () ? *c : *d);
+    const ::xercesc::DOMElement& e (*doc.getDocumentElement ());
+
+    const ::xsd::cxx::xml::qualified_name< char > n (
+      ::xsd::cxx::xml::dom::name< char > (e));
+
+    if (f & ::xml_schema::flags::keep_dom)
+      doc.setUserData (::xml_schema::dom::tree_node_key,
+                       (c.get () ? &c : &d),
+                       0);
+
+    if (n.name () == "ismrmrdHeader" &&
+        n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+    {
+      ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader > r (
+        ::xsd::cxx::tree::traits< ::ISMRMRD::ismrmrdHeader, char >::create (
+          e, f, 0));
+      return r;
+    }
+
+    throw ::xsd::cxx::tree::unexpected_element < char > (
+      n.name (),
+      n.namespace_ (),
+      "ismrmrdHeader",
+      "http://www.ismrm.org/ISMRMRD");
+  }
+}
+
+#include <ostream>
+#include <xsd/cxx/tree/error-handler.hxx>
+#include <xsd/cxx/xml/dom/serialization-source.hxx>
+
+namespace ISMRMRD
+{
+  void
+  ismrmrdHeader_ (::std::ostream& o,
+                  const ::ISMRMRD::ismrmrdHeader& s,
+                  const ::xml_schema::namespace_infomap& m,
+                  const ::std::string& e,
+                  ::xml_schema::flags f)
+  {
+    ::xsd::cxx::xml::auto_initializer i (
+      (f & ::xml_schema::flags::dont_initialize) == 0);
+
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::ISMRMRD::ismrmrdHeader_ (s, m, f));
+
+    ::xsd::cxx::tree::error_handler< char > h;
+
+    ::xsd::cxx::xml::dom::ostream_format_target t (o);
+    if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))
+    {
+      h.throw_if_failed< ::xsd::cxx::tree::serialization< char > > ();
+    }
+  }
+
+  void
+  ismrmrdHeader_ (::std::ostream& o,
+                  const ::ISMRMRD::ismrmrdHeader& s,
+                  ::xml_schema::error_handler& h,
+                  const ::xml_schema::namespace_infomap& m,
+                  const ::std::string& e,
+                  ::xml_schema::flags f)
+  {
+    ::xsd::cxx::xml::auto_initializer i (
+      (f & ::xml_schema::flags::dont_initialize) == 0);
+
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::ISMRMRD::ismrmrdHeader_ (s, m, f));
+    ::xsd::cxx::xml::dom::ostream_format_target t (o);
+    if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))
+    {
+      throw ::xsd::cxx::tree::serialization< char > ();
+    }
+  }
+
+  void
+  ismrmrdHeader_ (::std::ostream& o,
+                  const ::ISMRMRD::ismrmrdHeader& s,
+                  ::xercesc::DOMErrorHandler& h,
+                  const ::xml_schema::namespace_infomap& m,
+                  const ::std::string& e,
+                  ::xml_schema::flags f)
+  {
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::ISMRMRD::ismrmrdHeader_ (s, m, f));
+    ::xsd::cxx::xml::dom::ostream_format_target t (o);
+    if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))
+    {
+      throw ::xsd::cxx::tree::serialization< char > ();
+    }
+  }
+
+  void
+  ismrmrdHeader_ (::xercesc::XMLFormatTarget& t,
+                  const ::ISMRMRD::ismrmrdHeader& s,
+                  const ::xml_schema::namespace_infomap& m,
+                  const ::std::string& e,
+                  ::xml_schema::flags f)
+  {
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::ISMRMRD::ismrmrdHeader_ (s, m, f));
+
+    ::xsd::cxx::tree::error_handler< char > h;
+
+    if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))
+    {
+      h.throw_if_failed< ::xsd::cxx::tree::serialization< char > > ();
+    }
+  }
+
+  void
+  ismrmrdHeader_ (::xercesc::XMLFormatTarget& t,
+                  const ::ISMRMRD::ismrmrdHeader& s,
+                  ::xml_schema::error_handler& h,
+                  const ::xml_schema::namespace_infomap& m,
+                  const ::std::string& e,
+                  ::xml_schema::flags f)
+  {
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::ISMRMRD::ismrmrdHeader_ (s, m, f));
+    if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))
+    {
+      throw ::xsd::cxx::tree::serialization< char > ();
+    }
+  }
+
+  void
+  ismrmrdHeader_ (::xercesc::XMLFormatTarget& t,
+                  const ::ISMRMRD::ismrmrdHeader& s,
+                  ::xercesc::DOMErrorHandler& h,
+                  const ::xml_schema::namespace_infomap& m,
+                  const ::std::string& e,
+                  ::xml_schema::flags f)
+  {
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::ISMRMRD::ismrmrdHeader_ (s, m, f));
+    if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))
+    {
+      throw ::xsd::cxx::tree::serialization< char > ();
+    }
+  }
+
+  void
+  ismrmrdHeader_ (::xercesc::DOMDocument& d,
+                  const ::ISMRMRD::ismrmrdHeader& s,
+                  ::xml_schema::flags)
+  {
+    ::xercesc::DOMElement& e (*d.getDocumentElement ());
+    const ::xsd::cxx::xml::qualified_name< char > n (
+      ::xsd::cxx::xml::dom::name< char > (e));
+
+    if (n.name () == "ismrmrdHeader" &&
+        n.namespace_ () == "http://www.ismrm.org/ISMRMRD")
+    {
+      e << s;
+    }
+    else
+    {
+      throw ::xsd::cxx::tree::unexpected_element < char > (
+        n.name (),
+        n.namespace_ (),
+        "ismrmrdHeader",
+        "http://www.ismrm.org/ISMRMRD");
+    }
+  }
+
+  ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument >
+  ismrmrdHeader_ (const ::ISMRMRD::ismrmrdHeader& s,
+                  const ::xml_schema::namespace_infomap& m,
+                  ::xml_schema::flags f)
+  {
+    ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d (
+      ::xsd::cxx::xml::dom::serialize< char > (
+        "ismrmrdHeader",
+        "http://www.ismrm.org/ISMRMRD",
+        m, f));
+
+    ::ISMRMRD::ismrmrdHeader_ (*d, s, f);
+    return d;
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const subjectInformationType& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // patientName
+    //
+    if (i.patientName ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "patientName",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.patientName ();
+    }
+
+    // patientWeight_kg
+    //
+    if (i.patientWeight_kg ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "patientWeight_kg",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.patientWeight_kg ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const experimentalConditionsType& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // H1resonanceFrequencyHz
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "H1resonanceFrequencyHz",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.H1resonanceFrequencyHz ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const acquisitionSystemInformationType& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // systemVendor
+    //
+    if (i.systemVendor ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "systemVendor",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.systemVendor ();
+    }
+
+    // systemModel
+    //
+    if (i.systemModel ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "systemModel",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.systemModel ();
+    }
+
+    // systemFieldStrength_T
+    //
+    if (i.systemFieldStrength_T ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "systemFieldStrength_T",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.systemFieldStrength_T ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const encodingSpaceType& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // matrixSize
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "matrixSize",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.matrixSize ();
+    }
+
+    // fieldOfView_m
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "fieldOfView_m",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.fieldOfView_m ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const limitType& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // minimum
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "minimum",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.minimum ();
+    }
+
+    // maximum
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "maximum",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.maximum ();
+    }
+
+    // center
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "center",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.center ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const encodingLimitsType& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // kspace_encoding_step_1
+    //
+    if (i.kspace_encoding_step_1 ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "kspace_encoding_step_1",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.kspace_encoding_step_1 ();
+    }
+
+    // kspace_encoding_step_2
+    //
+    if (i.kspace_encoding_step_2 ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "kspace_encoding_step_2",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.kspace_encoding_step_2 ();
+    }
+
+    // average
+    //
+    if (i.average ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "average",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.average ();
+    }
+
+    // slice
+    //
+    if (i.slice ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "slice",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.slice ();
+    }
+
+    // contrast
+    //
+    if (i.contrast ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "contrast",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.contrast ();
+    }
+
+    // phase
+    //
+    if (i.phase ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "phase",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.phase ();
+    }
+
+    // repetition
+    //
+    if (i.repetition ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "repetition",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.repetition ();
+    }
+
+    // set
+    //
+    if (i.set ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "set",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.set ();
+    }
+
+    // segment
+    //
+    if (i.segment ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "segment",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.segment ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const trajectoryType& i)
+  {
+    e << static_cast< const ::xml_schema::string& > (i);
+  }
+
+  void
+  operator<< (::xercesc::DOMAttr& a, const trajectoryType& i)
+  {
+    a << static_cast< const ::xml_schema::string& > (i);
+  }
+
+  void
+  operator<< (::xml_schema::list_stream& l,
+              const trajectoryType& i)
+  {
+    l << static_cast< const ::xml_schema::string& > (i);
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const userParameterLongType& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // name
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "name",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.name ();
+    }
+
+    // value
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "value",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.value ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const userParameterDoubleType& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // name
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "name",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.name ();
+    }
+
+    // value
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "value",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << ::xml_schema::as_double(i.value ());
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const ismrmrdHeader& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // subjectInformation
+    //
+    if (i.subjectInformation ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "subjectInformation",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.subjectInformation ();
+    }
+
+    // acquisitionSystemInformation
+    //
+    if (i.acquisitionSystemInformation ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "acquisitionSystemInformation",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.acquisitionSystemInformation ();
+    }
+
+    // experimentalConditions
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "experimentalConditions",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.experimentalConditions ();
+    }
+
+    // encoding
+    //
+    for (ismrmrdHeader::encoding_const_iterator
+         b (i.encoding ().begin ()), n (i.encoding ().end ());
+         b != n; ++b)
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "encoding",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *b;
+    }
+
+    // userParameters
+    //
+    if (i.userParameters ())
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "userParameters",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *i.userParameters ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const matrixSize& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // x
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "x",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.x ();
+    }
+
+    // y
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "y",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.y ();
+    }
+
+    // z
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "z",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.z ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const fieldOfView_m& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // x
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "x",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.x ();
+    }
+
+    // y
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "y",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.y ();
+    }
+
+    // z
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "z",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.z ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const encoding& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // encodedSpace
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "encodedSpace",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.encodedSpace ();
+    }
+
+    // reconSpace
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "reconSpace",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.reconSpace ();
+    }
+
+    // encodingLimits
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "encodingLimits",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.encodingLimits ();
+    }
+
+    // trajectory
+    //
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "trajectory",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << i.trajectory ();
+    }
+  }
+
+  void
+  operator<< (::xercesc::DOMElement& e, const userParameters& i)
+  {
+    e << static_cast< const ::xml_schema::type& > (i);
+
+    // userParameterLong
+    //
+    for (userParameters::userParameterLong_const_iterator
+         b (i.userParameterLong ().begin ()), n (i.userParameterLong ().end ());
+         b != n; ++b)
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "userParameterLong",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *b;
+    }
+
+    // userParameterDouble
+    //
+    for (userParameters::userParameterDouble_const_iterator
+         b (i.userParameterDouble ().begin ()), n (i.userParameterDouble ().end ());
+         b != n; ++b)
+    {
+      ::xercesc::DOMElement& s (
+        ::xsd::cxx::xml::dom::create_element (
+          "userParameterDouble",
+          "http://www.ismrm.org/ISMRMRD",
+          e));
+
+      s << *b;
+    }
+  }
+}
+
+#include <xsd/cxx/post.hxx>
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
diff --git a/build/src/xsd/ismrmrd.hxx b/build/src/xsd/ismrmrd.hxx
new file mode 100644
index 0000000..af22340
--- /dev/null
+++ b/build/src/xsd/ismrmrd.hxx
@@ -0,0 +1,1802 @@
+// Copyright (C) 2005-2010 Code Synthesis Tools CC
+//
+// This program was generated by CodeSynthesis XSD, an XML Schema to
+// C++ data binding compiler.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation.
+//
+// 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+// In addition, as a special exception, Code Synthesis Tools CC gives
+// permission to link this program with the Xerces-C++ library (or with
+// modified versions of Xerces-C++ that use the same license as Xerces-C++),
+// and distribute linked combinations including the two. You must obey
+// the GNU General Public License version 2 in all respects for all of
+// the code used other than Xerces-C++. If you modify this copy of the
+// program, you may extend this exception to your version of the program,
+// but you are not obligated to do so. If you do not wish to do so, delete
+// this exception statement from your version.
+//
+// Furthermore, Code Synthesis Tools CC makes a special exception for
+// the Free/Libre and Open Source Software (FLOSS) which is described
+// in the accompanying FLOSSE file.
+//
+
+#ifndef CXX_HOME_HANSENMS_MRPROGS_ISMRMRD_BUILD_SCHEMA_ISMRMRD_HXX
+#define CXX_HOME_HANSENMS_MRPROGS_ISMRMRD_BUILD_SCHEMA_ISMRMRD_HXX
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+#include <xsd/cxx/config.hxx>
+
+#if (XSD_INT_VERSION != 3030000L)
+#error XSD runtime version mismatch
+#endif
+
+#include <xsd/cxx/pre.hxx>
+
+#ifndef XSD_USE_CHAR
+#define XSD_USE_CHAR
+#endif
+
+#ifndef XSD_CXX_TREE_USE_CHAR
+#define XSD_CXX_TREE_USE_CHAR
+#endif
+
+#include <xsd/cxx/xml/char-utf8.hxx>
+
+#include <xsd/cxx/tree/exceptions.hxx>
+#include <xsd/cxx/tree/elements.hxx>
+#include <xsd/cxx/tree/types.hxx>
+
+#include <xsd/cxx/xml/error-handler.hxx>
+
+#include <xsd/cxx/xml/dom/auto-ptr.hxx>
+
+#include <xsd/cxx/tree/parsing.hxx>
+#include <xsd/cxx/tree/parsing/byte.hxx>
+#include <xsd/cxx/tree/parsing/unsigned-byte.hxx>
+#include <xsd/cxx/tree/parsing/short.hxx>
+#include <xsd/cxx/tree/parsing/unsigned-short.hxx>
+#include <xsd/cxx/tree/parsing/int.hxx>
+#include <xsd/cxx/tree/parsing/unsigned-int.hxx>
+#include <xsd/cxx/tree/parsing/long.hxx>
+#include <xsd/cxx/tree/parsing/unsigned-long.hxx>
+#include <xsd/cxx/tree/parsing/boolean.hxx>
+#include <xsd/cxx/tree/parsing/float.hxx>
+#include <xsd/cxx/tree/parsing/double.hxx>
+#include <xsd/cxx/tree/parsing/decimal.hxx>
+
+#include <xsd/cxx/xml/dom/serialization-header.hxx>
+#include <xsd/cxx/tree/serialization.hxx>
+#include <xsd/cxx/tree/serialization/byte.hxx>
+#include <xsd/cxx/tree/serialization/unsigned-byte.hxx>
+#include <xsd/cxx/tree/serialization/short.hxx>
+#include <xsd/cxx/tree/serialization/unsigned-short.hxx>
+#include <xsd/cxx/tree/serialization/int.hxx>
+#include <xsd/cxx/tree/serialization/unsigned-int.hxx>
+#include <xsd/cxx/tree/serialization/long.hxx>
+#include <xsd/cxx/tree/serialization/unsigned-long.hxx>
+#include <xsd/cxx/tree/serialization/boolean.hxx>
+#include <xsd/cxx/tree/serialization/float.hxx>
+#include <xsd/cxx/tree/serialization/double.hxx>
+#include <xsd/cxx/tree/serialization/decimal.hxx>
+
+namespace xml_schema
+{
+  // anyType and anySimpleType.
+  //
+  typedef ::xsd::cxx::tree::type type;
+  typedef ::xsd::cxx::tree::simple_type< type > simple_type;
+  typedef ::xsd::cxx::tree::type container;
+
+  // 8-bit
+  //
+  typedef signed char byte;
+  typedef unsigned char unsigned_byte;
+
+  // 16-bit
+  //
+  typedef short short_;
+  typedef unsigned short unsigned_short;
+
+  // 32-bit
+  //
+  typedef int int_;
+  typedef unsigned int unsigned_int;
+
+  // 64-bit
+  //
+  typedef long long long_;
+  typedef unsigned long long unsigned_long;
+
+  // Supposed to be arbitrary-length integral types.
+  //
+  typedef long long integer;
+  typedef long long non_positive_integer;
+  typedef unsigned long long non_negative_integer;
+  typedef unsigned long long positive_integer;
+  typedef long long negative_integer;
+
+  // Boolean.
+  //
+  typedef bool boolean;
+
+  // Floating-point types.
+  //
+  typedef float float_;
+  typedef double double_;
+  typedef double decimal;
+
+  // String types.
+  //
+  typedef ::xsd::cxx::tree::string< char, simple_type > string;
+  typedef ::xsd::cxx::tree::normalized_string< char, string > normalized_string;
+  typedef ::xsd::cxx::tree::token< char, normalized_string > token;
+  typedef ::xsd::cxx::tree::name< char, token > name;
+  typedef ::xsd::cxx::tree::nmtoken< char, token > nmtoken;
+  typedef ::xsd::cxx::tree::nmtokens< char, simple_type, nmtoken > nmtokens;
+  typedef ::xsd::cxx::tree::ncname< char, name > ncname;
+  typedef ::xsd::cxx::tree::language< char, token > language;
+
+  // ID/IDREF.
+  //
+  typedef ::xsd::cxx::tree::id< char, ncname > id;
+  typedef ::xsd::cxx::tree::idref< char, ncname, type > idref;
+  typedef ::xsd::cxx::tree::idrefs< char, simple_type, idref > idrefs;
+
+  // URI.
+  //
+  typedef ::xsd::cxx::tree::uri< char, simple_type > uri;
+
+  // Qualified name.
+  //
+  typedef ::xsd::cxx::tree::qname< char, simple_type, uri, ncname > qname;
+
+  // Binary.
+  //
+  typedef ::xsd::cxx::tree::buffer< char > buffer;
+  typedef ::xsd::cxx::tree::base64_binary< char, simple_type > base64_binary;
+  typedef ::xsd::cxx::tree::hex_binary< char, simple_type > hex_binary;
+
+  // Date/time.
+  //
+  typedef ::xsd::cxx::tree::time_zone time_zone;
+  typedef ::xsd::cxx::tree::date< char, simple_type > date;
+  typedef ::xsd::cxx::tree::date_time< char, simple_type > date_time;
+  typedef ::xsd::cxx::tree::duration< char, simple_type > duration;
+  typedef ::xsd::cxx::tree::gday< char, simple_type > gday;
+  typedef ::xsd::cxx::tree::gmonth< char, simple_type > gmonth;
+  typedef ::xsd::cxx::tree::gmonth_day< char, simple_type > gmonth_day;
+  typedef ::xsd::cxx::tree::gyear< char, simple_type > gyear;
+  typedef ::xsd::cxx::tree::gyear_month< char, simple_type > gyear_month;
+  typedef ::xsd::cxx::tree::time< char, simple_type > time;
+
+  // Entity.
+  //
+  typedef ::xsd::cxx::tree::entity< char, ncname > entity;
+  typedef ::xsd::cxx::tree::entities< char, simple_type, entity > entities;
+
+  // Namespace information and list stream. Used in
+  // serialization functions.
+  //
+  typedef ::xsd::cxx::xml::dom::namespace_info< char > namespace_info;
+  typedef ::xsd::cxx::xml::dom::namespace_infomap< char > namespace_infomap;
+  typedef ::xsd::cxx::tree::list_stream< char > list_stream;
+  typedef ::xsd::cxx::tree::as_double< double_ > as_double;
+  typedef ::xsd::cxx::tree::as_decimal< decimal > as_decimal;
+  typedef ::xsd::cxx::tree::facet facet;
+
+  // Flags and properties.
+  //
+  typedef ::xsd::cxx::tree::flags flags;
+  typedef ::xsd::cxx::tree::properties< char > properties;
+
+  // Parsing/serialization diagnostics.
+  //
+  typedef ::xsd::cxx::tree::severity severity;
+  typedef ::xsd::cxx::tree::error< char > error;
+  typedef ::xsd::cxx::tree::diagnostics< char > diagnostics;
+
+  // Exceptions.
+  //
+  typedef ::xsd::cxx::tree::exception< char > exception;
+  typedef ::xsd::cxx::tree::bounds< char > bounds;
+  typedef ::xsd::cxx::tree::duplicate_id< char > duplicate_id;
+  typedef ::xsd::cxx::tree::parsing< char > parsing;
+  typedef ::xsd::cxx::tree::expected_element< char > expected_element;
+  typedef ::xsd::cxx::tree::unexpected_element< char > unexpected_element;
+  typedef ::xsd::cxx::tree::expected_attribute< char > expected_attribute;
+  typedef ::xsd::cxx::tree::unexpected_enumerator< char > unexpected_enumerator;
+  typedef ::xsd::cxx::tree::expected_text_content< char > expected_text_content;
+  typedef ::xsd::cxx::tree::no_prefix_mapping< char > no_prefix_mapping;
+  typedef ::xsd::cxx::tree::serialization< char > serialization;
+
+  // Error handler callback interface.
+  //
+  typedef ::xsd::cxx::xml::error_handler< char > error_handler;
+
+  // DOM interaction.
+  //
+  namespace dom
+  {
+    // Automatic pointer for DOMDocument.
+    //
+    using ::xsd::cxx::xml::dom::auto_ptr;
+
+#ifndef XSD_CXX_TREE_TREE_NODE_KEY__XML_SCHEMA
+#define XSD_CXX_TREE_TREE_NODE_KEY__XML_SCHEMA
+    // DOM user data key for back pointers to tree nodes.
+    //
+    const XMLCh* const tree_node_key = ::xsd::cxx::tree::user_data_keys::node;
+#endif
+  }
+}
+
+// Forward declarations.
+//
+namespace ISMRMRD
+{
+  class subjectInformationType;
+  class experimentalConditionsType;
+  class acquisitionSystemInformationType;
+  class encodingSpaceType;
+  class limitType;
+  class encodingLimitsType;
+  class trajectoryType;
+  class userParameterLongType;
+  class userParameterDoubleType;
+  class ismrmrdHeader;
+  class matrixSize;
+  class fieldOfView_m;
+  class encoding;
+  class userParameters;
+}
+
+
+#include <memory>    // std::auto_ptr
+#include <limits>    // std::numeric_limits
+#include <algorithm> // std::binary_search
+
+#include <xsd/cxx/xml/char-utf8.hxx>
+
+#include <xsd/cxx/tree/exceptions.hxx>
+#include <xsd/cxx/tree/elements.hxx>
+#include <xsd/cxx/tree/containers.hxx>
+#include <xsd/cxx/tree/list.hxx>
+
+#include <xsd/cxx/xml/dom/parsing-header.hxx>
+
+namespace ISMRMRD
+{
+  class subjectInformationType: public ::xml_schema::type
+  {
+    public:
+    // patientName
+    // 
+    typedef ::xml_schema::string patientName_type;
+    typedef ::xsd::cxx::tree::optional< patientName_type > patientName_optional;
+    typedef ::xsd::cxx::tree::traits< patientName_type, char > patientName_traits;
+
+    const patientName_optional&
+    patientName () const;
+
+    patientName_optional&
+    patientName ();
+
+    void
+    patientName (const patientName_type& x);
+
+    void
+    patientName (const patientName_optional& x);
+
+    void
+    patientName (::std::auto_ptr< patientName_type > p);
+
+    // patientWeight_kg
+    // 
+    typedef ::xml_schema::float_ patientWeight_kg_type;
+    typedef ::xsd::cxx::tree::optional< patientWeight_kg_type > patientWeight_kg_optional;
+    typedef ::xsd::cxx::tree::traits< patientWeight_kg_type, char > patientWeight_kg_traits;
+
+    const patientWeight_kg_optional&
+    patientWeight_kg () const;
+
+    patientWeight_kg_optional&
+    patientWeight_kg ();
+
+    void
+    patientWeight_kg (const patientWeight_kg_type& x);
+
+    void
+    patientWeight_kg (const patientWeight_kg_optional& x);
+
+    // Constructors.
+    //
+    subjectInformationType ();
+
+    subjectInformationType (const ::xercesc::DOMElement& e,
+                            ::xml_schema::flags f = 0,
+                            ::xml_schema::container* c = 0);
+
+    subjectInformationType (const subjectInformationType& x,
+                            ::xml_schema::flags f = 0,
+                            ::xml_schema::container* c = 0);
+
+    virtual subjectInformationType*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~subjectInformationType ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    patientName_optional patientName_;
+    patientWeight_kg_optional patientWeight_kg_;
+  };
+
+  class experimentalConditionsType: public ::xml_schema::type
+  {
+    public:
+    // H1resonanceFrequencyHz
+    // 
+    typedef ::xml_schema::long_ H1resonanceFrequencyHz_type;
+    typedef ::xsd::cxx::tree::traits< H1resonanceFrequencyHz_type, char > H1resonanceFrequencyHz_traits;
+
+    const H1resonanceFrequencyHz_type&
+    H1resonanceFrequencyHz () const;
+
+    H1resonanceFrequencyHz_type&
+    H1resonanceFrequencyHz ();
+
+    void
+    H1resonanceFrequencyHz (const H1resonanceFrequencyHz_type& x);
+
+    // Constructors.
+    //
+    experimentalConditionsType (const H1resonanceFrequencyHz_type&);
+
+    experimentalConditionsType (const ::xercesc::DOMElement& e,
+                                ::xml_schema::flags f = 0,
+                                ::xml_schema::container* c = 0);
+
+    experimentalConditionsType (const experimentalConditionsType& x,
+                                ::xml_schema::flags f = 0,
+                                ::xml_schema::container* c = 0);
+
+    virtual experimentalConditionsType*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~experimentalConditionsType ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    ::xsd::cxx::tree::one< H1resonanceFrequencyHz_type > H1resonanceFrequencyHz_;
+  };
+
+  class acquisitionSystemInformationType: public ::xml_schema::type
+  {
+    public:
+    // systemVendor
+    // 
+    typedef ::xml_schema::string systemVendor_type;
+    typedef ::xsd::cxx::tree::optional< systemVendor_type > systemVendor_optional;
+    typedef ::xsd::cxx::tree::traits< systemVendor_type, char > systemVendor_traits;
+
+    const systemVendor_optional&
+    systemVendor () const;
+
+    systemVendor_optional&
+    systemVendor ();
+
+    void
+    systemVendor (const systemVendor_type& x);
+
+    void
+    systemVendor (const systemVendor_optional& x);
+
+    void
+    systemVendor (::std::auto_ptr< systemVendor_type > p);
+
+    // systemModel
+    // 
+    typedef ::xml_schema::string systemModel_type;
+    typedef ::xsd::cxx::tree::optional< systemModel_type > systemModel_optional;
+    typedef ::xsd::cxx::tree::traits< systemModel_type, char > systemModel_traits;
+
+    const systemModel_optional&
+    systemModel () const;
+
+    systemModel_optional&
+    systemModel ();
+
+    void
+    systemModel (const systemModel_type& x);
+
+    void
+    systemModel (const systemModel_optional& x);
+
+    void
+    systemModel (::std::auto_ptr< systemModel_type > p);
+
+    // systemFieldStrength_T
+    // 
+    typedef ::xml_schema::float_ systemFieldStrength_T_type;
+    typedef ::xsd::cxx::tree::optional< systemFieldStrength_T_type > systemFieldStrength_T_optional;
+    typedef ::xsd::cxx::tree::traits< systemFieldStrength_T_type, char > systemFieldStrength_T_traits;
+
+    const systemFieldStrength_T_optional&
+    systemFieldStrength_T () const;
+
+    systemFieldStrength_T_optional&
+    systemFieldStrength_T ();
+
+    void
+    systemFieldStrength_T (const systemFieldStrength_T_type& x);
+
+    void
+    systemFieldStrength_T (const systemFieldStrength_T_optional& x);
+
+    // Constructors.
+    //
+    acquisitionSystemInformationType ();
+
+    acquisitionSystemInformationType (const ::xercesc::DOMElement& e,
+                                      ::xml_schema::flags f = 0,
+                                      ::xml_schema::container* c = 0);
+
+    acquisitionSystemInformationType (const acquisitionSystemInformationType& x,
+                                      ::xml_schema::flags f = 0,
+                                      ::xml_schema::container* c = 0);
+
+    virtual acquisitionSystemInformationType*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~acquisitionSystemInformationType ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    systemVendor_optional systemVendor_;
+    systemModel_optional systemModel_;
+    systemFieldStrength_T_optional systemFieldStrength_T_;
+  };
+
+  class encodingSpaceType: public ::xml_schema::type
+  {
+    public:
+    // matrixSize
+    // 
+    typedef ::ISMRMRD::matrixSize matrixSize_type;
+    typedef ::xsd::cxx::tree::traits< matrixSize_type, char > matrixSize_traits;
+
+    const matrixSize_type&
+    matrixSize () const;
+
+    matrixSize_type&
+    matrixSize ();
+
+    void
+    matrixSize (const matrixSize_type& x);
+
+    void
+    matrixSize (::std::auto_ptr< matrixSize_type > p);
+
+    // fieldOfView_m
+    // 
+    typedef ::ISMRMRD::fieldOfView_m fieldOfView_m_type;
+    typedef ::xsd::cxx::tree::traits< fieldOfView_m_type, char > fieldOfView_m_traits;
+
+    const fieldOfView_m_type&
+    fieldOfView_m () const;
+
+    fieldOfView_m_type&
+    fieldOfView_m ();
+
+    void
+    fieldOfView_m (const fieldOfView_m_type& x);
+
+    void
+    fieldOfView_m (::std::auto_ptr< fieldOfView_m_type > p);
+
+    // Constructors.
+    //
+    encodingSpaceType (const matrixSize_type&,
+                       const fieldOfView_m_type&);
+
+    encodingSpaceType (::std::auto_ptr< matrixSize_type >&,
+                       ::std::auto_ptr< fieldOfView_m_type >&);
+
+    encodingSpaceType (const ::xercesc::DOMElement& e,
+                       ::xml_schema::flags f = 0,
+                       ::xml_schema::container* c = 0);
+
+    encodingSpaceType (const encodingSpaceType& x,
+                       ::xml_schema::flags f = 0,
+                       ::xml_schema::container* c = 0);
+
+    virtual encodingSpaceType*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~encodingSpaceType ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    ::xsd::cxx::tree::one< matrixSize_type > matrixSize_;
+    ::xsd::cxx::tree::one< fieldOfView_m_type > fieldOfView_m_;
+  };
+
+  class limitType: public ::xml_schema::type
+  {
+    public:
+    // minimum
+    // 
+    typedef ::xml_schema::unsigned_short minimum_type;
+    typedef ::xsd::cxx::tree::traits< minimum_type, char > minimum_traits;
+
+    const minimum_type&
+    minimum () const;
+
+    minimum_type&
+    minimum ();
+
+    void
+    minimum (const minimum_type& x);
+
+    static minimum_type
+    minimum_default_value ();
+
+    // maximum
+    // 
+    typedef ::xml_schema::unsigned_short maximum_type;
+    typedef ::xsd::cxx::tree::traits< maximum_type, char > maximum_traits;
+
+    const maximum_type&
+    maximum () const;
+
+    maximum_type&
+    maximum ();
+
+    void
+    maximum (const maximum_type& x);
+
+    static maximum_type
+    maximum_default_value ();
+
+    // center
+    // 
+    typedef ::xml_schema::unsigned_short center_type;
+    typedef ::xsd::cxx::tree::traits< center_type, char > center_traits;
+
+    const center_type&
+    center () const;
+
+    center_type&
+    center ();
+
+    void
+    center (const center_type& x);
+
+    static center_type
+    center_default_value ();
+
+    // Constructors.
+    //
+    limitType (const minimum_type&,
+               const maximum_type&,
+               const center_type&);
+
+    limitType (const ::xercesc::DOMElement& e,
+               ::xml_schema::flags f = 0,
+               ::xml_schema::container* c = 0);
+
+    limitType (const limitType& x,
+               ::xml_schema::flags f = 0,
+               ::xml_schema::container* c = 0);
+
+    virtual limitType*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~limitType ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    ::xsd::cxx::tree::one< minimum_type > minimum_;
+    ::xsd::cxx::tree::one< maximum_type > maximum_;
+    ::xsd::cxx::tree::one< center_type > center_;
+  };
+
+  class encodingLimitsType: public ::xml_schema::type
+  {
+    public:
+    // kspace_encoding_step_1
+    // 
+    typedef ::ISMRMRD::limitType kspace_encoding_step_1_type;
+    typedef ::xsd::cxx::tree::optional< kspace_encoding_step_1_type > kspace_encoding_step_1_optional;
+    typedef ::xsd::cxx::tree::traits< kspace_encoding_step_1_type, char > kspace_encoding_step_1_traits;
+
+    const kspace_encoding_step_1_optional&
+    kspace_encoding_step_1 () const;
+
+    kspace_encoding_step_1_optional&
+    kspace_encoding_step_1 ();
+
+    void
+    kspace_encoding_step_1 (const kspace_encoding_step_1_type& x);
+
+    void
+    kspace_encoding_step_1 (const kspace_encoding_step_1_optional& x);
+
+    void
+    kspace_encoding_step_1 (::std::auto_ptr< kspace_encoding_step_1_type > p);
+
+    // kspace_encoding_step_2
+    // 
+    typedef ::ISMRMRD::limitType kspace_encoding_step_2_type;
+    typedef ::xsd::cxx::tree::optional< kspace_encoding_step_2_type > kspace_encoding_step_2_optional;
+    typedef ::xsd::cxx::tree::traits< kspace_encoding_step_2_type, char > kspace_encoding_step_2_traits;
+
+    const kspace_encoding_step_2_optional&
+    kspace_encoding_step_2 () const;
+
+    kspace_encoding_step_2_optional&
+    kspace_encoding_step_2 ();
+
+    void
+    kspace_encoding_step_2 (const kspace_encoding_step_2_type& x);
+
+    void
+    kspace_encoding_step_2 (const kspace_encoding_step_2_optional& x);
+
+    void
+    kspace_encoding_step_2 (::std::auto_ptr< kspace_encoding_step_2_type > p);
+
+    // average
+    // 
+    typedef ::ISMRMRD::limitType average_type;
+    typedef ::xsd::cxx::tree::optional< average_type > average_optional;
+    typedef ::xsd::cxx::tree::traits< average_type, char > average_traits;
+
+    const average_optional&
+    average () const;
+
+    average_optional&
+    average ();
+
+    void
+    average (const average_type& x);
+
+    void
+    average (const average_optional& x);
+
+    void
+    average (::std::auto_ptr< average_type > p);
+
+    // slice
+    // 
+    typedef ::ISMRMRD::limitType slice_type;
+    typedef ::xsd::cxx::tree::optional< slice_type > slice_optional;
+    typedef ::xsd::cxx::tree::traits< slice_type, char > slice_traits;
+
+    const slice_optional&
+    slice () const;
+
+    slice_optional&
+    slice ();
+
+    void
+    slice (const slice_type& x);
+
+    void
+    slice (const slice_optional& x);
+
+    void
+    slice (::std::auto_ptr< slice_type > p);
+
+    // contrast
+    // 
+    typedef ::ISMRMRD::limitType contrast_type;
+    typedef ::xsd::cxx::tree::optional< contrast_type > contrast_optional;
+    typedef ::xsd::cxx::tree::traits< contrast_type, char > contrast_traits;
+
+    const contrast_optional&
+    contrast () const;
+
+    contrast_optional&
+    contrast ();
+
+    void
+    contrast (const contrast_type& x);
+
+    void
+    contrast (const contrast_optional& x);
+
+    void
+    contrast (::std::auto_ptr< contrast_type > p);
+
+    // phase
+    // 
+    typedef ::ISMRMRD::limitType phase_type;
+    typedef ::xsd::cxx::tree::optional< phase_type > phase_optional;
+    typedef ::xsd::cxx::tree::traits< phase_type, char > phase_traits;
+
+    const phase_optional&
+    phase () const;
+
+    phase_optional&
+    phase ();
+
+    void
+    phase (const phase_type& x);
+
+    void
+    phase (const phase_optional& x);
+
+    void
+    phase (::std::auto_ptr< phase_type > p);
+
+    // repetition
+    // 
+    typedef ::ISMRMRD::limitType repetition_type;
+    typedef ::xsd::cxx::tree::optional< repetition_type > repetition_optional;
+    typedef ::xsd::cxx::tree::traits< repetition_type, char > repetition_traits;
+
+    const repetition_optional&
+    repetition () const;
+
+    repetition_optional&
+    repetition ();
+
+    void
+    repetition (const repetition_type& x);
+
+    void
+    repetition (const repetition_optional& x);
+
+    void
+    repetition (::std::auto_ptr< repetition_type > p);
+
+    // set
+    // 
+    typedef ::ISMRMRD::limitType set_type;
+    typedef ::xsd::cxx::tree::optional< set_type > set_optional;
+    typedef ::xsd::cxx::tree::traits< set_type, char > set_traits;
+
+    const set_optional&
+    set () const;
+
+    set_optional&
+    set ();
+
+    void
+    set (const set_type& x);
+
+    void
+    set (const set_optional& x);
+
+    void
+    set (::std::auto_ptr< set_type > p);
+
+    // segment
+    // 
+    typedef ::ISMRMRD::limitType segment_type;
+    typedef ::xsd::cxx::tree::optional< segment_type > segment_optional;
+    typedef ::xsd::cxx::tree::traits< segment_type, char > segment_traits;
+
+    const segment_optional&
+    segment () const;
+
+    segment_optional&
+    segment ();
+
+    void
+    segment (const segment_type& x);
+
+    void
+    segment (const segment_optional& x);
+
+    void
+    segment (::std::auto_ptr< segment_type > p);
+
+    // Constructors.
+    //
+    encodingLimitsType ();
+
+    encodingLimitsType (const ::xercesc::DOMElement& e,
+                        ::xml_schema::flags f = 0,
+                        ::xml_schema::container* c = 0);
+
+    encodingLimitsType (const encodingLimitsType& x,
+                        ::xml_schema::flags f = 0,
+                        ::xml_schema::container* c = 0);
+
+    virtual encodingLimitsType*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~encodingLimitsType ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    kspace_encoding_step_1_optional kspace_encoding_step_1_;
+    kspace_encoding_step_2_optional kspace_encoding_step_2_;
+    average_optional average_;
+    slice_optional slice_;
+    contrast_optional contrast_;
+    phase_optional phase_;
+    repetition_optional repetition_;
+    set_optional set_;
+    segment_optional segment_;
+  };
+
+  class trajectoryType: public ::xml_schema::string
+  {
+    public:
+    enum value
+    {
+      cartesian,
+      epi,
+      radial,
+      goldenangle,
+      spiral,
+      other
+    };
+
+    trajectoryType (value v);
+
+    trajectoryType (const char* v);
+
+    trajectoryType (const ::std::string& v);
+
+    trajectoryType (const ::xml_schema::string& v);
+
+    trajectoryType (const ::xercesc::DOMElement& e,
+                    ::xml_schema::flags f = 0,
+                    ::xml_schema::container* c = 0);
+
+    trajectoryType (const ::xercesc::DOMAttr& a,
+                    ::xml_schema::flags f = 0,
+                    ::xml_schema::container* c = 0);
+
+    trajectoryType (const ::std::string& s,
+                    const ::xercesc::DOMElement* e,
+                    ::xml_schema::flags f = 0,
+                    ::xml_schema::container* c = 0);
+
+    trajectoryType (const trajectoryType& x,
+                    ::xml_schema::flags f = 0,
+                    ::xml_schema::container* c = 0);
+
+    virtual trajectoryType*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    trajectoryType&
+    operator= (value v);
+
+    virtual
+    operator value () const
+    {
+      return _xsd_trajectoryType_convert ();
+    }
+
+    protected:
+    value
+    _xsd_trajectoryType_convert () const;
+
+    public:
+    static const char* const _xsd_trajectoryType_literals_[6];
+    static const value _xsd_trajectoryType_indexes_[6];
+  };
+
+  class userParameterLongType: public ::xml_schema::type
+  {
+    public:
+    // name
+    // 
+    typedef ::xml_schema::string name_type;
+    typedef ::xsd::cxx::tree::traits< name_type, char > name_traits;
+
+    const name_type&
+    name () const;
+
+    name_type&
+    name ();
+
+    void
+    name (const name_type& x);
+
+    void
+    name (::std::auto_ptr< name_type > p);
+
+    // value
+    // 
+    typedef ::xml_schema::long_ value_type;
+    typedef ::xsd::cxx::tree::traits< value_type, char > value_traits;
+
+    const value_type&
+    value () const;
+
+    value_type&
+    value ();
+
+    void
+    value (const value_type& x);
+
+    // Constructors.
+    //
+    userParameterLongType (const name_type&,
+                           const value_type&);
+
+    userParameterLongType (const ::xercesc::DOMElement& e,
+                           ::xml_schema::flags f = 0,
+                           ::xml_schema::container* c = 0);
+
+    userParameterLongType (const userParameterLongType& x,
+                           ::xml_schema::flags f = 0,
+                           ::xml_schema::container* c = 0);
+
+    virtual userParameterLongType*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~userParameterLongType ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    ::xsd::cxx::tree::one< name_type > name_;
+    ::xsd::cxx::tree::one< value_type > value_;
+  };
+
+  class userParameterDoubleType: public ::xml_schema::type
+  {
+    public:
+    // name
+    // 
+    typedef ::xml_schema::string name_type;
+    typedef ::xsd::cxx::tree::traits< name_type, char > name_traits;
+
+    const name_type&
+    name () const;
+
+    name_type&
+    name ();
+
+    void
+    name (const name_type& x);
+
+    void
+    name (::std::auto_ptr< name_type > p);
+
+    // value
+    // 
+    typedef ::xml_schema::double_ value_type;
+    typedef ::xsd::cxx::tree::traits< value_type, char, ::xsd::cxx::tree::schema_type::double_ > value_traits;
+
+    const value_type&
+    value () const;
+
+    value_type&
+    value ();
+
+    void
+    value (const value_type& x);
+
+    // Constructors.
+    //
+    userParameterDoubleType (const name_type&,
+                             const value_type&);
+
+    userParameterDoubleType (const ::xercesc::DOMElement& e,
+                             ::xml_schema::flags f = 0,
+                             ::xml_schema::container* c = 0);
+
+    userParameterDoubleType (const userParameterDoubleType& x,
+                             ::xml_schema::flags f = 0,
+                             ::xml_schema::container* c = 0);
+
+    virtual userParameterDoubleType*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~userParameterDoubleType ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    ::xsd::cxx::tree::one< name_type > name_;
+    ::xsd::cxx::tree::one< value_type > value_;
+  };
+
+  class ismrmrdHeader: public ::xml_schema::type
+  {
+    public:
+    // subjectInformation
+    // 
+    typedef ::ISMRMRD::subjectInformationType subjectInformation_type;
+    typedef ::xsd::cxx::tree::optional< subjectInformation_type > subjectInformation_optional;
+    typedef ::xsd::cxx::tree::traits< subjectInformation_type, char > subjectInformation_traits;
+
+    const subjectInformation_optional&
+    subjectInformation () const;
+
+    subjectInformation_optional&
+    subjectInformation ();
+
+    void
+    subjectInformation (const subjectInformation_type& x);
+
+    void
+    subjectInformation (const subjectInformation_optional& x);
+
+    void
+    subjectInformation (::std::auto_ptr< subjectInformation_type > p);
+
+    // acquisitionSystemInformation
+    // 
+    typedef ::ISMRMRD::acquisitionSystemInformationType acquisitionSystemInformation_type;
+    typedef ::xsd::cxx::tree::optional< acquisitionSystemInformation_type > acquisitionSystemInformation_optional;
+    typedef ::xsd::cxx::tree::traits< acquisitionSystemInformation_type, char > acquisitionSystemInformation_traits;
+
+    const acquisitionSystemInformation_optional&
+    acquisitionSystemInformation () const;
+
+    acquisitionSystemInformation_optional&
+    acquisitionSystemInformation ();
+
+    void
+    acquisitionSystemInformation (const acquisitionSystemInformation_type& x);
+
+    void
+    acquisitionSystemInformation (const acquisitionSystemInformation_optional& x);
+
+    void
+    acquisitionSystemInformation (::std::auto_ptr< acquisitionSystemInformation_type > p);
+
+    // experimentalConditions
+    // 
+    typedef ::ISMRMRD::experimentalConditionsType experimentalConditions_type;
+    typedef ::xsd::cxx::tree::traits< experimentalConditions_type, char > experimentalConditions_traits;
+
+    const experimentalConditions_type&
+    experimentalConditions () const;
+
+    experimentalConditions_type&
+    experimentalConditions ();
+
+    void
+    experimentalConditions (const experimentalConditions_type& x);
+
+    void
+    experimentalConditions (::std::auto_ptr< experimentalConditions_type > p);
+
+    // encoding
+    // 
+    typedef ::ISMRMRD::encoding encoding_type;
+    typedef ::xsd::cxx::tree::sequence< encoding_type > encoding_sequence;
+    typedef encoding_sequence::iterator encoding_iterator;
+    typedef encoding_sequence::const_iterator encoding_const_iterator;
+    typedef ::xsd::cxx::tree::traits< encoding_type, char > encoding_traits;
+
+    const encoding_sequence&
+    encoding () const;
+
+    encoding_sequence&
+    encoding ();
+
+    void
+    encoding (const encoding_sequence& s);
+
+    // userParameters
+    // 
+    typedef ::ISMRMRD::userParameters userParameters_type;
+    typedef ::xsd::cxx::tree::optional< userParameters_type > userParameters_optional;
+    typedef ::xsd::cxx::tree::traits< userParameters_type, char > userParameters_traits;
+
+    const userParameters_optional&
+    userParameters () const;
+
+    userParameters_optional&
+    userParameters ();
+
+    void
+    userParameters (const userParameters_type& x);
+
+    void
+    userParameters (const userParameters_optional& x);
+
+    void
+    userParameters (::std::auto_ptr< userParameters_type > p);
+
+    // Constructors.
+    //
+    ismrmrdHeader (const experimentalConditions_type&);
+
+    ismrmrdHeader (::std::auto_ptr< experimentalConditions_type >&);
+
+    ismrmrdHeader (const ::xercesc::DOMElement& e,
+                   ::xml_schema::flags f = 0,
+                   ::xml_schema::container* c = 0);
+
+    ismrmrdHeader (const ismrmrdHeader& x,
+                   ::xml_schema::flags f = 0,
+                   ::xml_schema::container* c = 0);
+
+    virtual ismrmrdHeader*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~ismrmrdHeader ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    subjectInformation_optional subjectInformation_;
+    acquisitionSystemInformation_optional acquisitionSystemInformation_;
+    ::xsd::cxx::tree::one< experimentalConditions_type > experimentalConditions_;
+    encoding_sequence encoding_;
+    userParameters_optional userParameters_;
+  };
+
+  class matrixSize: public ::xml_schema::type
+  {
+    public:
+    // x
+    // 
+    typedef ::xml_schema::unsigned_short x_type;
+    typedef ::xsd::cxx::tree::traits< x_type, char > x_traits;
+
+    const x_type&
+    x () const;
+
+    x_type&
+    x ();
+
+    void
+    x (const x_type& x);
+
+    static x_type
+    x_default_value ();
+
+    // y
+    // 
+    typedef ::xml_schema::unsigned_short y_type;
+    typedef ::xsd::cxx::tree::traits< y_type, char > y_traits;
+
+    const y_type&
+    y () const;
+
+    y_type&
+    y ();
+
+    void
+    y (const y_type& x);
+
+    static y_type
+    y_default_value ();
+
+    // z
+    // 
+    typedef ::xml_schema::unsigned_short z_type;
+    typedef ::xsd::cxx::tree::traits< z_type, char > z_traits;
+
+    const z_type&
+    z () const;
+
+    z_type&
+    z ();
+
+    void
+    z (const z_type& x);
+
+    static z_type
+    z_default_value ();
+
+    // Constructors.
+    //
+    matrixSize (const x_type&,
+                const y_type&,
+                const z_type&);
+
+    matrixSize (const ::xercesc::DOMElement& e,
+                ::xml_schema::flags f = 0,
+                ::xml_schema::container* c = 0);
+
+    matrixSize (const matrixSize& x,
+                ::xml_schema::flags f = 0,
+                ::xml_schema::container* c = 0);
+
+    virtual matrixSize*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~matrixSize ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    ::xsd::cxx::tree::one< x_type > x_;
+    ::xsd::cxx::tree::one< y_type > y_;
+    ::xsd::cxx::tree::one< z_type > z_;
+  };
+
+  class fieldOfView_m: public ::xml_schema::type
+  {
+    public:
+    // x
+    // 
+    typedef ::xml_schema::float_ x_type;
+    typedef ::xsd::cxx::tree::traits< x_type, char > x_traits;
+
+    const x_type&
+    x () const;
+
+    x_type&
+    x ();
+
+    void
+    x (const x_type& x);
+
+    // y
+    // 
+    typedef ::xml_schema::float_ y_type;
+    typedef ::xsd::cxx::tree::traits< y_type, char > y_traits;
+
+    const y_type&
+    y () const;
+
+    y_type&
+    y ();
+
+    void
+    y (const y_type& x);
+
+    // z
+    // 
+    typedef ::xml_schema::float_ z_type;
+    typedef ::xsd::cxx::tree::traits< z_type, char > z_traits;
+
+    const z_type&
+    z () const;
+
+    z_type&
+    z ();
+
+    void
+    z (const z_type& x);
+
+    // Constructors.
+    //
+    fieldOfView_m (const x_type&,
+                   const y_type&,
+                   const z_type&);
+
+    fieldOfView_m (const ::xercesc::DOMElement& e,
+                   ::xml_schema::flags f = 0,
+                   ::xml_schema::container* c = 0);
+
+    fieldOfView_m (const fieldOfView_m& x,
+                   ::xml_schema::flags f = 0,
+                   ::xml_schema::container* c = 0);
+
+    virtual fieldOfView_m*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~fieldOfView_m ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    ::xsd::cxx::tree::one< x_type > x_;
+    ::xsd::cxx::tree::one< y_type > y_;
+    ::xsd::cxx::tree::one< z_type > z_;
+  };
+
+  class encoding: public ::xml_schema::type
+  {
+    public:
+    // encodedSpace
+    // 
+    typedef ::ISMRMRD::encodingSpaceType encodedSpace_type;
+    typedef ::xsd::cxx::tree::traits< encodedSpace_type, char > encodedSpace_traits;
+
+    const encodedSpace_type&
+    encodedSpace () const;
+
+    encodedSpace_type&
+    encodedSpace ();
+
+    void
+    encodedSpace (const encodedSpace_type& x);
+
+    void
+    encodedSpace (::std::auto_ptr< encodedSpace_type > p);
+
+    // reconSpace
+    // 
+    typedef ::ISMRMRD::encodingSpaceType reconSpace_type;
+    typedef ::xsd::cxx::tree::traits< reconSpace_type, char > reconSpace_traits;
+
+    const reconSpace_type&
+    reconSpace () const;
+
+    reconSpace_type&
+    reconSpace ();
+
+    void
+    reconSpace (const reconSpace_type& x);
+
+    void
+    reconSpace (::std::auto_ptr< reconSpace_type > p);
+
+    // encodingLimits
+    // 
+    typedef ::ISMRMRD::encodingLimitsType encodingLimits_type;
+    typedef ::xsd::cxx::tree::traits< encodingLimits_type, char > encodingLimits_traits;
+
+    const encodingLimits_type&
+    encodingLimits () const;
+
+    encodingLimits_type&
+    encodingLimits ();
+
+    void
+    encodingLimits (const encodingLimits_type& x);
+
+    void
+    encodingLimits (::std::auto_ptr< encodingLimits_type > p);
+
+    // trajectory
+    // 
+    typedef ::ISMRMRD::trajectoryType trajectory_type;
+    typedef ::xsd::cxx::tree::traits< trajectory_type, char > trajectory_traits;
+
+    const trajectory_type&
+    trajectory () const;
+
+    trajectory_type&
+    trajectory ();
+
+    void
+    trajectory (const trajectory_type& x);
+
+    void
+    trajectory (::std::auto_ptr< trajectory_type > p);
+
+    // Constructors.
+    //
+    encoding (const encodedSpace_type&,
+              const reconSpace_type&,
+              const encodingLimits_type&,
+              const trajectory_type&);
+
+    encoding (::std::auto_ptr< encodedSpace_type >&,
+              ::std::auto_ptr< reconSpace_type >&,
+              ::std::auto_ptr< encodingLimits_type >&,
+              const trajectory_type&);
+
+    encoding (const ::xercesc::DOMElement& e,
+              ::xml_schema::flags f = 0,
+              ::xml_schema::container* c = 0);
+
+    encoding (const encoding& x,
+              ::xml_schema::flags f = 0,
+              ::xml_schema::container* c = 0);
+
+    virtual encoding*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~encoding ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    ::xsd::cxx::tree::one< encodedSpace_type > encodedSpace_;
+    ::xsd::cxx::tree::one< reconSpace_type > reconSpace_;
+    ::xsd::cxx::tree::one< encodingLimits_type > encodingLimits_;
+    ::xsd::cxx::tree::one< trajectory_type > trajectory_;
+  };
+
+  class userParameters: public ::xml_schema::type
+  {
+    public:
+    // userParameterLong
+    // 
+    typedef ::ISMRMRD::userParameterLongType userParameterLong_type;
+    typedef ::xsd::cxx::tree::sequence< userParameterLong_type > userParameterLong_sequence;
+    typedef userParameterLong_sequence::iterator userParameterLong_iterator;
+    typedef userParameterLong_sequence::const_iterator userParameterLong_const_iterator;
+    typedef ::xsd::cxx::tree::traits< userParameterLong_type, char > userParameterLong_traits;
+
+    const userParameterLong_sequence&
+    userParameterLong () const;
+
+    userParameterLong_sequence&
+    userParameterLong ();
+
+    void
+    userParameterLong (const userParameterLong_sequence& s);
+
+    // userParameterDouble
+    // 
+    typedef ::ISMRMRD::userParameterDoubleType userParameterDouble_type;
+    typedef ::xsd::cxx::tree::sequence< userParameterDouble_type > userParameterDouble_sequence;
+    typedef userParameterDouble_sequence::iterator userParameterDouble_iterator;
+    typedef userParameterDouble_sequence::const_iterator userParameterDouble_const_iterator;
+    typedef ::xsd::cxx::tree::traits< userParameterDouble_type, char > userParameterDouble_traits;
+
+    const userParameterDouble_sequence&
+    userParameterDouble () const;
+
+    userParameterDouble_sequence&
+    userParameterDouble ();
+
+    void
+    userParameterDouble (const userParameterDouble_sequence& s);
+
+    // Constructors.
+    //
+    userParameters ();
+
+    userParameters (const ::xercesc::DOMElement& e,
+                    ::xml_schema::flags f = 0,
+                    ::xml_schema::container* c = 0);
+
+    userParameters (const userParameters& x,
+                    ::xml_schema::flags f = 0,
+                    ::xml_schema::container* c = 0);
+
+    virtual userParameters*
+    _clone (::xml_schema::flags f = 0,
+            ::xml_schema::container* c = 0) const;
+
+    virtual 
+    ~userParameters ();
+
+    // Implementation.
+    //
+    protected:
+    void
+    parse (::xsd::cxx::xml::dom::parser< char >&,
+           ::xml_schema::flags);
+
+    protected:
+    userParameterLong_sequence userParameterLong_;
+    userParameterDouble_sequence userParameterDouble_;
+  };
+}
+
+#include <iosfwd>
+
+#include <xercesc/sax/InputSource.hpp>
+#include <xercesc/dom/DOMDocument.hpp>
+#include <xercesc/dom/DOMErrorHandler.hpp>
+
+namespace ISMRMRD
+{
+  // Parse a URI or a local file.
+  //
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (const ::std::string& uri,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (const ::std::string& uri,
+                  ::xml_schema::error_handler& eh,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (const ::std::string& uri,
+                  ::xercesc::DOMErrorHandler& eh,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  // Parse std::istream.
+  //
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  ::xml_schema::error_handler& eh,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  ::xercesc::DOMErrorHandler& eh,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  const ::std::string& id,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  const ::std::string& id,
+                  ::xml_schema::error_handler& eh,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::std::istream& is,
+                  const ::std::string& id,
+                  ::xercesc::DOMErrorHandler& eh,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  // Parse xercesc::InputSource.
+  //
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::xercesc::InputSource& is,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::xercesc::InputSource& is,
+                  ::xml_schema::error_handler& eh,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::xercesc::InputSource& is,
+                  ::xercesc::DOMErrorHandler& eh,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  // Parse xercesc::DOMDocument.
+  //
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (const ::xercesc::DOMDocument& d,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+
+  ::std::auto_ptr< ::ISMRMRD::ismrmrdHeader >
+  ismrmrdHeader_ (::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument >& d,
+                  ::xml_schema::flags f = 0,
+                  const ::xml_schema::properties& p = ::xml_schema::properties ());
+}
+
+#include <iosfwd>
+
+#include <xercesc/dom/DOMDocument.hpp>
+#include <xercesc/dom/DOMErrorHandler.hpp>
+#include <xercesc/framework/XMLFormatter.hpp>
+
+#include <xsd/cxx/xml/dom/auto-ptr.hxx>
+
+namespace ISMRMRD
+{
+  // Serialize to std::ostream.
+  //
+
+  void
+  ismrmrdHeader_ (::std::ostream& os,
+                  const ::ISMRMRD::ismrmrdHeader& x, 
+                  const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
+                  const ::std::string& e = "UTF-8",
+                  ::xml_schema::flags f = 0);
+
+  void
+  ismrmrdHeader_ (::std::ostream& os,
+                  const ::ISMRMRD::ismrmrdHeader& x, 
+                  ::xml_schema::error_handler& eh,
+                  const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
+                  const ::std::string& e = "UTF-8",
+                  ::xml_schema::flags f = 0);
+
+  void
+  ismrmrdHeader_ (::std::ostream& os,
+                  const ::ISMRMRD::ismrmrdHeader& x, 
+                  ::xercesc::DOMErrorHandler& eh,
+                  const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
+                  const ::std::string& e = "UTF-8",
+                  ::xml_schema::flags f = 0);
+
+  // Serialize to xercesc::XMLFormatTarget.
+  //
+
+  void
+  ismrmrdHeader_ (::xercesc::XMLFormatTarget& ft,
+                  const ::ISMRMRD::ismrmrdHeader& x, 
+                  const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
+                  const ::std::string& e = "UTF-8",
+                  ::xml_schema::flags f = 0);
+
+  void
+  ismrmrdHeader_ (::xercesc::XMLFormatTarget& ft,
+                  const ::ISMRMRD::ismrmrdHeader& x, 
+                  ::xml_schema::error_handler& eh,
+                  const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
+                  const ::std::string& e = "UTF-8",
+                  ::xml_schema::flags f = 0);
+
+  void
+  ismrmrdHeader_ (::xercesc::XMLFormatTarget& ft,
+                  const ::ISMRMRD::ismrmrdHeader& x, 
+                  ::xercesc::DOMErrorHandler& eh,
+                  const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
+                  const ::std::string& e = "UTF-8",
+                  ::xml_schema::flags f = 0);
+
+  // Serialize to an existing xercesc::DOMDocument.
+  //
+
+  void
+  ismrmrdHeader_ (::xercesc::DOMDocument& d,
+                  const ::ISMRMRD::ismrmrdHeader& x,
+                  ::xml_schema::flags f = 0);
+
+  // Serialize to a new xercesc::DOMDocument.
+  //
+
+  ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument >
+  ismrmrdHeader_ (const ::ISMRMRD::ismrmrdHeader& x, 
+                  const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
+                  ::xml_schema::flags f = 0);
+
+  void
+  operator<< (::xercesc::DOMElement&, const subjectInformationType&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const experimentalConditionsType&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const acquisitionSystemInformationType&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const encodingSpaceType&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const limitType&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const encodingLimitsType&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const trajectoryType&);
+
+  void
+  operator<< (::xercesc::DOMAttr&, const trajectoryType&);
+
+  void
+  operator<< (::xml_schema::list_stream&,
+              const trajectoryType&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const userParameterLongType&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const userParameterDoubleType&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const ismrmrdHeader&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const matrixSize&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const fieldOfView_m&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const encoding&);
+
+  void
+  operator<< (::xercesc::DOMElement&, const userParameters&);
+}
+
+#include <xsd/cxx/post.hxx>
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
+#endif // CXX_HOME_HANSENMS_MRPROGS_ISMRMRD_BUILD_SCHEMA_ISMRMRD_HXX
diff --git a/cmake/FindXSD.cmake b/cmake/FindXSD.cmake
new file mode 100644
index 0000000..1b1bf0c
--- /dev/null
+++ b/cmake/FindXSD.cmake
@@ -0,0 +1,87 @@
+# - Find CodeSource Xsd
+# This module can be used to find Xsd and it's include path
+# Variables:
+#	XSD_EXECUTABLE
+#	XSD_INCLUDE_DIR
+#	XSD_FOUND
+
+SET(XSD_FOUND FALSE)
+
+if(WIN32)
+	SET(__XSD_NAME xsd.exe)
+else(WIN32)
+	SET(__XSD_NAME xsdcxx xsd)
+endif(WIN32)
+
+if(XSD_INCLUDE_DIR)
+	#in cache already
+	SET(XSD_FOUND TRUE)
+else(XSD_INCLUDE_DIR)
+	find_file(XSD_EXECUTABLE NAMES ${__XSD_NAME}
+	     PATHS
+		 ${XSD_DIR}/bin
+		/usr/bin
+		/usr/local/bin
+	)
+
+	if(XSD_EXECUTABLE)
+		SET(XSD_FOUND TRUE)
+	else(XSD_EXECUTABLE)
+		SET(XSD_EXECUTABLE "xsd-NOTFOUND" CACHE FILE "xsd executable path")
+	endif(XSD_EXECUTABLE)
+
+	find_path(XSD_INCLUDE_DIR NAMES xsd 
+	    PATHS
+		${XSD_DIR}/include
+		/usr/include
+		/usr/local/include
+	)
+
+	if(XSD_INCLUDE_DIR)
+		SET(XSD_FOUND TRUE)
+	else(XSD_INCLUDE_DIR)
+		SET(XSD_INCLUDE_DIR "xsd-include-NOTFOUND" CACHE PATH "xsd include path")
+	endif(XSD_INCLUDE_DIR)
+endif(XSD_INCLUDE_DIR)
+
+FUNCTION(XSD_EXTRACT_OPTIONS _xsd_files _xsd_options)
+	foreach(current_arg ${ARGN})
+		IF(${current_arg} STREQUAL "OPTIONS")
+			SET(_XSD_DOING_OPTIONS TRUE)
+		else(${current_arg} STREQUAL "OPTIONS")
+			if(_XSD_DOING_OPTIONS)
+				SET(_xsd_options_p ${_xsd_options_p} ${current_arg})
+			else(_XSD_DOING_OPTIONS)
+				SET(_xsd_files_p ${_xsd_files_p} ${current_arg})
+			endif(_XSD_DOING_OPTIONS)
+		endif(${current_arg} STREQUAL "OPTIONS")
+	endforeach(current_arg)
+	SET(${_xsd_files} ${_xsd_files_p} PARENT_SCOPE)
+	SET(${_xsd_options} ${_xsd_options_p} PARENT_SCOPE)
+ENDFUNCTION(XSD_EXTRACT_OPTIONS)
+
+
+FUNCTION(WRAP_XSD XSD_SRCS XSD_INCLUDES OUT_PATH)
+	SET(OUTPUT_DIR  ${CMAKE_CURRENT_BINARY_DIR}/src/xsd)
+	FILE(MAKE_DIRECTORY ${OUTPUT_DIR})
+	SET(${XSD_INCLUDES} ${OUTPUT_DIR} PARENT_SCOPE)
+	XSD_EXTRACT_OPTIONS(xsd_files xsd_options ${ARGN})
+	FOREACH(it ${xsd_files})
+		STRING(REGEX REPLACE ".*/" "" BARE_XSD "${it}" )
+		STRING(REGEX REPLACE ".xsd" ".cxx" SOURCE "${BARE_XSD}" )
+		STRING(REGEX REPLACE ".xsd" ".hxx" HEADER "${BARE_XSD}" )
+		CONFIGURE_FILE(${it} ${OUT_PATH}/${BARE_XSD} COPY_ONLY)
+		SET(SOURCE ${OUTPUT_DIR}/${SOURCE})
+		SET(HEADER ${OUTPUT_DIR}/${HEADER})
+		ADD_CUSTOM_COMMAND(OUTPUT ${SOURCE} ${HEADER}
+				COMMAND ${XSD_EXECUTABLE} ${xsd_options} "--output-dir" ${OUTPUT_DIR} ${OUT_PATH}/${BARE_XSD}
+				DEPENDS ${it}
+				VERBATIM
+		)
+		set_source_files_properties(${HEADER} PROPERTIES GENERATED TRUE)
+		set_source_files_properties(${SOURCE} PROPERTIES GENERATED TRUE)
+		SET(_XSD_SRCS ${_XSD_SRCS} ${SOURCE} ${HEADER})
+	ENDFOREACH(it)
+	SET(${XSD_SRCS} ${_XSD_SRCS} PARENT_SCOPE)
+ENDFUNCTION(WRAP_XSD)
+
diff --git a/cmake/FindXercesC.cmake b/cmake/FindXercesC.cmake
new file mode 100644
index 0000000..3bb9b81
--- /dev/null
+++ b/cmake/FindXercesC.cmake
@@ -0,0 +1,37 @@
+# This module defines
+# XERCESC_INCLUDE_DIR, where to find ptlib.h, etc.
+# XERCESC_LIBRARIES, the libraries to link against to use pwlib.
+# XERCESC_FOUND, If false, don't try to use pwlib.
+
+FIND_PATH(XERCESC_INCLUDE_DIR xercesc/dom/DOM.hpp
+  "[HKEY_CURRENT_USER\\software\\xerces-c\\src]"
+  "[HKEY_CURRENT_USER\\xerces-c\\src]"
+  $ENV{XERCESCROOT}/src/
+  /usr/local/include
+  /usr/include
+)
+
+FIND_LIBRARY(XERCESC_LIBRARIES
+  NAMES 
+    xerces-c
+  PATHS
+    "[HKEY_CURRENT_USER\\software\\xerces-c\\lib]"
+    "[HKEY_CURRENT_USER\\xerces-c\\lib]"
+    $ENV{XERCESCROOT}/lib
+    /usr/local/lib
+    /usr/lib
+)
+
+# if the include a the library are found then we have it
+IF(XERCESC_INCLUDE_DIR)
+  IF(XERCESC_LIBRARIES)
+    SET( XERCESC_FOUND "YES" )
+  ENDIF(XERCESC_LIBRARIES)
+ENDIF(XERCESC_INCLUDE_DIR)
+
+
+
+MARK_AS_ADVANCED(
+  XERCESC_INCLUDE_DIR
+  XERCESC_LIBRARIES
+) 
\ No newline at end of file
diff --git a/ismrmrd.h b/ismrmrd.h
new file mode 100644
index 0000000..0e5b03a
--- /dev/null
+++ b/ismrmrd.h
@@ -0,0 +1,76 @@
+/* ISMRMRD MR Raw Data Strutures                           */
+/* DRAFT - July 2012                                       */
+
+/* Authors:                                                */
+/*    Michael S. Hansen (michael.hansen at nih.gov)           */
+/*    Brian Hargreaves  (bah at stanford.edu)                 */
+/*    Sebastian Kozerke (kozerke at biomed.ee.ethz.ch)        */
+
+#prama once
+#ifndef ISMRMRD_H
+#define ISMRMRD_H
+
+/* Cross platform section for defining integer types */
+#ifdef _MSC_VER
+typedef __int16 int16_t;
+typedef unsigned __int16 uint16_t;
+typedef __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+#include <stdint.h>
+#endif
+
+#pragma pack(4) //Use 4 byte alignment
+
+namespace ISMRMRD
+{
+
+/**
+   Struct used for keeping track of typical loop counters in MR experiment.
+
+ */
+struct EncodingCounters {
+  uint16_t kspace_encode_step_1; //e.g. phase encoding line number
+  uint16_t kspace_encode_step_2; //e.g. partition encodning number
+  uint16_t average;              //e.g. signal average number
+  uint16_t slice;                //e.g. imaging slice number
+  uint16_t contrast;             //e.g. echo number in multi-echo
+  uint16_t phase;                //e.g. cardiac phase number
+  uint16_t repetition;           //e.g. dynamic number for dynamic scanning
+  uint16_t set;                  //e.g. flow encodning set
+  uint16_t segment;              //e.g. segment number for segmented acquisition
+  uint16_t user[8];              //Free user parameters
+};
+
+/**
+   Header for each MR acquisition. 
+ */
+struct Acquisition
+{
+  uint64_t           flags;                          //bit field with flags
+  uint32_t           measurement_uid;                //Unique ID for the measurement
+  uint32_t           scan_counter;                   //Current acquisition number in the measurement
+  uint32_t           acquisition_time_stamp;         //Acquisition clock
+  uint32_t           physiology_time_stamp[3];       //Physiology time stamps, e.g. ecg, breating, etc. 
+  uint16_t           number_of_samples;              //Number of samples acquired
+  uint16_t           available_channels;             //Available coils
+  uint16_t           active_channels;                //Active coils on current acquisiton
+  uint64_t           channel_mask[4];                //Mask to indicate which channels are active. Support for 256 channels
+  uint16_t           discard_pre;                    //Samples to be discarded at the beginning of acquisition
+  uint16_t           discard_post;                   //Samples to be discarded at the end of acquisition
+  uint16_t           center_sample;                  //Sample at the center of k-space
+  uint16_t           encoding_space_ref;             //Reference to an encoding space, typically only one per acquisition
+  float              sample_time_us;                 //Time between samples in micro seconds, sampling BW
+  float              position[3];                    //Three-dimensional spatial offsets from isocenter
+  float              quarternion[4];                 //Angulation of acquisition
+  float	             patient_table_position[3];      //Patient table off-center
+  EncodingCounters   idx;                            //Encoding loop counters, see above
+  uint32_t           user_int[8];                    //Free user parameters
+  float              user_float[8];                  //Free user parameters
+}; 
+
+} //End of ISMRMRD namespace
+
+#endif //ISMRMRD_H
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..a7577dc
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+
+#include "ismrmrd.hxx"
+
+using namespace ISMRMRD;
+
+int main (int argc, char* argv[])
+{
+  try
+  {
+    std::cout << "Trying to parse...\"" << argv[1] << "\"" << std::endl;
+    std::auto_ptr<ismrmrdHeader> s (ismrmrdHeader_ (argv[1]));
+    std::cout << "Done with the parsing." << std::endl;
+
+    std::cout << "Number of encoding spaces: " << s->encoding().size() << std::endl;
+    for (ismrmrdHeader::encoding_sequence::iterator i (s->encoding().begin ()); i != s->encoding().end(); ++i) {
+      std::cout << "FOV: " << i->encodedSpace().fieldOfView_m().x() 
+		<< ", " << i->encodedSpace().fieldOfView_m().y() 
+		<< ", " << i->encodedSpace().fieldOfView_m().z() << std::endl;
+    }
+  }
+  catch (const xml_schema::exception& e) {
+    std::cerr << e << std::endl;
+    return 1;
+  }
+}
diff --git a/schema/ismrmrd.xsd b/schema/ismrmrd.xsd
new file mode 100644
index 0000000..f7bf784
--- /dev/null
+++ b/schema/ismrmrd.xsd
@@ -0,0 +1,128 @@
+<?xml version="1.0"?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+targetNamespace="http://www.ismrm.org/ISMRMRD"
+xmlns="http://www.ismrm.org/ISMRMRD"
+elementFormDefault="qualified">
+
+  <xs:element name="ismrmrdHeader">
+    <xs:complexType>
+      <xs:sequence>
+	<xs:element name="subjectInformation" type="subjectInformationType" minOccurs="0" maxOccurs="1" />
+	<xs:element name="acquisitionSystemInformation" type="acquisitionSystemInformationType" minOccurs="0" maxOccurs="1" /> 
+	<xs:element name="experimentalConditions" type="experimentalConditionsType" minOccurs="1" maxOccurs="1"/>
+	<xs:element name="encoding" maxOccurs="65535" minOccurs="1">
+	  <xs:complexType>
+	    <xs:all>
+	      <xs:element name="encodedSpace"   type="encodingSpaceType"  minOccurs="1" maxOccurs="1"/>
+	      <xs:element name="reconSpace"     type="encodingSpaceType"  minOccurs="1" maxOccurs="1"/>
+	      <xs:element name="encodingLimits" type="encodingLimitsType" minOccurs="1" maxOccurs="1"/>
+	      <xs:element name="trajectory"     type="trajectoryType"     minOccurs="1" maxOccurs="1"/>
+	    </xs:all>
+	  </xs:complexType>
+	</xs:element>
+	<xs:element name="userParameters" minOccurs="0" maxOccurs="1">
+	  <xs:complexType>
+	    <xs:sequence>
+	      <xs:element name="userParameterLong"   type="userParameterLongType"   minOccurs="0" maxOccurs="unbounded"/>
+	      <xs:element name="userParameterDouble" type="userParameterDoubleType" minOccurs="0" maxOccurs="unbounded"/>
+	    </xs:sequence>
+	  </xs:complexType>
+	</xs:element>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:complexType name="subjectInformationType">
+    <xs:all>
+      <xs:element name="patientName" type="xs:string" minOccurs="0"/>
+      <xs:element name="patientWeight_kg" type="xs:float" minOccurs="0"/>
+    </xs:all>
+  </xs:complexType>
+  
+  <xs:complexType name="experimentalConditionsType">
+    <xs:all>
+      <xs:element name="H1resonanceFrequencyHz" type="xs:long"/>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="acquisitionSystemInformationType">
+    <xs:all>
+      <xs:element name="systemVendor" type="xs:string"  minOccurs="0"/>
+      <xs:element name="systemModel"  type="xs:string"  minOccurs="0"/>
+      <xs:element name="systemFieldStrength_T" type="xs:float" minOccurs="0"/>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="encodingSpaceType">
+    <xs:all>
+      <xs:element name="matrixSize">
+	<xs:complexType>
+	  <xs:sequence>
+	    <xs:element type="xs:unsignedShort" name="x" default="1" minOccurs="1" maxOccurs="1"/>
+	    <xs:element type="xs:unsignedShort" name="y" default="1" minOccurs="1" maxOccurs="1"/>
+	    <xs:element type="xs:unsignedShort" name="z" default="1" minOccurs="1" maxOccurs="1"/>
+	  </xs:sequence>
+	</xs:complexType>
+      </xs:element>
+      <xs:element name="fieldOfView_m">
+	<xs:complexType>
+	  <xs:sequence>
+	    <xs:element type="xs:float" name="x" minOccurs="1" maxOccurs="1"/>
+	    <xs:element type="xs:float" name="y" minOccurs="1" maxOccurs="1"/>
+	    <xs:element type="xs:float" name="z" minOccurs="1" maxOccurs="1"/>
+	  </xs:sequence>
+	</xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="limitType">
+    <xs:all> 
+      <xs:element name="minimum" type="xs:unsignedShort" default="0"/>
+      <xs:element name="maximum" type="xs:unsignedShort" default="0"/>
+      <xs:element name="center" type="xs:unsignedShort" default="0"/>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="encodingLimitsType">
+    <xs:all>
+      <xs:element name="kspace_encoding_step_0" type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="kspace_encoding_step_1" type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="kspace_encoding_step_2" type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="average"                type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="slice"                  type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="contrast"               type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="phase"                  type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="repetition"             type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="set"                    type="limitType" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="segment"                type="limitType" minOccurs="0" maxOccurs="1"/>
+    </xs:all>
+  </xs:complexType>
+
+  <xs:simpleType name="trajectoryType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="cartesian"/>
+      <xs:enumeration value="epi"/>
+      <xs:enumeration value="radial"/>
+      <xs:enumeration value="goldenangle"/>
+      <xs:enumeration value="spiral"/>
+      <xs:enumeration value="other"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:complexType name="userParameterLongType">
+    <xs:all>
+      <xs:element name="name"  type="xs:string"/>
+      <xs:element name="value" type="xs:long"/> 
+    </xs:all>
+  </xs:complexType>
+
+  <xs:complexType name="userParameterDoubleType">
+    <xs:all>
+      <xs:element name="name"  type="xs:string"/>
+      <xs:element name="value" type="xs:double"/> 
+    </xs:all>
+  </xs:complexType>
+
+</xs:schema>
diff --git a/schema/ismrmrd_example.xml b/schema/ismrmrd_example.xml
new file mode 100644
index 0000000..6886ad6
--- /dev/null
+++ b/schema/ismrmrd_example.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ismrmrdHeader xsi:schemaLocation="http://www.ismrm.org/ISMRMRD ismrmrd.xsd"
+        xmlns="http://www.ismrm.org/ISMRMRD"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  
+  <subjectInformation>
+    <patientName>Anonymous</patientName>
+    <patientWeight_kg>74.7</patientWeight_kg>
+  </subjectInformation>
+
+  <acquisitionSystemInformation>
+    <systemVendor>Siemens</systemVendor>
+    <systemModel>Avanto</systemModel>
+    <systemFieldStrength_T>1.5</systemFieldStrength_T>
+  </acquisitionSystemInformation>
+
+  <experimentalConditions>
+    <H1resonanceFrequencyHz>63500000</H1resonanceFrequencyHz>
+  </experimentalConditions>
+
+  <encoding>
+    <trajectory>cartesian</trajectory>
+    <encodingLimits>
+      <kspace_encoding_step_1>
+        <minimum>0</minimum>
+        <maximum>96</maximum>
+        <center>48</center>
+      </kspace_encoding_step_1>
+    </encodingLimits>
+
+    <encodedSpace>
+      <matrixSize>
+        <x>256</x>
+        <y>96</y>
+        <z>1</z>
+      </matrixSize>
+      <fieldOfView_m>
+        <x>0.600</x>
+        <y>0.230</y>
+        <z>0.006</z>
+      </fieldOfView_m>
+    </encodedSpace>
+
+    <reconSpace>
+      <matrixSize>
+        <x>128</x>
+        <y>96</y>
+        <z>1</z>
+      </matrixSize>
+
+      <fieldOfView_m>
+        <x>0.300</x>
+        <y>0.230</y>
+        <z>0.006</z>
+      </fieldOfView_m>
+    </reconSpace>
+  </encoding>
+
+  <userParameters>
+    <userParameterLong>
+      <name>MySpecialParameter1</name>
+      <value>724873268</value>
+    </userParameterLong>
+
+    <userParameterLong>
+      <name>AnotherSpecialParameter</name>
+      <value>19238719</value>
+    </userParameterLong>
+
+    <userParameterDouble>
+      <name>ADoubleParameter</name>
+      <value>76238.878437</value>
+    </userParameterDouble>
+  </userParameters>
+</ismrmrdHeader>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/ismrmrd.git



More information about the debian-science-commits mailing list