/usr/include/codeblocks/filemanager.h is in codeblocks-dev 16.01+dfsg-2.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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | /*
* This file is part of the Code::Blocks IDE and licensed under the GNU Lesser General Public License, version 3
* http://www.gnu.org/licenses/lgpl-3.0.html
*/
#ifndef FILEMANAGER_H
#define FILEMANAGER_H
#include <wx/thread.h>
#include <wx/string.h>
#include <wx/log.h>
#include "backgroundthread.h"
#undef new
#include <deque>
#include <memory>
#ifndef CB_PRECOMP
#include <wx/file.h>
#include <wx/filename.h>
#include "configmanager.h"
#endif
class TiXmlDocument;
namespace TinyXML{ bool SaveDocument(const wxString&, TiXmlDocument*); }
// ***** class: LoaderBase *****
class DLLIMPORT LoaderBase : public AbstractJob
{
wxSemaphore sem;
bool wait;
void WaitReady()
{
if (wait)
{
wait = false;
sem.Wait();
}
};
protected:
wxString fileName;
char *data;
size_t len;
void Ready()
{
sem.Post();
};
public:
LoaderBase() : wait(true), data(nullptr), len(0) {};
~LoaderBase();
void operator()() {};
wxString FileName() const { return fileName; };
bool Sync();
char* GetData();
size_t GetLength();
};
// ***** class: FileLoader *****
class DLLIMPORT FileLoader : public LoaderBase
{
public:
FileLoader(const wxString& name) { fileName = name; };
void operator()();
};
// ***** class: URLLoader *****
class DLLIMPORT URLLoader : public LoaderBase
{
public:
URLLoader(const wxString& name) { fileName = name; };
void operator()();
private:
std::vector<char> mBuffer;
};
// ***** class: NullLoader *****
class DLLIMPORT NullLoader : public LoaderBase
{
public:
NullLoader(const wxString& name, char* buffer, size_t size) { fileName = name; data = buffer; len = size; Ready(); };
void operator()(){};
};
// ***** class: EditorReuser *****
class DLLIMPORT EditorReuser : public LoaderBase
{
public:
/** Gets a UTF8 representation of the editor's content
* @param name the file name opened by the editor
* @param s the editor's content
*/
EditorReuser(const wxString& name, const wxString& s)
{
fileName = name;
len = strlen(s.mb_str(wxConvUTF8));
data = new char[len + 1];
strcpy(data, (const char*)s.mb_str(wxConvUTF8));
Ready();
}
void operator()(){};
};
// ***** class: FileManager *****
class DLLIMPORT FileManager : public Mgr<FileManager>
{
BackgroundThread fileLoaderThread;
BackgroundThread uncLoaderThread;
BackgroundThread urlLoaderThread;
public:
FileManager();
~FileManager();
/** Loads a file, once this function is called, the actually loading process is done in the
* worker thread(BackgroundThread).
* @param file the file path, it can an absolute file path, an unc file, or a url file
* @param reuseEditors if true, we try to use the file contents in the editor if the file is
* modified in the editor.
* @return a loader pointer holding the loader, user must delete it later, otherwise memory
* leak will happen.
*/
cb_must_consume_result LoaderBase* Load(const wxString& file, bool reuseEditors = false);
bool Save(const wxString& file, const wxString& data, wxFontEncoding encoding, bool bom);
private:
friend bool TinyXML::SaveDocument(const wxString&, TiXmlDocument*);
bool SaveUTF8(const wxString& file, const char* data, size_t len);
bool WriteWxStringToFile(wxFile& f, const wxString& data, wxFontEncoding encoding, bool bom);
};
#endif
|