DYT/Tool/3rdParty_x64/include/dcmtk/dcmnet/dccfpcmp.h

189 lines
5.4 KiB
C
Raw Normal View History

2024-11-22 15:19:31 +00:00
/*
*
* Copyright (C) 1994-2015, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmnet
*
* Author: Marco Eichelberg
*
* Purpose:
* class DcmPresentationContextItem
* class DcmPresentationContextMap
*
*/
#ifndef DCCFPCMP_H
#define DCCFPCMP_H
#include "dcmtk/config/osconfig.h"
#include "dcmtk/ofstd/oflist.h" /* for class OFList<> */
#include "dcmtk/ofstd/ofstring.h" /* for class OFString */
#include "dcmtk/ofstd/ofcond.h" /* for class OFCondition */
#include "dcmtk/ofstd/ofmap.h" /* for class OFMap */
#include "dcmtk/dcmnet/dccfuidh.h" /* for class DcmUIDHandler */
/** this helper class is a presentation context list entry.
* Not intended for use by the end user.
*/
class DCMTK_DCMNET_EXPORT DcmPresentationContextItem
{
public:
/** constructor
* @param abstractSyntax abstract syntax
* @param xferSyntaxGroup symbolic key for transfer syntax list
*/
DcmPresentationContextItem(
const DcmUIDHandler& abstractSyntax,
const OFString& xferSyntaxGroup );
/// copy constructor
DcmPresentationContextItem(const DcmPresentationContextItem& arg);
/// destructor
~DcmPresentationContextItem();
/// assignment operator
DcmPresentationContextItem& operator=(const DcmPresentationContextItem& arg);
/** checks if the given argument matches the abstract syntax UID
* maintained by this object
* @param arg argument to compare to
* @return true if equal, false otherwise
*/
OFBool matches(const DcmUIDHandler& arg) const
{
return arg == uid_;
}
/** returns the abstract syntax UID
* @return abstract syntax UID, never NULL
*/
const char *getAbstractSyntax() const
{
return uid_.c_str();
}
/** returns the key for the list of transfer syntaxes maintained
* by this object
* @return transfer syntax key
*/
const char *getTransferSyntaxKey() const
{
return xferSyntaxGroup_.c_str();
}
/** comparison operator.
* @param arg object to compare with
* @return true if equal
*/
OFBool operator==(const DcmPresentationContextItem& arg) const
{
return (uid_ == arg.uid_) && (xferSyntaxGroup_ == arg.xferSyntaxGroup_);
}
private:
/// abstract syntax UID
DcmUIDHandler uid_;
/// key of the transfer syntax group
OFString xferSyntaxGroup_;
};
/** this helper class is a simple list of presentation context list entries.
* Not intended for use by the end user.
*/
typedef OFList<DcmPresentationContextItem> DcmPresentationContextList;
/** this helper class maintains a map of presentation context lists.
* Not intended for use by the end user.
*/
class DCMTK_DCMNET_EXPORT DcmPresentationContextMap
{
public:
/// constructor
DcmPresentationContextMap();
/// destructor
~DcmPresentationContextMap();
/** Resets DcmPresentationContextMap and frees any allocated memory.
*/
void clear();
/// Copy constructor, creates deep copy
DcmPresentationContextMap(const DcmPresentationContextMap& arg);
/// Copy assignment operator, creates deep copy
DcmPresentationContextMap& operator=(const DcmPresentationContextMap& arg);
/** const iterator pointing to start of presentation context map
* @return iterator to start of presentation context map
*/
OFMap<OFString, DcmPresentationContextList*>::const_iterator begin();
/** const iterator pointing to end of presentation context map (behind last entry)
* @return iterator to end of presentation context map
*/
OFMap<OFString, DcmPresentationContextList*>::const_iterator end();
/** get list of presentation contexts given the corresponding symbolic name
* @param pcName the symbolic name of the pc list
* @return the requested presentation context list (or NULL, if not existing)
*/
const DcmPresentationContextList* getPresentationContextList(const OFString& pcName);
/** add new entry to list within map.
* If key is new, new list is created. Otherwise value
* is appended to existing list.
* @param key map key
* @param abstractSyntaxUID abstract syntax UID
* @param transferSyntaxKey symbolic name of transfer syntax UID list, not checked here.
* @return EC_Normal if successful, an error code otherwise
*/
OFCondition add(
const char *key,
const char *abstractSyntaxUID,
const char *transferSyntaxKey);
/** checks if the key is known
* @param key key name, must not be NULL
* @return true if key is known, false otherwise
*/
OFBool isKnownKey(const char *key) const;
/** checks if the given abstract syntax is contained in the list
* identified by the given key.
* @param key presentation context list to search
* @param abstractSyntax abstract syntax UID to search
* @return true if abstract syntax is in list, false otherwise
*/
OFBool isKnownAbstractSyntax(const char *key, const DcmUIDHandler& abstractSyntax) const;
/** returns the list of presentation contexts identified by the given key
* @param key presentation context list to search
* @return pointer to presentation context list if found, NULL otherwise
*/
const DcmPresentationContextList *getPresentationContextList(const char *key) const;
private:
/// map of presentation context lists
OFMap<OFString, DcmPresentationContextList *> map_;
};
#endif