00001 /* 00002 * 00003 * Copyright (C) 1994-2005, OFFIS 00004 * 00005 * This software and supporting documentation were developed by 00006 * 00007 * Kuratorium OFFIS e.V. 00008 * Healthcare Information and Communication Systems 00009 * Escherweg 2 00010 * D-26121 Oldenburg, Germany 00011 * 00012 * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND OFFIS MAKES NO WARRANTY 00013 * REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY OR 00014 * FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES OR 00015 * ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND 00016 * PERFORMANCE OF THE SOFTWARE IS WITH THE USER. 00017 * 00018 * Module: dcmnet 00019 * 00020 * Author: Marco Eichelberg 00021 * 00022 * Purpose: 00023 * class DcmExtendedNegotiationItem 00024 * class DcmExtendedNegotiationMap 00025 * 00026 * Last Update: $Author: meichel $ 00027 * Update Date: $Date: 2005/12/08 16:02:10 $ 00028 * Source File: $Source: /share/dicom/cvs-depot/dcmtk/dcmnet/include/dcmtk/dcmnet/dccfenmp.h,v $ 00029 * CVS/RCS Revision: $Revision: 1.3 $ 00030 * Status: $State: Exp $ 00031 * 00032 * CVS/RCS Log at end of file 00033 * 00034 */ 00035 00036 #ifndef DCCFENMP_H 00037 #define DCCFENMP_H 00038 00039 #include "dcmtk/config/osconfig.h" 00040 #include "dcmtk/ofstd/oflist.h" /* for class OFList<> */ 00041 #include "dcmtk/ofstd/ofcond.h" /* for class OFCondition */ 00042 #include "dcmtk/dcmnet/dcmsmap.h" /* for class DcmSimpleMap<> */ 00043 #include "dcmtk/dcmnet/dccfuidh.h" /* for class DcmUIDHandler */ 00044 00045 class DcmPresentationContextMap; 00046 00050 class DcmExtendedNegotiationItem 00051 { 00052 public: 00058 DcmExtendedNegotiationItem( 00059 const DcmUIDHandler& abstractSyntax, 00060 const unsigned char *data, 00061 Uint32 length); 00062 00064 DcmExtendedNegotiationItem(const DcmExtendedNegotiationItem& arg); 00065 00067 ~DcmExtendedNegotiationItem(); 00068 00074 OFBool matches(const DcmUIDHandler& arg) const 00075 { 00076 return arg == uid_; 00077 } 00078 00083 const DcmUIDHandler& getAbstractSyntax() const 00084 { 00085 return uid_; 00086 } 00087 00092 const char *getAbstractSyntaxC() const 00093 { 00094 return uid_.c_str(); 00095 } 00096 00099 Uint32 getLength() const 00100 { 00101 return length_; 00102 } 00103 00106 const unsigned char *getRaw() const 00107 { 00108 return raw_; 00109 } 00110 00115 OFBool operator==(const DcmExtendedNegotiationItem& arg) const; 00116 00117 private: 00118 00120 DcmExtendedNegotiationItem& operator=(const DcmExtendedNegotiationItem& arg); 00121 00123 unsigned char *raw_; 00124 00126 Uint32 length_; 00127 00129 DcmUIDHandler uid_; 00130 }; 00131 00132 00136 typedef OFList<DcmExtendedNegotiationItem> DcmExtendedNegotiationList; 00137 00141 class DcmExtendedNegotiationMap 00142 { 00143 public: 00145 DcmExtendedNegotiationMap(); 00146 00148 ~DcmExtendedNegotiationMap(); 00149 00159 OFCondition add( 00160 const char *key, 00161 const char *abstractSyntaxUID, 00162 const unsigned char *rawData, 00163 Uint32 length); 00164 00169 OFBool isKnownKey(const char *key) const; 00170 00179 OFCondition checkConsistency( 00180 const char *key, 00181 const DcmPresentationContextMap& pclist, 00182 const char *pckey) const; 00183 00188 const DcmExtendedNegotiationList *getExtendedNegotiationList(const char *key) const; 00189 00190 private: 00192 DcmExtendedNegotiationMap(const DcmExtendedNegotiationMap& arg); 00193 00195 DcmExtendedNegotiationMap& operator=(const DcmExtendedNegotiationMap& arg); 00196 00198 DcmSimpleMap<DcmExtendedNegotiationList *> map_; 00199 00200 }; 00201 00202 00203 #endif 00204 00205 /* 00206 * CVS/RCS Log 00207 * $Log: dccfenmp.h,v $ 00208 * Revision 1.3 2005/12/08 16:02:10 meichel 00209 * Changed include path schema for all DCMTK header files 00210 * 00211 * Revision 1.2 2003/06/18 08:16:16 meichel 00212 * Added comparison operators to keep MSVC5 compiler happy 00213 * 00214 * Revision 1.1 2003/06/10 14:27:33 meichel 00215 * Initial release of class DcmAssociationConfiguration and support 00216 * classes. This class maintains a list of association negotiation 00217 * profiles that can be addressed by symbolic keys. The profiles may 00218 * be read from a configuration file. 00219 * 00220 * 00221 */