You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
3.2 KiB
C++
140 lines
3.2 KiB
C++
/*=========================================================================
|
|
|
|
Program: DICOMParser
|
|
Module: DICOMParserMap.h
|
|
Language: C++
|
|
|
|
Copyright (c) 2003 Matt Turek
|
|
All rights reserved.
|
|
See Copyright.txt 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 __DICOM_PARSER_MAP__H_
|
|
#define __DICOM_PARSER_MAP__H_
|
|
|
|
#ifdef _MSC_VER
|
|
#pragma warning(disable : 4514)
|
|
#pragma warning(disable : 4786)
|
|
#pragma warning(disable : 4503)
|
|
#pragma warning(disable : 4710)
|
|
#pragma warning(disable : 4702)
|
|
#pragma warning(push, 3)
|
|
#endif
|
|
|
|
#include <map>
|
|
#include <utility>
|
|
|
|
#include "DICOMConfig.h"
|
|
|
|
class DICOMCallback;
|
|
|
|
//
|
|
// Structure that implements a compare operator for
|
|
// a pair of doublebytes. This is used when comparing
|
|
// group, element pairs.
|
|
//
|
|
struct group_element_compare
|
|
{
|
|
bool operator()(const dicom_stl::pair<doublebyte, doublebyte>& p1,
|
|
const dicom_stl::pair<doublebyte, doublebyte>& p2) const
|
|
{
|
|
if (p1.first < p2.first)
|
|
{
|
|
return true;
|
|
}
|
|
else if (p1.first == p2.first)
|
|
{
|
|
if (p1.second < p2.second)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
};
|
|
|
|
//
|
|
// Typedef a pair of doublebytes
|
|
//
|
|
typedef dicom_stl::pair<doublebyte, doublebyte> DICOMMapKeyOverride;
|
|
|
|
// DICOM_EXPIMP_TEMPLATE template struct DICOM_MAP_EXPORT dicom_stream::pair<doublebyte,
|
|
// doublebyte>;
|
|
//
|
|
// Subclass of a pair of doublebytes to make
|
|
// type names shorter in the code.
|
|
//
|
|
class DICOMMapKey : public DICOMMapKeyOverride
|
|
{
|
|
public:
|
|
DICOMMapKey(doublebyte v1, doublebyte v2)
|
|
: dicom_stl::pair<doublebyte, doublebyte>(v1, v2)
|
|
{
|
|
}
|
|
};
|
|
|
|
//
|
|
// Typedef of a pair of doublebyte, vector.
|
|
//
|
|
typedef dicom_stl::pair<doublebyte, dicom_stl::vector<DICOMCallback*>*> DICOMMapValueOverride;
|
|
|
|
// DICOM_EXPIMP_TEMPLATE template struct DICOM_MAP_EXPORT dicom_stream::pair<doublebyte,
|
|
// dicom_stream::vector<DICOMCallback*>*>;
|
|
|
|
//
|
|
// Subclass of pair doublebyte, vector<DICOMCallback*>.
|
|
// Makes types shorter in the code.
|
|
//
|
|
class DICOMMapValue : public DICOMMapValueOverride
|
|
{
|
|
public:
|
|
DICOMMapValue()
|
|
: dicom_stl::pair<doublebyte, dicom_stl::vector<DICOMCallback*>*>()
|
|
{
|
|
}
|
|
|
|
DICOMMapValue(doublebyte v1, dicom_stl::vector<DICOMCallback*>* v2)
|
|
: dicom_stl::pair<doublebyte, dicom_stl::vector<DICOMCallback*>*>(v1, v2)
|
|
{
|
|
}
|
|
};
|
|
|
|
// DICOM_EXPIMP_TEMPLATE template class DICOM_MAP_EXPORT dicom_stream::map<DICOMMapKey,
|
|
// DICOMMapValue, group_element_compare>;
|
|
|
|
//
|
|
// Subclass of the particular map we're using. Again,
|
|
// makes type specifiers shorter in the code.
|
|
//
|
|
class DICOMParserMap : public dicom_stl::map<DICOMMapKey, DICOMMapValue, group_element_compare>
|
|
{
|
|
};
|
|
|
|
typedef doublebyte DICOMTypeValue;
|
|
|
|
// DICOM_EXPIMP_TEMPLATE template class dicom_stream::map<DICOMMapKey, DICOMTypeValue,
|
|
// group_element_compare>;
|
|
|
|
class DICOMImplicitTypeMap
|
|
: public dicom_stl::map<DICOMMapKey, DICOMTypeValue, group_element_compare>
|
|
{
|
|
};
|
|
|
|
#ifdef _MSC_VER
|
|
#pragma warning(pop)
|
|
#endif
|
|
|
|
#endif
|