diff --git a/.gitignore b/.gitignore index c49b07f..c8451ed 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ sdiff-test-* *.o *.obj *.lst +*.a diff --git a/README.md b/README.md index 7644d85..fd749da 100644 --- a/README.md +++ b/README.md @@ -14,20 +14,13 @@ Add to `dub.json`: ```json { - "dependencies": { - "sdiff": "~>0.1.0" - } -} -``` - -Or - -```json -{ + "libs": [ + "xdiff" + ], "dependencies": { "sdiff": { "repository": "git+https://git.zhirov.kz/dlang/sdiff.git", - "version": "" + "version": "~0.1.0" } } } diff --git a/source/sdiff/init.d b/source/sdiff/init.d index 0ab1389..ec657f2 100644 --- a/source/sdiff/init.d +++ b/source/sdiff/init.d @@ -31,19 +31,22 @@ shared static this() enforce(rc == 0, "xdl_set_allocator failed (rc=" ~ rc.to!string ~ ")"); } -mmfile_t initMmfile(size_t blockSize) -{ - mmfile_t mf; - auto rc = xdl_init_mmfile(&mf, blockSize.to!long, XDL_MMF_ATOMIC); - enforce(rc == 0, "xdl_init_mmfile failed (rc=" ~ rc.to!string ~ ")"); - return mf; -} - abstract class MM { +private: + mmfile_t initMmfile(size_t blockSize) + { + mmfile_t mf; + auto rc = xdl_init_mmfile(&mf, blockSize.to!long, XDL_MMF_ATOMIC); + enforce(rc == 0, "xdl_init_mmfile failed (rc=" ~ rc.to!string ~ ")"); + return mf; + } protected: mmfile_t _inner; public: + this(long bsize = 0) { + _inner = initMmfile(bsize); + } final @property size_t size() { return xdl_mmfile_size(&_inner).to!size_t; diff --git a/source/sdiff/mmblocks.d b/source/sdiff/mmblocks.d index 1d25433..8366e81 100644 --- a/source/sdiff/mmblocks.d +++ b/source/sdiff/mmblocks.d @@ -14,7 +14,7 @@ final class MMBlocks : MM public: this() { - _inner = initMmfile(DEFAULT_BSIZE); + super(DEFAULT_BSIZE); } ~this() diff --git a/source/sdiff/mmfile.d b/source/sdiff/mmfile.d index a1e91a0..49f1486 100644 --- a/source/sdiff/mmfile.d +++ b/source/sdiff/mmfile.d @@ -14,8 +14,6 @@ final class MMFile : MM private: void _write(const(ubyte)[] data) { - _inner = initMmfile(0); - if (data.length > 0) { auto length = data.length.to!long;