The 'g_' and 's_' prefixes for global and static variables are recommended, but optional now.
The 'm_' prefix for member variables is still a must.
A minor bug was fixed in generation of the 'common.h'.
The 'CppBasicDebugAid.cpp' source file has been added to files in the 'tools' subdirectory.
These changes will be included in the release 0.0.2 of the CppBasic.
The C++ Basic ver 0.0.1 is ready and has been uploaded.
The 'readme.txt' in the 'doc' subdirectory of the 'CppBasic 0.0.1' directory provides quick introduction to C++ Basic, contains instructions to install it and run the sample program.
The language changes were extensive.
There is no documentation of the language in the 'doc' directory yet (it is just the version 0.0.1).
Prostate cancer Gleason 9 ... has brought development to a halt. Now I have decided to continue. Object parameters are always passed by reference now, so the problem with the inefficiency of copy constructors is solved.
The custom exception handling has reduced program size by 30%. It seems possible to save 15% more by eliminating the use of destructors for automatic memory management. I am working on this matter now. The converter works nicely in the VC++ 2008 Express IDE as the external tool, converting to C++ and back to C++ Basic.... read more
The C++ Basic converter now works in Visual Studio as two external tools: To C++ (CppBasic)
and From C++ (CppBasic).
The 'To C++ (CppBasic)' tools works both with unconverted and converted code and builds the
header files.
The 'From C++ (CppBasic)' tool removes unnecessary local declarations and makes cosmetic changes.
The 'To C++ (CppBasic)' tool inserts declaration of local variables, makes cosmetic changes and builds the header files.
The C++ Basic is an object-oriented language with features from C++, Java, Basic and Euphoria programming languages. A C++ Basic program is converted to C++, that looks similar to the original C++ Basic code.
The work on interfaces and virtual functions is near the end. I am going to release the alpha version of C++ Basic once I finish testing the converter, create new add-in for VC++ and prepare documentation.
The '.h' file contains two parts. The #include directives for other '.h' files are placed between them. The cycles are prevented by the guards, and the first part requires only forward declarations.
So, the include directory in projects will contain '.h' files, and for each '.cpp' module, the converter produces the '.hpp' file that includes '.h' files and is included in the '.cpp'.
The '.hpp' file also contains definition of type info area for classes and some other things.
After the necessary changes in the converter, I will continue work on interfaces and virtual functions.
The converter routines for adding and removing cosmetic changes are ready. In particular, 'static', 'new', 'throw', 'try', 'catch', 'virtual' and '[]' are converted to 'static$', 'new$', 'throw$', 'try$', 'catch$', 'virtual$', 'AR' and vice versa.
I am exploring the new idea: not to complicate the
programmer with marks for memory management. Now it works nicely with the copy constructor, destructor and overloaded '=' operator. The code produced by vc++ is large, especially for destructors. But there is nice combination: Dev-C++ IDE and LLVM, that may help to optimize the program, debugged with VS for the final build, and make it cross platform. The LLVM can convert C++ to C, that may again be optimized by VC++. I am going to experiment with this idea.
I have added Windows as the target OS.
Programs written in C++ Basic will run on Windows
as console applications. They will run on DOS with
the HX dos extender. The C++ Basic API classes
will be provided in the DLL file, that will be added to the bin directory of the HX.
Converter from C++ Basic to C++ works.
It still misses the support for virtual methods and multiple threads.
Next task: write the converter back from C++ to C++ Basic.
The 'common.h' file is placed in the src directory. The converter is almost written (without threads). The goal now is to debug it, then to write multithreading for dos, then to finish the converter with threads. I plan to finish it in a year or two. I work on the project only when I have nothing else to do.
I have decided to use 'S' suffix instead of '$'.
The recognized suffixes are now 'S' and 'O' for String and Object.
Additional suffixes may be defined in the'suffixes.txt' file.