1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
/**************************************************************************
* *
* Regina - A Normal Surface Theory Calculator *
* Computational Engine *
* *
* Copyright (c) 1999-2011, Ben Burton *
* For further details contact Ben Burton (bab@debian.org). *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation; either version 2 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* You should have received a copy of the GNU General Public *
* License along with this program; if not, write to the Free *
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
* MA 02110-1301, USA. *
* *
**************************************************************************/
/* end stub */
/*! \file file/nfilepropertyreader.h
* \brief Deals with reading individual properties of objects from
* old-style binary files.
* \deprecated The preferred way of storing data is using XML
* which is accessed via text I/O streams. New-style XML data files
* should simply bundle object properties in with the standard XML
* read/write routines.
*/
#ifndef __NFILEPROPERTYREADER_H
#ifndef __DOXYGEN
#define __NFILEPROPERTYREADER_H
#endif
#include "regina-core.h"
namespace regina {
class NFile;
/**
* \weakgroup file
* @{
*/
/**
* Assists with reading individual object properties from old-style
* binary data files.
*
* The mechanics of reading and writing properties of objects are
* described in the notes for NFilePropertyReader::readIndividualProperty()
* and NFile::writePropertyHeader() respectively.
*
* Each property that can be stored on file for a particular type of
* object has an integer identifier called the <i>property type</i>.
* Property types must be strictly positive, and must be unique for each
* type of object that can store properties.
*
* \deprecated This class is only for use with old-style binary data
* files. New-style XML data files should simply bundle object
* properties in with the standard XML read/write routines.
*
* \ifacespython Not present.
*/
class REGINA_API NFilePropertyReader {
public:
/**
* Default destructor that does nothing.
*/
virtual ~NFilePropertyReader();
/**
* Reads an individual property from an old-style binary file.
* The property type and bookmarking details should not
* read; merely the contents of the property that are written
* to file between NFile::writePropertyHeader() and
* NFile::writePropertyFooter(). See the
* NFile::writePropertyHeader() notes for details.
*
* The property type of the property to be read will be passed
* in \a propType. If the property type is unrecognised, this
* routine should simply do nothing and return. If the property
* type is recognised, this routine should read the property and
* process it accordingly (e.g., store it in whatever data object
* is currently being read).
*
* @param infile the file from which to read the property. This
* should be open for reading and at the position immediately after
* writePropertyHeader() would have been called during the
* corresponding write operation.
* @param propType the property type of the property about to be
* read.
*/
virtual void readIndividualProperty(NFile& infile,
unsigned propType) = 0;
};
/*@}*/
// Inline functions for NFilePropertyReader
inline NFilePropertyReader::~NFilePropertyReader() {
}
} // namespace regina
#endif
|