OXIESEC PANEL
- Current Dir:
/
/
usr
/
include
/
gdcm-2.8
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
10/28/2024 06:50:42 AM
rwxr-xr-x
📄
gdcmAAbortPDU.h
1.43 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAAssociateACPDU.h
3.22 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAAssociateRJPDU.h
1.35 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAAssociateRQPDU.h
5.41 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmARTIMTimer.h
2.48 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAReleaseRPPDU.h
1.28 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAReleaseRQPDU.h
1.28 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmASN1.h
1.22 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAbstractSyntax.h
1.78 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAnonymizeEvent.h
1.5 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAnonymizer.h
6.67 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmApplicationContext.h
1.56 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmApplicationEntity.h
1.81 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAsynchronousOperationsWindowSub.h
1.37 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAttribute.h
32.28 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmAudioCodec.h
1011 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmBase64.h
1.9 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmBaseCompositeMessage.h
2.39 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmBaseNormalizedMessage.h
2.22 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmBasePDU.h
1.96 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmBaseQuery.h
2.74 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmBaseRootQuery.h
4.33 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmBasicOffsetTable.h
3.17 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmBitmap.h
5.7 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmBitmapToBitmapFilter.h
1.22 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmBoxRegion.h
2.02 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmByteBuffer.h
2.45 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmByteSwap.h
1.46 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmByteSwap.txx
4.55 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmByteSwapFilter.h
1.1 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmByteValue.h
6.53 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCAPICryptoFactory.h
931 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCAPICryptographicMessageSyntax.h
1.96 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCEchoMessages.h
1.46 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCFindMessages.h
1.65 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCMoveMessages.h
1.88 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCP246ExplicitDataElement.h
1.59 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCP246ExplicitDataElement.txx
6.51 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCSAElement.h
4.76 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCSAHeader.h
4.89 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCSAHeader.txx
957 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCSAHeaderDict.h
2.84 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCSAHeaderDictEntry.h
2.74 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCStoreMessages.h
1.8 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCodeString.h
3.67 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCodec.h
809 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCoder.h
1.28 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCommand.h
5.09 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCommandDataSet.h
1.7 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCompositeMessageFactory.h
2.44 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCompositeNetworkFunctions.h
5.84 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmConfigure.h
5.53 KB
02/05/2018 04:49:23 PM
rw-r--r--
📄
gdcmConstCharWrapper.h
1.6 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCryptoFactory.h
1.85 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCryptographicMessageSyntax.h
1.78 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmCurve.h
2.54 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDICOMDIR.h
984 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDICOMDIRGenerator.h
3.85 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDIMSE.h
2.61 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDataElement.h
9 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDataEvent.h
1.53 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDataSet.h
10.79 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDataSet.txx
16.02 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDataSetEvent.h
1.47 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDataSetHelper.h
1.22 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDecoder.h
1.16 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDefinedTerms.h
1.56 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDeflateStream.h
678 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDefs.h
2.04 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDeltaEncodingCodec.h
1.08 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDict.h
9.53 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDictConverter.h
2.05 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDictEntry.h
4.29 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDictPrinter.h
1.04 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDicts.h
2.22 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDirectionCosines.h
1.94 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDirectory.h
3.08 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDirectoryHelper.h
3.51 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDummyValueGenerator.h
1.15 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmDumper.h
1023 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmElement.h
23.5 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmEmptyMaskGenerator.h
2.64 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmEncapsulatedDocument.h
866 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmEnumeratedValues.h
1.53 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmEvent.h
3.07 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmException.h
3.24 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmExplicitDataElement.h
1.36 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmExplicitDataElement.txx
16.27 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmExplicitImplicitDataElement.h
1.81 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmExplicitImplicitDataElement.txx
14.69 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFiducials.h
800 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFile.h
2.1 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFileAnonymizer.h
2.84 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFileChangeTransferSyntax.h
2.2 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFileDecompressLookupTable.h
1.49 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFileDerivation.h
3.19 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFileExplicitFilter.h
2.43 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFileMetaInformation.h
4.78 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFileNameEvent.h
1.51 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFileSet.h
1.62 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFileStreamer.h
4.04 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFilename.h
2.26 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFilenameGenerator.h
2.09 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFindPatientRootQuery.h
1.2 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFindStudyRootQuery.h
1.41 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFragment.h
6.13 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmFragment.txx
711 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmGlobal.h
3.41 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmGroupDict.h
2.29 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmIOD.h
1.85 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmIODEntry.h
2.97 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmIODs.h
2.02 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmIPPSorter.h
4.62 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmIconImage.h
2.47 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmIconImageFilter.h
2.37 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmIconImageGenerator.h
3.09 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImage.h
3.63 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageApplyLookupTable.h
1.11 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageChangePhotometricInterpretation.h
3.77 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageChangePlanarConfiguration.h
2.72 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageChangeTransferSyntax.h
3.29 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageCodec.h
4.51 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageConverter.h
1.27 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageFragmentSplitter.h
1.53 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageHelper.h
6.92 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageReader.h
1.55 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageRegionReader.h
2.44 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageToImageFilter.h
1.15 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImageWriter.h
1.46 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImplementationClassUIDSub.h
1.27 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImplementationUIDSub.h
1.14 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImplementationVersionNameSub.h
1.28 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImplicitDataElement.h
1.49 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmImplicitDataElement.txx
18.5 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmItem.h
9.65 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmItem.txx
1.82 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmJPEG12Codec.h
1.26 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmJPEG16Codec.h
1.25 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmJPEG2000Codec.h
2.73 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmJPEG8Codec.h
1.25 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmJPEGCodec.h
3.23 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmJPEGLSCodec.h
2.99 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmJSON.h
1.12 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmKAKADUCodec.h
1.06 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmLO.h
1.81 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmLegacyMacro.h
2.72 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmLookupTable.h
3.33 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmMD5.h
1.41 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmMacro.h
2.93 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmMacroEntry.h
2.57 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmMacros.h
2.05 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmMaximumLengthSub.h
1.39 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmMediaStorage.h
7.39 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmMeshPrimitive.h
2.34 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmModalityPerformedProcedureStepCreateQuery.h
1.3 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmModalityPerformedProcedureStepSetQuery.h
1.28 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmModule.h
3.15 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmModuleEntry.h
2.51 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmModules.h
2.06 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmMovePatientRootQuery.h
1.21 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmMoveStudyRootQuery.h
1.19 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmMrProtocol.h
2.17 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNActionMessages.h
1.27 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNCreateMessages.h
1.27 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNDeleteMessages.h
1.27 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNEventReportMessages.h
1.31 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNGetMessages.h
1.24 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNSetMessages.h
1.24 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNestedModuleEntries.h
1.88 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNetworkEvents.h
1.95 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNetworkStateID.h
2.69 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNormalizedMessageFactory.h
1.64 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmNormalizedNetworkFunctions.h
3.03 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmObject.h
2.98 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmOpenSSLCryptoFactory.h
1.18 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmOpenSSLCryptographicMessageSyntax.h
2.09 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmOpenSSLP7CryptoFactory.h
1.12 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmOpenSSLP7CryptographicMessageSyntax.h
2.37 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmOrientation.h
1.77 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmOverlay.h
3.71 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPDBElement.h
1.69 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPDBHeader.h
2.92 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPDFCodec.h
1003 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPDUFactory.h
3.42 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPDataTFPDU.h
1.89 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPGXCodec.h
1.21 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPNMCodec.h
1.52 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPVRGCodec.h
1.42 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmParseException.h
2.2 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmParser.h
3.98 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPatient.h
899 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPersonName.h
2.45 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPhotometricInterpretation.h
2.75 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPixelFormat.h
7.44 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPixmap.h
2.29 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPixmapReader.h
2.05 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPixmapToPixmapFilter.h
1.15 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPixmapWriter.h
1.99 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPreamble.h
1.9 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPresentationContext.h
2.21 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPresentationContextAC.h
1.77 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPresentationContextGenerator.h
3.79 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPresentationContextRQ.h
3.18 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPresentationDataValue.h
2.7 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPrinter.h
2.84 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmPrivateTag.h
2.5 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmProgressEvent.h
1.46 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmQueryBase.h
3.48 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmQueryFactory.h
3.58 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmQueryImage.h
1.45 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmQueryPatient.h
1.44 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmQuerySeries.h
1.43 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmQueryStudy.h
1.42 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmRAWCodec.h
1.45 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmRLECodec.h
2.51 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmReader.h
4.39 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmRegion.h
1.68 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmRescaler.h
4.63 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmRoleSelectionSub.h
1.36 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSHA1.h
1.42 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSOPClassExtendedNegociationSub.h
1.56 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSOPClassUIDToIOD.h
1.47 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmScanner.h
7.32 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSegment.h
4.18 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSegmentHelper.h
2.17 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSegmentReader.h
1.58 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSegmentWriter.h
1.52 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSegmentedPaletteColorLookupTable.h
1.16 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSequenceOfFragments.h
11.04 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSequenceOfFragments.txx
756 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSequenceOfItems.h
8.36 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSequenceOfItems.txx
1.22 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSerieHelper.h
3.03 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSeries.h
809 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmServiceClassApplicationInformation.h
1.28 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmServiceClassUser.h
3.94 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSimpleSubjectWatcher.h
2.91 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSmartPointer.h
2.86 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSorter.h
2.55 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSpacing.h
5.05 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSpectroscopy.h
824 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSplitMosaicFilter.h
2.15 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmStaticAssert.h
1.47 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmStreamImageReader.h
5.41 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmStreamImageWriter.h
6.21 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmStrictScanner.h
6.54 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmString.h
4.4 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmStringFilter.h
2.78 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmStudy.h
856 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSubject.h
2.43 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSurface.h
7.6 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSurfaceHelper.h
6.31 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSurfaceReader.h
1.27 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSurfaceWriter.h
1.62 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSwapCode.h
1.52 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSwapper.h
1.6 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSwapper.txx
6.14 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmSystem.h
5.16 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTable.h
1.61 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTableEntry.h
1.04 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTableReader.h
2.97 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTag.h
9.73 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTagKeywords.h
245.37 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTagPath.h
1.46 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTagToType.h
838.4 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTagToVR.h
734 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTerminal.h
1.56 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTestDriver.h
993 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTesting.h
4.38 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTrace.h
8.46 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTransferSyntax.h
4.34 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTransferSyntaxSub.h
1.65 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmType.h
1.86 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmTypes.h
1.96 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmUIDGenerator.h
3.41 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmUIDs.h
46.02 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULAction.h
3.35 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULActionAA.h
3.67 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULActionAE.h
3.7 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULActionAR.h
4.1 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULActionDT.h
1.73 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULBasicCallback.h
2.04 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULConnection.h
5.33 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULConnectionCallback.h
2.47 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULConnectionInfo.h
2.63 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULConnectionManager.h
6.94 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULEvent.h
2.65 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULTransitionTable.h
3.48 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmULWritingCallback.h
1.81 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmUNExplicitDataElement.h
1.46 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmUNExplicitDataElement.txx
6.18 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmUNExplicitImplicitDataElement.h
1.8 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmUNExplicitImplicitDataElement.txx
2.09 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmUUIDGenerator.h
1.04 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmUnpacker12Bits.h
1.72 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmUsage.h
2.61 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmUserInformation.h
2.15 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmVL.h
3.23 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmVM.h
4.92 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmVR.h
9.97 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmVR16ExplicitDataElement.h
1.57 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmVR16ExplicitDataElement.txx
8.84 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmValidate.h
973 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmValue.h
1.34 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmValue.txx
681 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmValueIO.h
1.01 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmValueIO.txx
2.25 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmVersion.h
1.43 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmWLMFindQuery.h
1.26 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmWaveform.h
800 bytes
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmWin32.h
3.05 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmWriter.h
3.03 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmXMLDictReader.h
1.39 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmXMLPrinter.h
3.54 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcmXMLPrivateDictReader.h
1.46 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcm_j2k.h
15.51 KB
11/09/2017 08:09:58 AM
rw-r--r--
📄
gdcm_jp2.h
5.8 KB
11/09/2017 08:09:58 AM
rw-r--r--
📁
gdcmjpeg
-
10/28/2024 06:50:28 AM
rwxr-xr-x
📄
zipstreamimpl.h
10.7 KB
11/09/2017 08:09:58 AM
rw-r--r--
Editing: gdcmExplicitDataElement.txx
Close
/*========================================================================= Program: GDCM (Grassroots DICOM). A DICOM library Copyright (c) 2006-2011 Mathieu Malaterre All rights reserved. See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #ifndef GDCMEXPLICITDATAELEMENT_TXX #define GDCMEXPLICITDATAELEMENT_TXX #include "gdcmSequenceOfItems.h" #include "gdcmSequenceOfFragments.h" #include "gdcmVL.h" #include "gdcmParseException.h" #include "gdcmImplicitDataElement.h" #include "gdcmValueIO.h" #include "gdcmSwapper.h" namespace gdcm_ns { //----------------------------------------------------------------------------- template <typename TSwap> std::istream &ExplicitDataElement::Read(std::istream &is) { ReadPreValue<TSwap>(is); return ReadValue<TSwap>(is); } template <typename TSwap> std::istream &ExplicitDataElement::ReadPreValue(std::istream &is) { TagField.Read<TSwap>(is); // See PS 3.5, Data Element Structure With Explicit VR // Read Tag if( !is ) { if( !is.eof() ) // FIXME This should not be needed { assert(0 && "Should not happen" ); } return is; } if( TagField == Tag(0xfffe,0xe0dd) ) { ParseException pe; pe.SetLastElement( *this ); throw pe; } //assert( TagField != Tag(0xfeff,0xdde0) ); const Tag itemDelItem(0xfffe,0xe00d); if( TagField == itemDelItem ) { if( !ValueLengthField.Read<TSwap>(is) ) { assert(0 && "Should not happen"); return is; } if( ValueLengthField ) { gdcmDebugMacro( "Item Delimitation Item has a length different from 0 and is: " << ValueLengthField ); } // Reset ValueLengthField to avoid user error ValueLengthField = 0; // Set pointer to NULL to avoid user error ValueField = 0; VRField = VR::INVALID; return is; } #ifdef GDCM_SUPPORT_BROKEN_IMPLEMENTATION if( TagField == Tag(0x00ff, 0x4aa5) ) { //assert(0 && "Should not happen" ); // gdcmDataExtra/gdcmBreakers/DigitexAlpha_no_7FE0.dcm is.seekg( -4, std::ios::cur ); TagField = Tag(0x7fe0,0x0010); VRField = VR::OW; ValueField = new ByteValue; std::streampos s = is.tellg(); is.seekg( 0, std::ios::end); std::streampos e = is.tellg(); is.seekg( s, std::ios::beg ); ValueField->SetLength( (int32_t)(e - s) ); ValueLengthField = ValueField->GetLength(); bool failed = !ValueIO<ExplicitDataElement,TSwap,uint16_t>::Read(is,*ValueField,true); gdcmAssertAlwaysMacro( !failed ); return is; //throw Exception( "Unhandled" ); } #endif // Read VR try { if( !VRField.Read(is) ) { assert(0 && "Should not happen" ); return is; } } catch( Exception &ex ) { #ifdef GDCM_SUPPORT_BROKEN_IMPLEMENTATION // gdcm-MR-PHILIPS-16-Multi-Seq.dcm // assert( TagField == Tag(0xfffe, 0xe000) ); // -> For some reason VR is written as {44,0} well I guess this is a VR... // Technically there is a second bug, dcmtk assume other things when reading this tag, // so I need to change this tag too, if I ever want dcmtk to read this file. oh well // 0019004_Baseline_IMG1.dcm // -> VR is garbage also... // assert( TagField == Tag(8348,0339) || TagField == Tag(b5e8,0338)) //gdcmWarningMacro( "Assuming 16 bits VR for Tag=" << // TagField << " in order to read a buggy DICOM file." ); //VRField = VR::INVALID; (void)ex; //compiler warning ParseException pe; pe.SetLastElement( *this ); throw pe; #else throw ex; #endif /* GDCM_SUPPORT_BROKEN_IMPLEMENTATION */ } // Read Value Length if( VR::GetLength(VRField) == 4 ) { if( !ValueLengthField.Read<TSwap>(is) ) { assert(0 && "Should not happen"); return is; } } else { // 16bits only if( !ValueLengthField.template Read16<TSwap>(is) ) { assert(0 && "Should not happen"); return is; } #ifdef GDCM_SUPPORT_BROKEN_IMPLEMENTATION // HACK for SIEMENS Leonardo if( ValueLengthField == 0x0006 && VRField == VR::UL && TagField.GetGroup() == 0x0009 ) { gdcmWarningMacro( "Replacing VL=0x0006 with VL=0x0004, for Tag=" << TagField << " in order to read a buggy DICOM file." ); ValueLengthField = 0x0004; } #endif } //std::cerr << "exp cur tag=" << TagField << " VR=" << VRField << " VL=" << ValueLengthField << std::endl; // // I don't like the following 3 lines, what if 0000,0000 was indeed -wrongly- sent, we should be able to continue // chances is that 99% of times there is now way we can reach here, so safely throw an exception if( TagField == Tag(0x0000,0x0000) && ValueLengthField == 0 && VRField == VR::INVALID ) { ParseException pe; pe.SetLastElement( *this ); throw pe; } #ifdef ELSCINT1_01F7_1070 if( TagField == Tag(0x01f7,0x1070) ) { ValueLengthField = ValueLengthField - 7; } #endif return is; } template <typename TSwap> std::istream &ExplicitDataElement::ReadValue(std::istream &is, bool readvalues) { if( is.eof() ) return is; if( ValueLengthField == 0 ) { // Simple fast path ValueField = 0; return is; } // Read the Value //assert( ValueField == 0 ); if( VRField == VR::SQ ) { // Check whether or not this is an undefined length sequence assert( TagField != Tag(0x7fe0,0x0010) ); ValueField = new SequenceOfItems; } else if( ValueLengthField.IsUndefined() ) { if( TagField == Tag(0x7fe0,0x0010) ) { // Ok this is Pixel Data fragmented... assert( VRField & VR::OB_OW || VRField == VR::UN ); ValueField = new SequenceOfFragments; } else { // Support cp246 conforming file: // Enhanced_MR_Image_Storage_PixelSpacingNotIn_0028_0030.dcm (illegal) // vs // undefined_length_un_vr.dcm assert( TagField != Tag(0x7fe0,0x0010) ); assert( VRField == VR::UN ); ValueField = new SequenceOfItems; ValueField->SetLength(ValueLengthField); // perform realloc try { //if( !ValueIO<ExplicitDataElement,TSwap>::Read(is,*ValueField) ) // non cp246 if( !ValueIO<ImplicitDataElement,TSwap>::Read(is,*ValueField,readvalues) ) // cp246 compliant { assert(0); } } catch( std::exception &) { // Must be one of those non-cp246 file... // but for some reason seekg back to previous offset + Read // as Explicit does not work... ParseException pe; pe.SetLastElement(*this); throw pe; } return is; } } else { //assert( TagField != Tag(0x7fe0,0x0010) ); ValueField = new ByteValue; } // We have the length we should be able to read the value this->SetValueFieldLength( ValueLengthField, readvalues ); #if defined(GDCM_SUPPORT_BROKEN_IMPLEMENTATION) && 0 // PHILIPS_Intera-16-MONO2-Uncompress.dcm if( TagField == Tag(0x2001,0xe05f) || TagField == Tag(0x2001,0xe100) || TagField == Tag(0x2005,0xe080) || TagField == Tag(0x2005,0xe083) || TagField == Tag(0x2005,0xe084) || TagField == Tag(0x2005,0xe402) //TagField.IsPrivate() && VRField == VR::SQ //-> Does not work for 0029 //we really need to read item marker ) { gdcmWarningMacro( "ByteSwaping Private SQ: " << TagField ); assert( VRField == VR::SQ ); assert( TagField.IsPrivate() ); try { if( !ValueIO<ExplicitDataElement,SwapperDoOp>::Read(is,*ValueField,readvalues) ) { assert(0 && "Should not happen"); } Value* v = &*ValueField; SequenceOfItems *sq = dynamic_cast<SequenceOfItems*>(v); assert( sq ); SequenceOfItems::Iterator it = sq->Begin(); for( ; it != sq->End(); ++it) { Item &item = *it; DataSet &ds = item.GetNestedDataSet(); ByteSwapFilter bsf(ds); bsf.ByteSwap(); } } catch( std::exception &ex ) { ValueLengthField = ValueField->GetLength(); } return is; } #endif bool failed; //assert( VRField != VR::UN ); if( VRField & VR::VRASCII ) { //assert( VRField.GetSize() == 1 ); failed = !ValueIO<ExplicitDataElement,TSwap>::Read(is,*ValueField,readvalues); } else { assert( VRField & VR::VRBINARY ); unsigned int vrsize = VRField.GetSize(); assert( vrsize == 1 || vrsize == 2 || vrsize == 4 || vrsize == 8 ); if(VRField==VR::AT) vrsize = 2; switch(vrsize) { case 1: failed = !ValueIO<ExplicitDataElement,TSwap,uint8_t>::Read(is,*ValueField,readvalues); break; case 2: failed = !ValueIO<ExplicitDataElement,TSwap,uint16_t>::Read(is,*ValueField,readvalues); break; case 4: failed = !ValueIO<ExplicitDataElement,TSwap,uint32_t>::Read(is,*ValueField,readvalues); break; case 8: failed = !ValueIO<ExplicitDataElement,TSwap,uint64_t>::Read(is,*ValueField,readvalues); break; default: failed = true; assert(0); } } if( failed ) { #ifdef GDCM_SUPPORT_BROKEN_IMPLEMENTATION if( TagField == Tag(0x7fe0,0x0010) ) { // BUG this should be moved to the ImageReader class, only this class // knows what 7fe0 actually is, and should tolerate partial Pixel Data // element... PMS-IncompletePixelData.dcm gdcmWarningMacro( "Incomplete Pixel Data found, use file at own risk" ); is.clear(); } else #endif /* GDCM_SUPPORT_BROKEN_IMPLEMENTATION */ { // Might be the famous UN 16bits ParseException pe; pe.SetLastElement( *this ); throw pe; } return is; } #ifdef GDCM_SUPPORT_BROKEN_IMPLEMENTATION if( SequenceOfItems *sqi = dynamic_cast<SequenceOfItems*>(&GetValue()) ) { assert( ValueField->GetLength() == ValueLengthField ); // Recompute the total length: if( !ValueLengthField.IsUndefined() ) { // PhilipsInteraSeqTermInvLen.dcm // contains an extra seq del item marker, which we are not loading. Therefore the // total length needs to be recomputed when sqi is expressed in defined length VL dummy = sqi->template ComputeLength<ExplicitDataElement>(); ValueLengthField = dummy; sqi->SetLength( dummy ); gdcmAssertAlwaysMacro( dummy == ValueLengthField ); } } else if( SequenceOfFragments *sqf = dynamic_cast<SequenceOfFragments*>(&GetValue()) ) { assert( ValueField->GetLength() == ValueLengthField ); assert( sqf->GetLength() == ValueLengthField ); (void)sqf; assert( ValueLengthField.IsUndefined() ); } #endif return is; } template <typename TSwap> std::istream &ExplicitDataElement::ReadWithLength(std::istream &is, VL & length) { (void)length; return Read<TSwap>(is); } //----------------------------------------------------------------------------- template <typename TSwap> const std::ostream &ExplicitDataElement::Write(std::ostream &os) const { if( TagField == Tag(0xfffe,0xe0dd) ) throw Exception( "Impossible" ); //if( TagField == Tag(0xfffe,0xe0dd) ) return os; if( !TagField.Write<TSwap>(os) ) { assert( 0 && "Should not happen" ); return os; } const Tag itemDelItem(0xfffe,0xe00d); if( TagField == itemDelItem ) { assert(0); assert( ValueField == 0 ); #ifdef GDCM_SUPPORT_BROKEN_IMPLEMENTATION if( ValueLengthField != 0 ) { gdcmWarningMacro( "Item Delimitation Item had a length different from 0." ); VL zero = 0; zero.Write<TSwap>(os); return os; } #endif // else assert( ValueLengthField == 0 ); if( !ValueLengthField.Write<TSwap>(os) ) { assert( 0 && "Should not happen" ); return os; } return os; } bool vr16bitsimpossible = (VRField & VR::VL16) && (ValueLengthField > (uint32_t)VL::GetVL16Max()); if( VRField == VR::INVALID || vr16bitsimpossible ) { if ( TagField.IsPrivateCreator() ) { gdcmAssertAlwaysMacro( !vr16bitsimpossible ); VR lo = VR::LO; if( TagField.IsGroupLength() ) { lo = VR::UL; } lo.Write(os); ValueLengthField.Write16<TSwap>(os); } else { const VR un = VR::UN; un.Write(os); if( ValueField && dynamic_cast<const SequenceOfItems*>(&*ValueField) ) { VL vl = 0xFFFFFFFF; assert( vl.IsUndefined() ); vl.Write<TSwap>(os); } else ValueLengthField.Write<TSwap>(os); } } else { assert( VRField.IsVRFile() && VRField != VR::INVALID ); if( !VRField.Write(os) ) { assert( 0 && "Should not happen" ); return os; } if( VRField & VR::VL32 ) { if( !ValueLengthField.Write<TSwap>(os) ) { assert( 0 && "Should not happen" ); return os; } } else { // 16bits only if( !ValueLengthField.template Write16<TSwap>(os) ) { assert( 0 && "Should not happen" ); return os; } } } if( ValueLengthField ) { // Special case, check SQ if ( GetVR() == VR::SQ ) { gdcmAssertAlwaysMacro( dynamic_cast<const SequenceOfItems*>(&GetValue()) ); } //#ifndef NDEBUG // check consistency in Length: if( GetByteValue() ) { assert( ValueField->GetLength() == ValueLengthField ); } //else if( GetSequenceOfItems() ) else if( const SequenceOfItems *sqi = dynamic_cast<const SequenceOfItems*>(&GetValue()) ) { assert( ValueField->GetLength() == ValueLengthField ); // Recompute the total length: if( !ValueLengthField.IsUndefined() ) { VL dummy = sqi->template ComputeLength<ExplicitDataElement>(); gdcmAssertAlwaysMacro( dummy == ValueLengthField ); } } else if( GetSequenceOfFragments() ) { assert( ValueField->GetLength() == ValueLengthField ); } //#endif // We have the length we should be able to write the value if( VRField == VR::UN && ValueLengthField.IsUndefined() ) { assert( TagField == Tag(0x7fe0,0x0010) || GetValueAsSQ() ); ValueIO<ImplicitDataElement,TSwap>::Write(os,*ValueField); } #ifdef GDCM_SUPPORT_BROKEN_IMPLEMENTATION else if( VRField == VR::INVALID && dynamic_cast<const SequenceOfItems*>(&*ValueField) ) { // We have pretended so far that the Sequence was encoded as UN. Well the real // troubles is that we cannot store the length as explicit length, otherwise // we will loose the SQ, therefore change the length into undefined length // and add a seq del item: ValueIO<ImplicitDataElement,TSwap>::Write(os,*ValueField); if( !ValueLengthField.IsUndefined() ) { // eg. TestWriter with ExplicitVRforPublicElementsImplicitVRforShadowElements.dcm // seq del item is not stored, write it ! const Tag seqDelItem(0xfffe,0xe0dd); seqDelItem.Write<TSwap>(os); VL zero = 0; zero.Write<TSwap>(os); } } #endif else { bool failed; if( VRField & VR::VRASCII || VRField == VR::INVALID ) { failed = !ValueIO<ExplicitDataElement,TSwap>::Write(os,*ValueField); } else { assert( VRField & VR::VRBINARY ); unsigned int vrsize = VRField.GetSize(); assert( vrsize == 1 || vrsize == 2 || vrsize == 4 || vrsize == 8 ); if(VRField == VR::AT) vrsize = 2; switch(vrsize) { case 1: failed = !ValueIO<ExplicitDataElement,TSwap,uint8_t >::Write(os,*ValueField); break; case 2: failed = !ValueIO<ExplicitDataElement,TSwap,uint16_t>::Write(os,*ValueField); break; case 4: failed = !ValueIO<ExplicitDataElement,TSwap,uint32_t>::Write(os,*ValueField); break; case 8: failed = !ValueIO<ExplicitDataElement,TSwap,uint64_t>::Write(os,*ValueField); break; default: failed = true; assert(0); } } if( failed ) { assert( 0 && "Should not happen" ); } } } return os; } } // end namespace gdcm_ns #endif // GDCMEXPLICITDATAELEMENT_TXX