{"push_id":937809189,"size":23,"distinct_size":6,"ref":"refs/heads/master","head":"2e4d67f55f439bb49b85bcf700b2909d982784c8","before":"4597bc42d35e556c2ff058b17fc9264f58ff4fa9","commits":[{"sha":"1261b1c2720d5ccfa53fb2eb79d05439202d5998","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Rename InplaceOp -> UnaryInplaceOp\n\nThis also renames AbstractInplaceOp -> AbstractUnaryInplaceOp.\n\nThis is in preparation for UnaryInplaceOp extending UnaryOp,\nas well as the addition of a BinaryInplaceOp.","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/1261b1c2720d5ccfa53fb2eb79d05439202d5998"},{"sha":"923aa3916afc7c73eb716fb185a8987bf40c4bdf","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"NumericTypeNullaryMath: do not implement inplace\n\nWe are in the process of unifying the framework so that an op must\nhave one coherent arity. Having computer-wise 0-arity computer-wise\nbut inplace-wise 1-arity is inconsistent. Let's not do it.","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/923aa3916afc7c73eb716fb185a8987bf40c4bdf"},{"sha":"ec06cdf3e8ff9473a7d194683307167b3c84de68","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"ConstantToIIOutputRAI.vm: kill trailing whitespace","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/ec06cdf3e8ff9473a7d194683307167b3c84de68"},{"sha":"065a638d45b623361b69dbf50670a3b266a98162","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Temporarily remove binary inplace maps\n\nThe mechanics of binary inplace are about to change substantially.\nIt is much easier not to worry about these maps until after the\ndust settles, at which point they can be readded.","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/065a638d45b623361b69dbf50670a3b266a98162"},{"sha":"5d4dbe0344796b5fb8472d4510e6e945b20dce3d","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Rename UnaryInplaceOp accessor and mutator\n\n* arg() -> in()\n* setArg(A arg) -> setInput(A in)\n\nThe next step is for UnaryInplaceOp to extend UnaryOp, inheriting that\nsame API, eliminating the need for these extra methods altogether.\n\nI used the name \"arg\" before to avoid potential confusion, since the\nargument is both the input _and_ the output. But with the coming\nrefactoring and addition of BinaryInplaceOp, we want to reuse the\nUnaryOp and BinaryOp interfaces. So the name will have to change.","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/5d4dbe0344796b5fb8472d4510e6e945b20dce3d"},{"sha":"0891b90ddab9910dc169babaffad30c800cda27f","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Let UnaryInplaceOp extend UnaryOp","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/0891b90ddab9910dc169babaffad30c800cda27f"},{"sha":"0273fda007bb936892140e77825d66ae61e9ec6b","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Clarify preconditions for compute methods","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/0273fda007bb936892140e77825d66ae61e9ec6b"},{"sha":"bf2f57ba34c646141d1245764db950f74543904b","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"OpService: clean up the formatting","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/bf2f57ba34c646141d1245764db950f74543904b"},{"sha":"4127e0b14ea193e2599dd26959544a056f4cb726","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Fix naming of IIToRAIOutputIITest\n\nIt erroneously produced another class called IIToIIOutputIITest\n(presumably due to copy/paste error).","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/4127e0b14ea193e2599dd26959544a056f4cb726"},{"sha":"cc2ea1c4cc4d1e31abb8debad50c382b826186f8","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Move OpUtils#run into OpEnvironment\n\nThis helper method (as well as OpUtils#result) was only used\nwithin the default interface method implementations of\nOpEnvironment. The OpUtils class is rather a hodgepodge which is\nbest kept tidy (maybe even eliminated before the 1.0.0 release).\nSo it's cleaner to put this very special-purpose run method into\nthe OpEnvironment directly, and kill the unneeded result method.","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/cc2ea1c4cc4d1e31abb8debad50c382b826186f8"},{"sha":"81aba94f1523566309994b12bc8704beb2a6bee2","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Add a run(...) convenience layer\n\nThe computer ops have a compute method; the function ops have a compute\nmethod too but slightly different; the inplace ops have a mutate method.\n\nThe run convenience layer unifies these various computation methods in a\n(hopefully) intuitive way. Callers can now pass arguments to these run\nmethods in various ways, and the framework will try to do the most\ncorrect and intuitive thing for the situation.\n\nFor example, if you call `run(input, null)` on a unary hybrid op, it\nwill call the method:\n\n    UnaryFunctionOp#compute(input)\n\nreturning the result. But if you call `run(input, output)` with a\nnon-null `output` reference, it will instead call:\n\n    UnaryComputerOp#compute(input, output)\n\nand return that same `output` reference afterward.\n\nVarious combinations of computer, function and inplace are now handled\nat each interface layer to maximize convenience for the caller.\n\nNote that there are a few TEMP code blocks and hacks that will\ndisappear in subsequent commits, as some other related APIs are\nextended and enhanced.","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/81aba94f1523566309994b12bc8704beb2a6bee2"},{"sha":"96a38057645836ad62867077a16b9d0e4dc7a3a3","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Add real support for binary inplace ops\n\nThese ops compute a result from two arguments, storing the\nresult back into one of the two arguments.\n\nThe BinaryInplace1Op#mutate1 method stores it into the 1st one.\nThe BinaryInplaceOp#mutate2 method stores it into the 2nd one.\n\nThe BinaryInplaceOp extends BinaryInplace1Op, so implementers\ncan create either:\n\nA) a binary inplace op which must mutate the first argument; or\nB) a binary inplace op which can mutate either argument.\n\nIn both cases, when the op is used unspecially via the run() method,\nthe binary inplace op will mutate the first argument, not the second.\n\nNeither kind of binary inplace op is capable of mutating both arguments\nat once, and the two input arguments must be different because otherwise\nthere may be problems similar to computer ops when in == out.\n\nThis commit is dedicated to Leon Yang!","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/96a38057645836ad62867077a16b9d0e4dc7a3a3"},{"sha":"d4f36420de0c459bee94abb15014fa4940de3213","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Add hybrid computer/function/inplace ops\n\nSometimes it is convenient to create the ULTIMATE OP, which\ncan be used as a function, as a computer OR as an inplace op.\n\nIt's a floor wax AND a dessert topping!","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/d4f36420de0c459bee94abb15014fa4940de3213"},{"sha":"8b51b0cf6e48498f656b60ae5dcb8baf6f44d831","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Use the new hybrid CFI interfaces\n\nBye bye, boilerplate code! ^_^","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/8b51b0cf6e48498f656b60ae5dcb8baf6f44d831"},{"sha":"12628ae6910b2346cab1b11b041a7ad1a82de63b","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Add an AddNoise computer/function/inplace hybrid\n\nWe will use this shortly to noisify an image in-place via inplace map.","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/12628ae6910b2346cab1b11b041a7ad1a82de63b"},{"sha":"13a5010ec81d7d26f613a945f6a357f214876b3a","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"ConvertIterableIntervalsTest: fix inplace map\n\nThe test was calling a computer to add noise in place, which formally\nis not allowed (even though it happened to work successfully here).\n\nBetter to call for an op which is known to work in place:\nthe new AddNoiseRealTypeCFI hybrid op!","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/13a5010ec81d7d26f613a945f6a357f214876b3a"},{"sha":"12be40fab29a63df5da9b583dd4ef0a0e7bfeaf7","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"UnaryComputerOp: enforce input != output\n\nNow that the ConvertIterableIntervalsTest explicitly uses an inplace\naddNoise map instead of a computer with input == output, we can start\nenforcing the computer precondition that input != output.","distinct":false,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/12be40fab29a63df5da9b583dd4ef0a0e7bfeaf7"},{"sha":"fe855efd92280ed5e2d6ba0b1401cdb1b541a3cf","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Rename *HybridOp -> *HybridCF\n\nNow that we have CFI hybrid types, the term \"hybrid op\" is\nambiguous. Let's call the original hybrids (which combine\ncomputer + function) CF hybrids now, to clarify matters.","distinct":true,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/fe855efd92280ed5e2d6ba0b1401cdb1b541a3cf"},{"sha":"518e065e828f40fdab55defccf321b62333a84f1","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Make hybrid javadoc cross-references consistent\n\nNow, each kind of hybrid op (CF, CFI and CFI1)\nat a particular arity reference the other kinds.\n\nWe do not reference the other kinds of special op anymore;\nthey are already linked in each initial paragraph.","distinct":true,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/518e065e828f40fdab55defccf321b62333a84f1"},{"sha":"0e834c1477482768e03333e18da2702bc01fdc34","author":{"email":"531f60ec930dbf1e884c7d868e0fb95608efaff8@wisc.edu","name":"Curtis Rueden"},"message":"Make C/F/I javadoc cross-references consistent\n\nNow, each kind of special op (computer, function and inplace)\nat a particular arity reference the other two kinds.\n\nWe do not reference the hybrid ops anymore; they are a layer on top.","distinct":true,"url":"https://api.github.com/repos/imagej/imagej-ops/commits/0e834c1477482768e03333e18da2702bc01fdc34"}]}