1 // 2 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 7 #ifndef _MMAP_INCLUDED_ 8 #define _MMAP_INCLUDED_ 9 10 // 11 // Encapsulate memory mapped files 12 // 13 14 class TMMap { 15 public: 16 TMMap(const char* fileName) : 17 fSize(-1), // -1 is the error value returned by GetFileSize() 18 fp(NULL), 19 fBuff(0) // 0 is the error value returned by MapViewOfFile() 20 { 21 if ((fp = fopen(fileName, "r")) == NULL) 22 return; 23 char c = getc(fp); 24 fSize = 0; 25 while (c != EOF) { 26 fSize++; 27 c = getc(fp); 28 } 29 if (c == EOF) 30 fSize++; 31 rewind(fp); 32 fBuff = (char*)malloc(sizeof(char) * fSize); 33 int count = 0; 34 c = getc(fp); 35 while (c != EOF) { 36 fBuff[count++] = c; 37 c = getc(fp); 38 } 39 fBuff[count++] = c; 40 } 41 42 char* getData() { return fBuff; } 43 int getSize() { return fSize; } 44 45 ~TMMap() { 46 if (fp != NULL) 47 fclose(fp); 48 } 49 50 private: 51 int fSize; // size of file to map in 52 FILE *fp; 53 char* fBuff; // the actual data; 54 }; 55 56 #endif // _MMAP_INCLUDED_ 57