Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danfickle/cpp-to-java-source-converter
A translator to convert C++ to Java. A work in progess.
https://github.com/danfickle/cpp-to-java-source-converter
Last synced: about 2 months ago
JSON representation
A translator to convert C++ to Java. A work in progess.
- Host: GitHub
- URL: https://github.com/danfickle/cpp-to-java-source-converter
- Owner: danfickle
- License: apache-2.0
- Created: 2012-06-06T13:07:01.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2014-12-20T14:38:52.000Z (about 10 years ago)
- Last Synced: 2024-10-12T03:28:40.632Z (2 months ago)
- Language: Java
- Homepage:
- Size: 13.4 MB
- Stars: 49
- Watchers: 14
- Forks: 32
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
C++ to Java Translator
======================[Main source](/src/com/github/danfickle/cpptojavasourceconverter)
This project aims to convert C++ code to high level Java source code. Where that is not possible, a TODO should appear in the generated source code.
Status
------
The project is about three quarters of the way to an initial release. The below items will not be handled by the initial release:
+ goto statement
+ untyped malloc
+ template code generation (generics to be used instead).
+ C++/C std lib
+ order of operation differences
+ platform dependent/undefined behavior
+ unions
+ dynamic cast and other RTTI features
+ multiple inheritance
+ C++11 features
+ overloaded operator new and operator delete memory managementEverything else should work with the initial release.
Example Code
------------
The following lines give an indication of what generated code using pointers looks like.````cpp
// Test plain assignment...
f[4] = 111;
*f = 112;
(((*(f + 2)))) = 113;
*(f--) = 114;// Test compound assignment...
f[1] *= 3;
(*f) += 4;// Test pointer comparison
f < &f[1];
&f[0] == f;// Test addressof ptr
&f;
````````java
f.ptrOffset(4).set(111);
f.set(112);
((((f.ptrOffset(+2))))).set(113);
(f.ptrPostDec()).set(114);f.ptrOffset(1).set(f.ptrOffset(1).get() * 3);
(f).set((f.get()) + 4);f.ptrCompare() < f.ptrOffset(1).ptrCompare();
f.ptrOffset(0).ptrCompare() == f.ptrCompare();f.ptrAddressOf();
````Required JARs
-------------
This fork will build with Maven. Eclipse CDT is not
in Maven central, or any repository I could find, but
for your convenience, private copies of
certain JARS are shipped in the lib/ directory:
+ org.eclipse.cdt.core_5.4.1.201209170703.jar
+ org.eclipse.equinox.common_3.6.100.v20120522-1841.jar
+ com.ibm.icu_50.1.1.v201304230130.jar (I needed it at run-time once to fix a logging error)Please note these are from a separate project with separate licenses.
Historical required JARs:
These are the JAR files I use to get this code to run.
They are from Eclipse Juno (4.2.x) and CDT 8.1.1 for Eclipse Juno.
Additionally, jOOR is required by the runtime template handling code.+ [Eclipse downloads](http://www.eclipse.org/downloads/)
+ [CDT downloads](http://www.eclipse.org/cdt/downloads.php)
+ [jOOR at Github](https://github.com/jOOQ/jOOR)
+ org.eclipse.cdt.core_5.4.1.201209170703.jar
+ org.eclipse.equinox.common_3.6.100.v20120522-1841.jar
+ joor-0.9.3.jarLicense
-------
This project is licensed under the Apache license. The CDT walking code is based loosely on code I found (and lost the url) on the web (also licensed under the Apache license).TODO
----
This is an incomplete and fluid list of items that need doing before the initial release.+ General
+ Lots more assertions
+ Destructor calls on static duration objects
+ Cast operators other than C style cast should not resolve overloaded operator cast
+ Basic type classes other than MInteger
+ Global variables
+ Templates
+ Should be able to take the address of an enumerator
+ Putting in comments/defines from original
+ A lot of work on multi dimension arrays.
+ cleanup cpptojavatype method.
+ function pointers.
+ typed malloc.
+ testing cleanup.
+ making logger useful.
+ relacing deprecated methods.
+ make lists.
+ correct names (camel case, capitalized classes etc.)
+ Varargs.
+ Bracketed expressions
+ Special case this pointer and void pointer.
+ exact bit position for bitfield.
+ First pass
+ Recursively evaluate templates and generate expanded cpp code.
+ Generate implicit special methods and output cpp code.
+ Record if a basic variable(int, bool, etc) has its address taken so we can skip objectifying it if it does not.