From b5f924e536b70906dedd03aca38fa9f2cfdef488 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Mon, 21 May 2012 15:03:24 -0700 Subject: [PATCH 01/32] Created gh-pages branch via GitHub --- images/bg_hr.png | Bin 0 -> 943 bytes images/blacktocat.png | Bin 0 -> 1428 bytes images/icon_download.png | Bin 0 -> 1162 bytes images/sprite_download.png | Bin 0 -> 16799 bytes index.html | 156 +++++++++++++ javascripts/main.js | 1 + params.json | 1 + stylesheets/pygment_trac.css | 70 ++++++ stylesheets/stylesheet.css | 431 +++++++++++++++++++++++++++++++++++ 9 files changed, 659 insertions(+) create mode 100644 images/bg_hr.png create mode 100644 images/blacktocat.png create mode 100644 images/icon_download.png create mode 100644 images/sprite_download.png create mode 100644 index.html create mode 100644 javascripts/main.js create mode 100644 params.json create mode 100644 stylesheets/pygment_trac.css create mode 100644 stylesheets/stylesheet.css diff --git a/images/bg_hr.png b/images/bg_hr.png new file mode 100644 index 0000000000000000000000000000000000000000..7973bd69888c7e10ccad1111d555ceabb7cd99b6 GIT binary patch literal 943 zcmaJ=O^ee&7!FiK7FWCot{@Ck@nrMW&tx0B-6VAbrk1u~FTzffX&bu9#AIsIdef8t z!QZfdz=K}>3m(LO;6X3qN}Y6@>cJYA%)G<%Jn!ec>9im1@7>wsIBwrMF}iHO!q%;8 zSJ@xEd~(FL18NRvkBsOXMVM>4WQc*~qcQGc17IjxRnj!O_^B1gan0x#EWT48PK->5B2>mI;LIx zC*FSw$Nfc!g)WZCEOJ=mM)}lLsOk|$ltg_(&ax_YCWMlBLPDVT%D_gB7o_$YZ`-OB z#1sV%whRq21>W;qwN$N?OUGtQQe;JvOsQrna;+v+j8dth=*?orHHb6waX>S!yXCgT zo!oR3{E&GzaOAzfZYv@_Sf{LdyJInS>TS60&R9%yCs$y>2x(*gYIJtRrYAja$Ceq} z!N&oc_K1!3-Ft`U>`CM;quEbB4KG%!MovB*9_3!QzFhqHwrbwK|Doo-y>auDJNSP6 T=d)j*_4El@X4^PFK7I8YBT*xD literal 0 HcmV?d00001 diff --git a/images/blacktocat.png b/images/blacktocat.png new file mode 100644 index 0000000000000000000000000000000000000000..6e264fe57a2e35a2855405ac7d4102c3f6ddcdae GIT binary patch literal 1428 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..d898666 --- /dev/null +++ b/index.html @@ -0,0 +1,156 @@ + + + + + + + + + + + Java-OO + + + + + +
+
+ View on GitHub + +

Java-OO

+

Java Operator Overloading

+ +
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+

Java Operator Overloading

+ +

Implementation of (Scala-like) Operator Overloading for Java language. +Works with standard JavaC compiler, Netbeans IDE, Eclipse IDE and any build tools.

+ +

Example (see other examples at examples/ dir):

+ +
+
import java.math.*;
+import java.util.*;
+public class Test {
+    public static void main(String[] args) {
+        BigInteger  a = BigInteger.valueOf(1),
+                b = BigInteger.valueOf(2),
+
+                c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO
+                c2 = -a + b*b + b/a; // with OO
+
+        if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println("impossible"); // without OO
+        if (c1<c2 || c1>c2) System.out.println("impossible"); // with OO
+
+        HashMap<String, String> map = new HashMap<>();
+        if (!map.containsKey("qwe")) map.put("qwe", "asd"); // without OO
+        if (map["qwe"]==null) map["qwe"] = "asd"; // with OO
+    }
+}
+
+
+ + +

Installation

+ +

Eclipse IDE update site

+ +

Click in menu: Help - Install New Software. Enter in "Work with" field:

+ +
http://amelentev.github.com/eclipse.jdt-oo-site/
+
+ +

Tested on 3.7.2, 4.2M7.

+ +

Netbeans IDE

+ +

Add javac-oo-plugin.jar as compile or processor library to Netbeans and enable "Annotation Processing in Editor" (Project Properties-Build-Compiling). Tested on 7.1.1, 7.2-dev

+ +

javac, ant, etc

+ +

Just add javac-oo-plugin.jar to classpath:

+ +
javac -cp javac-oo-plugin.jar <sources>
+
+ +

Demo at examples/compile.sh

+ +

Maven

+ +

Look at javac-oo-mvndemo/pom.xml

+ +

Details

+ +

Supported operators (operator to method map):

+ +

binary:

+ +
| OPERATOR | METHOD    |
+------------------------
+| +        | add       |
+| -        | subtract  |
+| *        | multiply  |
+| /        | divide    |
+| %        | remainder |
+| &        | and       |
+| |        | or        |
+| ^        | xor       |
+| <<       | shiftLeft |
+| >>       | shiftRight|
+
+ +

unary:

+ +
| - | negate |
+| ~ | not    |
+
+ +

comparison:

+ +
| <, <=, >, >= | compareTo  | example: `a < b` <=> `a.compareTo(b)<0`
+`==` and `!=` is not overloadable because it will break things
+
+ +

index:

+ +
| []  | get       | `v = lst[i]` <=> `v = lst.get(i)`
+| []= | set, put  | `map[s] = v` <=> `map.put(s,v)`,  `lst[i] = v` <=> `lst.set(i,v)`
+
+ +

These methods exists in many java classes (ex:BigInteger,BigDecimal) so you can +use operators on them "out of the box". Or you can add these methods to your classes to use OO (see examples/Vector.java).

+
+
+ + + + + + + + + + diff --git a/javascripts/main.js b/javascripts/main.js new file mode 100644 index 0000000..d8135d3 --- /dev/null +++ b/javascripts/main.js @@ -0,0 +1 @@ +console.log('This would be the main JS file.'); diff --git a/params.json b/params.json new file mode 100644 index 0000000..beb3b07 --- /dev/null +++ b/params.json @@ -0,0 +1 @@ +{"name":"Java-OO","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, Netbeans IDE, Eclipse IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1),\r\n\t\t\t\tb = BigInteger.valueOf(2),\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# Installation #\r\n\r\n## Eclipse IDE update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.com/eclipse.jdt-oo-site/\r\n\r\nTested on 3.7.2, 4.2M7.\r\n\r\n## Netbeans IDE ##\r\nAdd [javac-oo-plugin.jar] as compile or processor library to Netbeans and enable \"Annotation Processing in Editor\" (Project Properties-Build-Compiling). Tested on 7.1.1, 7.2-dev\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nThese methods exists in many java classes (ex:BigInteger,BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[eclipse]: http://eclipse.org/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[Intellij Idea]: http://www.jetbrains.com/idea/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.com/mvnrepo/java-oo/javac-oo-plugin/0.1/javac-oo-plugin-0.1.jar\r\n","tagline":"Java Operator Overloading","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/stylesheets/pygment_trac.css b/stylesheets/pygment_trac.css new file mode 100644 index 0000000..e65cedf --- /dev/null +++ b/stylesheets/pygment_trac.css @@ -0,0 +1,70 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f0f3f3; } +.highlight .c { color: #0099FF; font-style: italic } /* Comment */ +.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */ +.highlight .k { color: #006699; font-weight: bold } /* Keyword */ +.highlight .o { color: #555555 } /* Operator */ +.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #009999 } /* Comment.Preproc */ +.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */ +.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */ +.highlight .go { color: #AAAAAA } /* Generic.Output */ +.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #99CC66 } /* Generic.Traceback */ +.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #006699 } /* Keyword.Pseudo */ +.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #FF6600 } /* Literal.Number */ +.highlight .s { color: #CC3300 } /* Literal.String */ +.highlight .na { color: #330099 } /* Name.Attribute */ +.highlight .nb { color: #336666 } /* Name.Builtin */ +.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */ +.highlight .no { color: #336600 } /* Name.Constant */ +.highlight .nd { color: #9999FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #CC00FF } /* Name.Function */ +.highlight .nl { color: #9999FF } /* Name.Label */ +.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #003333 } /* Name.Variable */ +.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #FF6600 } /* Literal.Number.Float */ +.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */ +.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */ +.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */ +.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */ +.highlight .sc { color: #CC3300 } /* Literal.String.Char */ +.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #CC3300 } /* Literal.String.Double */ +.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */ +.highlight .si { color: #AA0000 } /* Literal.String.Interpol */ +.highlight .sx { color: #CC3300 } /* Literal.String.Other */ +.highlight .sr { color: #33AAAA } /* Literal.String.Regex */ +.highlight .s1 { color: #CC3300 } /* Literal.String.Single */ +.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */ +.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #003333 } /* Name.Variable.Class */ +.highlight .vg { color: #003333 } /* Name.Variable.Global */ +.highlight .vi { color: #003333 } /* Name.Variable.Instance */ +.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */ + +.type-csharp .highlight .k { color: #0000FF } +.type-csharp .highlight .kt { color: #0000FF } +.type-csharp .highlight .nf { color: #000000; font-weight: normal } +.type-csharp .highlight .nc { color: #2B91AF } +.type-csharp .highlight .nn { color: #000000 } +.type-csharp .highlight .s { color: #A31515 } +.type-csharp .highlight .sc { color: #A31515 } diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css new file mode 100644 index 0000000..4189751 --- /dev/null +++ b/stylesheets/stylesheet.css @@ -0,0 +1,431 @@ +/******************************************************************************* +Slate Theme for Github Pages +by Jason Costello, @jsncostello +*******************************************************************************/ + +@import url(pygment_trac.css); + +/******************************************************************************* +MeyerWeb Reset +*******************************************************************************/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} + +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} + +ol, ul { + list-style: none; +} + +blockquote, q { +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +a:focus { + outline: none; +} + +/******************************************************************************* +Theme Styles +*******************************************************************************/ + +body { + box-sizing: border-box; + color:#373737; + background: #212121; + font-size: 16px; + font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif; + line-height: 1.5; + -webkit-font-smoothing: antialiased; +} + +h1, h2, h3, h4, h5, h6 { + margin: 10px 0; + font-weight: 700; + color:#222222; + font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif; + letter-spacing: -1px; +} + +h1 { + font-size: 36px; + font-weight: 700; +} + +h2 { + padding-bottom: 10px; + font-size: 32px; + background: url('../images/bg_hr.png') repeat-x bottom; +} + +h3 { + font-size: 24px; +} + +h4 { + font-size: 21px; +} + +h5 { + font-size: 18px; +} + +h6 { + font-size: 16px; +} + +p { + margin: 10px 0 15px 0; +} + +footer p { + color: #f2f2f2; +} + +a { + text-decoration: none; + color: #007edf; + text-shadow: none; + + transition: color 0.5s ease; + transition: text-shadow 0.5s ease; + -webkit-transition: color 0.5s ease; + -webkit-transition: text-shadow 0.5s ease; + -moz-transition: color 0.5s ease; + -moz-transition: text-shadow 0.5s ease; + -o-transition: color 0.5s ease; + -o-transition: text-shadow 0.5s ease; + -ms-transition: color 0.5s ease; + -ms-transition: text-shadow 0.5s ease; +} + +#main_content a:hover { + color: #0069ba; + text-shadow: #0090ff 0px 0px 2px; +} + +footer a:hover { + color: #43adff; + text-shadow: #0090ff 0px 0px 2px; +} + +em { + font-style: italic; +} + +strong { + font-weight: bold; +} + +img { + position: relative; + margin: 0 auto; + max-width: 739px; + padding: 5px; + margin: 10px 0 10px 0; + border: 1px solid #ebebeb; + + box-shadow: 0 0 5px #ebebeb; + -webkit-box-shadow: 0 0 5px #ebebeb; + -moz-box-shadow: 0 0 5px #ebebeb; + -o-box-shadow: 0 0 5px #ebebeb; + -ms-box-shadow: 0 0 5px #ebebeb; +} + +pre, code { + width: 100%; + color: #222; + background-color: #fff; + + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; + font-size: 14px; + + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + + + +} + +pre { + width: 100%; + padding: 10px; + box-shadow: 0 0 10px rgba(0,0,0,.1); + overflow: auto; +} + +code { + padding: 3px; + margin: 0 3px; + box-shadow: 0 0 10px rgba(0,0,0,.1); +} + +pre code { + display: block; + box-shadow: none; +} + +blockquote { + color: #666; + margin-bottom: 20px; + padding: 0 0 0 20px; + border-left: 3px solid #bbb; +} + +ul, ol, dl { + margin-bottom: 15px +} + +ul li { + list-style: inside; + padding-left: 20px; +} + +ol li { + list-style: decimal inside; + padding-left: 20px; +} + +dl dt { + font-weight: bold; +} + +dl dd { + padding-left: 20px; + font-style: italic; +} + +dl p { + padding-left: 20px; + font-style: italic; +} + +hr { + height: 1px; + margin-bottom: 5px; + border: none; + background: url('../images/bg_hr.png') repeat-x center; +} + +table { + border: 1px solid #373737; + margin-bottom: 20px; + text-align: left; + } + +th { + font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; + padding: 10px; + background: #373737; + color: #fff; + } + +td { + padding: 10px; + border: 1px solid #373737; + } + +form { + background: #f2f2f2; + padding: 20px; +} + +img { + width: 100%; + max-width: 100%; +} + +/******************************************************************************* +Full-Width Styles +*******************************************************************************/ + +.outer { + width: 100%; +} + +.inner { + position: relative; + max-width: 640px; + padding: 20px 10px; + margin: 0 auto; +} + +#forkme_banner { + display: block; + position: absolute; + top:0; + right: 10px; + z-index: 10; + padding: 10px 50px 10px 10px; + color: #fff; + background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%; + font-weight: 700; + box-shadow: 0 0 10px rgba(0,0,0,.5); + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +#header_wrap { + background: #212121; + background: -moz-linear-gradient(top, #373737, #212121); + background: -webkit-linear-gradient(top, #373737, #212121); + background: -ms-linear-gradient(top, #373737, #212121); + background: -o-linear-gradient(top, #373737, #212121); + background: linear-gradient(top, #373737, #212121); +} + +#header_wrap .inner { + padding: 50px 10px 30px 10px; +} + +#project_title { + margin: 0; + color: #fff; + font-size: 42px; + font-weight: 700; + text-shadow: #111 0px 0px 10px; +} + +#project_tagline { + color: #fff; + font-size: 24px; + font-weight: 300; + background: none; + text-shadow: #111 0px 0px 10px; +} + +#downloads { + position: absolute; + width: 210px; + z-index: 10; + bottom: -40px; + right: 0; + height: 70px; + background: url('../images/icon_download.png') no-repeat 0% 90%; +} + +.zip_download_link { + display: block; + float: right; + width: 90px; + height:70px; + text-indent: -5000px; + overflow: hidden; + background: url(../images/sprite_download.png) no-repeat bottom left; +} + +.tar_download_link { + display: block; + float: right; + width: 90px; + height:70px; + text-indent: -5000px; + overflow: hidden; + background: url(../images/sprite_download.png) no-repeat bottom right; + margin-left: 10px; +} + +.zip_download_link:hover { + background: url(../images/sprite_download.png) no-repeat top left; +} + +.tar_download_link:hover { + background: url(../images/sprite_download.png) no-repeat top right; +} + +#main_content_wrap { + background: #f2f2f2; + border-top: 1px solid #111; + border-bottom: 1px solid #111; +} + +#main_content { + padding-top: 40px; +} + +#footer_wrap { + background: #212121; +} + + + +/******************************************************************************* +Small Device Styles +*******************************************************************************/ + +@media screen and (max-width: 480px) { + body { + font-size:14px; + } + + #downloads { + display: none; + } + + .inner { + min-width: 320px; + max-width: 480px; + } + + #project_title { + font-size: 32px; + } + + h1 { + font-size: 28px; + } + + h2 { + font-size: 24px; + } + + h3 { + font-size: 21px; + } + + h4 { + font-size: 18px; + } + + h5 { + font-size: 14px; + } + + h6 { + font-size: 12px; + } + + code, pre { + min-width: 320px; + max-width: 480px; + font-size: 11px; + } + +} From eb6c4763dac2c057278dc10ea276a3ad4b1f20dd Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Mon, 26 Nov 2012 09:05:39 -0800 Subject: [PATCH 02/32] Create gh-pages branch via GitHub --- index.html | 31 +++++++++++++++++++------------ params.json | 2 +- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/index.html b/index.html index d898666..ca5b1e0 100644 --- a/index.html +++ b/index.html @@ -38,13 +38,12 @@

Java Operator Overloading

Example (see other examples at examples/ dir):

-
-
import java.math.*;
+
import java.math.*;
 import java.util.*;
 public class Test {
     public static void main(String[] args) {
-        BigInteger  a = BigInteger.valueOf(1),
-                b = BigInteger.valueOf(2),
+        BigInteger  a = BigInteger.valueOf(1), // without OO
+                b = 2, // with OO
 
                 c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO
                 c2 = -a + b*b + b/a; // with OO
@@ -57,9 +56,11 @@ 

Java Operator Overloading

if (map["qwe"]==null) map["qwe"] = "asd"; // with OO } } -
-
+
+

News

+ +

26 Nov 2012. Version 0.2 released. New feature: Implicit type conversion via static #valueOf method.

Installation

@@ -70,11 +71,11 @@

Eclipse IDE update site

http://amelentev.github.com/eclipse.jdt-oo-site/
 
-

Tested on 3.7.2, 4.2M7.

+

Tested on 4.2.1.

Netbeans IDE

-

Add javac-oo-plugin.jar as compile or processor library to Netbeans and enable "Annotation Processing in Editor" (Project Properties-Build-Compiling). Tested on 7.1.1, 7.2-dev

+

Add javac-oo-plugin.jar as compile or processor library to Netbeans and enable "Annotation Processing in Editor" (Project Properties-Build-Compiling). Tested on 7.2.1

javac, ant, etc

@@ -93,7 +94,7 @@

Details

Supported operators (operator to method map):

-

binary:

+

binary:

| OPERATOR | METHOD    |
 ------------------------
@@ -109,24 +110,30 @@ 

Details

| >> | shiftRight|
-

unary:

+

unary:

| - | negate |
 | ~ | not    |
 
-

comparison:

+

comparison:

| <, <=, >, >= | compareTo  | example: `a < b` <=> `a.compareTo(b)<0`
 `==` and `!=` is not overloadable because it will break things
 
-

index:

+

index:

| []  | get       | `v = lst[i]` <=> `v = lst.get(i)`
 | []= | set, put  | `map[s] = v` <=> `map.put(s,v)`,  `lst[i] = v` <=> `lst.set(i,v)`
 
+

Implicit type conversion:

+ +

if expression has type ExpressionType and there are static method RequredType RequredType#valueOf(ExpressionType) +then expression can be assigned to RequredType.
+example: BigInteger a = 1 translates to BigInteger a = BigInteger.valueOf(1)

+

These methods exists in many java classes (ex:BigInteger,BigDecimal) so you can use operators on them "out of the box". Or you can add these methods to your classes to use OO (see examples/Vector.java).

diff --git a/params.json b/params.json index beb3b07..170f962 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, Netbeans IDE, Eclipse IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1),\r\n\t\t\t\tb = BigInteger.valueOf(2),\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# Installation #\r\n\r\n## Eclipse IDE update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.com/eclipse.jdt-oo-site/\r\n\r\nTested on 3.7.2, 4.2M7.\r\n\r\n## Netbeans IDE ##\r\nAdd [javac-oo-plugin.jar] as compile or processor library to Netbeans and enable \"Annotation Processing in Editor\" (Project Properties-Build-Compiling). Tested on 7.1.1, 7.2-dev\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nThese methods exists in many java classes (ex:BigInteger,BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[eclipse]: http://eclipse.org/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[Intellij Idea]: http://www.jetbrains.com/idea/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.com/mvnrepo/java-oo/javac-oo-plugin/0.1/javac-oo-plugin-0.1.jar\r\n","tagline":"Java Operator Overloading","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, Netbeans IDE, Eclipse IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](#4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## Eclipse IDE update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.com/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1.\r\n\r\n## Netbeans IDE ##\r\nAdd [javac-oo-plugin.jar] as compile or processor library to Netbeans and enable \"Annotation Processing in Editor\" (Project Properties-Build-Compiling). Tested on 7.2.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\n### binary: ###\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\n### unary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\n### comparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\n### index:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\n### Implicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_\r\nthen _expression_ can be assigned to _RequredType_.
\r\nexample: _BigInteger a = 1_ translates to _BigInteger a = BigInteger.valueOf(1)_\r\n\r\n\r\nThese methods exists in many java classes (ex:BigInteger,BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[eclipse]: http://eclipse.org/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[Intellij Idea]: http://www.jetbrains.com/idea/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.com/mvnrepo/java-oo/javac-oo-plugin/0.1/javac-oo-plugin-0.1.jar\r\n","tagline":"Java Operator Overloading","note":"Don't delete this file! It's used internally to help with page regeneration.","google":"UA-31894853-1"} \ No newline at end of file From 59e6f69610eb2021f4b2331351c98d43f7ed10e2 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Tue, 16 Apr 2013 16:07:42 -0700 Subject: [PATCH 03/32] Create gh-pages branch via GitHub --- index.html | 57 ++++++++++++++++++++++++++------------ params.json | 2 +- stylesheets/stylesheet.css | 2 +- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/index.html b/index.html index ca5b1e0..f469e1b 100644 --- a/index.html +++ b/index.html @@ -34,7 +34,7 @@

Java Operator Overloading

Java Operator Overloading

Implementation of (Scala-like) Operator Overloading for Java language. -Works with standard JavaC compiler, Netbeans IDE, Eclipse IDE and any build tools.

+Works with standard JavaC compiler, Netbeans IDE, Eclipse IDE, IntelliJ IDEA IDE and any build tools.

Example (see other examples at examples/ dir):

@@ -60,26 +60,47 @@

Java Operator Overloading

News

-

26 Nov 2012. Version 0.2 released. New feature: Implicit type conversion via static #valueOf method.

+

17 Apr 2013. IntelliJ IDEA IDE plugin.

+ +

26 Nov 2012. Version 0.2 released. New feature: Implicit type conversion via static #valueOf method.

Installation

-

Eclipse IDE update site

+

+Eclipse IDE update site

Click in menu: Help - Install New Software. Enter in "Work with" field:

-
http://amelentev.github.com/eclipse.jdt-oo-site/
+
http://amelentev.github.io/eclipse.jdt-oo-site/
 
-

Tested on 4.2.1.

+

Tested on 4.2.1

+ +

Netbeans IDE

-

Netbeans IDE

+
    +
  1. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
  2. +
  3. Enable "Annotation Processing in Editor" (Project Properties -> Build -> Compiling).
  4. +

Tested on 7.2.1

-

Add javac-oo-plugin.jar as compile or processor library to Netbeans and enable "Annotation Processing in Editor" (Project Properties-Build-Compiling). Tested on 7.2.1

+

+IntelliJ IDEA IDE

-

javac, ant, etc

+
    +
  1. Install idea-oo-plugin +(mirror: idea-oo-plugin.jar)
    +For Maven projects installation is done. IDEA should setup everything according to pom.xml.
    +For other project types:
    +
  2. +
  3. Add javac-oo-plugin.jar as compile or processor library.
  4. +
  5. Enable Annotation Processing: +Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing +
  6. +
  7. Make sure you use javac compiler in Settings -> Compiler -> Use compiler.
    +Tested on IDEA Commutity Edition 12.1.1
  8. +

javac, ant, etc

-

Just add javac-oo-plugin.jar to classpath:

+

Just add javac-oo-plugin.jar to classpath:

javac -cp javac-oo-plugin.jar <sources>
 
@@ -94,7 +115,7 @@

Details

Supported operators (operator to method map):

-

binary:

+

binary:

| OPERATOR | METHOD    |
 ------------------------
@@ -110,31 +131,31 @@ 

binary:

| >> | shiftRight|
-

unary:

+

unary:

| - | negate |
 | ~ | not    |
 
-

comparison:

+

comparison:

| <, <=, >, >= | compareTo  | example: `a < b` <=> `a.compareTo(b)<0`
 `==` and `!=` is not overloadable because it will break things
 
-

index:

+

index:

| []  | get       | `v = lst[i]` <=> `v = lst.get(i)`
 | []= | set, put  | `map[s] = v` <=> `map.put(s,v)`,  `lst[i] = v` <=> `lst.set(i,v)`
 
-

Implicit type conversion:

+

Implicit type conversion:

-

if expression has type ExpressionType and there are static method RequredType RequredType#valueOf(ExpressionType) -then expression can be assigned to RequredType.
-example: BigInteger a = 1 translates to BigInteger a = BigInteger.valueOf(1)

+

if expression has type ExpressionType and there are static method RequredType RequredType#valueOf(ExpressionType)
+then expression can be assigned to RequredType. +example:
BigInteger a = 1 translates to BigInteger a = BigInteger.valueOf(1)

-

These methods exists in many java classes (ex:BigInteger,BigDecimal) so you can +

These methods exists in many java classes (example: BigInteger, BigDecimal) so you can use operators on them "out of the box". Or you can add these methods to your classes to use OO (see examples/Vector.java).

diff --git a/params.json b/params.json index 170f962..202e145 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, Netbeans IDE, Eclipse IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](#4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## Eclipse IDE update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.com/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1.\r\n\r\n## Netbeans IDE ##\r\nAdd [javac-oo-plugin.jar] as compile or processor library to Netbeans and enable \"Annotation Processing in Editor\" (Project Properties-Build-Compiling). Tested on 7.2.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\n### binary: ###\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\n### unary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\n### comparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\n### index:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\n### Implicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_\r\nthen _expression_ can be assigned to _RequredType_.
\r\nexample: _BigInteger a = 1_ translates to _BigInteger a = BigInteger.valueOf(1)_\r\n\r\n\r\nThese methods exists in many java classes (ex:BigInteger,BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[eclipse]: http://eclipse.org/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[Intellij Idea]: http://www.jetbrains.com/idea/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.com/mvnrepo/java-oo/javac-oo-plugin/0.1/javac-oo-plugin-0.1.jar\r\n","tagline":"Java Operator Overloading","note":"Don't delete this file! It's used internally to help with page regeneration.","google":"UA-31894853-1"} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n17 Apr 2013. [IntelliJ IDEA](#intellij-idea-ide) IDE plugin.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [idea-oo-plugin](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224)\r\n(mirror: [idea-oo-plugin.jar])
\r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
\r\nFor other project types:
\r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
\r\nTested on IDEA Commutity Edition 12.1.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
\r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
\r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css index 4189751..2bd468a 100644 --- a/stylesheets/stylesheet.css +++ b/stylesheets/stylesheet.css @@ -1,5 +1,5 @@ /******************************************************************************* -Slate Theme for Github Pages +Slate Theme for GitHub Pages by Jason Costello, @jsncostello *******************************************************************************/ From 5ec72e6bb65820789b47557b7947187a85ed0eb4 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Tue, 16 Apr 2013 16:17:43 -0700 Subject: [PATCH 04/32] Create gh-pages branch via GitHub --- index.html | 7 ++++--- params.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index f469e1b..2e23e9d 100644 --- a/index.html +++ b/index.html @@ -60,7 +60,7 @@

Java Operator Overloading

News

-

17 Apr 2013. IntelliJ IDEA IDE plugin.

+

17 Apr 2013. IntelliJ IDEA IDE plugin.

26 Nov 2012. Version 0.2 released. New feature: Implicit type conversion via static #valueOf method.

@@ -84,7 +84,7 @@

Netbeans IDE

Tested on 7.2.1

-IntelliJ IDEA IDE

+ IntelliJ IDEA IDE
  1. Install idea-oo-plugin @@ -107,7 +107,8 @@

    Demo at examples/compile.sh

    -

    Maven

    +

    + Maven

    Look at javac-oo-mvndemo/pom.xml

    diff --git a/params.json b/params.json index 202e145..7e99cd7 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n17 Apr 2013. [IntelliJ IDEA](#intellij-idea-ide) IDE plugin.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [idea-oo-plugin](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224)\r\n(mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA Commutity Edition 12.1.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [idea-oo-plugin](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224)\r\n(mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA Commutity Edition 12.1.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From e2a4037afc334f15b98ea84292c72cac7c07fee1 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Tue, 16 Apr 2013 16:23:39 -0700 Subject: [PATCH 05/32] Create gh-pages branch via GitHub --- index.html | 9 ++++++--- params.json | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 2e23e9d..4068561 100644 --- a/index.html +++ b/index.html @@ -83,8 +83,10 @@

    Netbeans IDE

  2. Enable "Annotation Processing in Editor" (Project Properties -> Build -> Compiling).

Tested on 7.2.1

+

+

- IntelliJ IDEA IDE

+IntelliJ IDEA IDE
  1. Install idea-oo-plugin @@ -107,8 +109,9 @@

    Demo at examples/compile.sh

    -

    - Maven

    +

    + +

    Maven

    Look at javac-oo-mvndemo/pom.xml

    diff --git a/params.json b/params.json index 7e99cd7..60c8c49 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [idea-oo-plugin](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224)\r\n(mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA Commutity Edition 12.1.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [idea-oo-plugin](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224)\r\n(mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA Commutity Edition 12.1.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 73efc2e6df26e72d22d47075cc70433dee432dc3 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Wed, 17 Apr 2013 06:59:35 -0700 Subject: [PATCH 06/32] Create gh-pages branch via GitHub --- index.html | 9 ++++----- params.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index 4068561..16bf989 100644 --- a/index.html +++ b/index.html @@ -60,7 +60,7 @@

    Java Operator Overloading

    News

    -

    17 Apr 2013. IntelliJ IDEA IDE plugin.

    +

    17 Apr 2013. IntelliJ IDEA IDE plugin.

    26 Nov 2012. Version 0.2 released. New feature: Implicit type conversion via static #valueOf method.

    @@ -83,14 +83,13 @@

    Netbeans IDE

  2. Enable "Annotation Processing in Editor" (Project Properties -> Build -> Compiling).

Tested on 7.2.1

-

+

IntelliJ IDEA IDE

    -
  1. Install idea-oo-plugin -(mirror: idea-oo-plugin.jar)
    +
  2. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
    For Maven projects installation is done. IDEA should setup everything according to pom.xml.
    For other project types:
  3. @@ -109,7 +108,7 @@

    Demo at examples/compile.sh

    -

    +

    Maven

    diff --git a/params.json b/params.json index 60c8c49..8f14457 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [idea-oo-plugin](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224)\r\n(mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA Commutity Edition 12.1.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n17 Apr 2013. [IntelliJ IDEA](#intellij-idea-ide) IDE plugin.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA Commutity Edition 12.1.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 8c140a51b26f1e5207df2b2f87ca46cb6f85edf8 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Wed, 17 Apr 2013 07:03:36 -0700 Subject: [PATCH 07/32] Create gh-pages branch via GitHub --- index.html | 6 +++--- params.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 16bf989..1027e8f 100644 --- a/index.html +++ b/index.html @@ -60,7 +60,7 @@

    Java Operator Overloading

    News

    -

    17 Apr 2013. IntelliJ IDEA IDE plugin.

    +

    17 Apr 2013. IntelliJ IDEA IDE plugin.

    26 Nov 2012. Version 0.2 released. New feature: Implicit type conversion via static #valueOf method.

    @@ -83,7 +83,7 @@

    Netbeans IDE

  4. Enable "Annotation Processing in Editor" (Project Properties -> Build -> Compiling).

Tested on 7.2.1

-

+

IntelliJ IDEA IDE

@@ -108,7 +108,7 @@

Demo at examples/compile.sh

-

+

Maven

diff --git a/params.json b/params.json index 8f14457..1a7d3c9 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n17 Apr 2013. [IntelliJ IDEA](#intellij-idea-ide) IDE plugin.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
\r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
\r\nFor other project types:
\r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
\r\nTested on IDEA Commutity Edition 12.1.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
\r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
\r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
\r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
\r\nFor other project types:
\r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
\r\nTested on IDEA Commutity Edition 12.1.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n
\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
\r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
\r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 7689891983db351b2d98ed7e64bf16c03e9cc16b Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Mon, 13 May 2013 21:46:10 -0700 Subject: [PATCH 08/32] Create gh-pages branch via GitHub --- index.html | 8 +++++--- params.json | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 1027e8f..5135671 100644 --- a/index.html +++ b/index.html @@ -60,7 +60,9 @@

Java Operator Overloading

News

-

17 Apr 2013. IntelliJ IDEA IDE plugin.

+

14 May 2013. IntelliJ IDEA IDE plugin v0.2.1 with IDEA Ultimate Edition support.

+ +

17 Apr 2013. IntelliJ IDEA IDE plugin v0.2.

26 Nov 2012. Version 0.2 released. New feature: Implicit type conversion via static #valueOf method.

@@ -89,7 +91,7 @@

IntelliJ IDEA IDE

    -
  1. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
    +
  2. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
    For Maven projects installation is done. IDEA should setup everything according to pom.xml.
    For other project types:
  3. @@ -98,7 +100,7 @@

    Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing
  4. Make sure you use javac compiler in Settings -> Compiler -> Use compiler.
    -Tested on IDEA Commutity Edition 12.1.1
  5. +Tested on IDEA 12.1.3 Community and Ultimate Editions.

javac, ant, etc

Just add javac-oo-plugin.jar to classpath:

diff --git a/params.json b/params.json index 1a7d3c9..3970c17 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
\r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
\r\nFor other project types:
\r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
\r\nTested on IDEA Commutity Edition 12.1.1\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n
\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
\r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
\r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n
\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
\r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
\r\nFor other project types:
\r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
\r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n
\r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
\r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
\r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 684f4460a764b11647a13d23824471f12533f86d Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Thu, 23 May 2013 11:12:24 -0700 Subject: [PATCH 09/32] Create gh-pages branch via GitHub --- index.html | 18 +++++++++++++++++- params.json | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 5135671..468f123 100644 --- a/index.html +++ b/index.html @@ -101,7 +101,23 @@

  • Make sure you use javac compiler in Settings -> Compiler -> Use compiler.
    Tested on IDEA 12.1.3 Community and Ultimate Editions.
  • -

    javac, ant, etc

    +

    Android project in IDEA 12

    + +

    Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

    + +

    Android Studio (IDEA 13) / Gradle

    + +

    add to build.gradle:

    + +
    repositories {
    +    maven { url 'http://amelentev.github.io/mvnrepo/' }
    +}
    +dependencies {
    +    compile 'java-oo:javac-oo-plugin:0.2'
    +}
    +
    + +

    javac, ant, etc

    Just add javac-oo-plugin.jar to classpath:

    diff --git a/params.json b/params.json index 3970c17..611e8b0 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n
    \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.2'\r\n}\r\n```\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From a4af9be1231c5b3584d59265692cff220b0a7827 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sun, 8 Sep 2013 10:35:56 -0700 Subject: [PATCH 10/32] Create gh-pages branch via GitHub --- index.html | 65 +++++++++++++++++++++++++------------- params.json | 2 +- stylesheets/stylesheet.css | 4 --- 3 files changed, 44 insertions(+), 27 deletions(-) diff --git a/index.html b/index.html index 468f123..be4d2a4 100644 --- a/index.html +++ b/index.html @@ -31,7 +31,8 @@

    Java Operator Overloading

    -

    Java Operator Overloading

    +

    +Java Operator Overloading

    Implementation of (Scala-like) Operator Overloading for Java language. Works with standard JavaC compiler, Netbeans IDE, Eclipse IDE, IntelliJ IDEA IDE and any build tools.

    @@ -58,7 +59,19 @@

    Java Operator Overloading

    }
    -

    News

    +

    +Versions

    + +
    Javac/Netbeans: 0.2
    +Eclipse:        0.3
    +IntelliJ IDEA:  0.2.1
    +
    + +

    +News

    + +

    8 Sep 2013. Eclipse plugin version 0.3 released. +Removed copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.

    14 May 2013. IntelliJ IDEA IDE plugin v0.2.1 with IDEA Ultimate Edition support.

    @@ -66,29 +79,42 @@

    News

    26 Nov 2012. Version 0.2 released. New feature: Implicit type conversion via static #valueOf method.

    -

    Installation

    +

    +Installation

    -Eclipse IDE update site

    +javac, ant, etc + +

    Just add javac-oo-plugin.jar to classpath:

    -

    Click in menu: Help - Install New Software. Enter in "Work with" field:

    +
    javac -cp javac-oo-plugin.jar <sources>
    +
    + +

    Demo at examples/compile.sh

    + +

    +Eclipse IDE update site

    + +

    Click in menu: Help - Install New Software. Enter in Work with field:

    http://amelentev.github.io/eclipse.jdt-oo-site/
     
    -

    Tested on 4.2.1

    +

    Tested on Eclipse Standard 4.3. Should work with older versions.

    -

    Netbeans IDE

    +

    +Netbeans IDE +

    1. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
    2. -
    3. Enable "Annotation Processing in Editor" (Project Properties -> Build -> Compiling).
    4. +
    5. Enable "Annotation Processing in Editor": Project Properties -> Build -> Compiling.

    Tested on 7.2.1

    -IntelliJ IDEA IDE

    +IntelliJ IDEA IDE
    1. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
      @@ -101,11 +127,13 @@

    2. Make sure you use javac compiler in Settings -> Compiler -> Use compiler.
      Tested on IDEA 12.1.3 Community and Ultimate Editions.
    3. -

    Android project in IDEA 12

    +

    +Android project in IDEA 12

    Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

    -

    Android Studio (IDEA 13) / Gradle

    +

    +Android Studio (IDEA 13) / Gradle

    add to build.gradle:

    @@ -117,22 +145,15 @@

    Android Studio (IDEA 13) / Gradle

    }
    -

    javac, ant, etc

    - -

    Just add javac-oo-plugin.jar to classpath:

    - -
    javac -cp javac-oo-plugin.jar <sources>
    -
    - -

    Demo at examples/compile.sh

    -

    -

    Maven

    +

    +Maven

    Look at javac-oo-mvndemo/pom.xml

    -

    Details

    +

    +Details

    Supported operators (operator to method map):

    diff --git a/params.json b/params.json index 611e8b0..ad1f833 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n\r\n# News #\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: Help - Install New Software. Enter in \"Work with\" field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on 4.2.1\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\" (Project Properties -> Build -> Compiling).\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.2'\r\n}\r\n```\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavac/Netbeans: 0.2\r\n\tEclipse: 0.3\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3. Should work with older versions.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
    \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.2'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css index 2bd468a..b48c8a8 100644 --- a/stylesheets/stylesheet.css +++ b/stylesheets/stylesheet.css @@ -47,10 +47,6 @@ table { border-spacing: 0; } -a:focus { - outline: none; -} - /******************************************************************************* Theme Styles *******************************************************************************/ From 4938b428d650ab79f04a6e54cf2fcdd822007f66 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Thu, 2 Jan 2014 20:58:43 -0800 Subject: [PATCH 11/32] Create gh-pages branch via GitHub --- index.html | 15 +++++++++------ params.json | 2 +- stylesheets/stylesheet.css | 36 ++++++++++++++++-------------------- 3 files changed, 26 insertions(+), 27 deletions(-) diff --git a/index.html b/index.html index be4d2a4..c75431c 100644 --- a/index.html +++ b/index.html @@ -39,7 +39,7 @@

    Example (see other examples at examples/ dir):

    -
    import java.math.*;
    +
    import java.math.*;
     import java.util.*;
     public class Test {
         public static void main(String[] args) {
    @@ -62,7 +62,7 @@ 

    Versions

    -
    Javac/Netbeans: 0.2
    +
    Javac/Netbeans: 0.3
     Eclipse:        0.3
     IntelliJ IDEA:  0.2.1
     
    @@ -70,6 +70,9 @@

    News

    +

    3 Jan 2014. JavaC plugin version 0.3 released. +Fixed #10 javac: binary operator adds erroneous cast on 1st operand.

    +

    8 Sep 2013. Eclipse plugin version 0.3 released. Removed copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.

    @@ -85,7 +88,7 @@

    javac, ant, etc

    -

    Just add javac-oo-plugin.jar to classpath:

    +

    Just add javac-oo-plugin.jar to classpath:

    javac -cp javac-oo-plugin.jar <sources>
     
    @@ -107,7 +110,7 @@

      -
    1. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
    2. +
    3. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
    4. Enable "Annotation Processing in Editor": Project Properties -> Build -> Compiling.

    Tested on 7.2.1

    @@ -121,7 +124,7 @@

    For Maven projects installation is done. IDEA should setup everything according to pom.xml.
    For other project types:
    -
  • Add javac-oo-plugin.jar as compile or processor library.
  • +
  • Add javac-oo-plugin.jar as compile or processor library.
  • Enable Annotation Processing: Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing
  • @@ -130,7 +133,7 @@

    Android project in IDEA 12

    -

    Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

    +

    Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

    Android Studio (IDEA 13) / Gradle

    diff --git a/params.json b/params.json index ad1f833..877289f 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavac/Netbeans: 0.2\r\n\tEclipse: 0.3\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3. Should work with older versions.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.2'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.2/javac-oo-plugin-0.2.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavac/Netbeans: 0.3\r\n\tEclipse: 0.3\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3. Should work with older versions.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
    \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.2'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.3/javac-oo-plugin-0.3.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css index b48c8a8..7a08b01 100644 --- a/stylesheets/stylesheet.css +++ b/stylesheets/stylesheet.css @@ -39,9 +39,6 @@ ol, ul { list-style: none; } -blockquote, q { -} - table { border-collapse: collapse; border-spacing: 0; @@ -121,14 +118,11 @@ a { -ms-transition: text-shadow 0.5s ease; } -#main_content a:hover { - color: #0069ba; - text-shadow: #0090ff 0px 0px 2px; -} +a:hover, a:focus {text-decoration: underline;} -footer a:hover { - color: #43adff; - text-shadow: #0090ff 0px 0px 2px; +footer a { + color: #F2F2F2; + text-decoration: underline; } em { @@ -154,6 +148,15 @@ img { -ms-box-shadow: 0 0 5px #ebebeb; } +p img { + display: inline; + margin: 0; + padding: 0; + vertical-align: middle; + text-align: center; + border: none; +} + pre, code { width: 100%; color: #222; @@ -165,9 +168,6 @@ pre, code { border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; - - - } pre { @@ -195,16 +195,17 @@ blockquote { border-left: 3px solid #bbb; } + ul, ol, dl { margin-bottom: 15px } -ul li { +ul { list-style: inside; padding-left: 20px; } -ol li { +ol { list-style: decimal inside; padding-left: 20px; } @@ -253,11 +254,6 @@ form { padding: 20px; } -img { - width: 100%; - max-width: 100%; -} - /******************************************************************************* Full-Width Styles *******************************************************************************/ From af425578cfb59014180139c964cc3e7353b32e47 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sat, 11 Jan 2014 13:32:39 -0800 Subject: [PATCH 12/32] Create gh-pages branch via GitHub --- index.html | 22 +++++++++++++--------- params.json | 2 +- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/index.html b/index.html index c75431c..1bd8e5d 100644 --- a/index.html +++ b/index.html @@ -62,14 +62,18 @@

    Versions

    -
    Javac/Netbeans: 0.3
    -Eclipse:        0.3
    +
    Javac/Netbeans: 0.4
    +Eclipse:        0.4
     IntelliJ IDEA:  0.2.1
     

    News

    +

    12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released. +Now operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate. +Fixed javac plugin bug with index-set OO.

    +

    3 Jan 2014. JavaC plugin version 0.3 released. Fixed #10 javac: binary operator adds erroneous cast on 1st operand.

    @@ -88,7 +92,7 @@

    javac, ant, etc

    -

    Just add javac-oo-plugin.jar to classpath:

    +

    Just add javac-oo-plugin.jar to classpath:

    javac -cp javac-oo-plugin.jar <sources>
     
    @@ -103,14 +107,14 @@

    http://amelentev.github.io/eclipse.jdt-oo-site/
     
    -

    Tested on Eclipse Standard 4.3. Should work with older versions.

    +

    Tested on Eclipse Standard 4.3.1. Should work with older versions.

    Netbeans IDE

      -
    1. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
    2. +
    3. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
    4. Enable "Annotation Processing in Editor": Project Properties -> Build -> Compiling.

    Tested on 7.2.1

    @@ -124,16 +128,16 @@

    For Maven projects installation is done. IDEA should setup everything according to pom.xml.
    For other project types:
    -
  • Add javac-oo-plugin.jar as compile or processor library.
  • +
  • Add javac-oo-plugin.jar as compile or processor library.
  • Enable Annotation Processing: Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing
  • -
  • Make sure you use javac compiler in Settings -> Compiler -> Use compiler.
    +
  • Make sure you use javac compiler in Settings -> Java Compiler -> Use compiler.
    Tested on IDEA 12.1.3 Community and Ultimate Editions.
  • Android project in IDEA 12

    -

    Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

    +

    Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

    Android Studio (IDEA 13) / Gradle

    @@ -144,7 +148,7 @@

    maven { url 'http://amelentev.github.io/mvnrepo/' } } dependencies { - compile 'java-oo:javac-oo-plugin:0.2' + compile 'java-oo:javac-oo-plugin:0.4' }

    diff --git a/params.json b/params.json index 877289f..b7d2251 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavac/Netbeans: 0.3\r\n\tEclipse: 0.3\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3. Should work with older versions.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.2'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.3/javac-oo-plugin-0.3.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavac/Netbeans: 0.4\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older versions.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
    \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.3/javac-oo-plugin-0.4.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 0ec2ebc2816d70e0b8895f206fbce750c5684f85 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sun, 2 Feb 2014 13:39:24 -0800 Subject: [PATCH 13/32] Create gh-pages branch via GitHub --- index.html | 80 ++++++++++++++++++++++++++++------------------------- params.json | 2 +- 2 files changed, 44 insertions(+), 38 deletions(-) diff --git a/index.html b/index.html index 1bd8e5d..6c7a668 100644 --- a/index.html +++ b/index.html @@ -34,7 +34,8 @@

    Java Operator Overloading

    Java Operator Overloading

    -

    Implementation of (Scala-like) Operator Overloading for Java language. +

    Java-OO is a modular extension (plugin) to Java compilers and IDEs +for (Scala-like) Operator Overloading support. Works with standard JavaC compiler, Netbeans IDE, Eclipse IDE, IntelliJ IDEA IDE and any build tools.

    Example (see other examples at examples/ dir):

    @@ -42,20 +43,22 @@

    import java.math.*;
     import java.util.*;
     public class Test {
    -    public static void main(String[] args) {
    -        BigInteger  a = BigInteger.valueOf(1), // without OO
    -                b = 2, // with OO
    -
    -                c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO
    -                c2 = -a + b*b + b/a; // with OO
    -
    -        if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println("impossible"); // without OO
    -        if (c1<c2 || c1>c2) System.out.println("impossible"); // with OO
    -
    -        HashMap<String, String> map = new HashMap<>();
    -        if (!map.containsKey("qwe")) map.put("qwe", "asd"); // without OO
    -        if (map["qwe"]==null) map["qwe"] = "asd"; // with OO
    -    }
    +  public static void main(String[] args) {
    +    BigInteger a = BigInteger.valueOf(1), // without OO
    +               b = 2, // with OO
    +
    +    c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO
    +    c2 = -a + b*b + b/a; // with OO
    +
    +    if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO
    +      System.out.println("impossible");
    +    if (c1<c2 || c1>c2) // with OO
    +      System.out.println("impossible");
    +
    +    HashMap<String, String> map = new HashMap<>();
    +    if (!map.containsKey("qwe")) map.put("qwe", map.get("asd")); // without OO
    +    if (map["qwe"]==null) map["qwe"] = map["asd"]; // with OO
    +  }
     }
     
    @@ -84,7 +87,7 @@

    17 Apr 2013. IntelliJ IDEA IDE plugin v0.2.

    -

    26 Nov 2012. Version 0.2 released. New feature: Implicit type conversion via static #valueOf method.

    +

    26 Nov 2012. Version 0.2 released. New feature: Assignment operator overloading via static #valueOf method.

    Installation

    @@ -107,7 +110,7 @@

    http://amelentev.github.io/eclipse.jdt-oo-site/
     
    -

    Tested on Eclipse Standard 4.3.1. Should work with older versions.

    +

    Tested on Eclipse Standard 4.3.1. Should work with older/newer versions too.

    Netbeans IDE @@ -162,34 +165,34 @@

    Details

    -

    Supported operators (operator to method map):

    +

    Supported operators (operator to method name map):

    binary:

    -
    | OPERATOR | METHOD    |
    -------------------------
    -| +        | add       |
    -| -        | subtract  |
    -| *        | multiply  |
    -| /        | divide    |
    -| %        | remainder |
    -| &        | and       |
    -| |        | or        |
    -| ^        | xor       |
    -| <<       | shiftLeft |
    -| >>       | shiftRight|
    +
    | OPERATOR | METHOD NAME|
    +-------------------------
    +| +        | add        |
    +| -        | subtract   |
    +| *        | multiply   |
    +| /        | divide     |
    +| %        | remainder  |
    +| &        | and        |
    +| |        | or         |
    +| ^        | xor        |
    +| <<       | shiftLeft  |
    +| >>       | shiftRight |
     

    unary:

    -
    | - | negate |
    -| ~ | not    |
    +
    | -        | negate     |
    +| ~        | not        |
     

    comparison:

    | <, <=, >, >= | compareTo  | example: `a < b` <=> `a.compareTo(b)<0`
    -`==` and `!=` is not overloadable because it will break things
    +`==` and `!=` are not overloadable because it will break things
     

    index:

    @@ -198,11 +201,14 @@

    | []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`

    -

    Implicit type conversion:

    +

    assignment:

    + +
    | var = expr | var = VarClass.valueOf(expr) |
    +
    -

    if expression has type ExpressionType and there are static method RequredType RequredType#valueOf(ExpressionType)
    -then expression can be assigned to RequredType. -example:
    BigInteger a = 1 translates to BigInteger a = BigInteger.valueOf(1)

    +

    if expr is not assignable to var and var is an instance of VarClass and expr has type ExprType and there are static method VarClass#valueOf(ExprType)
    +then var = expr is transformed to var = VarClass.valueOf(expr). +example:
    BigInteger a = 1 is transformed to BigInteger a = BigInteger.valueOf(1)

    These methods exists in many java classes (example: BigInteger, BigDecimal) so you can use operators on them "out of the box". Or you can add these methods to your classes to use OO (see examples/Vector.java).

    diff --git a/params.json b/params.json index b7d2251..f5b6813 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nImplementation of ([Scala-like]) [Operator Overloading] for Java language.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n\tpublic static void main(String[] args) {\r\n\t\tBigInteger a = BigInteger.valueOf(1), // without OO\r\n\t\t\t\tb = 2, // with OO\r\n\r\n\t\t\t\tc1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n\t\t\t\tc2 = -a + b*b + b/a; // with OO\r\n\r\n\t\tif (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) System.out.println(\"impossible\"); // without OO\r\n\t\tif (c1c2) System.out.println(\"impossible\"); // with OO\r\n\r\n\t\tHashMap map = new HashMap<>();\r\n\t\tif (!map.containsKey(\"qwe\")) map.put(\"qwe\", \"asd\"); // without OO\r\n\t\tif (map[\"qwe\"]==null) map[\"qwe\"] = \"asd\"; // with OO\r\n\t}\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavac/Netbeans: 0.4\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Implicit type conversion](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older versions.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD |\r\n\t------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight|\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` is not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nImplicit type conversion:\r\n\r\nif _expression_ has type _ExpressionType_ and there are static method _RequredType RequredType#valueOf(ExpressionType)_
    \r\nthen _expression_ can be assigned to _RequredType_.\r\nexample:
    \r\n`BigInteger a = 1` translates to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.3/javac-oo-plugin-0.4.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavac/Netbeans: 0.4\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
    \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.3/javac-oo-plugin-0.4.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 1384de6c2f621d95ceb33958dd06eecf39c6737c Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sun, 2 Feb 2014 15:32:53 -0800 Subject: [PATCH 14/32] Create gh-pages branch via GitHub --- index.html | 14 +++++++++----- params.json | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index 6c7a668..a7af944 100644 --- a/index.html +++ b/index.html @@ -65,7 +65,8 @@

    Versions

    -
    Javac/Netbeans: 0.4
    +
    JavaC/Netbeans: 0.4
    +JavaC8:         0.1
     Eclipse:        0.4
     IntelliJ IDEA:  0.2.1
     
    @@ -73,6 +74,9 @@

    News

    +

    3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released. +It has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.

    +

    12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released. Now operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate. Fixed javac plugin bug with index-set OO.

    @@ -95,7 +99,7 @@

    javac, ant, etc

    -

    Just add javac-oo-plugin.jar to classpath:

    +

    Just add to classpath: javac-oo-plugin.jar for JDK7 or javac8-oo-plugin.jar for JDK8.

    javac -cp javac-oo-plugin.jar <sources>
     
    @@ -117,7 +121,7 @@

      -
    1. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
    2. +
    3. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
    4. Enable "Annotation Processing in Editor": Project Properties -> Build -> Compiling.

    Tested on 7.2.1

    @@ -131,7 +135,7 @@

    For Maven projects installation is done. IDEA should setup everything according to pom.xml.
    For other project types:
    -
  • Add javac-oo-plugin.jar as compile or processor library.
  • +
  • Add javac-oo-plugin.jar as compile or processor library.
  • Enable Annotation Processing: Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing
  • @@ -140,7 +144,7 @@

    Android project in IDEA 12

    -

    Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

    +

    Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

    Android Studio (IDEA 13) / Gradle

    diff --git a/params.json b/params.json index f5b6813..575e42a 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavac/Netbeans: 0.4\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add [javac-oo-plugin.jar] to classpath:\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.3/javac-oo-plugin-0.4.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.4\r\n\tJavaC8: 0.1\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
    \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.4/javac-oo-plugin-0.4.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.1/javac8-oo-plugin-0.1.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 50e3161fe92adf5960109a90f159d2c8ba8e8edb Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Thu, 1 May 2014 01:14:52 +0300 Subject: [PATCH 15/32] Create gh-pages branch via GitHub --- index.html | 10 +++++++++- params.json | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index a7af944..da34a58 100644 --- a/index.html +++ b/index.html @@ -74,6 +74,8 @@

    News

    +

    30 April 2014. IJPLA published a paper about Java-OO.

    +

    3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released. It has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.

    @@ -169,7 +171,8 @@

    Details

    -

    Supported operators (operator to method name map):

    +

    Read the paper to learn more. +Supported operators (operator to method name map):

    binary:

    @@ -216,6 +219,11 @@

    These methods exists in many java classes (example: BigInteger, BigDecimal) so you can use operators on them "out of the box". Or you can add these methods to your classes to use OO (see examples/Vector.java).

    + +

    +Publications

    + +

    "Java Modular Extension for Operator Overloading", IJPLA, April 2014.

    diff --git a/params.json b/params.json index 575e42a..520d8b5 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.4\r\n\tJavaC8: 0.1\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.4/javac-oo-plugin-0.4.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.1/javac8-oo-plugin-0.1.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.4\r\n\tJavaC8: 0.1\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
    \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.4/javac-oo-plugin-0.4.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.1/javac8-oo-plugin-0.1.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 2038c5eacaef897daaf6c1550bd67e06a5739e82 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Fri, 23 May 2014 16:22:06 +0300 Subject: [PATCH 16/32] Create gh-pages branch via GitHub --- index.html | 12 ++++++++---- params.json | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index da34a58..f865de1 100644 --- a/index.html +++ b/index.html @@ -68,12 +68,14 @@

    JavaC/Netbeans: 0.4
     JavaC8:         0.1
     Eclipse:        0.4
    -IntelliJ IDEA:  0.2.1
    +IntelliJ IDEA:  0.3
     

    News

    +

    23 May 2014. IntelliJ IDEA plugin v0.3 released. Bugfix for IDEA 13 Ultimate.

    +

    30 April 2014. IJPLA published a paper about Java-OO.

    3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released. @@ -109,7 +111,8 @@

    Demo at examples/compile.sh

    -Eclipse IDE update site

    + +Eclipse IDE update site

    Click in menu: Help - Install New Software. Enter in Work with field:

    @@ -130,10 +133,11 @@

    -IntelliJ IDEA IDE

    + +IntelliJ IDEA IDE
      -
    1. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
      +
    2. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
      For Maven projects installation is done. IDEA should setup everything according to pom.xml.
      For other project types:
    3. diff --git a/params.json b/params.json index 520d8b5..d70f9a9 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.4\r\n\tJavaC8: 0.1\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.2.1\r\n\r\n# News #\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      \r\nFor other project types:
      \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
      \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
      \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
      \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
      \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.4/javac-oo-plugin-0.4.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.1/javac8-oo-plugin-0.1.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.2.1.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.4\r\n\tJavaC8: 0.1\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.3\r\n\r\n# News #\r\n23 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3 released. Bugfix for IDEA 13 Ultimate.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
      \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      \r\nFor other project types:
      \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
      \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
      \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
      \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
      \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.4/javac-oo-plugin-0.4.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.1/javac8-oo-plugin-0.1.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.3.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From d2ae7469623eb5367e03686afe206763e3208e48 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sat, 24 May 2014 23:46:15 +0300 Subject: [PATCH 17/32] Create gh-pages branch via GitHub --- index.html | 6 +++--- params.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index f865de1..b801e36 100644 --- a/index.html +++ b/index.html @@ -68,13 +68,13 @@

      JavaC/Netbeans: 0.4
       JavaC8:         0.1
       Eclipse:        0.4
      -IntelliJ IDEA:  0.3
      +IntelliJ IDEA:  0.3.1
       

      News

      -

      23 May 2014. IntelliJ IDEA plugin v0.3 released. Bugfix for IDEA 13 Ultimate.

      +

      24 May 2014. IntelliJ IDEA plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.

      30 April 2014. IJPLA published a paper about Java-OO.

      @@ -137,7 +137,7 @@

      IntelliJ IDEA IDE

        -
      1. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
        +
      2. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
        For Maven projects installation is done. IDEA should setup everything according to pom.xml.
        For other project types:
      3. diff --git a/params.json b/params.json index d70f9a9..dd8be24 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.4\r\n\tJavaC8: 0.1\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.3\r\n\r\n# News #\r\n23 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3 released. Bugfix for IDEA 13 Ultimate.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
        \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
        \r\nFor other project types:
        \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
        \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
        \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
        \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
        \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.4/javac-oo-plugin-0.4.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.1/javac8-oo-plugin-0.1.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.3.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.4\r\n\tJavaC8: 0.1\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.3.1\r\n\r\n# News #\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
        \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
        \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
        \r\nFor other project types:
        \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
        \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
        \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
        \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
        \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.4/javac-oo-plugin-0.4.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.1/javac8-oo-plugin-0.1.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.3.1.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 16e4606ddb949504928dfb4864d0ff37e3ab6ec4 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sat, 31 May 2014 14:26:53 +0300 Subject: [PATCH 18/32] Create gh-pages branch via GitHub --- index.html | 6 ++++-- params.json | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index b801e36..4289927 100644 --- a/index.html +++ b/index.html @@ -66,7 +66,7 @@

        Versions

        JavaC/Netbeans: 0.4
        -JavaC8:         0.1
        +JavaC8:         0.1.1
         Eclipse:        0.4
         IntelliJ IDEA:  0.3.1
         
        @@ -74,6 +74,8 @@

        News

        +

        31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.

        +

        24 May 2014. IntelliJ IDEA plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.

        30 April 2014. IJPLA published a paper about Java-OO.

        @@ -103,7 +105,7 @@

        javac, ant, etc

        -

        Just add to classpath: javac-oo-plugin.jar for JDK7 or javac8-oo-plugin.jar for JDK8.

        +

        Just add to classpath: javac-oo-plugin.jar for JDK7 or javac8-oo-plugin.jar for JDK8.

        javac -cp javac-oo-plugin.jar <sources>
         
        diff --git a/params.json b/params.json index dd8be24..1edb38e 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.4\r\n\tJavaC8: 0.1\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.3.1\r\n\r\n# News #\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
        \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
        \r\nFor other project types:
        \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
        \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
        \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
        \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
        \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.4/javac-oo-plugin-0.4.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.1/javac8-oo-plugin-0.1.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.3.1.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.4\r\n\tJavaC8: 0.1.1\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.3.1\r\n\r\n# News #\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
        \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
        \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
        \r\nFor other project types:
        \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
        \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
        \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
        \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
        \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.4/javac-oo-plugin-0.4.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.1.1/javac8-oo-plugin-0.1.1.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.3.1.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 2b5c9f4bc80fd8b8aca53800a9d5935a5a31254d Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Tue, 2 Dec 2014 02:44:15 +0300 Subject: [PATCH 19/32] Create gh-pages branch via GitHub --- images/bg_hr.png | Bin 943 -> 78 bytes images/blacktocat.png | Bin 1428 -> 463 bytes images/icon_download.png | Bin 1162 -> 216 bytes images/sprite_download.png | Bin 16799 -> 14832 bytes index.html | 114 +++++++++++++++++++++---------------- params.json | 2 +- stylesheets/stylesheet.css | 6 +- 7 files changed, 69 insertions(+), 53 deletions(-) diff --git a/images/bg_hr.png b/images/bg_hr.png index 7973bd69888c7e10ccad1111d555ceabb7cd99b6..514aee5056a320b059a4b92fc31385b01f3fd707 100644 GIT binary patch delta 48 zcmZ3_?l(b2OVrcFF+}2Wa)N}>gF8Em|2xh|Ji*9t_b}UK{lKHU8Gyjk)z4*}Q$iB} D!}1bm literal 943 zcmaJ=O^ee&7!FiK7FWCot{@Ck@nrMW&tx0B-6VAbrk1u~FTzffX&bu9#AIsIdef8t z!QZfdz=K}>3m(LO;6X3qN}Y6@>cJYA%)G<%Jn!ec>9im1@7>wsIBwrMF}iHO!q%;8 zSJ@xEd~(FL18NRvkBsOXMVM>4WQc*~qcQGc17IjxRnj!O_^B1gan0x#EWT48PK->5B2>mI;LIx zC*FSw$Nfc!g)WZCEOJ=mM)}lLsOk|$ltg_(&ax_YCWMlBLPDVT%D_gB7o_$YZ`-OB z#1sV%whRq21>W;qwN$N?OUGtQQe;JvOsQrna;+v+j8dth=*?orHHb6waX>S!yXCgT zo!oR3{E&GzaOAzfZYv@_Sf{LdyJInS>TS60&R9%yCs$y>2x(*gYIJtRrYAja$Ceq} z!N&oc_K1!3-Ft`U>`CM;quEbB4KG%!MovB*9_3!QzFhqHwrbwK|Doo-y>auDJNSP6 T=d)j*_4El@X4^PFK7I8YBT*xD diff --git a/images/blacktocat.png b/images/blacktocat.png index 6e264fe57a2e35a2855405ac7d4102c3f6ddcdae..e160053a5bfc1f1891c5df1a04244b46132ed91c 100644 GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGW&u7Su0Z-f>EL7Xu|Ghaf+azI z!3+%h6VAUEXmGf1FkfMPe?Wo5`wP+x42q#I?$ zCZCHu*mLc{mj@jVb0qJie|tLrXx$RV*xy|DA2&%h)(GsqVy%>MraS!Shm183{#@F! zV^vm_@$^Y{GUuI-cUN0({K+A*SMX|j#GmyK98SEwQl?dz*($XqK|j>0;H2RlD{}=; zx7!XPy5}bEXEt-@-@Ngc#+nIgOgm!u=S(u>E&hLN(cd}Wb8P2o&P?9><1zE8l8pz9 zg==?S&3yIdUhdL~<_mg1Y!?@vTUiymeaGcy&vRcbOG}I6uI`9fxn}VP_6h8=I%b0Z Rq=4be;OXk;vd$@?2>`O9@hboT literal 1428 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=eg`=5?o13Glvx}*rp{t>#shg3DvyriZv5}jZ ztD`wguSMv>2~2MaLa!4}y`ZF!TL84#CABECEH%ZgC_h&L>}9J=EN(GzcCm0X zaRr%YgxxI=y(w7S0@dq`Q?EYIG5Vm0MT%&c5HR(CnDAr^T6f1avxRvmvnsN+?-j}Z~1)Zr#rqzrt`edmo44*B<0=C4>mrxHF6$p zVws~UocMfeI`gB8pYMLYTzA87`NOI2w2B*JM5L`^AkN4AFQu&S+6ULTPjv;vzl4& z-eaK_F|D4~l3hzBSF~icNT@MID=v+_X`vpuvf=8+S(|^vlRdHe0<)v-^wiVR3w=TQ)uFA9F z>vmqNJ1l4vO?l#Hnr?CVIdIGmdC%?ZSp zh_JMU7Aaa9h+pBcbR!Tm(<(bz0`X5QmV!cqpVoOf0nJiSC^e|it3l8UwG`xgCwjI- qn1OgZ5N8fVGl+AvF*phaB>({Q6ZHXLR?Z{<0000c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=$skw`#i#v$3O_v5UEZv#YC% zp@9obuSMv>2~2MaLa!N4y`ZF!TL84#CABECEH%ZgC_h&L>}9J=+-@<(X&zK> z3U0TU;MA)Rbc{YIVv!;mCIn19ASOK70y*%6pPC0u?M1+3t#h8?05D7Z^K@|xskoK& z=l_5E!ww8;ZH!Ed#V+%1n6Rkg{=V8A2QTsNE8^> zvHmCezoM^A29GnE>#ih4F*YzTGbm`! V-6~#faTQcLc)I$ztaD0e0svxT7`_9bS zGy9om)?RBR!dAHWW*_tXQwl(6h1e+?gcKD^-i|3EJ{A>98ln+WM4G`Q(TpQ08lg@2W*dNu z`wYPkQ--~aVh%`9umIwmOAssxCj(K#qJbKu1jKBGuJcgoT)`Z%KUv(qL&Y z3y1_T0eMM+&Nn~;i3=0ykkF%{Lz_tHu>lwNX+rFb8u>t-ytpedYYWnXjSvk$02B~T z7G^GFkqC68e!k$ipY|MkCZ5fLZa5L#JG+=IIiVICEVZOKSQ=x4K?~Mkl1VSZ43Vwa ztwf#hwg@suwF71(6p?hVG3tDtBt#Ne4|Kp3(J5xfuQsf~&gSr=*)r6~VipyM!M$;8v9!#)AH0>_ z2R@Ck4hX4-eg>k@E)@hSSn@0Qec7IR&|)b*)_^HT{`(N$|IinR^P|8FOM*zhxSAOV zkPHBAjZ=VXZ3g(7^L-fxu|h5E7b%Q@*$82o+rNGr>u>%H8g_xb%=`uebAG?~{`;99 z0SyVT!h}~2jIDueDdyPea8=9#an=&M5vgBdyt&~}W-GAlcG4E%n6;P>`Z&hM|jc^`lL!Cy)72-uVqJ2V()3b9LMR7vYr;%+vK zn{yJFs~P>wJ+q}2TZ9=)?AX79(Ci`gnIO={iOzr51ZU*_lH?k>FSM)d*tZX}C$S{N z&f`5SW)mwQB*p-(>N0dV;m_VY9MjoD7}!xwb?XoPQB8Mh1hx0m--fq zV^UmN*m(!vIFP%C8rcKXxe__Ht3R7%n{Qs=oQvMcf%iPjKY#l;+C(&TASsvmz$n5F11t3hQsh!r49h@3 zB==QgYb|1AYnF`v{QWS~!&A&=h$xokxbS*BWU~dY9(vSaMj_^~1S})6#@-wDuF`~5;{av=AoFc;wAS5yx*!rwnbf_7wezoIym~d3>V%}eFNv%Z ztgU0e{H)Q+Zr<{d`?>PYKa=x7)Q~(+kKZef1StYQoO=Q#*|Q}8@0Uz?gU{LHsGg&t ztacaxVPuFZ^XCr@iPdlT`PY8T;eQ=2-rI;Bo-D4gVd$ZaBHDO0Lza2#r>7l_J5Bxs(5YImGG^PpBR8(VZb3teC+#M4@5phAMG~&9CUcnW&e}#5=FLCaR3L~)O zqG={j6J8SBPctd`WjFr}x?udd*^`9PI@>Q?U$m7ZiTb#H>TB4HobqodiTB@!QTYxV zZM2kjNzAu6u=QYyLA{#&{W9RIhH3$$$F<`L)8*%a5 z@1vRQ#S)an)d>hdeP0q}sV2RS3-cz{pUKV1g1n}Zth%lC9&SFjw`D8IuIJUptxmqS zoqG=l?%t235k`Y7_*3Fs39aA>qL358*a;#5qy;8ieA5SLmrlg*Yy2L(cORl7j8Obn z0HHv$sdpwRxOc_|8$3sO>a&%Lc2p$gF?C!0obp6YpM`!7<86Mb%a{+G!0X8Sa9@PXSVy8eXpH66fQK~I4qFuh| z1pL0nuV};T_g?}$iqK+oY+H|2Igf@K8uI_w2v`bWPPoN>usLRuU!*|kO@vI|>~OA^ zZd_7w)Th=4gRrT`abm$qwnUBUlUtA3xTICDtE~O{oNjq@A#b)@>}JfL4?v5h5wY*l z5J@NyJ<(nPuwf$v2);2kMr1!bDZBX$P@@bs4E@~ zrQ3E-qF_pjE@n$DtLLupNXQ@z5!`zp>RrVlxta~dcW6&~&EIo_ghf$vM#5LaHdBwfY>j{;Q z+j-f|TyV{|`RM~cZ?((4d+;ZZ5W3@xD$Ic zj_HqPQP?29ZK#b40Bv4X2IJW)BZwmTUONF+4?XSlohvbYCc_!i8~bDs$~sb1AUsE< z24TS5KpKzc*sDkQ4u@}a4mZKCt4y|>)0~r-!WjPO*CqWFN~DTO3S-cVb0P-5@0I&= z3G}V^S;T83>y_&>QS9?_fB71HHdO}5{0nvk1k8Y9J9g}I4-BcMg&g#c`S(eX;d3O$1AnAN_fAt>GgNK>5uN*EtpQLrH!-mSBq=DbJvzYAOn} zKA$){+-iM9X}ieT2b@xcGn4w-xL-SfL*qNb7a`I*t94#nv$qV`+sMe&t3E0C2 zP9Iz=%X6B)A(ST#pg_t1fB@X!h`8ZG%_laUY}uVNpWSw`0gg~)B=<8YKs-FYBYg9` z3jiC3zTvb8g8T}kqm|$TDcC-kQt3efd4H>U{rfb(;c6o`UpFkvSf>bpCyD#DyA%L? zyF=kS!WXF%d};jXlG7%8)(aQo+z+|<9=UzXm`?%JuGZ#JCxl67nrS2G^#Zcoo5?nS zmYp6&(!5|+#A<1B3=on=*&X3~T=xwKB)l#yKi;pFyl( zaTg;)<2%B)0KWXPC7vr)p-cT#Ul_V)fptN(;OJZBHAurZaUAM|$Ru=vsDRmPcpk?B zdIRgI)8X5rI*iQw$c(Wx4SBaiBnZ4zvc$Q1&dPB3j_~b8e7hjqVb|s0jk?y3@w*2D zGLwdan3`r{>E}UGp4fF>oO9t$j5fL|3C}C=szjP6lqteWLww^nG`=HzGko%}umb<1XtbgIH7JUXb{&=t6l9(4rQWbQ3;LF; zC(knU^C47TXP~jtp64!g@_+Y~hR@KeJ#Wi4I&_SLs1Th(l0$3kSj8?gvtM+F!gqvk z8uNGRI6l^7!MBB_%!jVUf=)`$vsB0S<*lb7zwpM;%B$#{1#X+lut~)qDO2F(dBw?^ zTBY5hPMc(7r=fdf4&#K43nm8O8@I#aJHofupDr+uG$K-UnOV<1Oe~D^Y_)q};@1ZX zstxxr2^i8P@|@R*+FjCd;q_Xk#}@vqF?CD^e+SpIm?U|~<~k@H$y>(O#GsD{-x0pO z8egz<-XlBrWlRyMWC=RKhG zSu~FgBPsLPA>o#7)I2iu;hx5w=aZrF9pRfrEV>oh4jbh_x0!Xi*2BilwTmQM@Sz#f z@w`^rVAu{V4rpfU?Kj(Qe&aW2L!yZl8QGvrumzOm8mpZ zhpdB%=4m+cKLk9C@IB%9X5sMOxlr;U7HmT^Y?pUq_g0YpEt|N(dTgzohkVOcnfbi} zobIdm-COhg1c=&+-lTVp#WqjmL270<)N%ENSvYzS6|bB=-zfyHpU zjO%kPX<=xxhAK5!8iNF_c1EyuDxe#KRPn)W9yCzq@x5(6hu+6`V4P4b}ok-`Y!q@>!jG~WD-01TkJ3e-0K!?qxoSU ze_}aB8A9zfyOyzU>rtG!#9|N5&p!S%%B*Hz$0w1GWRWNBrg1yMcNly_Nqh$@w2r=D z7#G8h{(>aU%fG5Yud}w0v}<$OKr5yVW1qi6@X3~}B#akX|+g&t06TbVa z)#2-J3t`9X*7?6@^Fg3BCcNtGs*@g&`#3+gl2Jq0E20smglCw~CX8FZb;;oEUsLS7s1Hi}Vg>p-2l|Nr%U} z3Z(_#Is*!}uAAmpP!z1ePP4Pkv^!OBt?byfKQi;_)&5WRXrnX_Oz3L&MOK8~(aiti zTTD8}qI*YDT(<=HQcfnmirxPm-?WqJ7vBTo(BtsDv4apEz6R*RF*I+uvH^kPxkhI} zoEBaqK#4SrJh`5?d5*VSJriztX>jHJUyoTLE;qfQI{xi%oE1Vii_8^1|9A)=d0hyX ztPWw@!4Tf|#SjkuWY%`$^1>xWDD!TkGTV?-(hlL!u88kk#COG_;rreW50voP zcg*zb`Y#V|4I5rD6K;Ba2(Mlj`ht3Y`umkxf^t6lt_sZC9t+{pHKCt(-OXaA#YG$c z=&ftR+g}#KfevsD{Wc(`_dOlLC$9~zeBp@@?s;%_ete6pqgKRVhECuVW@Y7tcQB#4 z4C7|u4|P6#@6>i3YMVJjxPCBQ>_*@7W+StF<3y~Q3}N#{!Id>N5%Txnmt!<4^FXP; z^2;Gy^QmA(zlJU_AyfxeM2?L`W8O#Fjm)!n_`=*keJH5!SGUKVGiJh_zk)OIct^~$ z3i&GKdtlcL{0qg#ZKL0PGnAPa!?a;u+z0z^oA7tVSFkG?MXKk-v<5{vL;(22RL>3k zTVTCU;3+oHud}fHIHZ@)cSLj^gOqv45A(jW#{|ZJV7ue#z2Xj6$%4D?mK}YDp;BLT z@wD%xAr&bYgllpX4NOw?fW&uvGF?o3-+kMT@WF2eN?7-?*=R>U8LqEc`(xjYdH!xT zT=N;?Qz7MlYw4koT;w@_g=xvFwjN89w%%K%r?D-uU++yyDv zwbmcN36(P6`sK&_FM^FmOixb-%I6-hoz5rJ5q>Vr&d!Fd+h&jLA@2=nrvdopSyMQ4 zOefIDhz^-2s~toe0#fIr@iTh)pL@+tgXU9~mSJ8QVR9YIQ_j7Nc3Yo0zW1M7g9=$`S@cnjB+Uc42_YhGUJ(OhM08y8)qt0fu_dM11uk)tJz^0 z+iwitIpw-*YU4H7(X_Rb?vmgu^1iDolMHNm%_kq{fD0A6dM0~p?=3GA^WZ#~*eW^l z%}if}2og;Vm>(>o0pB8z_#V3^hdA1TlJFF#kS49v0?N;YT*FtfN>Zyf~ldvQ&hQQw;S!r?XB>dS4;=W_Gg1e60oHbM!dAtV~$~d|6j}?ZvC=?*Ew@SFV-87ky%-vTqgk`?ZJq1%sBvH%x|Z%@ z<7?&1zc~~B^m`#Zu^-q~39)KyRe{Yh7r#M1Mul(>IE+x{7`lt;rs+OzR;JH6ou)>A zyX%8EK&s4~JO2H#`S8s{?`W4{yQmKXqa3<=QXS>!^=xccBMb9J8)T4!3CCnt{W!E~ z@ofHQB#xx(8GN=;85jm5|aLS69C?f=JCry5a?Ar@)`NF@fY78~E& zAFtSvk()E7s`^s-U=CmagdsJux7ySwTiO5CZ$8_1yve|C|7VM@5{H9-6TW$x)gKr0 z$ANP>PUtPag;gRvs&jOqFmC{Kojq13p3=M!7Px|=4*RxxCk zMO)CBEMwmMb+yr@i+TknnMB6)1x^(>qgWjuM#b{-=lbH=PFbWIMGI>gso zbbR;E#z7*9n#3r}%RhN$xahofeZ_wEsmJ(2^b@XM_d8qcQo8-bkwTU|v+lJ1%W>n~ z2SEU}>2exh1lY?lJ}vXIb#l~v_;wD?4QFz2hFFqS4h#QNlVwkW#Y8~KFshh3+U2hm ztRrDMQ%eUJY~$Nw++UZ_Qg3|T|N7L+g)L&kZ`~g>45+Jh@_t3=9_m$bQYf=XdZe63 zr(Zbub`LWaOpJ!c7xpnsiHCNtj!eC}Z+cK}|3TMII$}8s#kY*lmvW|^CoOecXm%hG zp;%xK6GL=TxD00atIpeQi2y1CX}r~&@urJ%lc||U{;wYx+x{0+Y>{|BK9_A+b(V;L ztzYBU(;b|J(MF?N}bz zDViWMsKe{jB+z@Nb456`r^|30Ob+0wVNrhhO_L6DqF+q-!lZcl$9v(zOJ3TKjyw|) z+5g|OI-%_N@zqt62AUkLR%GR}Y7{Im-5%>!ll;rJ%K~}N2N37AyCkq+1MPC0`3#nQ z2%uF=CbLL4^V!g!&j5BE4DGgcv}(`?2}Y-b-5M)EMxkA1g+L*{ ztsu9wuk3v+2x=d?L%JEG;~RHV(@QHVjGuA{l;(mD&?;ki`NgS$XZkEZ_u54Sd9o^}j4> zSr8pOalzC1&wi9ZXQfd|*yw&FK^-YRn|{uuBV|Q?u)-{ffQQ=LXjg2k!?nv#$1o+# z5`^q_F96>WzIl4ES~;oI&}aigx5v>C2^1P{L}cqU{NRiCg|l9^CE7~sW5F%0tOotv zZ_Kz=+sK|L8+b$85bXjn>E)EOtiz%WXqkl#JpZH~D_TE)ReEEtlt;pWtzV9rdNmOM zzXClTmMjn{>#tV8=DqOfKi(JCUixrU$SZ*_@R$3`^9q(aDU18|JlR^;)lhtS4e?zW z@tt(=Wxa`SdjjSApHaz*N{TO!#kS^ipzIR(#+j2}!AL;dPobMpSFvc1#G$#0&+3ct zbxK0B0}f41@oCuo$bqoy2Y(*cUiR}Ll*{7pN!;>(SX+fnj`gN-d1BvOeF>PaR*two zF=ZN{3ws_fnKBdR5l18KJ0YC2KA;XL!$?)uSiCMvSw`K6CA?$*Ga{c!?EbNXPMrSP z9xLK~c7}WZ@+-0IP9L*mERXw@Qp21;4+xBrX1@X4U}t9$#$I@O%igf(@lVGI_P_8v zzC}#pL}|35j48AR<69z?6(-{b->k;B<=~q}e4o0H_@WHKH?J_wQg!f7bXPEhuFv&*_ni)qguEY4Bc} z?nK>d#6WhoGQ9~bT~y3h1V)p?8_=+T6ki^Dlg))z+tW#Dgb6G2LSte9y zbmJ5@#!$j8{e>*L8WN82%t@%6Xec&Fz$$Z;sJQOD1DGE1w^qytyjxJ_SYBmAkHjuj zP*f44yy_7l6+4%M6&hldI-P@ET$>&_z^0c}Z7o9=C#WG>!zi{4*)N7rp&7F;3iM_G zz8V!Aq|Bn!bv`>cJrM`>(<8F=x`_6DOscUWhUTmV*FlsZvWCi^iu!-b4vx6Yll`82k2C`1b-=%xmci* zA1~V_Mv2GkG+~swbs|_=@XccCVq2$N>hx13V?zS1U{BU*+_JTHpF=QSDGJ@I6}elN zlVK|+NV$lt+@43l6M4ZBxpr7(Cbr9BnyQt0`~)j>R%6?#@7WRjS*I6;LMM{i+!|J1 zzG>5@pF8u+Gd~db&n(L_!I$M(mi7I_@$vEgmVP6CYqcs}$36td2o&Ubj(z55-ZDxj z$~|}8b=M!na*sNST`qy?Q3_6C_emD^%@E%5?}1&nfmzN zefQlrr)g?U5vJtDU_&R8l$inc)UsvEPP^{9>pr@2<;q_ofY{c+go%j>fMz3I8Wgd= zV~fN_;BRQaJzKVHdH2?>TQTc=u4a`?!Cz!Bd0cSo*`Px_A8{V5nR)rt)YO{In>XJY z@%_b!4xn_oLj%+A11MsO;t5&Uvpj-fu2@t>n z&^#unDi%g?e;10Uib`iSN$wKW9t=5#LT6dN9@Lhv0c+c@fN~Z28BNDwA0Rv zxSW3y@#Sx)#(P~HPyH88*Uyr^K%7H91M$t}{9u#Abpl11k)o+F6T7_&f(RKvz_YBu zg!4>ZK5i%1tXcD#xce}QuX~7|!+u3r98qOXjWQ?3(Q1h;%B@PvnsIen8S%YzY;5ep zlZY?Nn~3;gg^VqNZxNPA1YcrIo4--1lO|I`%#39O{G4;nIdA>?_3u69lv6fa+e{h4 zfT($_EoYA{qhQN!ardK-K6>-6UAul9^XKt=itM!=Sk~8IKk%5+z))^C-Nbef-V-Ul z(B**x2cGM8yPev;PuYXGW|7$6qRb$Q6)~N9?z!h)aOIU(zAxhYmPNo9HummE9(m-W zyLa#25zloEzIs2!j=v!di!bx2@R}mN(7^Xu;>%l|S!~#_;Z+geP0N=re{Fo` z#ljbLIs28beB~{dUV7#Gvq3j4}2Kz{?EE|E9B+vwbpz#`PaW7k8mV@&9&%pcfTIMyj zr~;2N(WtmySTY4@8+)Y>0BnC6|0EKEnuK zAK%YJd_NvSI8IcIlJ{1oKqI+qrsfOkVi^wG$f`HQ7ycifeDcYy3v^l&>j<8I{`v0$S&Z=Y z@r_ZR8!o^6^3OjJr6!9OFc#lL6k0-cRAwZAZ6A=yKAhTb763hGE6Or>9J`o)aT}Kfi?DIEd@_y~+5%WXMcIrEqHJVjeD&(ph!*Trb|&}@_A~H($p~K; zU*;c+(XLCdykL!4Dx}d6>#gy0Fld@~b1V6WF>H$?!n>$6>BKN%;F z`Pe-YJOHcgp!TG_r#dJE5J{O$^Ru34SlpM5%LcG)+Ku%!PBdBCFo_*(krBaoeLe_Z zJ};j$I!lVLuPkB%|CHj}tMQ%W=q8dzJjOIs=M8bMh_Y|rzW<0f+8zt;{}vw#DT&94 zFcq~D!%+Qg9E8y>OYK38kCp_Ni9*2Pl<6C)_R^on{qDD+&fdiVfyQ&ct^zDtCuTV(QRcV85v3%?cd-Q0}t2;b9B zKYb(cec*uyz7Un0BbseX7;P~#bi`_M@RS)g?=N6XY61kZp(R$;lTVo39K5wC4eJ@wRfYv;+_ z2;#dk;`@j3nuXyz!uK?Uj3d6YJ9qBf#vahd_*)J`w`_DHnhRIsVQq*9i4SgLh&1LY z%wrlwyC7bpjsP3PeZ#d|!yBxQigtfw5PLoE$z;K1vU4b$a2m_BjXfEedLuA&rhTf( zF&@o~SC8-=4&Ue;ZmRv1F~QY$3QcOqLdJO`TN&%s8qf$b_Zzz!YmX5CdmcdQY%(?! z8^i+1-zCOrLu>jhEU$4yP1%LNS=&|aIVBVGk=#M6c+JEJ-=XkDS|%Ts44w~7R*Cjg zCl@d{rxQLbl;hnbR@1v}>p>{y$nASOlAjMwUk# z&t-`3D_T zIWx*EW$uO4SB{4k%$z6r`gW>ezLRg9FTRh}cDI$^cD=0{On47oh%i0OuvEr;FDsMD zvZY)d?ge~?Oo;w=d!GoL;g=5qD-d24&{zZJ~ z&_NZKhdF}R-+9xD|N3BfKCj_m9!o1(*2*mFgS8_MCg5bshgqz)VZM{^nq$p#Jld`j zicA350RdJCDI1W#ZP|hcOFr&3I0@m6WAUF}j+FxDnhLvoz}R-=xp8=Z!r9D>4ArEr( z%660QKk{WAIs=Vk&5GdcNL*Ax>?|M3*6OR04<|WXmEwe_x4Ok8UvGmqgI-VG1O3oL z!3RhldI#6ihWSpuXXE?2%5ld8#~YQP+y^ah;j`-ip5#BCgFXKE2)zh_66}+YoiNlo zOomA}>VTsS9l_z}=jUi!?$^XQ(C$}!C*Qq&pF?~fS2=tcGJvy2$ed3X<%*7%gM33L zJx7^`bymM36qO!`pb4L$E?doF{g;9s?saSr^YQt79Qfq>yL`{sTd0&{B!`w~*_t=F z-(B$MpXKRTjZP(p3#dy&g^SD7F&Og%#;wPf3@>3UAcYx4%Py~^{&7~6N^&iHf{ zJad^xw>Fo_cZl!4HXEH3-d5$<+J#QvUc>Mp@1egbBnrMvZBSrC%>aw@f&-z9Pn=4T zOdR+*T{){hXvh^TgnISG(}bhhmvfPdZ>%g%zC(OZ@a@;3spV)5MBMpL1N5)%P`}FX z;-EPbW(aiS(kpen%(YnD=XtW82uQgf&(9`EypGD82D@ih=sqUj_k8OQ&E$puyEPPQ zu#@=~H%&U2Y)}G7m<(CW@p!|sP}TV|XZf~se;eA#%2R3k5XK+9G{aW8g6}^0zUMpa zp`+#(VKD$_t3<`O$_Sb8)AQZvRrr>(P2PBemBJ@H|DBrxXYw89 zdp%7#ZbFZmU)26=z@>njaH=I+yLkjqP8tYK#=MUqj9vz1B=$A$4{}dxFYqud4!fu2 zh$_eAJIq&BKhQL!9EU5WwD!*LGt)y*JkAM-8+5V;uvTi-GjZgAX5J3fXO%G=GUtSq zGjQg868JYBlkXVcdw5|*b-o5RU|;?g`FF@1Dy57JH{J$;@C~IGVR%Iei8mXwAY&HexcDsUj+RQV=-A8Om zH+9S*LN1^Fo4@cK`qlg+aB{E1RXJcr2wo+|>H_tV_n zIA|93m;_f6F?W4eiV>eRb|)lr>zecZR~0aOpwNc|03`HJ@QcBm&*uf0&1O&Im-{+? z8^3{-LWFC*e?Fj%(Maz~o?h0gz>r5hB($EfXi?8$C6f#~>SOl@4c|A0+VOalUau#> ze!tf;s?`&yG|_fL=eYlkWHw(pZa>AZ;+gz1?*510M_wiLKP@>BWg3>ko5l*Z(;ZVX z++zg*c3z&HzN`YoO{D&oC#HGZX*-+EN;;huhS6x`)z9T}0*uFF0SbkJ0PFSID+`4} zaz3ABI2_99bh0LB_k{!J@0@VX^YwatIlpM1<)qPQcx_!Q7Wmz3b1W7U;BvX(cPvZ1 z=d@Za0amM(L?RKdZlzMOgWn62!RF)M>)--Q_(p< zI2@L0wJPm)+x{PrrnU`e+&zF{1-yda&sXw`~=dZk9v3k4u=DN zqujX1#Fa`V9l)rAzsFsli!|*MEe8m{%H7=x-Jl*T0>U5CsWzceDN+V`=D{H*abT zRfJfDYm)dt>V^}_FAj~f|n6xsyX$FDhRN0 z+}c01%H6wn5$2mcS7yp89J<7SMoPb0bkWVnL7DUqg60<Q6s%YB*Qd-DdadVkRP)`~nr zqGZyR*REYtKg?=Xd!^>L_TooNq)%G5hy)s{A^PFi2fkp^WloO7_lqGMPr*q!wY%{6 zbXdva(>(LTkMi>3vA`Lmld%MVNp))R;K2jjaByN#ji4lTe=OWioK90PMbmQlVBJ9N z(oZ@>VH^g&NwqL~`H#XELF7B+2FV-f%9ShNyRbL7L4=PF1Uj;8>++o+Xra(y|&u z1|$CeTeohd4I(_{5?tIw@<938z{7_RTlkV@ZMfTxMwtx7Q%Pm=69Qz?^MIxRe1Gkn zkMCsYVR|>1z67L?&xX-f_V-p{j1X$KgOTu$P7jkCeI z(db8Rr3u(oajlpC3ci|w@CAd}%J|9^Cn_N&AWiMd?B&>Kj!jPcUC}>Q)VI-+9+p(v^3ur2m+q4$qY(ISdyzZ4`pv` z5={-$l{3EG51m-HvL}5~_)0TN14~n@Vttr~xf@!Q@oI^~DV~lt z&&{S}_@%d3iD@&l&F=$vi*6*Ho1Yo->l)vs`0Dk(@B-hV8hWaJp&RPp)vH%eOXSth zvPvax`TQ0{} z$5E{Q{{H@!XsrH9a_9!#P`k;?moJ~5IB{aT{Ex4MZ|QUFc;&&G=@CeL!O>R?!K}ue z9bcZStvo!(j~`Eb^&1l3#r2~Y?{$2WcI3^&=g0|k@WUM6pOnS`p$5l34L#<$3v>~j zz2dt1p*YvSDFben!N+Q=5-y=J&(ocg1fN1Xz61Aj|Earp)ECB&c8{Dqd2)2@*s+}M zXqz`rb@@1^z;+44PT|knno*$WgzAoSfrmF7(-=>DH zY3VMWtCI}?=fZr(K&x~i)Ll}JCWofjY$$9~QGBk#3^suehIf`a`=TNgag{$7gE|k{mg}?%i7$7{`0-61Xi*;PW?P WAV6(21mh6^0000P=aVwVK4enmt9g0IKZo#d%7nk4^w@~b(uifvD z``(=MFknn*JH!$I|dc`^>cnF`118Y;wG!- z_Q~1W&C?8M1t(?cY;HxR=xAnRrDFqjVB?XVPEmW7Xl zg^(qUggBL`m+-3rM=LioDlf+`P9R|~F`ECdEBt!??=}Yw)qjY%If&8xr&D?=>QvIs zKr1Rfc1|`6PJT`*elB({9$ot`v%N~NfxMmE%)Ho~K(zmD zLBu>zoJ}(rGZvvZq7h0XXh{f z9Yu9pXE$e%t+NZ2^d~+l6*CJvr+?S~A+Mq$tmp)CGjp=AQj`&+d9}c9XJ;wQ&CM;t zBP+;Tt70}MZ%2E#K>`3(=RTj4U-+kfyU+w*uuI2yk3)lau%kk05?ukdhi;`oX(Qd(Zie|+td0lF!B(ZgdEn&k}~O&w^8 z>?^KhaE^p%K#G;csY3icy5ewJ$krr-^7@+4EHpGa#pDKa+M{G(JcMAk2y@ zAD4bbfGckvCZKO$D4eZfeFQD1|6@RV6@1dY-!HZip7n9y6F|ybPIQY;UY&domoq^$ znnL$MBL=odWST@B_g;kDOd=z~0LQJ9!zQ&qM$$&IgTXny;Z0Zk5gd0m95{LV4p;Lg z8+Ex$iXYRl_%@~x>ANvXi<@~XA@B=8i|)%}?buwZ+!X?a3Y8yVnUE0Qeo6SMC8Aws z%oTAu9Q2kmVDg4^0;oI}|4=6MK~4_-4;-B-+44!cYW9I=iC^WT=PRN#<7uR2G;gX^m~zA)LhEquX)c?AGh2jr8?EN4OcXVV z;~SPr3a2dln~!dJXklj=nG><%dSc7eo7xW;2yhgKuf<^15ZR7 zUEEA3kE=8gb=FL$&gf{@0wF=_TtZ_KqgzL6nv?JpI3FKMS`Li6q^-nGqp!0~jK z&Hlv0L(YyC>gE8|dPLM;-oe__-3N@b41Zvsb@qTCV*MRwZe!@b(0!)+0&c{o0{S%1 zW01+)!2R+C-F1r-pJk9*5|M`f2tOqLoQ4Z)CPSKaQ67mtJB zf~Z+z98vUy`wi2tN08e*72TJeg@}!3N6n#{y$O;{GJyaQd8jpTz`TBE2V)#ocq31~ z!DHeRdw(Lais)#Qn#!mvBe^;hCsL}okh7kvm@s!By?Ue6nbAR#le#~q-&gU@yQ!Pi zv}<+lsMJe!7w*Fk(j+S<-1mdt#8d3U%X}W3q|sxS?#FO{$Wv`+`VYS@0I!j(gykt8 zjVk0ac&Y+o3M9%E3piX?>%J3K(71|O$W&KS^usI8M>t51StG2gAwVis9RKVT#W@=p zzJ=9< z;LTNs0;5@f?4#MJA-0s3Z3|8M^gxY*RS{C2Ich`|AIFCJ%5YKaz#L^PFm_E zo@OVpm!ESz&S%FC3((q#q%aX0S)Gb?CWjz+8Y1Qk+VMd=v|K}y)zfqhVpgiFUYT|u ztHh3AgN83Je|(%tq*5S%yaM0 z{Oq1@nou^|=X^xJi6muVAJQ?)Seg`OiQXXs(8zc>zH(f=gfjHho)iq!#Ob5-xlH=T zXY5(nYBg?p9;7*c?LGENVQX$tnlCE0rs7&8(whLtMvpJ==b0~bqFxvaalqIOJqv^$ zE=|+JotCVREY1M|92FXGuzq5Xot#~}zPuQH{3-4ihzBwMc>a77x%vlk7hp$WEBt`Q zInf=VkVI#DR)MsphZBrTlvNzbJoxTizvNhs;#G&|7v3QW=z#S_?QfR?C)7?>zI$x5*H38H#y94`6XM#84uhuOkiOWQ zDVnfMs~SPqvCfv>jk3u*P%fi|%~$W)P7v(j^rZ{f=OBPz;os`U?KK6=k^MjvMoOHNL|+Nb%; zclDh8@cko=nq5^CZTCpwkDb`;g?vcADHCwl<8TkR{V?Qr=M5Ssq9}=5X=|sKRC0G4ckVGg}HQV?XrymN&Do2h;IK~_{KX&+$s-$N2_}FP>iT+i^4k5D zFQw1VyvSB_LTs)yu6GOHu?EZD$$h(buHxg|vKDxbKb1ygl>P4J7|Y?Y9$ev2#&){G zc3h2Ff2k!uMI;cDnQ5@amRLc7rJ!~97sQKv=f8})fexlU7>l|oZ5uAf1XW%ww0m|634J{>o#6qtVhg@F<0bw6E51KgTaTFqu@IE0_M^Ba zYEwd}WOD{Fz48tS&lJsbWEe362uJf58?onE&1f}B$=@!P^7kIP9S$QKtIMcXd*I=q zFiZ{w=J&`c&IF$CX1Dm3#nck)UgzQ)ZDIM&Y^~hF;`)eHCRyzlpgnGfK9PWmHK{h!zv9q1d@0}x4S*i^C%VWe*H6@e zEE|?ysUR17UXhCnXMfU^mGTmN1;!K<=e$#cjd1=h)j)r2?Pc0#8ya$EYf z;7p+hK4$@C)wX^s|BQ8ga`ZYHspd_i7R}MWz?_9DuScwbf;r4X|NiQT;Hk#p>J~rw z`n+RTH%jGei%y@iJ?QSq#hsVwBW6?ZVzsDmlF*^Pzq8+E-C0J4@34vRcM8v{Ip7#g z<0^@3Lyh_mmDfym-^-|d26f+U<3fDT#ZJer#ufLeAsgJ`9{gLG{XF4SSpt$q7Sp6d z8M9c{vpobO3|}s%OZ=}i>R}-mC;7j_Z^Nt>4j~-YK64mHzv*U2MTa*1rXs-I`b*7r zHlSt4W`)L@t+5-&1VJdf;3Ty|^G@o^n2ALR8YWF^ah<8{p}o{N=DlAT|E3PEf}TG6K(UssQ!AV z+IsY54dHEp#RYlRn97Qk=-@|7d3N~s@#LNp*`5|XKd%4}Hm86i&Sr%}_}#ZVfDaX< z2E5UeMnZk9zj}oTfp~t^Z;3&pCP1We6nh;Jcvdzyg7KUt+=|H-{njmTWvUr_{SARt z-5r2Ld9Ky9bthe0pl)Z0798I1Iq+9yLQp1!Ew*LZNLLfXmz{@{F&zrv%dQt=m-xtq z5gIgU%xBP)xktKf9#2MrTF9@ktDxJeHp97G<#7hP$7sPypSUaDg1ALK$?lJ+Pg(oE zFK0S+-wUrvb7HU~aJ^typ@W7Zjy`mwu+-?%_g{x4S*eD|p;j1Tq)6ZsvJ2j|4_COK zHoxnL^8K)cx?y%9OI*(L7FqE;o;FYJz%PKk%&P;8ze7Qt&nGX|?9v#g+j_YJr$7~n z;gV;?grS0{3I%YxRk<>rx_=Yb{+RE2Waxw@6h%wVHAMdsb52gNF=r6nTBCCwphO~N z@Mh+Zcf>kV+%t1*f;wH5sYpRaMWZ%fU!^9?L*%BPQ5cylYReTsW*$=?Z1}J71ST`J z(VhuMzf_5o7)OxKR95uo%pF?px2Dg&#dMmVW!-BlemiohUTb7cpk%*@%x&3XE3So3 zl9a0~hwsyvnJc%8}Sip)Hp5#)Z@9p@v}@_$Y;&d z3EA=_6+P8$%@!hi;$zq9@L74{gP+p-g<;S4_`rx2Z4yP&#m#5!j1MC#JrN{qp^5qq z-kF(LK0=~g^5!J?M4s=tVsIhS+gU>3r(da6vq|Ea^*ipd(#^`<_W8f`nUi#P0<@|l zi_}Xyh$z2FCI?(>Ox?ls5sjh3GY6=LMcgqT@7`O*&_^m7j-R5#&l;1j`wp-AhYPX1 zMz4=pYg1=bQIIDhtw^5HJ|+8+`l1_pp2?!{mxpht&4_}4o4e(WQ6pT#uZVPh862vs$WG<6TVIe9t@IE(eAyZwx)`XtHzNB7NbYwl2LpGnr#d)Lx;bk-{>=U- zU^!(JY&%(Dbi^r}e)4#--M@eGSr@1(IPoYa@ zQZS%&Ft?SsqUMU1d!xXlMzaO?x2U($vF*_Tf7RQE&Wv{VDYr!4Ldd&&y@f8#Isr`l zBI7zEy?X+s8A_{#dbRuu##U6-IuJ|0-_nRGvr8XZkv0E>Axl_BxIV@GRhzU=3xmgs z7t2l$j_1Xg@2zmvU&sIE?o^5k>4UEDqfk19y_0(>Rkb#F)1Jmo!R~V~c%3_`fRKf( z+*Z!J-^LKc>qLWyK;4{(Tu9(M| zj(>DYad4l8iFxUy5`4{s&9@|ti6?Cf@Axp|D{AiaTuX4bw^{ugD+*7f+svF5Z^0+C|OQkI|aCZ*P0X=FFkmao_pq{_;VPBPE6e zck-Q?JoTm&@NadJ#cvMsWLl1BxE#ECyG@Ca{MwSE5L;#`EK?#83??D&H6xPdLyZ}w z)dyS%BGlp1Xd_f`rwKYu{1$57!lm_1hM{&?PeS*=Y9WcpqNJexcN>|#7>`_k5PJIpc`w||MFXxqmUsl>$$BbJVDG@rqV)ExE z%du4Kr;M29@Ym=ajtM|!XJ_~HhuWu~_a+4>`M}yv4=oor7?vOl7{bzzUp=yxSCXSd z15j+1Q7zXu;+Ckx8O+M6b|ZV-WXe!ZgBvfWP=}FyZMl>xwgTg!r!FHlm$1)Y%N`^5 z0&nZOi6ieTR8D7{pIJrPV3&$Cd0Q8o$3UwvPV{O8(K#;t#1v~RQ+-ME@`ehk*~LiL zA69D(Q;7DJ0uA=JqARQo1PatUjv}`RHYQu^FHSaR`PUdDniOGVKgJqtgx9*Yn8Xc_ z{}!%<<3F@pggPsviG6_GRzLHyLKJz>s$p2L07$be z&(~)r5{`K{^36{C`{EYM;7#mU?_1J43GnIU<8mea)Wk+-PvHH$NUV@!Yu#eaeZKlE zLt0k+%QQ1+AY<^415M5McZeO6D%fP8n>WI&8*M}BWKL_Og92AenwbUUJ5wH$U2#12 zi3|){``@`{bKcLuP^*cdg|r0byEJm3?+zmLilbT4QjjXti4y3bQHLsubE{3r^~(!` zI5dBTPhoDOYb>4E&tO`m9iO8wWa?KpI>&Gr4Z)RoqK*#1T`me(W379?05R`w@L_BG zm)%vcZtI!TD)J($`y%zl+E0t+Wnxl(V9fJqXk0p)g(Z#~+d9fd_+bAnZAfjUio6M3 z9zH(y<}On?01oy$sObo{-)*nF>0RnYz*-YtySuf}LNRfhn9YP!@ORI+obUEvb>Gnv zymotjN&!lr{EFl`9^R~vB`wqG^n|>o0D7bTEqIIw<1>q(VuD^UjDIlczW+6x?pgQI z{zrZ$R|VDi@*55&$E~;F&m=YXzjUs8IovMl09lGibV@s`OuNO5J11moe2c4Z9A9=j z_oTa+B!ntFIAEDv9BqR+g5C!$R^e#S==J=D*$VS_Pidd^_x%}Jl(Owb=w0FNCzOKA zu(V(HD?*x@$u|-dtpha3zBZ>j8lLj4oNgFwGuOUQKW6wgu-0swT!cGMpK1G9ui`efd3=bH2EG z5srbg|eJ)iXLY z;pmT{w`-`?hDl~7Bxag#M`amvO%5D~h5T+_`0oM&zmwGB+qVieS)uuB*Cxz;8XqqH z?p~&UF!eJ;ipju(^?V*Y{BSC;GUju&Tu-{UeKXr>4}UCiv>-O3GKHMS^kD6~@)hU! zaD5-y_`%aSlg+I4{p19`=pNEAnNd|&bKN$k`L8hk1n z6|fvsu3oB_dh3{0sr@~9`n^7%JhY`iGHQpv;Dk`&4K-g#POWc`TLH74wuQCnG^A>E zY#!_Q<8kwsE&`$^_eCG~j(iH0Hjg=B23Qnya>A9F1UO1;;_E4}`2lJC58;Ep6M!ya z*(7)aszaDPyw!Gyd0d4OsfAhTXWMxC%gnQiOs{5y`t8ZLx0Zz5j?<^bNK6~}2F$12 zjp{5E!y@cOW|!0r^iSY7D8!S)uZySZEo;wzURrcD`KGKawPPjKW%2F?j-~QCB={%2 z<#ahZUIGqp=%zr$j&L10Wqd*|+P;~|t-!SNee#W&`o9}BcO_g+qDQVJ1|+=Gu4u_S zkb~QYBuwM96*l7=1jgZ%&w5?AMg`H*?eyAE;)feeR593cCw2H(_yTRXqxPyp8(_`o zukwSVCavjLyd{4|k!4AC;)f_Z9*KtK{=3 zhRuH#@IwI<8EZ-3vsULfuupib_sC5>jPCaAuF6eGK$9ln%te;-y z`q|~jFps&h@#g~K^@!ZDpL1V@klE)B@aDN(_$Fa~Pp36z;rJfA2zMPa;4-Ywa3Mza z$7#&mMr|r$cQ2Lx!k;mnx4U&8&$uD3vXQ;8!CubzdN7-JO;dRy4UronM?9E83qaEd_unf{kx2>BlOqiHY(h^ z%m(a?`Wh3*g`9>#yxTyOvp=e+qFZ+k>;7L`li9Oni>I2!I;|sf0JlUTLD&tZCVhsY={r3@tA+hN4;zd*Pj<~bWba%b4G&(gP= z^}AbVj8cKzOQyAy+@?K!?Ms6UySts&9o+m`YZner(=rx%ny!-MI*o*dvQcdRMg}_{ zt1l9>e$qtgC%&=JqIddgN#b&3B|A5z6t>ayOHn?Pm@dW{>q+^8c9IWT=C8ml>~;(* zu92=2eA{h`sSmQqjcYLtvdKR`=X>~0cZ~oaMBBoUF@SbQ_>iGvTrfB5J)ZZr5sgMz zbl(T7!`G!Gsv3YG?H&o4_*C6cto$aqm)O{4(PZxr@lP`x!pfgwfAgJ& zv7*k#a&_L1ut-jMZ#_;b-%mNsqZ4IG(K0BHW~)@z>NIA=>}vAtg5My-RpMkP{rbbb zo@-44YNm+P2fVG32PTZ)@M&oTh*aOZR5?pCXd`$}TJrOtcs8MX0xAG&ySK*YcDn-Q zZt3_>1ii%CQT5_8{0?fqZ8veE=n;RO7OS@q68pBZ!n0SXQ)uG?S@xaOU3BJ-*wS|5 zSDu(Xd0bYkkW0l259mGw@spX^FuO9Db`HK2$ivXmS?AMQTn-}^Q=z7u3j%vQO= z8r}?ftai&Fv{%NYB(3iW$V`xQP~9$IP8%bocS%{^dA=Rn!i5BHl9dvf?htu2s%dKU zP+}6{MQgBus$1gt@r=%X#1DL)sec>tbKGfXc05 zJek~E6dfV^*fGZz3M&t}ephq9hqbIRSDSULwi&q=jn!GS!|OEkt})lt`b-F;Q+{Yu zs~!z*gd#_D9EBqM{r@`QN$U+rbx}E z@}vrk2G{&yW^GtGJ(S487ESTG>UaFIp3}uz`|iU#w1B(F5|!p$&dqR>CM?}jnb2ii z@1Q~1$oNO=yrqkkF1|`t|M!o62+x$Q<0qYJ`N}^uysb-|MqOs^8hzhJ4(GbB`HWxW>^VkX=;Ec^{sgBJX z0jZ!|gIKTmO##ek2ZH!M=b^QSGXCGl%xX795vUA0iDu|>PMN1-W5v?#KaUg&c4ivo zqWa#@;6KgA8SZ2xE0SZ9Q2Kg8h{y{iHqO@H5Y0w6^S3t&<5cGNW>D}^gzRl6SY!uzs^^4!@B;et-l zgyb9h@ZF4{+vZL(6a)A8*=EU=)cU<~Vy=dHAo~nBMr%=k=jn(Dlc0Mh)p~y&R0w*P zY)R9kCAB9iSDqHJ@MA*M;=qD{CT%^Q zF-UmCzQS*9S>rfC*RR;ffB)38HX}!^eO*>+dhQ<+YHXiqzxZ?8mB6VUPZ2nD!^n?c z@PV7DJ3DH6poSxS;e}DwbZ0~U;|=GZb_F{Dx4fx}gQ~1p>o(lc)0>RT6$>HG`)?cA zLEc&y_X;=qB6&Y9UEje4U+GfY`z_>5=z`;t(KvMjVu?B25?i*A@+c9_Cs1G;Mh|^; zm351x7F6=vn=wJqER^(tq`flikpfy|x4xHL6N`m)qZUPWL0)W2UEuoY#BuzE8ay}l<cM|q&BN@eZbaik9U6Tj z)htHc3>G1O`KA5s9xnG(;}fbho}{>ZZyXXNf+g&N$g9u^U>0=h^(E^$S0(TzDY5LB zaPzW$&?J&Y&1t#eaAv+zw+m&x7CBg=H)S_Rb!a&Ep5V!MHmEIx(wpo10Jo z5IyjtWG@^+UWsmeI|%Iyf`0oT_8?6QF?-+Y*2By#Kv+Ab@1Ew!NF$#6d+=TqBnSI5 z5`RY~7uuLP-zM;KdXV_J`Q2$F1;l6gj_bB!7{5obSlp#Fp!~?N6MHzJ>$}XDS5O5P z=IVX22{CXr33*I{cFGN}%saPo@qY1QcQj1`Wqp0?fp;&`0J#4pS2DFfo6|fly?_v7 zf_&R2n@8<02>o2F+N8EtY#H|9t3?2Z&TxzIW)`{hhl$X3eluZzdW}UEtyl#pz$@3K z7mYC&d^wT^&r~VcyvdUXp~azR>^bXX*G0&7liFrIH$cR?Oyrpmgr z>;FUE6*6L)<(b94j}t1G3@{?pA3S+%d?VEtGI4jZa;H~0Z}0OY&c7D4nj_xNIv?|f zVq<_Y*K7Md#YW0iAcsOX2KCS3rH0^xIn5`)qp}M%#t)?~NsVCZD>9{juzr>Kl|Ypf&rsQChczq0or_<<7k#>o z2J!rr@Cy$PDcv#G^xZN+Y{P0f+U49@{K|k6mH*4dqhKO1>H^u4h!*S)CT7)h5h{~C z*2{mtuno8oXGV$a=R(SgM)#8*SKs=Zb?$$A;MRfp_?Bi+90r56~vWlDd@7ZheJQp50OkmPe#%#T6kPO=Xh~TCZ{0PbcBYe2#&MJBB#FGxah> zF@DkV`r0+bikn;W3gaiKe+2Yl3cECM1@z|J0X|O>(j0wmUt^Da@Aw@wt{6goA!(^I9jZ7a49;=m$i8R(?-| z+NFlllLj*9O!Ya(#EqT{%nN}vi9w*OZTd+R@on1`$7rq`Ar_OlViKWbYuK18F9q&@ zih>h1wPaG>h5f9>$H%AtK!htbE|Ga9^^J#u5)jKR1eJ#9BB%gG*RkJcmf*@E#)aVl zxnbFTR6CrXNj8I!M1sRnI!@|Nn2cm9Kv1}|!nJnK7l7a%;uL$B!o>sA&YS#w8P($f z*Aj`gq1NNbSk9!$lM6Q7-2Np0)UbTOC!vCd;B)#X5(yA^ivsnms#z%WW4NkxU^1!5 z$U7rmF)?4#19oTA4zCM(+j&sFmwd@U6bcYW)T~=eBcwi2Fm#7vc&#;b41q0_B8-Q` z^w6N8Nyt?h8U-Q(tI?!_c*ciDSBjp$6@=u~k=HsqZM1uyZES$A#y1enS0>-~%OD{S zs|dXDxzjJr@mS77gb>G{pG2PpN1U-WuU@iIor;}b^^FxJUs;l|-J{y{!tVF;UZ!QE ziHsw@=o!?mVit`{KE_bFU=6`}V2&Z3f@5)U-$7@@|W~f%(1ljZgIK>=e{NSQ?=DynS5Vd=2X5o4k%Hae+;5mhAW zf##U)s+32fM6q>pxln4Zg+e$40HBzs84`Dv=22<{qaOZ))f-$csrp;NSX?pxNvQ#l z0JT}9)JHo%+uZaJA7c#C3>po|1rC3z3{hHRdFp0N;#wqhf2N7nV*I>jS!@n>i43Lk zT{qj)_e;*~CM9>$w5a`6K|G+Wfq(qi)GZ+l*eJ~`Ke6iUSR=8elJIqyOp&uSJ)wrX z{45kmSWKDnKz~TOjldmgOe(qRfTOgRu&s+1crEEt3+GRSEqEs+Uy!}=k6#^=$Wdsr zG<3w#_!B#=CiBRT;(klzCJy~j&Jn7xn;&Y@%As#UiB|#)(=E|aYEI3}uDlLxmIjO= zIx*{jEo1Tx{vnNK{gllO=M0ss?dO?@Z!|G*dkZx?oV9T(cvO~LoDQ4D zR)d}GBCNlDaAcUXVB_49G{cR3K%i68pTw1J>ia5~2b&E_x+TI3DMM)9>n(^*hCfuB zyL7eUPWXtFcwY_V<8DseJ+c(i1Mh_yi5Y}t5Cm(A+S3?(bvk??%tk|N^nR7YMxAbk##4`Iv9SX_OT zax9m4kRHuoD+){OU%X$T?<~iULWFo`6aj7*qUjHE&p(p6ba z)!EP(lCvb0!-`Gb--u#yFV0%-Wz4ZPHpsV8v|{X1d`&4DNj24OJCTElJAs4!4vcUU znw~SX_8P4Yy*?@RFI-cz=}-diZRO(T+FN>NIoe7>!L7$iZ4q?Dg~GrNN>S`|iLCvp zlW*vyfPc|yMubf)jRua!7<6bTG3{fktOgk_g3+)S*IMqm-gS)H2 z(FSbEm7#VeCQ8a-=Q02+fZ#WPuv?jafkfI|+-oyJSH!)}KlAi+{%t!6;Avpuk_BPl z5*K7eMW~LD_Y=F>x1wiKEO7jlHM59C3>8H**j8oAEMYs?K@;mxK>|bw34viQAj!0~ zSHgC20&5JdP+AnwjPTRkMD}+x=|eb|>D6Q4vy3U+OjvB&=eWi#4PUvq{%-*XkY_ zWP(hU0}j)W`k!jJg%qGvnjM82w#c>mv4JT|xR7{^jn4%n;}`KaT%2T8v^Q+kK5;s8 zGW9Jb?TmC--h>NiAt$!?= z*8YJ-%FR4;6ztlTX6G5 zw75#P6D(4X@aLBi)-~|8=O*2t>N_|Nzh##1Wz#YJJ~I4wEKz!R$JH*tHkdkTu#&qG zcE+nwy8A&vUP9pGhw#)b26t5orbDO@b4iMM&0EsM*Np5H$W#72@b?~04@m@CAF)Uc z&9^U)$@H2bs0BM2#*pe zrq_pjRsg>c+SAlk?3unzj+Ls=F2Td| zAepnMJ8#9XocqogEgC?EP~Y=$mm~Q>{O1 z!uL(uVW;IKt(O0S483t22L*Uw5y*je#bSD|^za-;<|Jqj`z3lLwLtZ{BVtO9I@RIC z@;S0hTI(jqjgS2o>?i0o!H>i`oHC8L3bgYVFG2LUI{L6o_xP8u=RGLnjN%t)4{M0n zqEm=fO+cAFqWW*V%YYmyL7poh-4OalMSme}sPnLxpe}d|WFGe0t9}SujE5&Up*KW_ zQ^8m{O1QN;;G=Hwq!D=J*R^(rk%4%1Lr3dxzv*Zb%L%bNqnoX+tDLjn#~cut`NMtt z##4=N=bxXWe~xSYZde|=Qdo2|U+1VGaI$|jQp{a3`=)mTV)9pOcW@hSozNsCb^t-KR23IP{T$_GE?f(41eZo^e zafKwLx54OcW|a$QJ!;^fX=HC^+M54~-Kw`gr&QwU@JL#-z~yh(V@z;VaPUxtcIBAi z`X$lT^Icch9QH5e+sSUvByzeRK`k_pCGd9i5wfbL@VWO{+i}e{$wkYv&J^w0}Gp>}x~c9oa1Xwv-~uq!=EvW|{zD-!U>Uu|HT4*~JOPoH=lqc^6wE}|Et z0GVw9)B9h#F)Mf_Ujl%Lr~{Nu7fE@K#hm#rpA+&+qDP1cWvXW2wc;KlBRKG=mI>ND zPJZ4QK)|h}T>XfV_oJrIz_$-xB2So5+N+CQ-A!|b7>b|3-!5H6QWmR6paB7tqF<>w38j+4jIcWg^(L26^&kM}?RBsKjPb3K_!-Voy-w*1FOwr2pKSJ(0 zC!6}vG8Z?d_}Avr5gpm6eP?W=sicxB0&k-}0uy0{NLu#5DiTt3`0G z0%p5qXrga|moi6hMb4Y6+&#dff6j}#@qF8?>?AlBsWFdwlE&C2pAaof9`#vRomH8V zm8B(72c{VO7OJ<&qRl26VYtmh1Ifm@5YQr%QO)=4dRTh{v2{L23xaL2Nc>o1sc9)} zA;xQHi01`Quk2lrGhbI9ia5UCv(zDO9<(Z-S1)I*_6ylz&Q339c(b17%+xo4?>Wn6 z($TUrAo#lQQ^k=Hr{;H=l!B!4thaqSymZ!aHIW!M)Qo!@NT^>{muF@R)xC=4keDKj z3~2%FPxLBC)21I!8T@@u7+!GvZFE~~>NDNT%f9$sD+L+Sg-jZi3e88M&APzj+Ai@B zXJ&N1Th2JYlI|#TCQG;T8%r%%$ZZld7iB_4aBKy z7xdrR=^l}HqA zd+mI)Mi456z^)UFpHJ;d}l z_d&aZxxw4fHG*37-_WQ^_snjyoFT2h`Sq7k5I3_dPDhO%r%JRNO?HPBWE1igFbuy- z0;jy^qK_fHhEw$dsE~c_P_HZ)`NEg{P9a+xO{Clz1}jZr;ywdN?M{S2T&?B`TTV`n zqrJT$Av8eoI=T1G!So^1dp2v`^5m6^s;5Yub~tZ{yE{ZtpOZ6bmf>={l4Q9+Z_*M? zlZKY~N+EkDAJmH{Q|y~GwlU*FM(EtxFw_k11_!vC)dm6{%UA9 z5YEby?`;fLl?@v)0<=d_VVLS~_%UxqQ(t;Qu5xsI`ySwNm%s4~XbSOUAVQXY1g6Ab zDjhXbC>LC0eoVh;QyJN2@Qph*oSE8M4d~u(m%OO%D5jt6eCu{evxdZrBFlrLD5Ke^ zR$dgQ^kx`1)WUBqtOz1J3kEZ0=a@B+Sk zFZBTPzY{>HjN;qoBk#UDN8JcKS0RB^j602YS6jPG8On!#&Klowy-C zKb*SA6l$|z(mT{8yslnwzRk_=p^++r-_iC|_yXLtWXQX&2gVgw*H|aC^gZ02bxpJ< z2uER6my>xJKR{k*0CtBnC7#`&NBC_FN4aH&RPL*9^2mHST6;QIj>|2lV;3cNUTi*I zQ?ZN}^o??DCoQjV$==~GAKYt?rr42{Wtul6A9?zjOe-Tl5LcCc|c<9aZ6smsY&k{MaGQs^7oDT zRFRJ2-VNujT~8lBNHMm^pW;VPxvcvQk$Wn1TczA*Z++aZ$Aq0CAHVQ)^O_)^e3bO3 z5v6b5e%iA~F@+nw*wq-2x}aB$srZ#Jm==E5*!ESkR1Vx38_0jvwDGtnuxP&c@$AD+ zZZ~@8zRfs3xDUnPpz48#e>ZliD5@#1N`8H)I)lqs$n0}7$-!#(M2aNQmdNQO7t!Wl zUkOx!-i8wrD~=Sn!JouI7DI zO70F7iGL_iFPoJ5<@G1I_lY2QpNfOYf?d6Y?j)#)@UNsiWf}aRY9H)B(6z|0c2l~3 z@jDKj@z5jy22}hX2{o7>rK>FWbCMe3P%G7-L9Q6MI;4+a2 diff --git a/index.html b/index.html index 4289927..56021f3 100644 --- a/index.html +++ b/index.html @@ -2,9 +2,9 @@ - - - + + + @@ -32,47 +32,51 @@

        Java Operator Overloading

        -Java Operator Overloading

        +Java Operator Overloading

        Java-OO is a modular extension (plugin) to Java compilers and IDEs for (Scala-like) Operator Overloading support. Works with standard JavaC compiler, Netbeans IDE, Eclipse IDE, IntelliJ IDEA IDE and any build tools.

        -

        Example (see other examples at examples/ dir):

        +

        Example (see other examples at examples/ dir):

        -
        import java.math.*;
        -import java.util.*;
        -public class Test {
        -  public static void main(String[] args) {
        -    BigInteger a = BigInteger.valueOf(1), // without OO
        -               b = 2, // with OO
        +
        import java.math.*;
        +import java.util.*;
        +public class Test {
        +  public static void main(String[] args) {
        +    BigInteger a = BigInteger.valueOf(1), // without OO
        +               b = 2, // with OO
         
        -    c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO
        -    c2 = -a + b*b + b/a; // with OO
        +    c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO
        +    c2 = -a + b*b + b/a; // with OO
         
        -    if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO
        -      System.out.println("impossible");
        -    if (c1<c2 || c1>c2) // with OO
        -      System.out.println("impossible");
        +    if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO
        +      System.out.println("impossible");
        +    if (c1<c2 || c1>c2) // with OO
        +      System.out.println("impossible");
         
        -    HashMap<String, String> map = new HashMap<>();
        -    if (!map.containsKey("qwe")) map.put("qwe", map.get("asd")); // without OO
        -    if (map["qwe"]==null) map["qwe"] = map["asd"]; // with OO
        -  }
        -}
        -
        + HashMap<String, String> map = new HashMap<>(); + if (!map.containsKey("qwe")) map.put("qwe", map.get("asd")); // without OO + if (map["qwe"]==null) map["qwe"] = map["asd"]; // with OO + } +}

        -Versions

        +Versions -
        JavaC/Netbeans: 0.4
        -JavaC8:         0.1.1
        +
        JavaC/Netbeans: 0.5
        +JavaC8:         0.5
         Eclipse:        0.4
        -IntelliJ IDEA:  0.3.1
        +IntelliJ IDEA:  0.4
         

        -News

        +News + +

        2 December 2014. New feature: Reverse binary operator overload via operatorRev methods.
        +Plugin versions updated:
        +JavaC7 & JavaC8: 0.5
        +IntelliJ IDEA: 0.4. Support of IDEA 14

        31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.

        @@ -100,20 +104,22 @@

        26 Nov 2012. Version 0.2 released. New feature: Assignment operator overloading via static #valueOf method.

        -Installation

        +Installation + +

        -javac, ant, etc

        +javac, ant, etc -

        Just add to classpath: javac-oo-plugin.jar for JDK7 or javac8-oo-plugin.jar for JDK8.

        +

        Just add to classpath: javac-oo-plugin.jar for JDK7 or javac8-oo-plugin.jar for JDK8.

        javac -cp javac-oo-plugin.jar <sources>
         
        -

        Demo at examples/compile.sh

        +

        Demo at examples/compile.sh

        - + Eclipse IDE update site

        Click in menu: Help - Install New Software. Enter in Work with field:

        @@ -124,38 +130,42 @@

        Tested on Eclipse Standard 4.3.1. Should work with older/newer versions too.

        -Netbeans IDE +Netbeans IDE

          -
        1. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
        2. +
        3. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
        4. Enable "Annotation Processing in Editor": Project Properties -> Build -> Compiling.
        5. -

        Tested on 7.2.1

        +
      + +

      Tested on 7.2.1

      - + IntelliJ IDEA IDE

        -
      1. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
        +
      2. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
        For Maven projects installation is done. IDEA should setup everything according to pom.xml.
        For other project types:
      3. -
      4. Add javac-oo-plugin.jar as compile or processor library.
      5. +
      6. Add javac-oo-plugin.jar as compile or processor library.
      7. Enable Annotation Processing: Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing
      8. Make sure you use javac compiler in Settings -> Java Compiler -> Use compiler.
        -Tested on IDEA 12.1.3 Community and Ultimate Editions.
      9. -

      -Android project in IDEA 12

      +Tested on IDEA 14.0.1 Community and Ultimate Editions. +
    -

    Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

    +

    +Android project in IDEA 12

    + +

    Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

    -Android Studio (IDEA 13) / Gradle

    +Android Studio (IDEA 13) / Gradle

    add to build.gradle:

    @@ -163,19 +173,19 @@

    maven { url 'http://amelentev.github.io/mvnrepo/' } } dependencies { - compile 'java-oo:javac-oo-plugin:0.4' + compile 'java-oo:javac-oo-plugin:0.5' }

    -Maven

    +Maven

    Look at javac-oo-mvndemo/pom.xml

    -Details

    +Details

    Read the paper to learn more. Supported operators (operator to method name map):

    @@ -196,6 +206,9 @@

    | >> | shiftRight | +

    If left operand has no such method then the plugin will try to use 'reverse' method <methodName>Rev on right operand. +So 2*a will be transformed to a.multiplyRev(2) if a has such method.

    +

    unary:

    | -        | negate     |
    @@ -221,13 +234,14 @@ 

    if expr is not assignable to var and var is an instance of VarClass and expr has type ExprType and there are static method VarClass#valueOf(ExprType)
    then var = expr is transformed to var = VarClass.valueOf(expr). -example:
    BigInteger a = 1 is transformed to BigInteger a = BigInteger.valueOf(1)

    +example:
    +BigInteger a = 1 is transformed to BigInteger a = BigInteger.valueOf(1)

    These methods exists in many java classes (example: BigInteger, BigDecimal) so you can -use operators on them "out of the box". Or you can add these methods to your classes to use OO (see examples/Vector.java).

    +use operators on them "out of the box". Or you can add these methods to your classes to use OO (see examples/Vector.java).

    -Publications

    +Publications

    "Java Modular Extension for Operator Overloading", IJPLA, April 2014.

    diff --git a/params.json b/params.json index 1edb38e..aac51e5 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/examples) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.4\r\n\tJavaC8: 0.1.1\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.3.1\r\n\r\n# News #\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/examples/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 12.1.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.4'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/examples/Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.4/javac-oo-plugin-0.4.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.1.1/javac8-oo-plugin-0.1.1.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.3.1.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.4\r\n\r\n# News #\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
    \r\nPlugin versions updated:
    \r\n[JavaC7 & JavaC8](#javac): 0.5
    \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n
    \r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 14.0.1 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.4.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css index 7a08b01..619d19d 100644 --- a/stylesheets/stylesheet.css +++ b/stylesheets/stylesheet.css @@ -201,12 +201,14 @@ ul, ol, dl { } ul { - list-style: inside; + list-style-position: inside; + list-style: disc; padding-left: 20px; } ol { - list-style: decimal inside; + list-style-position: inside; + list-style: decimal; padding-left: 20px; } From 38ba880e6affef7912c81b24665e15aadc8c1510 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Tue, 27 Jan 2015 02:51:51 +0200 Subject: [PATCH 20/32] Create gh-pages branch via GitHub --- index.html | 6 ++++-- params.json | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index 56021f3..57f74c5 100644 --- a/index.html +++ b/index.html @@ -66,13 +66,15 @@

    JavaC/Netbeans: 0.5
     JavaC8:         0.5
    -Eclipse:        0.4
    +Eclipse:        0.5
     IntelliJ IDEA:  0.4
     

    News

    +

    27 January 2015. Eclipse-oo-plugin version 0.5 released with support of reverse binary operator overload. Unfortunate it doesn't work in Eclipse 4.4 (Luna) yet.

    +

    2 December 2014. New feature: Reverse binary operator overload via operatorRev methods.
    Plugin versions updated:
    JavaC7 & JavaC8: 0.5
    @@ -127,7 +129,7 @@

    http://amelentev.github.io/eclipse.jdt-oo-site/
     
    -

    Tested on Eclipse Standard 4.3.1. Should work with older/newer versions too.

    +

    Tested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.

    Netbeans IDE diff --git a/params.json b/params.json index aac51e5..4108ac4 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.4\r\n\tIntelliJ IDEA: 0.4\r\n\r\n# News #\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
    \r\nPlugin versions updated:
    \r\n[JavaC7 & JavaC8](#javac): 0.5
    \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.1. Should work with older/newer versions too.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 14.0.1 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.4.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.5\r\n\tIntelliJ IDEA: 0.4\r\n\r\n# News #\r\n27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev]. Unfortunate it [doesn't work in Eclipse 4.4 (Luna)](https://github.com/amelentev/java-oo/issues/26) yet.\r\n\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
    \r\nPlugin versions updated:
    \r\n[JavaC7 & JavaC8](#javac): 0.5
    \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n
    \r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 14.0.1 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.4.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From eda30f2eeab053f56e76a007e868363e5d0b0c46 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Tue, 27 Jan 2015 03:06:53 +0200 Subject: [PATCH 21/32] Create gh-pages branch via GitHub --- index.html | 2 +- params.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 57f74c5..912050e 100644 --- a/index.html +++ b/index.html @@ -73,7 +73,7 @@

    News

    -

    27 January 2015. Eclipse-oo-plugin version 0.5 released with support of reverse binary operator overload. Unfortunate it doesn't work in Eclipse 4.4 (Luna) yet.

    +

    27 January 2015. Eclipse-oo-plugin version 0.5 released with support of reverse binary operator overload. Unfortunately it doesn't work in Eclipse 4.4 (Luna) yet.

    2 December 2014. New feature: Reverse binary operator overload via operatorRev methods.
    Plugin versions updated:
    diff --git a/params.json b/params.json index 4108ac4..87aa58e 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.5\r\n\tIntelliJ IDEA: 0.4\r\n\r\n# News #\r\n27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev]. Unfortunate it [doesn't work in Eclipse 4.4 (Luna)](https://github.com/amelentev/java-oo/issues/26) yet.\r\n\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
    \r\nPlugin versions updated:
    \r\n[JavaC7 & JavaC8](#javac): 0.5
    \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 14.0.1 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.4.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.5\r\n\tIntelliJ IDEA: 0.4\r\n\r\n# News #\r\n27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev]. Unfortunately it [doesn't work in Eclipse 4.4 (Luna)](https://github.com/amelentev/java-oo/issues/26) yet.\r\n\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
    \r\nPlugin versions updated:
    \r\n[JavaC7 & JavaC8](#javac): 0.5
    \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n
    \r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 14.0.1 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.4.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n[equinox-weaving-launcher]: https://github.com/milessabin/equinox-weaving-launcher\r\n\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file From 5aed1bdf6b892dba8225ad1a552832785eb30515 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Fri, 10 Apr 2015 19:42:43 +0200 Subject: [PATCH 22/32] Create gh-pages branch via GitHub --- index.html | 90 +++-- params.json | 2 +- stylesheets/github-light.css | 115 +++++++ stylesheets/normalize.css | 424 +++++++++++++++++++++++ stylesheets/stylesheet.css | 638 +++++++++++++---------------------- 5 files changed, 808 insertions(+), 461 deletions(-) create mode 100644 stylesheets/github-light.css create mode 100644 stylesheets/normalize.css diff --git a/index.html b/index.html index 912050e..bf58c18 100644 --- a/index.html +++ b/index.html @@ -1,37 +1,25 @@ - - + - - - - - - - Java-OO + + Java-OO by amelentev + + + + + - - - -

    - - -
    -
    -

    + + +
    +

    Java Operator Overloading

    Java-OO is a modular extension (plugin) to Java compilers and IDEs @@ -42,22 +30,22 @@

    import java.math.*;
     import java.util.*;
    -public class Test {
    -  public static void main(String[] args) {
    -    BigInteger a = BigInteger.valueOf(1), // without OO
    +public class Test {
    +  public static void main(String[] args) {
    +    BigInteger a = BigInteger.valueOf(1), // without OO
                    b = 2, // with OO
     
         c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO
         c2 = -a + b*b + b/a; // with OO
     
         if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO
    -      System.out.println("impossible");
    +      System.out.println("impossible");
         if (c1<c2 || c1>c2) // with OO
    -      System.out.println("impossible");
    +      System.out.println("impossible");
     
    -    HashMap<String, String> map = new HashMap<>();
    -    if (!map.containsKey("qwe")) map.put("qwe", map.get("asd")); // without OO
    -    if (map["qwe"]==null) map["qwe"] = map["asd"]; // with OO
    +    HashMap<String, String> map = new HashMap<>();
    +    if (!map.containsKey("qwe")) map.put("qwe", map.get("asd")); // without OO
    +    if (map["qwe"]==null) map["qwe"] = map["asd"]; // with OO
       }
     }
    @@ -67,12 +55,14 @@

    JavaC/Netbeans: 0.5
     JavaC8:         0.5
     Eclipse:        0.5
    -IntelliJ IDEA:  0.4
    +IntelliJ IDEA:  0.4.1
     

    News

    +

    10 April 2015. IntelliJ IDEA plugin v0.4.1 released with support of IDEA 14.1.

    +

    27 January 2015. Eclipse-oo-plugin version 0.5 released with support of reverse binary operator overload. Unfortunately it doesn't work in Eclipse 4.4 (Luna) yet.

    2 December 2014. New feature: Reverse binary operator overload via operatorRev methods.
    @@ -149,7 +139,7 @@

    IntelliJ IDEA IDE

      -
    1. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
      +
    2. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
      For Maven projects installation is done. IDEA should setup everything according to pom.xml.
      For other project types:
    3. @@ -246,18 +236,16 @@

      Publications

      "Java Modular Extension for Operator Overloading", IJPLA, April 2014.

      -
    -

    - - - - @@ -268,6 +256,6 @@

    } catch(err) {} - + diff --git a/params.json b/params.json index 87aa58e..e056c33 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.5\r\n\tIntelliJ IDEA: 0.4\r\n\r\n# News #\r\n27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev]. Unfortunately it [doesn't work in Eclipse 4.4 (Luna)](https://github.com/amelentev/java-oo/issues/26) yet.\r\n\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
    \r\nPlugin versions updated:
    \r\n[JavaC7 & JavaC8](#javac): 0.5
    \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 14.0.1 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.4.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n[equinox-weaving-launcher]: https://github.com/milessabin/equinox-weaving-launcher\r\n\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.5\r\n\tIntelliJ IDEA: 0.4.1\r\n\r\n# News #\r\n10 April 2015. [IntelliJ IDEA](#IDEA) plugin v0.4.1 released with support of IDEA 14.1.\r\n\r\n27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev]. Unfortunately it [doesn't work in Eclipse 4.4 (Luna)](https://github.com/amelentev/java-oo/issues/26) yet.\r\n\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
    \r\nPlugin versions updated:
    \r\n[JavaC7 & JavaC8](#javac): 0.5
    \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n
    \r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
    \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
    \r\nFor other project types:
    \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
    \r\nTested on IDEA 14.0.1 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
    \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
    \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
    \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.4.1.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n[equinox-weaving-launcher]: https://github.com/milessabin/equinox-weaving-launcher\r\n\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/stylesheets/github-light.css b/stylesheets/github-light.css new file mode 100644 index 0000000..10f40a4 --- /dev/null +++ b/stylesheets/github-light.css @@ -0,0 +1,115 @@ +/* + Copyright 2014 GitHub Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +.pl-c /* comment */ { + color: #969896; +} + +.pl-c1 /* constant, markup.raw, meta.diff.header, meta.module-reference, meta.property-name, support, support.constant, support.variable, variable.other.constant */, +.pl-s .pl-v /* string variable */ { + color: #0086b3; +} + +.pl-e /* entity */, +.pl-en /* entity.name */ { + color: #795da3; +} + +.pl-s .pl-s1 /* string source */, +.pl-smi /* storage.modifier.import, storage.modifier.package, storage.type.java, variable.other, variable.parameter.function */ { + color: #333; +} + +.pl-ent /* entity.name.tag */ { + color: #63a35c; +} + +.pl-k /* keyword, storage, storage.type */ { + color: #a71d5d; +} + +.pl-pds /* punctuation.definition.string, string.regexp.character-class */, +.pl-s /* string */, +.pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */, +.pl-sr /* string.regexp */, +.pl-sr .pl-cce /* string.regexp constant.character.escape */, +.pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */, +.pl-sr .pl-sre /* string.regexp source.ruby.embedded */ { + color: #183691; +} + +.pl-v /* variable */ { + color: #ed6a43; +} + +.pl-id /* invalid.deprecated */ { + color: #b52a1d; +} + +.pl-ii /* invalid.illegal */ { + background-color: #b52a1d; + color: #f8f8f8; +} + +.pl-sr .pl-cce /* string.regexp constant.character.escape */ { + color: #63a35c; + font-weight: bold; +} + +.pl-ml /* markup.list */ { + color: #693a17; +} + +.pl-mh /* markup.heading */, +.pl-mh .pl-en /* markup.heading entity.name */, +.pl-ms /* meta.separator */ { + color: #1d3e81; + font-weight: bold; +} + +.pl-mq /* markup.quote */ { + color: #008080; +} + +.pl-mi /* markup.italic */ { + color: #333; + font-style: italic; +} + +.pl-mb /* markup.bold */ { + color: #333; + font-weight: bold; +} + +.pl-md /* markup.deleted, meta.diff.header.from-file */ { + background-color: #ffecec; + color: #bd2c00; +} + +.pl-mi1 /* markup.inserted, meta.diff.header.to-file */ { + background-color: #eaffea; + color: #55a532; +} + +.pl-mdr /* meta.diff.range */ { + color: #795da3; + font-weight: bold; +} + +.pl-mo /* meta.output */ { + color: #1d3e81; +} diff --git a/stylesheets/normalize.css b/stylesheets/normalize.css new file mode 100644 index 0000000..30366a6 --- /dev/null +++ b/stylesheets/normalize.css @@ -0,0 +1,424 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css index 619d19d..b5f20c2 100644 --- a/stylesheets/stylesheet.css +++ b/stylesheets/stylesheet.css @@ -1,425 +1,245 @@ -/******************************************************************************* -Slate Theme for GitHub Pages -by Jason Costello, @jsncostello -*******************************************************************************/ - -@import url(pygment_trac.css); - -/******************************************************************************* -MeyerWeb Reset -*******************************************************************************/ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font: inherit; - vertical-align: baseline; -} - -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} - -ol, ul { - list-style: none; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -/******************************************************************************* -Theme Styles -*******************************************************************************/ +* { + box-sizing: border-box; } body { - box-sizing: border-box; - color:#373737; - background: #212121; + padding: 0; + margin: 0; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; - font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif; line-height: 1.5; - -webkit-font-smoothing: antialiased; -} - -h1, h2, h3, h4, h5, h6 { - margin: 10px 0; - font-weight: 700; - color:#222222; - font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif; - letter-spacing: -1px; -} - -h1 { - font-size: 36px; - font-weight: 700; -} - -h2 { - padding-bottom: 10px; - font-size: 32px; - background: url('../images/bg_hr.png') repeat-x bottom; -} - -h3 { - font-size: 24px; -} - -h4 { - font-size: 21px; -} - -h5 { - font-size: 18px; -} - -h6 { - font-size: 16px; -} - -p { - margin: 10px 0 15px 0; -} - -footer p { - color: #f2f2f2; -} + color: #606c71; } a { + color: #1e6bb8; + text-decoration: none; } + a:hover { + text-decoration: underline; } + +.btn { + display: inline-block; + margin-bottom: 1rem; + color: rgba(255, 255, 255, 0.7); + background-color: rgba(255, 255, 255, 0.08); + border-color: rgba(255, 255, 255, 0.2); + border-style: solid; + border-width: 1px; + border-radius: 0.3rem; + transition: color 0.2s, background-color 0.2s, border-color 0.2s; } + .btn + .btn { + margin-left: 1rem; } + +.btn:hover { + color: rgba(255, 255, 255, 0.8); text-decoration: none; - color: #007edf; - text-shadow: none; - - transition: color 0.5s ease; - transition: text-shadow 0.5s ease; - -webkit-transition: color 0.5s ease; - -webkit-transition: text-shadow 0.5s ease; - -moz-transition: color 0.5s ease; - -moz-transition: text-shadow 0.5s ease; - -o-transition: color 0.5s ease; - -o-transition: text-shadow 0.5s ease; - -ms-transition: color 0.5s ease; - -ms-transition: text-shadow 0.5s ease; -} - -a:hover, a:focus {text-decoration: underline;} - -footer a { - color: #F2F2F2; - text-decoration: underline; -} - -em { - font-style: italic; -} - -strong { - font-weight: bold; -} - -img { - position: relative; - margin: 0 auto; - max-width: 739px; - padding: 5px; - margin: 10px 0 10px 0; - border: 1px solid #ebebeb; - - box-shadow: 0 0 5px #ebebeb; - -webkit-box-shadow: 0 0 5px #ebebeb; - -moz-box-shadow: 0 0 5px #ebebeb; - -o-box-shadow: 0 0 5px #ebebeb; - -ms-box-shadow: 0 0 5px #ebebeb; -} - -p img { - display: inline; - margin: 0; - padding: 0; - vertical-align: middle; + background-color: rgba(255, 255, 255, 0.2); + border-color: rgba(255, 255, 255, 0.3); } + +@media screen and (min-width: 64em) { + .btn { + padding: 0.75rem 1rem; } } + +@media screen and (min-width: 42em) and (max-width: 64em) { + .btn { + padding: 0.6rem 0.9rem; + font-size: 0.9rem; } } + +@media screen and (max-width: 42em) { + .btn { + display: block; + width: 100%; + padding: 0.75rem; + font-size: 0.9rem; } + .btn + .btn { + margin-top: 1rem; + margin-left: 0; } } + +.page-header { + color: #fff; text-align: center; - border: none; -} - -pre, code { - width: 100%; - color: #222; - background-color: #fff; - - font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; - font-size: 14px; - - border-radius: 2px; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; -} - -pre { - width: 100%; - padding: 10px; - box-shadow: 0 0 10px rgba(0,0,0,.1); + background-color: #159957; + background-image: linear-gradient(120deg, #155799, #159957); } + +@media screen and (min-width: 64em) { + .page-header { + padding: 5rem 6rem; } } + +@media screen and (min-width: 42em) and (max-width: 64em) { + .page-header { + padding: 3rem 4rem; } } + +@media screen and (max-width: 42em) { + .page-header { + padding: 2rem 1rem; } } + +.project-name { + margin-top: 0; + margin-bottom: 0.1rem; } + +@media screen and (min-width: 64em) { + .project-name { + font-size: 3.25rem; } } + +@media screen and (min-width: 42em) and (max-width: 64em) { + .project-name { + font-size: 2.25rem; } } + +@media screen and (max-width: 42em) { + .project-name { + font-size: 1.75rem; } } + +.project-tagline { + margin-bottom: 2rem; + font-weight: normal; + opacity: 0.7; } + +@media screen and (min-width: 64em) { + .project-tagline { + font-size: 1.25rem; } } + +@media screen and (min-width: 42em) and (max-width: 64em) { + .project-tagline { + font-size: 1.15rem; } } + +@media screen and (max-width: 42em) { + .project-tagline { + font-size: 1rem; } } + +.main-content :first-child { + margin-top: 0; } +.main-content img { + max-width: 100%; } +.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6 { + margin-top: 2rem; + margin-bottom: 1rem; + font-weight: normal; + color: #159957; } +.main-content p { + margin-bottom: 1em; } +.main-content code { + padding: 2px 4px; + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 0.9rem; + color: #383e41; + background-color: #f3f6fa; + border-radius: 0.3rem; } +.main-content pre { + padding: 0.8rem; + margin-top: 0; + margin-bottom: 1rem; + font: 1rem Consolas, "Liberation Mono", Menlo, Courier, monospace; + color: #567482; + word-wrap: normal; + background-color: #f3f6fa; + border: solid 1px #dce6f0; + border-radius: 0.3rem; } + .main-content pre > code { + padding: 0; + margin: 0; + font-size: 0.9rem; + color: #567482; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; } +.main-content .highlight { + margin-bottom: 1rem; } + .main-content .highlight pre { + margin-bottom: 0; + word-break: normal; } +.main-content .highlight pre, .main-content pre { + padding: 0.8rem; overflow: auto; -} - -code { - padding: 3px; - margin: 0 3px; - box-shadow: 0 0 10px rgba(0,0,0,.1); -} - -pre code { - display: block; - box-shadow: none; -} - -blockquote { - color: #666; - margin-bottom: 20px; - padding: 0 0 0 20px; - border-left: 3px solid #bbb; -} - - -ul, ol, dl { - margin-bottom: 15px -} - -ul { - list-style-position: inside; - list-style: disc; - padding-left: 20px; -} - -ol { - list-style-position: inside; - list-style: decimal; - padding-left: 20px; -} - -dl dt { - font-weight: bold; -} - -dl dd { - padding-left: 20px; - font-style: italic; -} - -dl p { - padding-left: 20px; - font-style: italic; -} - -hr { - height: 1px; - margin-bottom: 5px; - border: none; - background: url('../images/bg_hr.png') repeat-x center; -} - -table { - border: 1px solid #373737; - margin-bottom: 20px; - text-align: left; - } - -th { - font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; - padding: 10px; - background: #373737; - color: #fff; - } - -td { - padding: 10px; - border: 1px solid #373737; - } - -form { - background: #f2f2f2; - padding: 20px; -} - -/******************************************************************************* -Full-Width Styles -*******************************************************************************/ - -.outer { - width: 100%; -} - -.inner { - position: relative; - max-width: 640px; - padding: 20px 10px; - margin: 0 auto; -} - -#forkme_banner { - display: block; - position: absolute; - top:0; - right: 10px; - z-index: 10; - padding: 10px 50px 10px 10px; - color: #fff; - background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%; - font-weight: 700; - box-shadow: 0 0 10px rgba(0,0,0,.5); - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; -} - -#header_wrap { - background: #212121; - background: -moz-linear-gradient(top, #373737, #212121); - background: -webkit-linear-gradient(top, #373737, #212121); - background: -ms-linear-gradient(top, #373737, #212121); - background: -o-linear-gradient(top, #373737, #212121); - background: linear-gradient(top, #373737, #212121); -} - -#header_wrap .inner { - padding: 50px 10px 30px 10px; -} - -#project_title { + font-size: 0.9rem; + line-height: 1.45; + border-radius: 0.3rem; } +.main-content pre code, .main-content pre tt { + display: inline; + max-width: initial; + padding: 0; margin: 0; - color: #fff; - font-size: 42px; - font-weight: 700; - text-shadow: #111 0px 0px 10px; -} - -#project_tagline { - color: #fff; - font-size: 24px; - font-weight: 300; - background: none; - text-shadow: #111 0px 0px 10px; -} - -#downloads { - position: absolute; - width: 210px; - z-index: 10; - bottom: -40px; - right: 0; - height: 70px; - background: url('../images/icon_download.png') no-repeat 0% 90%; -} - -.zip_download_link { + overflow: initial; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; } + .main-content pre code:before, .main-content pre code:after, .main-content pre tt:before, .main-content pre tt:after { + content: normal; } +.main-content ul, .main-content ol { + margin-top: 0; } +.main-content blockquote { + padding: 0 1rem; + margin-left: 0; + color: #819198; + border-left: 0.3rem solid #dce6f0; } + .main-content blockquote > :first-child { + margin-top: 0; } + .main-content blockquote > :last-child { + margin-bottom: 0; } +.main-content table { display: block; - float: right; - width: 90px; - height:70px; - text-indent: -5000px; - overflow: hidden; - background: url(../images/sprite_download.png) no-repeat bottom left; -} - -.tar_download_link { + width: 100%; + overflow: auto; + word-break: normal; + word-break: keep-all; } + .main-content table th { + font-weight: bold; } + .main-content table th, .main-content table td { + padding: 0.5rem 1rem; + border: 1px solid #e9ebec; } +.main-content dl { + padding: 0; } + .main-content dl dt { + padding: 0; + margin-top: 1rem; + font-size: 1rem; + font-weight: bold; } + .main-content dl dd { + padding: 0; + margin-bottom: 1rem; } +.main-content hr { + height: 2px; + padding: 0; + margin: 1rem 0; + background-color: #eff0f1; + border: 0; } + +@media screen and (min-width: 64em) { + .main-content { + max-width: 64rem; + padding: 2rem 6rem; + margin: 0 auto; + font-size: 1.1rem; } } + +@media screen and (min-width: 42em) and (max-width: 64em) { + .main-content { + padding: 2rem 4rem; + font-size: 1.1rem; } } + +@media screen and (max-width: 42em) { + .main-content { + padding: 2rem 1rem; + font-size: 1rem; } } + +.site-footer { + padding-top: 2rem; + margin-top: 2rem; + border-top: solid 1px #eff0f1; } + +.site-footer-owner { display: block; - float: right; - width: 90px; - height:70px; - text-indent: -5000px; - overflow: hidden; - background: url(../images/sprite_download.png) no-repeat bottom right; - margin-left: 10px; -} - -.zip_download_link:hover { - background: url(../images/sprite_download.png) no-repeat top left; -} - -.tar_download_link:hover { - background: url(../images/sprite_download.png) no-repeat top right; -} - -#main_content_wrap { - background: #f2f2f2; - border-top: 1px solid #111; - border-bottom: 1px solid #111; -} - -#main_content { - padding-top: 40px; -} - -#footer_wrap { - background: #212121; -} - - - -/******************************************************************************* -Small Device Styles -*******************************************************************************/ - -@media screen and (max-width: 480px) { - body { - font-size:14px; - } - - #downloads { - display: none; - } - - .inner { - min-width: 320px; - max-width: 480px; - } - - #project_title { - font-size: 32px; - } - - h1 { - font-size: 28px; - } - - h2 { - font-size: 24px; - } - - h3 { - font-size: 21px; - } - - h4 { - font-size: 18px; - } + font-weight: bold; } - h5 { - font-size: 14px; - } +.site-footer-credits { + color: #819198; } - h6 { - font-size: 12px; - } +@media screen and (min-width: 64em) { + .site-footer { + font-size: 1rem; } } - code, pre { - min-width: 320px; - max-width: 480px; - font-size: 11px; - } +@media screen and (min-width: 42em) and (max-width: 64em) { + .site-footer { + font-size: 1rem; } } -} +@media screen and (max-width: 42em) { + .site-footer { + font-size: 0.9rem; } } From 1124b5b2531dce06a96b3841ddf0a5ff6a030932 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Tue, 2 Feb 2016 01:41:06 +0200 Subject: [PATCH 23/32] Create gh-pages branch via GitHub --- index.html | 43 ++++++++++++++++++------------------ params.json | 2 +- stylesheets/github-light.css | 1 + 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/index.html b/index.html index bf58c18..225814f 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ Java-OO by amelentev - + @@ -20,7 +20,7 @@

    Java Operator Overloading

    -Java Operator Overloading

    +Java Operator Overloading

    Java-OO is a modular extension (plugin) to Java compilers and IDEs for (Scala-like) Operator Overloading support. @@ -28,7 +28,7 @@

    Example (see other examples at examples/ dir):

    -
    import java.math.*;
    +
    import java.math.*;
     import java.util.*;
     public class Test {
       public static void main(String[] args) {
    @@ -50,16 +50,20 @@ 

    }

    -Versions

    +Versions

    JavaC/Netbeans: 0.5
     JavaC8:         0.5
     Eclipse:        0.5
    -IntelliJ IDEA:  0.4.1
    +IntelliJ IDEA:  0.5
     
    +

    Note plugin versions are independant. If version for X > version for Y then it doesn't mean Y is behind featurewise.

    +

    -News

    +News

    + +

    2 Feb 2016. IntelliJ IDEA plugin v0.5 released with support of IDEA 15. Requires Java8 to run the plugin.

    10 April 2015. IntelliJ IDEA plugin v0.4.1 released with support of IDEA 14.1.

    @@ -96,12 +100,12 @@

    26 Nov 2012. Version 0.2 released. New feature: Assignment operator overloading via static #valueOf method.

    -Installation

    +Installation

    -javac, ant, etc

    +javac, ant, etc

    Just add to classpath: javac-oo-plugin.jar for JDK7 or javac8-oo-plugin.jar for JDK8.

    @@ -111,8 +115,7 @@

    Demo at examples/compile.sh

    - -Eclipse IDE update site

    +Eclipse IDE update site

    Click in menu: Help - Install New Software. Enter in Work with field:

    @@ -122,7 +125,7 @@

    Tested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.

    -Netbeans IDE +Netbeans IDE

      @@ -135,11 +138,10 @@

      - -IntelliJ IDEA IDE

      +IntelliJ IDEA IDE
        -
      1. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
        +
      2. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
        For Maven projects installation is done. IDEA should setup everything according to pom.xml.
        For other project types:
      3. @@ -148,16 +150,16 @@

        Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing
      4. Make sure you use javac compiler in Settings -> Java Compiler -> Use compiler.
        -Tested on IDEA 14.0.1 Community and Ultimate Editions.
      5. +Tested on IDEA 15.0.3 Community and Ultimate Editions.

      -Android project in IDEA 12

      +Android project in IDEA 12

      Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

      -Android Studio (IDEA 13) / Gradle

      +Android Studio (IDEA 13) / Gradle

      add to build.gradle:

      @@ -172,12 +174,12 @@

      -Maven

      +Maven

      Look at javac-oo-mvndemo/pom.xml

      -Details

      +Details

      Read the paper to learn more. Supported operators (operator to method name map):

      @@ -233,7 +235,7 @@

      use operators on them "out of the box". Or you can add these methods to your classes to use OO (see examples/Vector.java).

      -Publications

      +Publications

      "Java Modular Extension for Operator Overloading", IJPLA, April 2014.

      @@ -258,4 +260,3 @@

      - diff --git a/params.json b/params.json index e056c33..c88d8df 100644 --- a/params.json +++ b/params.json @@ -1 +1 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.5\r\n\tIntelliJ IDEA: 0.4.1\r\n\r\n# News #\r\n10 April 2015. [IntelliJ IDEA](#IDEA) plugin v0.4.1 released with support of IDEA 14.1.\r\n\r\n27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev]. Unfortunately it [doesn't work in Eclipse 4.4 (Luna)](https://github.com/amelentev/java-oo/issues/26) yet.\r\n\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
      \r\nPlugin versions updated:
      \r\n[JavaC7 & JavaC8](#javac): 0.5
      \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      \r\nFor other project types:
      \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
      \r\nTested on IDEA 14.0.1 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
      \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
      \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
      \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.4.1.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n[equinox-weaving-launcher]: https://github.com/milessabin/equinox-weaving-launcher\r\n\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.5\r\n\tIntelliJ IDEA: 0.5\r\n\r\nNote plugin versions are independant. If version for X > version for Y then it doesn't mean Y is behind featurewise.\r\n\r\n# News #\r\n2 Feb 2016. [IntelliJ IDEA](#IDEA) plugin v0.5 released with support of IDEA 15. Requires Java8 to run the plugin.\r\n\r\n10 April 2015. [IntelliJ IDEA](#IDEA) plugin v0.4.1 released with support of IDEA 14.1.\r\n\r\n27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev]. Unfortunately it [doesn't work in Eclipse 4.4 (Luna)](https://github.com/amelentev/java-oo/issues/26) yet.\r\n\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
      \r\nPlugin versions updated:
      \r\n[JavaC7 & JavaC8](#javac): 0.5
      \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n
      \r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      \r\nFor other project types:
      \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
      \r\nTested on IDEA 15.0.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
      \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
      \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
      \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.5.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n[equinox-weaving-launcher]: https://github.com/milessabin/equinox-weaving-launcher\r\n\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/stylesheets/github-light.css b/stylesheets/github-light.css index 10f40a4..872a6f4 100644 --- a/stylesheets/github-light.css +++ b/stylesheets/github-light.css @@ -113,3 +113,4 @@ .pl-mo /* meta.output */ { color: #1d3e81; } + From da5d3bdf9d0f2cddf4254a0310f30b9719e3918c Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Thu, 14 Jul 2016 22:48:32 +0300 Subject: [PATCH 24/32] Create gh-pages branch via GitHub --- index.html | 13 ++++--- params.json | 8 ++++- stylesheets/github-light.css | 68 ++++++++++++++++++++---------------- 3 files changed, 54 insertions(+), 35 deletions(-) diff --git a/index.html b/index.html index 225814f..2f8ed7c 100644 --- a/index.html +++ b/index.html @@ -58,16 +58,18 @@

      IntelliJ IDEA: 0.5 -

      Note plugin versions are independant. If version for X > version for Y then it doesn't mean Y is behind featurewise.

      +

      Note plugin versions are independent. If version for X > version for Y then it doesn't mean Y is behind feature wise.

      News

      +

      14 July 2016. As a workaround Eclipse plugin works fine on Eclipse 4.4+ if you install Scala IDE plugin first.

      +

      2 Feb 2016. IntelliJ IDEA plugin v0.5 released with support of IDEA 15. Requires Java8 to run the plugin.

      10 April 2015. IntelliJ IDEA plugin v0.4.1 released with support of IDEA 14.1.

      -

      27 January 2015. Eclipse-oo-plugin version 0.5 released with support of reverse binary operator overload. Unfortunately it doesn't work in Eclipse 4.4 (Luna) yet.

      +

      27 January 2015. Eclipse-oo-plugin version 0.5 released with support of reverse binary operator overload.

      2 December 2014. New feature: Reverse binary operator overload via operatorRev methods.
      Plugin versions updated:
      @@ -114,6 +116,8 @@

      Demo at examples/compile.sh

      +

      +

      Eclipse IDE update site

      @@ -122,7 +126,8 @@

      http://amelentev.github.io/eclipse.jdt-oo-site/
       
      -

      Tested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.

      +

      Tested on Eclipse Standard 4.3.2. Should work with older versions too.
      +To work on 4.4+ you need to install Scala IDE plugin (or similar plugin with Equanox weaving). You can find it in Help -> Eclipse Marketplace. This is workaround until normal solution will be found. Tested on 4.4 and 4.6.

      Netbeans IDE @@ -156,7 +161,7 @@

      Android project in IDEA 12

      -

      Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

      +

      Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

      Android Studio (IDEA 13) / Gradle

      diff --git a/params.json b/params.json index c88d8df..f843f19 100644 --- a/params.json +++ b/params.json @@ -1 +1,7 @@ -{"name":"Java-OO","tagline":"Java Operator Overloading","body":"# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.5\r\n\tIntelliJ IDEA: 0.5\r\n\r\nNote plugin versions are independant. If version for X > version for Y then it doesn't mean Y is behind featurewise.\r\n\r\n# News #\r\n2 Feb 2016. [IntelliJ IDEA](#IDEA) plugin v0.5 released with support of IDEA 15. Requires Java8 to run the plugin.\r\n\r\n10 April 2015. [IntelliJ IDEA](#IDEA) plugin v0.4.1 released with support of IDEA 14.1.\r\n\r\n27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev]. Unfortunately it [doesn't work in Eclipse 4.4 (Luna)](https://github.com/amelentev/java-oo/issues/26) yet.\r\n\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
      \r\nPlugin versions updated:
      \r\n[JavaC7 & JavaC8](#javac): 0.5
      \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n\r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.2. Should work with older versions too. Don't work in 4.4 yet.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n\r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      \r\nFor other project types:
      \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
      \r\nTested on IDEA 15.0.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` \r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
      \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
      \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
      \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.5.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n[equinox-weaving-launcher]: https://github.com/milessabin/equinox-weaving-launcher\r\n\r\n","google":"UA-31894853-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file +{ + "name": "Java-OO", + "tagline": "Java Operator Overloading", + "body": "# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.5\r\n\tIntelliJ IDEA: 0.5\r\n\r\nNote plugin versions are independent. If version for X > version for Y then it doesn't mean Y is behind feature wise.\r\n\r\n# News #\r\n14 July 2016. As a workaround [Eclipse plugin](#Eclipse) works fine on Eclipse 4.4+ if you install [Scala IDE] plugin first.\r\n\r\n2 Feb 2016. [IntelliJ IDEA](#IDEA) plugin v0.5 released with support of IDEA 15. Requires Java8 to run the plugin.\r\n\r\n10 April 2015. [IntelliJ IDEA](#IDEA) plugin v0.4.1 released with support of IDEA 14.1.\r\n\r\n27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev].\r\n\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
      \r\nPlugin versions updated:
      \r\n[JavaC7 & JavaC8](#javac): 0.5
      \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n
      \r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.2. Should work with older versions too.
      \r\nTo work on 4.4+ you need to install [Scala IDE] plugin (or similar plugin with Equanox weaving). You can find it in `Help -> Eclipse Marketplace`. This is workaround until normal solution will be found. Tested on 4.4 and 4.6.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
      \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      \r\nFor other project types:
      \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
      \r\nTested on IDEA 15.0.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path`\r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
      \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
      \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
      \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.5.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n[equinox-weaving-launcher]: https://github.com/milessabin/equinox-weaving-launcher\r\n[Scala IDE]: http://scala-ide.org/download/current.html\r\n", + "google": "UA-31894853-1", + "note": "Don't delete this file! It's used internally to help with page regeneration." +} \ No newline at end of file diff --git a/stylesheets/github-light.css b/stylesheets/github-light.css index 872a6f4..0c6b24d 100644 --- a/stylesheets/github-light.css +++ b/stylesheets/github-light.css @@ -1,17 +1,25 @@ /* - Copyright 2014 GitHub Inc. +The MIT License (MIT) - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Copyright (c) 2016 GitHub, Inc. - http://www.apache.org/licenses/LICENSE-2.0 +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. */ @@ -19,18 +27,18 @@ color: #969896; } -.pl-c1 /* constant, markup.raw, meta.diff.header, meta.module-reference, meta.property-name, support, support.constant, support.variable, variable.other.constant */, +.pl-c1 /* constant, variable.other.constant, support, meta.property-name, support.constant, support.variable, meta.module-reference, markup.raw, meta.diff.header */, .pl-s .pl-v /* string variable */ { color: #0086b3; } -.pl-e /* entity */, +.pl-e /* entity */, .pl-en /* entity.name */ { color: #795da3; } -.pl-s .pl-s1 /* string source */, -.pl-smi /* storage.modifier.import, storage.modifier.package, storage.type.java, variable.other, variable.parameter.function */ { +.pl-smi /* variable.parameter.function, storage.modifier.package, storage.modifier.import, storage.type.java, variable.other */, +.pl-s .pl-s1 /* string source */ { color: #333; } @@ -42,13 +50,13 @@ color: #a71d5d; } -.pl-pds /* punctuation.definition.string, string.regexp.character-class */, -.pl-s /* string */, +.pl-s /* string */, +.pl-pds /* punctuation.definition.string, string.regexp.character-class */, .pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */, -.pl-sr /* string.regexp */, -.pl-sr .pl-cce /* string.regexp constant.character.escape */, -.pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */, -.pl-sr .pl-sre /* string.regexp source.ruby.embedded */ { +.pl-sr /* string.regexp */, +.pl-sr .pl-cce /* string.regexp constant.character.escape */, +.pl-sr .pl-sre /* string.regexp source.ruby.embedded */, +.pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */ { color: #183691; } @@ -61,24 +69,24 @@ } .pl-ii /* invalid.illegal */ { - background-color: #b52a1d; color: #f8f8f8; + background-color: #b52a1d; } .pl-sr .pl-cce /* string.regexp constant.character.escape */ { - color: #63a35c; font-weight: bold; + color: #63a35c; } .pl-ml /* markup.list */ { color: #693a17; } -.pl-mh /* markup.heading */, +.pl-mh /* markup.heading */, .pl-mh .pl-en /* markup.heading entity.name */, -.pl-ms /* meta.separator */ { - color: #1d3e81; +.pl-ms /* meta.separator */ { font-weight: bold; + color: #1d3e81; } .pl-mq /* markup.quote */ { @@ -86,28 +94,28 @@ } .pl-mi /* markup.italic */ { - color: #333; font-style: italic; + color: #333; } .pl-mb /* markup.bold */ { - color: #333; font-weight: bold; + color: #333; } .pl-md /* markup.deleted, meta.diff.header.from-file */ { - background-color: #ffecec; color: #bd2c00; + background-color: #ffecec; } .pl-mi1 /* markup.inserted, meta.diff.header.to-file */ { - background-color: #eaffea; color: #55a532; + background-color: #eaffea; } .pl-mdr /* meta.diff.range */ { - color: #795da3; font-weight: bold; + color: #795da3; } .pl-mo /* meta.output */ { From 6db6f4f620811c812cdbdce5f21d8115364ffba7 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sat, 28 Jan 2017 23:40:47 +0300 Subject: [PATCH 25/32] Set theme jekyll-theme-cayman and migrate Page Generator content --- _config.yml | 8 ++ index.html | 267 ---------------------------------------------------- index.md | 210 +++++++++++++++++++++++++++++++++++++++++ params.json | 7 -- 4 files changed, 218 insertions(+), 274 deletions(-) create mode 100644 _config.yml delete mode 100644 index.html create mode 100644 index.md delete mode 100644 params.json diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..42c8992 --- /dev/null +++ b/_config.yml @@ -0,0 +1,8 @@ +title: Java-OO +description: Java Operator Overloading +google_analytics: UA-31894853-1 +show_downloads: true +theme: jekyll-theme-cayman + +gems: + - jekyll-mentions diff --git a/index.html b/index.html deleted file mode 100644 index 2f8ed7c..0000000 --- a/index.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - Java-OO by amelentev - - - - - - - -
      - -
      -

      -Java Operator Overloading

      - -

      Java-OO is a modular extension (plugin) to Java compilers and IDEs -for (Scala-like) Operator Overloading support. -Works with standard JavaC compiler, Netbeans IDE, Eclipse IDE, IntelliJ IDEA IDE and any build tools.

      - -

      Example (see other examples at examples/ dir):

      - -
      import java.math.*;
      -import java.util.*;
      -public class Test {
      -  public static void main(String[] args) {
      -    BigInteger a = BigInteger.valueOf(1), // without OO
      -               b = 2, // with OO
      -
      -    c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO
      -    c2 = -a + b*b + b/a; // with OO
      -
      -    if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO
      -      System.out.println("impossible");
      -    if (c1<c2 || c1>c2) // with OO
      -      System.out.println("impossible");
      -
      -    HashMap<String, String> map = new HashMap<>();
      -    if (!map.containsKey("qwe")) map.put("qwe", map.get("asd")); // without OO
      -    if (map["qwe"]==null) map["qwe"] = map["asd"]; // with OO
      -  }
      -}
      - -

      -Versions

      - -
      JavaC/Netbeans: 0.5
      -JavaC8:         0.5
      -Eclipse:        0.5
      -IntelliJ IDEA:  0.5
      -
      - -

      Note plugin versions are independent. If version for X > version for Y then it doesn't mean Y is behind feature wise.

      - -

      -News

      - -

      14 July 2016. As a workaround Eclipse plugin works fine on Eclipse 4.4+ if you install Scala IDE plugin first.

      - -

      2 Feb 2016. IntelliJ IDEA plugin v0.5 released with support of IDEA 15. Requires Java8 to run the plugin.

      - -

      10 April 2015. IntelliJ IDEA plugin v0.4.1 released with support of IDEA 14.1.

      - -

      27 January 2015. Eclipse-oo-plugin version 0.5 released with support of reverse binary operator overload.

      - -

      2 December 2014. New feature: Reverse binary operator overload via operatorRev methods.
      -Plugin versions updated:
      -JavaC7 & JavaC8: 0.5
      -IntelliJ IDEA: 0.4. Support of IDEA 14

      - -

      31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.

      - -

      24 May 2014. IntelliJ IDEA plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.

      - -

      30 April 2014. IJPLA published a paper about Java-OO.

      - -

      3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released. -It has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.

      - -

      12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released. -Now operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate. -Fixed javac plugin bug with index-set OO.

      - -

      3 Jan 2014. JavaC plugin version 0.3 released. -Fixed #10 javac: binary operator adds erroneous cast on 1st operand.

      - -

      8 Sep 2013. Eclipse plugin version 0.3 released. -Removed copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.

      - -

      14 May 2013. IntelliJ IDEA IDE plugin v0.2.1 with IDEA Ultimate Edition support.

      - -

      17 Apr 2013. IntelliJ IDEA IDE plugin v0.2.

      - -

      26 Nov 2012. Version 0.2 released. New feature: Assignment operator overloading via static #valueOf method.

      - -

      -Installation

      - -

      - -

      -javac, ant, etc

      - -

      Just add to classpath: javac-oo-plugin.jar for JDK7 or javac8-oo-plugin.jar for JDK8.

      - -
      javac -cp javac-oo-plugin.jar <sources>
      -
      - -

      Demo at examples/compile.sh

      - -

      - -

      -Eclipse IDE update site

      - -

      Click in menu: Help - Install New Software. Enter in Work with field:

      - -
      http://amelentev.github.io/eclipse.jdt-oo-site/
      -
      - -

      Tested on Eclipse Standard 4.3.2. Should work with older versions too.
      -To work on 4.4+ you need to install Scala IDE plugin (or similar plugin with Equanox weaving). You can find it in Help -> Eclipse Marketplace. This is workaround until normal solution will be found. Tested on 4.4 and 4.6.

      - -

      -Netbeans IDE -

      - -
        -
      1. Add javac-oo-plugin.jar as compile or processor library to Netbeans.
      2. -
      3. Enable "Annotation Processing in Editor": Project Properties -> Build -> Compiling.
      4. -
      - -

      Tested on 7.2.1

      - -

      - -

      -IntelliJ IDEA IDE

      - -
        -
      1. Install Java Operator Overloading support plugin: File -> Settings -> Plugins -> Browse repositories. Mirror: idea-oo-plugin.jar)
        -For Maven projects installation is done. IDEA should setup everything according to pom.xml.
        -For other project types:
        -
      2. -
      3. Add javac-oo-plugin.jar as compile or processor library.
      4. -
      5. Enable Annotation Processing: -Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing -
      6. -
      7. Make sure you use javac compiler in Settings -> Java Compiler -> Use compiler.
        -Tested on IDEA 15.0.3 Community and Ultimate Editions.
      8. -
      - -

      -Android project in IDEA 12

      - -

      Add javac-oo-plugin.jar to File - Settings - Compiler - Annotation Processors - Processor path

      - -

      -Android Studio (IDEA 13) / Gradle

      - -

      add to build.gradle:

      - -
      repositories {
      -    maven { url 'http://amelentev.github.io/mvnrepo/' }
      -}
      -dependencies {
      -    compile 'java-oo:javac-oo-plugin:0.5'
      -}
      -
      - -

      - -

      -Maven

      - -

      Look at javac-oo-mvndemo/pom.xml

      - -

      -Details

      - -

      Read the paper to learn more. -Supported operators (operator to method name map):

      - -

      binary:

      - -
      | OPERATOR | METHOD NAME|
      --------------------------
      -| +        | add        |
      -| -        | subtract   |
      -| *        | multiply   |
      -| /        | divide     |
      -| %        | remainder  |
      -| &        | and        |
      -| |        | or         |
      -| ^        | xor        |
      -| <<       | shiftLeft  |
      -| >>       | shiftRight |
      -
      - -

      If left operand has no such method then the plugin will try to use 'reverse' method <methodName>Rev on right operand. -So 2*a will be transformed to a.multiplyRev(2) if a has such method.

      - -

      unary:

      - -
      | -        | negate     |
      -| ~        | not        |
      -
      - -

      comparison:

      - -
      | <, <=, >, >= | compareTo  | example: `a < b` <=> `a.compareTo(b)<0`
      -`==` and `!=` are not overloadable because it will break things
      -
      - -

      index:

      - -
      | []  | get       | `v = lst[i]` <=> `v = lst.get(i)`
      -| []= | set, put  | `map[s] = v` <=> `map.put(s,v)`,  `lst[i] = v` <=> `lst.set(i,v)`
      -
      - -

      assignment:

      - -
      | var = expr | var = VarClass.valueOf(expr) |
      -
      - -

      if expr is not assignable to var and var is an instance of VarClass and expr has type ExprType and there are static method VarClass#valueOf(ExprType)
      -then var = expr is transformed to var = VarClass.valueOf(expr). -example:
      -BigInteger a = 1 is transformed to BigInteger a = BigInteger.valueOf(1)

      - -

      These methods exists in many java classes (example: BigInteger, BigDecimal) so you can -use operators on them "out of the box". Or you can add these methods to your classes to use OO (see examples/Vector.java).

      - -

      -Publications

      - -

      "Java Modular Extension for Operator Overloading", IJPLA, April 2014.

      - - - -
      - - - - - - diff --git a/index.md b/index.md new file mode 100644 index 0000000..4f9fb54 --- /dev/null +++ b/index.md @@ -0,0 +1,210 @@ +# Java Operator Overloading # + +Java-OO is a modular extension (plugin) to Java compilers and IDEs +for ([Scala-like]) [Operator Overloading] support. +Works with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools. + +Example (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir): + +```java +import java.math.*; +import java.util.*; +public class Test { + public static void main(String[] args) { + BigInteger a = BigInteger.valueOf(1), // without OO + b = 2, // with OO + + c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO + c2 = -a + b*b + b/a; // with OO + + if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO + System.out.println("impossible"); + if (c1c2) // with OO + System.out.println("impossible"); + + HashMap map = new HashMap<>(); + if (!map.containsKey("qwe")) map.put("qwe", map.get("asd")); // without OO + if (map["qwe"]==null) map["qwe"] = map["asd"]; // with OO + } +} +``` +# Versions # + + JavaC/Netbeans: 0.5 + JavaC8: 0.5 + Eclipse: 0.5 + IntelliJ IDEA: 0.5 + +Note plugin versions are independent. If version for X > version for Y then it doesn't mean Y is behind feature wise. + +# News # +14 July 2016. As a workaround [Eclipse plugin](#Eclipse) works fine on Eclipse 4.4+ if you install [Scala IDE] plugin first. + +2 Feb 2016. [IntelliJ IDEA](#IDEA) plugin v0.5 released with support of IDEA 15. Requires Java8 to run the plugin. + +10 April 2015. [IntelliJ IDEA](#IDEA) plugin v0.4.1 released with support of IDEA 14.1. + +27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev]. + +2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
      +Plugin versions updated:
      +[JavaC7 & JavaC8](#javac): 0.5
      +[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14 + +31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac. + +24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives. + +30 April 2014. [IJPLA] published a [paper] about Java-OO. + +3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released. +It has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet. + +12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released. +Now operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate. +Fixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13). + +3 Jan 2014. JavaC plugin version 0.3 released. +Fixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10). + +8 Sep 2013. Eclipse plugin version 0.3 released. +Removed copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes. + +14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support. + +17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2. + +26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method. +[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed + +# Installation # + + +## javac, ant, etc ## +Just add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8. +``` +javac -cp javac-oo-plugin.jar +``` +Demo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh) + + +## [Eclipse IDE] update site ## +Click in menu: `Help - Install New Software`. Enter in `Work with` field: + + http://amelentev.github.io/eclipse.jdt-oo-site/ + +Tested on Eclipse Standard 4.3.2. Should work with older versions too.
      +To work on 4.4+ you need to install [Scala IDE] plugin (or similar plugin with Equanox weaving). You can find it in `Help -> Eclipse Marketplace`. This is workaround until normal solution will be found. Tested on 4.4 and 4.6. + +## [Netbeans IDE] ## +1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans. +2. Enable "Annotation Processing in Editor": `Project Properties -> Build -> Compiling`. + +Tested on 7.2.1 + +
      +## [IntelliJ IDEA] IDE ## +1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      +For [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      +For other project types:
      +2. Add [javac-oo-plugin.jar] as compile or processor library. +3. Enable Annotation Processing: +`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing` +4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
      +Tested on IDEA 15.0.3 Community and Ultimate Editions. + +### Android project in IDEA 12 ### +Add [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` + +### Android Studio (IDEA 13) / Gradle ### +add to `build.gradle`: + +``` +repositories { + maven { url 'http://amelentev.github.io/mvnrepo/' } +} +dependencies { + compile 'java-oo:javac-oo-plugin:0.5' +} +``` + +
      +## Maven ## +Look at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml) + +# Details # + +Read the [paper] to learn more. +Supported operators (operator to method name map): + +binary: + + | OPERATOR | METHOD NAME| + ------------------------- + | + | add | + | - | subtract | + | * | multiply | + | / | divide | + | % | remainder | + | & | and | + | | | or | + | ^ | xor | + | << | shiftLeft | + | >> | shiftRight | + +If left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand. +So `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method. + +unary: + + | - | negate | + | ~ | not | + +comparison: + + | <, <=, >, >= | compareTo | example: `a < b` <=> `a.compareTo(b)<0` + `==` and `!=` are not overloadable because it will break things + +index: + + | [] | get | `v = lst[i]` <=> `v = lst.get(i)` + | []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)` + +assignment: + + | var = expr | var = VarClass.valueOf(expr) | + +if `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
      +then `var = expr` is transformed to `var = VarClass.valueOf(expr)`. +example:
      +`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)` + +These methods exists in many java classes (example: BigInteger, BigDecimal) so you can +use operators on them "out of the box". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)). + + +## Publications +["Java Modular Extension for Operator Overloading", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf) + +[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973 +[javac-oo]: https://bitbucket.org/amelentev/javac-oo +[lombok]: http://projectlombok.org/ +[lombok-oo]: https://github.com/amelentev/lombok-oo +[Eclipse IDE]: http://eclipse.org/ +[Netbeans IDE]: http://www.netbeans.org/ +[IntelliJ IDEA]: http://www.jetbrains.com/idea/ +[Java Developer Tools]: http://eclipse.org/jdt/ +[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo +[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading +[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart +[PDE]: http://www.eclipse.org/pde/ +[maven]: https://maven.apache.org/ + +[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar +[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar +[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.5.jar +[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr +[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf +[operatorRev]: https://github.com/amelentev/java-oo/issues/25 +[equinox-weaving-launcher]: https://github.com/milessabin/equinox-weaving-launcher +[Scala IDE]: http://scala-ide.org/download/current.html diff --git a/params.json b/params.json deleted file mode 100644 index f843f19..0000000 --- a/params.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "Java-OO", - "tagline": "Java Operator Overloading", - "body": "# Java Operator Overloading #\r\n\r\nJava-OO is a modular extension (plugin) to Java compilers and IDEs\r\nfor ([Scala-like]) [Operator Overloading] support.\r\nWorks with standard JavaC compiler, [Netbeans IDE], [Eclipse IDE], [IntelliJ IDEA] IDE and any build tools.\r\n\r\nExample (see other examples at [examples/](https://github.com/amelentev/java-oo/tree/master/javac-oo-mvndemo/src/) dir):\r\n\r\n```java\r\nimport java.math.*;\r\nimport java.util.*;\r\npublic class Test {\r\n public static void main(String[] args) {\r\n BigInteger a = BigInteger.valueOf(1), // without OO\r\n b = 2, // with OO\r\n\r\n c1 = a.negate().add(b.multiply(b)).add(b.divide(a)), // without OO\r\n c2 = -a + b*b + b/a; // with OO\r\n\r\n if (c1.compareTo(c2)<0 || c1.compareTo(c2)>0) // without OO\r\n System.out.println(\"impossible\");\r\n if (c1c2) // with OO\r\n System.out.println(\"impossible\");\r\n\r\n HashMap map = new HashMap<>();\r\n if (!map.containsKey(\"qwe\")) map.put(\"qwe\", map.get(\"asd\")); // without OO\r\n if (map[\"qwe\"]==null) map[\"qwe\"] = map[\"asd\"]; // with OO\r\n }\r\n}\r\n```\r\n# Versions #\r\n\r\n\tJavaC/Netbeans: 0.5\r\n\tJavaC8: 0.5\r\n\tEclipse: 0.5\r\n\tIntelliJ IDEA: 0.5\r\n\r\nNote plugin versions are independent. If version for X > version for Y then it doesn't mean Y is behind feature wise.\r\n\r\n# News #\r\n14 July 2016. As a workaround [Eclipse plugin](#Eclipse) works fine on Eclipse 4.4+ if you install [Scala IDE] plugin first.\r\n\r\n2 Feb 2016. [IntelliJ IDEA](#IDEA) plugin v0.5 released with support of IDEA 15. Requires Java8 to run the plugin.\r\n\r\n10 April 2015. [IntelliJ IDEA](#IDEA) plugin v0.4.1 released with support of IDEA 14.1.\r\n\r\n27 January 2015. Eclipse-oo-plugin version 0.5 released with support of [reverse binary operator overload][operatorRev].\r\n\r\n2 December 2014. New feature: [Reverse binary operator overload via `operatorRev` methods][operatorRev].
      \r\nPlugin versions updated:
      \r\n[JavaC7 & JavaC8](#javac): 0.5
      \r\n[IntelliJ IDEA](#IDEA): 0.4. Support of IDEA 14\r\n\r\n31 May 2014. Javac8 plugin version 0.1.1 released. Removed runtime depencendy on nbjavac.\r\n\r\n24 May 2014. [IntelliJ IDEA](#IDEA) plugin v0.3.1 released. Bugfixes for IDEA 13 Ultimate and for type resolution for binary expressions with primitives.\r\n\r\n30 April 2014. [IJPLA] published a [paper] about Java-OO.\r\n\r\n3 Feb 2014. New JavaC8 plugin version 0.1 for JDK8 was released.\r\nIt has the same features as JavaC plugin for JDK7 but doesn't work in Netbeans yet.\r\n\r\n12 Jan 2014. JavaC plugin version 0.4 and Eclipse plugin version 0.4 released.\r\nNow operator overloading perform autoboxing/autounboxing primitive to/from wrapper types where appropriate.\r\nFixed [javac plugin bug with index-set OO](https://github.com/amelentev/java-oo/issues/13).\r\n\r\n3 Jan 2014. JavaC plugin version 0.3 released.\r\nFixed [#10 javac: binary operator adds erroneous cast on 1st operand](https://github.com/amelentev/java-oo/issues/10).\r\n\r\n8 Sep 2013. Eclipse plugin version 0.3 released.\r\nRemoved copypasta from Eclipse Compiler. Plugin should be more steady agains compiler changes.\r\n\r\n14 May 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.1 with IDEA Ultimate Edition support.\r\n\r\n17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2.\r\n\r\n26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method.\r\n[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed\r\n\r\n# Installation #\r\n\r\n
      \r\n## javac, ant, etc ##\r\nJust add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8.\r\n```\r\njavac -cp javac-oo-plugin.jar \r\n```\r\nDemo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh)\r\n\r\n\r\n## [Eclipse IDE] update site ##\r\nClick in menu: `Help - Install New Software`. Enter in `Work with` field:\r\n\r\n\thttp://amelentev.github.io/eclipse.jdt-oo-site/\r\n\r\nTested on Eclipse Standard 4.3.2. Should work with older versions too.
      \r\nTo work on 4.4+ you need to install [Scala IDE] plugin (or similar plugin with Equanox weaving). You can find it in `Help -> Eclipse Marketplace`. This is workaround until normal solution will be found. Tested on 4.4 and 4.6.\r\n\r\n## [Netbeans IDE] ##\r\n1. Add [javac-oo-plugin.jar] as compile or processor library to Netbeans.\r\n2. Enable \"Annotation Processing in Editor\": `Project Properties -> Build -> Compiling`.\r\n\r\nTested on 7.2.1\r\n\r\n
      \r\n## [IntelliJ IDEA] IDE ##\r\n1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      \r\nFor [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      \r\nFor other project types:
      \r\n2. Add [javac-oo-plugin.jar] as compile or processor library.\r\n3. Enable Annotation Processing:\r\n`Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing`\r\n4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
      \r\nTested on IDEA 15.0.3 Community and Ultimate Editions.\r\n\r\n### Android project in IDEA 12 ###\r\nAdd [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path`\r\n\r\n### Android Studio (IDEA 13) / Gradle ###\r\nadd to `build.gradle`:\r\n\r\n```\r\nrepositories {\r\n\tmaven { url 'http://amelentev.github.io/mvnrepo/' }\r\n}\r\ndependencies {\r\n\tcompile 'java-oo:javac-oo-plugin:0.5'\r\n}\r\n```\r\n\r\n
      \r\n## Maven ##\r\nLook at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml)\r\n\r\n# Details #\r\n\r\nRead the [paper] to learn more.\r\nSupported operators (operator to method name map):\r\n\r\nbinary:\r\n\r\n\t| OPERATOR | METHOD NAME|\r\n\t-------------------------\r\n\t| + | add |\r\n\t| - | subtract |\r\n\t| * | multiply |\r\n\t| / | divide |\r\n\t| % | remainder |\r\n\t| & | and |\r\n\t| | | or |\r\n\t| ^ | xor |\r\n\t| << | shiftLeft |\r\n\t| >> | shiftRight |\r\n\r\nIf left operand has no such method then the plugin will try to use ['reverse' method `Rev`][operatorRev] on right operand.\r\nSo `2*a` will be transformed to `a.multiplyRev(2)` if `a` has such method.\r\n\r\nunary:\r\n\r\n\t| - | negate |\r\n\t| ~ | not |\r\n\r\ncomparison:\r\n\r\n\t| <, <=, >, >= | compareTo\t| example: `a < b` <=> `a.compareTo(b)<0`\r\n\t`==` and `!=` are not overloadable because it will break things\r\n\r\nindex:\r\n\r\n\t| [] | get | `v = lst[i]` <=> `v = lst.get(i)`\r\n\t| []= | set, put | `map[s] = v` <=> `map.put(s,v)`, `lst[i] = v` <=> `lst.set(i,v)`\r\n\r\nassignment:\r\n\r\n\t| var = expr | var = VarClass.valueOf(expr) |\r\n\r\nif `expr` is not assignable to `var` and `var` is an instance of `VarClass` and `expr` has type `ExprType` and there are static method `VarClass#valueOf(ExprType)`
      \r\nthen `var = expr` is transformed to `var = VarClass.valueOf(expr)`.\r\nexample:
      \r\n`BigInteger a = 1` is transformed to `BigInteger a = BigInteger.valueOf(1)`\r\n\r\nThese methods exists in many java classes (example: BigInteger, BigDecimal) so you can\r\nuse operators on them \"out of the box\". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)).\r\n\r\n\r\n## Publications\r\n[\"Java Modular Extension for Operator Overloading\", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf)\r\n\r\n[Scala-like]: http://www.slideshare.net/joeygibson/operator-overloading-in-scala-2923973\r\n[javac-oo]: https://bitbucket.org/amelentev/javac-oo\r\n[lombok]: http://projectlombok.org/\r\n[lombok-oo]: https://github.com/amelentev/lombok-oo\r\n[Eclipse IDE]: http://eclipse.org/\r\n[Netbeans IDE]: http://www.netbeans.org/\r\n[IntelliJ IDEA]: http://www.jetbrains.com/idea/\r\n[Java Developer Tools]: http://eclipse.org/jdt/\r\n[eclipse-oo]: https://github.com/amelentev/eclipse.jdt-oo\r\n[Operator Overloading]: http://en.wikipedia.org/wiki/Operator_overloading\r\n[AJDT and Equanox Weaving]: http://wiki.eclipse.org/Equinox_Weaving_QuickStart\r\n[PDE]: http://www.eclipse.org/pde/\r\n[maven]: https://maven.apache.org/\r\n\r\n[javac-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac-oo-plugin/0.5/javac-oo-plugin-0.5.jar\r\n[javac8-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/javac8-oo-plugin/0.5/javac8-oo-plugin-0.5.jar\r\n[idea-oo-plugin.jar]: http://amelentev.github.io/mvnrepo/java-oo/idea-oo-plugin/idea-oo-plugin-0.5.jar\r\n[IJPLA]: http://airccse.org/journal/ijpla/current2014.html#apr\r\n[paper]: https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf\r\n[operatorRev]: https://github.com/amelentev/java-oo/issues/25\r\n[equinox-weaving-launcher]: https://github.com/milessabin/equinox-weaving-launcher\r\n[Scala IDE]: http://scala-ide.org/download/current.html\r\n", - "google": "UA-31894853-1", - "note": "Don't delete this file! It's used internally to help with page regeneration." -} \ No newline at end of file From 975ae3ed28616605742972c996172719d6aef276 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sat, 28 Jan 2017 23:43:19 +0300 Subject: [PATCH 26/32] up readme --- index.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/index.md b/index.md index 4f9fb54..424bba9 100644 --- a/index.md +++ b/index.md @@ -81,9 +81,9 @@ Removed copypasta from Eclipse Compiler. Plugin should be more steady agains com
      ## javac, ant, etc ## -Just add to classpath: [javac-oo-plugin.jar] for JDK7 or [javac8-oo-plugin.jar] for JDK8. +Just add to classpath: [javac8-oo-plugin.jar] for JDK8 or [javac-oo-plugin.jar] for JDK7. ``` -javac -cp javac-oo-plugin.jar +javac -cp javac8-oo-plugin.jar ``` Demo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh) @@ -107,11 +107,11 @@ Tested on 7.2.1 1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      For [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      For other project types:
      -2. Add [javac-oo-plugin.jar] as compile or processor library. +2. Add [javac8-oo-plugin.jar] as compile or processor library. 3. Enable Annotation Processing: `Menu File -> Settings -> Compiler -> Annotation Processing -> Enable annotation processing` 4. Make sure you use `javac` compiler in `Settings -> Java Compiler -> Use compiler`.
      -Tested on IDEA 15.0.3 Community and Ultimate Editions. +Tested on IDEA 2016.3.3. ### Android project in IDEA 12 ### Add [javac-oo-plugin.jar] to `File - Settings - Compiler - Annotation Processors - Processor path` @@ -182,7 +182,6 @@ example:
      These methods exists in many java classes (example: BigInteger, BigDecimal) so you can use operators on them "out of the box". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)). - ## Publications ["Java Modular Extension for Operator Overloading", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf) From 9b3bf8cdabe05b2e502badc0582323faaf47be07 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sat, 28 Jan 2017 23:44:05 +0300 Subject: [PATCH 27/32] Set theme jekyll-theme-cayman From 06088db873ff573988ab81c0286086017c37e05a Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sat, 28 Jan 2017 23:46:22 +0300 Subject: [PATCH 28/32] h2 test --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 424bba9..e07bd0e 100644 --- a/index.md +++ b/index.md @@ -80,7 +80,9 @@ Removed copypasta from Eclipse Compiler. Plugin should be more steady agains com # Installation #
      + ## javac, ant, etc ## + Just add to classpath: [javac8-oo-plugin.jar] for JDK8 or [javac-oo-plugin.jar] for JDK7. ``` javac -cp javac8-oo-plugin.jar From aaa94756d6666cb1ea412e3a7d6dcafb03b4a173 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sat, 28 Jan 2017 23:49:21 +0300 Subject: [PATCH 29/32] h2 fixes --- index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index e07bd0e..64043fa 100644 --- a/index.md +++ b/index.md @@ -82,7 +82,6 @@ Removed copypasta from Eclipse Compiler. Plugin should be more steady agains com ## javac, ant, etc ## - Just add to classpath: [javac8-oo-plugin.jar] for JDK8 or [javac-oo-plugin.jar] for JDK7. ``` javac -cp javac8-oo-plugin.jar @@ -90,6 +89,7 @@ javac -cp javac8-oo-plugin.jar Demo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh) + ## [Eclipse IDE] update site ## Click in menu: `Help - Install New Software`. Enter in `Work with` field: @@ -105,6 +105,7 @@ To work on 4.4+ you need to install [Scala IDE] plugin (or similar plugin with E Tested on 7.2.1 + ## [IntelliJ IDEA] IDE ## 1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      For [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      @@ -131,6 +132,7 @@ dependencies { ```
      + ## Maven ## Look at [javac-oo-mvndemo/pom.xml](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/pom.xml) From 17c93fb07ffe042b2f0ed54387be46f08d9804ad Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sat, 28 Jan 2017 23:57:02 +0300 Subject: [PATCH 30/32] more .md fixes --- index.md | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 64043fa..1533b73 100644 --- a/index.md +++ b/index.md @@ -28,6 +28,7 @@ public class Test { } } ``` + # Versions # JavaC/Netbeans: 0.5 @@ -75,7 +76,6 @@ Removed copypasta from Eclipse Compiler. Plugin should be more steady agains com 17 Apr 2013. [IntelliJ IDEA](#IDEA) IDE plugin v0.2. 26 Nov 2012. [Version 0.2] released. New feature: [Assignment operator overloading](https://github.com/amelentev/java-oo/issues/4) via static _#valueOf_ method. -[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed # Installation # @@ -83,9 +83,11 @@ Removed copypasta from Eclipse Compiler. Plugin should be more steady agains com ## javac, ant, etc ## Just add to classpath: [javac8-oo-plugin.jar] for JDK8 or [javac-oo-plugin.jar] for JDK7. + ``` javac -cp javac8-oo-plugin.jar ``` + Demo at [examples/compile.sh](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src/compile.sh) @@ -186,6 +188,32 @@ example:
      These methods exists in many java classes (example: BigInteger, BigDecimal) so you can use operators on them "out of the box". Or you can add these methods to your classes to use OO (see [examples/Vector.java](https://github.com/amelentev/java-oo/blob/master/javac-oo-mvndemo/src//Vector.java)). + +## Subprojects / Implementation details + +- javac-oo-plugin + - Plugin to JavaC 1.7 and [Netbeans IDE] for operator overloading. Based on [javac-oo]. + - Building via [maven] at top level: `cd java-oo; mvn clean install`. Or import maven settings in your IDE. + +- eclipse-oo-plugin + - [Eclipse IDE](JDT) plugin for OO support. + - Patching Eclipse Java Compiler to allow OO. + - Build in Eclipse with [PDE], [AJDT and Equanox Weaving] plugins. Run as Eclipse application with [equinox weaving enabled][equinox-weaving-launcher]. + +- idea-oo-plugin + - [IntelliJ IDEA] IDE plugin for OO support. + - Modify Java frontend in IDEA to allow OO. Need javac-oo-plugin to actually compile. + - Build in IDEA. Run as IDEA plugin. + +- by-products: + - [javac-oo] + - Patched version of JavaC 1.7 for Operator Overloading support. If you need standalone javac compiler with OO. + - Build via ant or netbeans: http://openjdk.java.net/groups/compiler/README.html#build + - [eclipse-oo] + - Eclipse [Java Developer Tools] fork for Operator Overloading. + - Use it if you need native [Eclipse IDE] support, or Eclipse Java Compiler support. + - Build in Eclipse with [PDE]. Run as Eclipse application. + ## Publications ["Java Modular Extension for Operator Overloading", IJPLA, April 2014.](https://github.com/amelentev/java-oo/raw/master/doc/ijpla.pdf) @@ -211,3 +239,4 @@ use operators on them "out of the box". Or you can add these methods to your cla [operatorRev]: https://github.com/amelentev/java-oo/issues/25 [equinox-weaving-launcher]: https://github.com/milessabin/equinox-weaving-launcher [Scala IDE]: http://scala-ide.org/download/current.html +[Version 0.2]: https://github.com/amelentev/java-oo/issues?milestone=1&state=closed From aa293fd10f1ba329589224168f6643b12ab9b1cb Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sun, 29 Jan 2017 00:02:47 +0300 Subject: [PATCH 31/32] fix idea plugin link --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 1533b73..6d03092 100644 --- a/index.md +++ b/index.md @@ -109,7 +109,7 @@ Tested on 7.2.1
      ## [IntelliJ IDEA] IDE ## -1. Install [Java Operator Overloading support](http://plugins.jetbrains.com/plugin?pr=&pluginId=7224) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      +1. Install [Java Operator Overloading support](https://plugins.jetbrains.com/idea/plugin/7224-java-operator-overloading-support) plugin: `File -> Settings -> Plugins -> Browse repositories`. Mirror: [idea-oo-plugin.jar])
      For [Maven projects](#maven) installation is done. IDEA should setup everything according to pom.xml.
      For other project types:
      2. Add [javac8-oo-plugin.jar] as compile or processor library. From 1560f313190b2be58ba977aaa68df372ad13c243 Mon Sep 17 00:00:00 2001 From: Artem Melentyev Date: Sun, 29 Jan 2017 00:03:45 +0300 Subject: [PATCH 32/32] disable useless downloads --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 42c8992..3d8fb5d 100644 --- a/_config.yml +++ b/_config.yml @@ -1,7 +1,7 @@ title: Java-OO description: Java Operator Overloading google_analytics: UA-31894853-1 -show_downloads: true +show_downloads: false theme: jekyll-theme-cayman gems: