DYT/Tool/3rdParty_x64/include/dcmtk/dcmfg/fgfact.h
2024-11-22 23:19:31 +08:00

81 lines
1.9 KiB
C++

/*
*
* Copyright (C) 2015, Open Connections GmbH
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation are maintained by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmfg
*
* Author: Michael Onken
*
* Purpose: Factory class for creating functional groups
*
*/
#ifndef FGFACT_H
#define FGFACT_H
#include "dcmtk/config/osconfig.h"
#include "dcmtk/ofstd/ofmap.h"
#include "dcmtk/dcmdata/dctagkey.h"
#include "dcmtk/dcmfg/fgtypes.h"
class FGBase;
/** Singleton class that is used to create functional groups by knowing
* their type or other unique features, i.e.\ offering factory functionality.
*/
class DCMTK_DCMFG_EXPORT FGFactory
{
public:
/** Return the single instance of the factory
* @return The instance of FGFactory
*/
static FGFactory& instance();
/** Create new functional group based on given type
* @param fgtype The type of functional group to create
* @return The functional group or NULL if error occurs
*/
FGBase *create(const DcmFGTypes::E_FGType fgtype);
/** Create new functional group based its unique sequence tag key
* @param fgSequenceKey Tag key of the functional groups sequence
* @return The functional group or NULL if error occurs
*/
FGBase *create(const DcmTagKey& fgSequenceKey);
private:
/** Private undefined constructor (singleton implementation)
*/
FGFactory();
/** Private undefined copy constructor (singleton implementation)
*/
FGFactory(const FGFactory&);
/** Private undefined assignment operator (singleton implementation)
*/
FGFactory& operator=(const FGFactory&);
/** Private undefined destructor (singleton implementation)
*/
~FGFactory() {}
/// The instance of FGFactory handled by this singleton class
static FGFactory* m_Instance;
};
#endif // FGFACT_H