diff options
Diffstat (limited to 'ACE/ACEXML/common/StreamFactory.h')
-rw-r--r-- | ACE/ACEXML/common/StreamFactory.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/ACE/ACEXML/common/StreamFactory.h b/ACE/ACEXML/common/StreamFactory.h new file mode 100644 index 00000000000..9391eb6a299 --- /dev/null +++ b/ACE/ACEXML/common/StreamFactory.h @@ -0,0 +1,58 @@ +/** + * @file StreamFactory.h + * + * $Id$ + * + * @author Krishnakumar B <kitty@cs.wustl.edu> + */ + +#ifndef _ACEXML_STREAM_FACTORY_H +#define _ACEXML_STREAM_FACTORY_H + +#include /**/ "ace/pre.h" +#include "ACEXML/common/ACEXML_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ACEXML/common/XML_Types.h" + +// Forward declarations + +class ACEXML_CharStream; + +/** + * @class ACEXML_StreamFactory StreamFactory.h "ACEXML/common/ACEXML_StreamFactory.h" + * + * @brief A generic factory used to create an appropriate @sa + * ACEXML_CharStream from a SYSTEM id. This class creates a @sa + * ACEXML_FileCharStream or a @sa ACEXML_HttpCharStream depending on the + * URI supplied. + * + * @todo Write a stream abstraction for handling ftp:// type URIs and add + * a function to create and return such streams. That is the only chunk + * missing in the armour. + */ + +class ACEXML_Export ACEXML_StreamFactory +{ +public: + + // Destructor + virtual ~ACEXML_StreamFactory (void); + + /** + * Create the appropriate stream from the @a uri passed and return the + * stream. The caller is responsible for deallocating the returned + * stream. + * + * @param uri SYSTEM id or a stream of characters (in the case of a + * StrCharStream). + */ + virtual ACEXML_CharStream* create_stream (const ACEXML_Char* uri); +}; + +#include /**/ "ace/post.h" + +#endif /* _ACEXML_STREAM_FACTORY_H */ |