FileLoaderImpl.h Source File

Back to the index.

FileLoaderImpl.h
Go to the documentation of this file.
1 #ifndef FILELOADERIMPL_H
2 #define FILELOADERIMPL_H
3 
4 /*
5  * Copyright (C) 2009-2010 Anders Gavare. All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  * 3. The name of the author may not be used to endorse or promote products
16  * derived from this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  */
30 
31 #include "misc.h"
32 
33 #include "Component.h"
34 #include "UnitTest.h"
35 
36 
37 /**
38  * \brief A file loader.
39  */
41  : public ReferenceCountable
42 {
43 public:
44  /**
45  * \brief Constructs a file loader.
46  *
47  * @param filename The filename to load.
48  */
49  FileLoaderImpl(const string& filename)
50  : m_filename(filename)
51  {
52  }
53 
54  virtual ~FileLoaderImpl()
55  {
56  }
57 
58  /**
59  * \brief Attempt to detect file type.
60  *
61  * @param buf A buffer containing the header of the file.
62  * @param buflen The length of the buffer.
63  * @param matchness Set to a value between 0.0 and 1.0, indicating the
64  * match certainty.
65  * @return A file type description, if there was a match; otherwise
66  * an empty string.
67  */
68  virtual string DetectFileType(unsigned char *buf, size_t buflen, float& matchness) const = 0;
69 
70  /**
71  * \brief Loads the file into a Component.
72  *
73  * @param component The AddressDataBus component to load the file
74  * into. (This is usually a CPUComponent.)
75  * @param messages An output stream where debug messages can be put.
76  * @return True if loading succeeded, false otherwise.
77  */
78  virtual bool LoadIntoComponent(refcount_ptr<Component> component, ostream& messages) const = 0;
79 
80 protected:
81  const string& Filename() const
82  {
83  return m_filename;
84  }
85 
86 private:
87  const string m_filename;
88 };
89 
90 #endif // FILELOADERIMPL_H
const string & Filename() const
FileLoaderImpl(const string &filename)
Constructs a file loader.
A file loader.
virtual string DetectFileType(unsigned char *buf, size_t buflen, float &matchness) const =0
Attempt to detect file type.
Base class for reference countable objects.
Definition: refcount_ptr.h:62
virtual ~FileLoaderImpl()
virtual bool LoadIntoComponent(refcount_ptr< Component > component, ostream &messages) const =0
Loads the file into a Component.

Generated on Fri Dec 7 2018 19:52:23 for GXemul by doxygen 1.8.13