<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/class-reader/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/class-reader/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 02 Dec 2020 14:52:55 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/class-reader/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Home modified by Alexander Kornilov</title><link>https://sourceforge.net/p/class-reader/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -34,8 +34,8 @@

 application {
     dependencies {
-        implementation 'loggersoft:cpp-mate:0.1'
-        implementation 'loggersoft.jvm:class-reader:0.5'
+        implementation 'loggersoft:cpp-mate:0.5'
+        implementation 'loggersoft.jvm:class-reader:0.9'
     }
 }
 ~~~
@@ -87,8 +87,8 @@
     } catch(const std::bad_alloc&amp;amp; e) {
         std::cerr &amp;lt;&amp;lt; "Error: " &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; std::endl;
         return 2;
-    } catch(const Error&amp;amp; e) {
-        std::cerr &amp;lt;&amp;lt; "Error: Failed to open class file '" &amp;lt;&amp;lt; argv[1] &amp;lt;&amp;lt; "' with reason: " &amp;lt;&amp;lt; static_cast&amp;lt;int&amp;gt;(e.getReason()) &amp;lt;&amp;lt; std::endl;
+    } catch(const std::system_error&amp;amp; e) {
+        std::cerr &amp;lt;&amp;lt; "Error: Failed to open class file '" &amp;lt;&amp;lt; argv[1] &amp;lt;&amp;lt; "' with reason: " &amp;lt;&amp;lt; e.code().message() &amp;lt;&amp;lt; std::endl;
         return 3;
     }
     return 0;
&amp;lt;/int&amp;gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Kornilov</dc:creator><pubDate>Wed, 02 Dec 2020 14:52:55 -0000</pubDate><guid>https://sourceforge.netfd569d1f155d3c004bfeeebf3405458d8bdd94dc</guid></item><item><title>Home modified by Alexander Kornilov</title><link>https://sourceforge.net/p/class-reader/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -25,12 +25,16 @@

 repositories {
     maven {
+        url = 'https://cpp-mate.sourceforge.io/maven'
+    }
+    maven {
         url = 'https://class-reader.sourceforge.io/maven'
     }
 }

 application {
     dependencies {
+        implementation 'loggersoft:cpp-mate:0.1'
         implementation 'loggersoft.jvm:class-reader:0.5'
     }
 }
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Kornilov</dc:creator><pubDate>Fri, 24 Apr 2020 14:50:05 -0000</pubDate><guid>https://sourceforge.netb3ae3c2c1ee559035710ae6f28dd91e0924c9598</guid></item><item><title>Home modified by Alexander Kornilov</title><link>https://sourceforge.net/p/class-reader/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -31,7 +31,7 @@

 application {
     dependencies {
-        implementation 'loggersoft.jvm:class-reader:0.3'
+        implementation 'loggersoft.jvm:class-reader:0.5'
     }
 }
 ~~~
@@ -44,7 +44,7 @@
 * version-1 MinGW/gcc
 * version-2 clang-cl/clang++

-Example: **0.3-2** - CLang build variant of the library.
+Example: **0.5-2** - CLang build variant of the library.

 Documentation
 ---
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Kornilov</dc:creator><pubDate>Fri, 24 Apr 2020 14:48:57 -0000</pubDate><guid>https://sourceforge.net455b9205b533d813d1dbb5245cf91d0c046e691f</guid></item><item><title>Home modified by Alexander Kornilov</title><link>https://sourceforge.net/p/class-reader/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -31,7 +31,7 @@

 application {
     dependencies {
-        implementation 'loggersoft.jvm:class-reader:0.1'
+        implementation 'loggersoft.jvm:class-reader:0.3'
     }
 }
 ~~~
@@ -44,7 +44,7 @@
 * version-1 MinGW/gcc
 * version-2 clang-cl/clang++

-Example: **0.1-2** - CLang build variant of the library.
+Example: **0.3-2** - CLang build variant of the library.

 Documentation
 ---
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Kornilov</dc:creator><pubDate>Wed, 15 Apr 2020 11:54:02 -0000</pubDate><guid>https://sourceforge.net1cdfc64a5b9f118392887cc969c3eb558838ad3b</guid></item><item><title>Home modified by Alexander Kornilov</title><link>https://sourceforge.net/p/class-reader/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,8 +1,95 @@
-Welcome to your wiki!
+What is it?
+---
+Platform independent C++ (only STL) implementation of JVM class files parser and disassembler.

-This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: [SamplePage].
+Features
+---
+* Powerful JVM class file parser and disassembler C++ library.
+* Full support of JVM 8.0 specification.
+* Fast disassembler.
+* Name demangler API.
+* Platform independent C++ code (based on STL).
+* Fast implementation of file read for Windows and Linux.
+* Can read directly from .class file or from memory buffer (e.g. from decompressed .jar file).
+* An intuitive interface API.
+ 
+How to use it?
+---
+Build from sources by Gradle or just put `class-reader` artifact as a dependency in your Gradle build script and enjoy :)

-The wiki uses [Markdown](/p/class-reader/wiki/markdown_syntax/) syntax.
+Example of `build.gradle` for application:
+~~~
+plugins {
+    id 'cpp-application'
+}
+
+repositories {
+    maven {
+        url = 'https://class-reader.sourceforge.io/maven'
+    }
+}
+
+application {
+    dependencies {
+        implementation 'loggersoft.jvm:class-reader:0.1'
+    }
+}
+~~~
+
+At moment Gradle Artifactory has only Windows and Linux x86-64 binaries.
+
+Versions variants for different toolchains (Windows/Linux):
+
+* version - MSVC/gcc
+* version-1 MinGW/gcc
+* version-2 clang-cl/clang++
+
+Example: **0.1-2** - CLang build variant of the library.
+
+Documentation
+---
+[API reference](https://class-reader.sourceforge.io/doc)
+
+Code example
+---
+Dump all public methods of the class to console:
+
+~~~
+#include &amp;lt;classreader classfile.hpp=""&amp;gt;
+
+#include &amp;lt;iostream&amp;gt;
+#include &amp;lt;fstream&amp;gt;
+
+using namespace ClassReader;
+
+int main(int argc, char* argv[])
+{
+    if (argc &amp;lt;= 1) {
+        std::cout &amp;lt;&amp;lt; "Please specify .class file name." &amp;lt;&amp;lt; std::endl;
+        return 0;
+    }
+
+    try {
+        const auto file = ClassFile::load(argv[1]);
+        for (const auto&amp;amp; method: file-&amp;gt;getMethods()) {
+            if (method.hasAccessFlag(Method::AccessFlags::Public)) {
+                std::cout &amp;lt;&amp;lt; method.getName() &amp;lt;&amp;lt; std::endl;
+            }
+        }
+
+    } catch(const std::ifstream::failure&amp;amp; e) {
+        std::cerr &amp;lt;&amp;lt; "Error: " &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; std::endl;
+        return 1;
+    } catch(const std::bad_alloc&amp;amp; e) {
+        std::cerr &amp;lt;&amp;lt; "Error: " &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; std::endl;
+        return 2;
+    } catch(const Error&amp;amp; e) {
+        std::cerr &amp;lt;&amp;lt; "Error: Failed to open class file '" &amp;lt;&amp;lt; argv[1] &amp;lt;&amp;lt; "' with reason: " &amp;lt;&amp;lt; static_cast&amp;lt;int&amp;gt;(e.getReason()) &amp;lt;&amp;lt; std::endl;
+        return 3;
+    }
+    return 0;
+}
+~~~

 [[members limit=20]]
 [[download_button]]
&amp;lt;/int&amp;gt;&amp;lt;/fstream&amp;gt;&amp;lt;/iostream&amp;gt;&amp;lt;/classreader&amp;gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Kornilov</dc:creator><pubDate>Thu, 28 Nov 2019 15:22:41 -0000</pubDate><guid>https://sourceforge.net8999353c5a7c8575cd6984e86ade98a5b4d852b9</guid></item><item><title>Home modified by Alexander Kornilov</title><link>https://sourceforge.net/p/class-reader/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Welcome to your wiki!&lt;/p&gt;
&lt;p&gt;This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: &lt;span&gt;[SamplePage]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;The wiki uses &lt;a class="" href="/p/class-reader/wiki/markdown_syntax/"&gt;Markdown&lt;/a&gt; syntax.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;h6&gt;Project Members:&lt;/h6&gt;
	&lt;ul class="md-users-list"&gt;
		&lt;li&gt;&lt;a href="/u/akornilov/"&gt;Alexander Kornilov&lt;/a&gt; (admin)&lt;/li&gt;
		
	&lt;/ul&gt;&lt;br/&gt;
&lt;p&gt;&lt;span class="download-button-5ddfca78e396015a062c1be4" style="margin-bottom: 1em; display: block;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Kornilov</dc:creator><pubDate>Thu, 28 Nov 2019 13:24:09 -0000</pubDate><guid>https://sourceforge.net6318d154ca7722953566975329306542875c4d22</guid></item></channel></rss>