⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dcmsmap.h

📁 转化为DIB位图再显示出来的dicom文件C++代码
💻 H
字号:
/* * *  Copyright (C) 1994-2005, OFFIS * *  This software and supporting documentation were developed by * *    Kuratorium OFFIS e.V. *    Healthcare Information and Communication Systems *    Escherweg 2 *    D-26121 Oldenburg, Germany * *  THIS SOFTWARE IS MADE AVAILABLE,  AS IS,  AND OFFIS MAKES NO  WARRANTY *  REGARDING  THE  SOFTWARE,  ITS  PERFORMANCE,  ITS  MERCHANTABILITY  OR *  FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES  OR *  ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND *  PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * *  Module:  dcmnet * *  Author:  Marco Eichelberg * *  Purpose:  *    template <class T> class DcmKeyValuePair *    template <class T> class DcmSimpleMap *    these template classes implement a simple map of key-value pairs. *    The template type must be copy constructable. * *  Last Update:      $Author: meichel $ *  Update Date:      $Date: 2005/12/08 16:02:17 $ *  Source File:      $Source: /share/dicom/cvs-depot/dcmtk/dcmnet/include/dcmtk/dcmnet/dcmsmap.h,v $ *  CVS/RCS Revision: $Revision: 1.6 $ *  Status:           $State: Exp $ * *  CVS/RCS Log at end of file * */#ifndef DCMSMAP_H#define DCMSMAP_H#include "dcmtk/config/osconfig.h"#include "dcmtk/ofstd/oflist.h"   /* for class OFList<> */#include "dcmtk/ofstd/ofstring.h" /* for class OFString *//** this template class implements a simple key - value pair map *  that is used in template class DcmSimpleMap. Template type must be *  copy constructable. */template <class T> class DcmKeyValuePair{public:  /** constructor   *  @param k key   *  @param v value   */  DcmKeyValuePair(const OFString& k, const T& v)  : key_(k)  , value_(v)  {  }  /// copy constructor  DcmKeyValuePair(const DcmKeyValuePair& arg)  : key_(arg.key_)  , value_(arg.value_)  {  }  /// destructor  ~DcmKeyValuePair()  {  }  /** return value of key-value pair   *  @return value as const reference   */  const T& value() const  {    return value_;  }  /** return value of key-value pair   *  @return value as non-const reference   */  T& value()  {    return value_;  }  /** checks if this entry matches the given key   *  @return true if key matches, false otherwise   */  OFBool matches(const OFString &key) const  {    return (key_ == key);  }  /** comparison operator.   *  @param arg object to compare with   *  @return true if equal   */  OFBool operator==(const DcmKeyValuePair& arg) const  {    return (key_ == arg.key_) && (value_ == arg.value_);   }private:  /// private undefined copy assignment operator  DcmKeyValuePair& operator=(const DcmKeyValuePair& arg);  /// the key  OFString key_;  /// the value  T value_;};/** this class implements a simple map of key-value pairs. *  No double keys are permitted, the second attempt to insert *  an element with a key already present will fail. *  Template type must be copy constructable. */template <class T> class DcmSimpleMap{public:  /// default constructor  DcmSimpleMap()  : list_()  {  }  /// destructor  ~DcmSimpleMap()  {    OFLIST_TYPENAME OFListIterator(DcmKeyValuePair<T> *) first(list_.begin());    OFLIST_TYPENAME OFListIterator(DcmKeyValuePair<T> *) last(list_.end());    while (first != last)    {      delete (*first);      first = list_.erase(first);    }  }  /** inserts a new key-value pair into the map   *  by means of copy construction.   *  @param key key   *  @param value value   *  @return true if successful, false if failed because key already present   */  OFBool add(const OFString& key, const T& value)  {    OFBool result = OFFalse;    if (! lookup(key))    {      list_.push_back(new DcmKeyValuePair<T>(key, value));      result = OFTrue;    }    return result;  }  /** looks up the given key in the map.   *  @param key key   *  @return pointer to value if found, NULL otherwise.   */  const T *lookup(const OFString& key) const  {    OFLIST_TYPENAME OFListConstIterator(DcmKeyValuePair<T> *) first(list_.begin());    OFLIST_TYPENAME OFListConstIterator(DcmKeyValuePair<T> *) last(list_.end());    while (first != last)    {      if ((*first)->matches(key)) return &((*first)->value());      ++first;    }    return NULL;  }  /** return iterator to first element in list   */  OFLIST_TYPENAME OFListIterator( DcmKeyValuePair<T> * ) begin()  {    return list_.begin();  }  /** return iterator to end of list   */  OFLIST_TYPENAME OFListIterator( DcmKeyValuePair<T> * ) end()  {    return list_.end();  }private:  /// private undefined copy constructor  DcmSimpleMap(const DcmSimpleMap& arg);  /// private undefined copy assignment operator  DcmSimpleMap& operator=(const DcmSimpleMap& arg);  /// the list of key-value pairs  OFList<DcmKeyValuePair<T> *> list_;};#endif/* * CVS/RCS Log * $Log: dcmsmap.h,v $ * Revision 1.6  2005/12/08 16:02:17  meichel * Changed include path schema for all DCMTK header files * * Revision 1.5  2004/05/05 12:57:56  meichel * Simplified template class DcmSimpleMap<T>, needed for Sun CC 2.0.1 * * Revision 1.4  2003/07/11 13:42:17  joergr * Added workaround to get rid of "implicit typename" warnings on gcc 3.x * (introduced macro OFLIST_TYPENAME). * * Revision 1.3  2003/07/03 15:56:19  meichel * Introduced workaround for "implicit typename" warning on gcc 3.x when *   compiling with HAVE_STL. * * Revision 1.2  2003/06/18 08:16:17  meichel * Added comparison operators to keep MSVC5 compiler happy * * Revision 1.1  2003/06/10 14:27:33  meichel * Initial release of class DcmAssociationConfiguration and support *   classes. This class maintains a list of association negotiation *   profiles that can be addressed by symbolic keys. The profiles may *   be read from a configuration file. * * */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -