/usr/include/fox-1.6/FXMemMap.h is in libfox-1.6-dev 1.6.50-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | /********************************************************************************
* *
* M e m o r y M a p p e d F i l e *
* *
*********************************************************************************
* Copyright (C) 2004,2006 by Jeroen van der Zijp. All Rights Reserved. *
*********************************************************************************
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Lesser General Public *
* License as published by the Free Software Foundation; either *
* version 2.1 of the License, or (at your option) any later version. *
* *
* This library 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this library; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
*********************************************************************************
* $Id: FXMemMap.h,v 1.8 2006/01/22 17:58:06 fox Exp $ *
********************************************************************************/
#ifndef FXMEMMAP_H
#define FXMEMMAP_H
namespace FX {
/**
* A Memory Map provides a view of a file as an array of memory;
* this allows the file itself to be used as backing for the data
* and very simplified file access results.
* Moreover, mapped files may be shared by processes, resuling
* in far less "real" memory being used than would otherwise be
* the case.
*/
class FXAPI FXMemMap {
private:
void* mapbase; // Memory base where it is mapped
long maplength; // Length of the map
long mapoffset; // Offset of the map
FXInputHandle handle; // Handle for the map
FXInputHandle file; // Handle for the file
private:
FXMemMap(const FXMemMap&);
FXMemMap &operator=(const FXMemMap&);
public:
/// Memory map access modes
enum {
NONE = 0, /// Map is inaccessible
READ = 1, /// Readable
WRITE = 2, /// Writable
EXEC = 4, /// Executable (where supported)
TRUNC = 8 /// Truncate file to 0
};
/// Share mode
enum {
PRIV = 0, /// Private
SHAR = 1 /// Shared
};
public:
/// Construct a memory map
FXMemMap();
/// Map a view of the file; the offset must be a multiple of the page size
void* mapFile(const FXString& filename,long off=0,long len=-1L,FXuint access=READ,FXuint share=PRIV);
/// Unmap the view of the file
void* unmap();
/// Synchronize disk
void sync();
/// Return pointer to memory area
void* base() const { return mapbase; }
/// Obtain length of the map
long length() const { return maplength; }
/// Obtain offset of the map
long offset() const { return mapoffset; }
/// Destroy the map
~FXMemMap();
};
}
#endif
|