Token User wrote:FWIW - Despite the fact I can read C++, I hate it, and prefer to use plain vanilla K&R C in preference.
I took a long time to get used to C++. I'm still upset by flaws in the design of the langauge every day that I work with it (something I didn't feel when I was a professional C programmer). But software engineering has changed and C is no longer enough. My opinion of C++ is that it is a horrid misdesigned piece of garbage that unfortunately is better than any other available language for writing serious projects.
Token User wrote:It amazing the appreciation for tight code you get when you are constrained in memory/MHz.
Try writing an extender or an RC6 protocol in S3C80 assembler and "tight code" can take on meanings you never imagined. But actually please don't. We need Java programming a lot more at the moment.
Token User wrote:
I do enjoy Java as a language though
There are a lot of applications in which the C or C++ implimentation drowns in the problem of remembering which dynamically allocated objects still have owners. Java just eliminates the problem. I also find the use of "super" a vast improvement over C++ when you are evolving your inheretance structure as you evolve the project. Java also avoids all sorts of declaration sequencing nightmares you hit when objects need to know about each other non hierarchically.
But Java really doesn't have the power of C++, especially for big projects and often overwhelming all other factors, Java doesn't have the speed of C++
Token User wrote:
Before I throw my hat in the ring as a contributor, I'll poke around the code some more. A first pass might be to translate the DecodeIR code from C++ to Java.
I'd advise against it. decodeIR would be pretty slow in anything but C++. The code that I haven't posted in source yet is even slower. I have plans for more changes that will make it slower still. Later, I MIGHT do some things I've been planning that involve very complicated templating combined with some very non_object_oriented tricks with pointers, all of which should greatly improve the speed and make it REALLY hard to port to anything but C++.
Most platforms have C++ compilers. DecodeIR has no GUI and has a very simple interface to its caller, so it should be easier to port (to another platform) staying in C++ and easier to call from non C++ programs than typical C++ programs would be.
*I* don't know how to call C++ DLL's from Java, but I know it can be done because at my last job someone else wrote Java code that called my C++ code across a DLL boundary (as well as C++ code that called Java across a DLL boundary).
I suggest you look into some aspect of manipulating the files saved by IR.EXE from Java code. In ExtInstall there is crude C++ code for reading an RDF file and then using knowledge from the RDF file to read, understand and write IR's files. In RM there is (presumably better) code in Java to read an RDF but there is no code to use that information to read IR's files.
1) If you know (or can figure out) how to call C++ from Java, I'd really appreciate a stand alone command line utility to read a saved IR file and decode all the contained signals (there was an experimental IR.EXE with that command line interface, but it got dropped). There is limited usefulness by anyone other than me for that tool, but the Java code you would need to write for that tool is all Java code we need for more important projects.
2) A logical next major step in RM would be the ability to read an IR file, install the upgrades and KeyMoves and rewrite it. By itself, that isn't a big improvement over the copy/paste to IR.EXE method, but it is necessary Java code before more valuable features are possible (again the ExtInstall source code has all the concepts needed).
3) The IrToWav Java software particularly suffers from lack of integration with the rest of the tools (meaning it needs more expertise to run than its typical user would have). If RM had the ability described in item (2) then it would be easy to merge IrToWav into RM in a way that eliminates the need for user expertise.
4) If we could crack the problem of uploading and downloading to the JP1 cable from Java (especially on other platforms) we would really be on the way to well integrated software. I think that projects suffers from lack of anyone's attention, rather than from really being that hard.