Kalkulon - A programmable expression calculator for programmers

Kalkulon is free software - (c) J. Holetzeck 2007, 2013
contact@kalkulon.de

To learn how to use Kalkulon see the HTML documentation!


CONTENT
1) HOW TO COMPILE
2) KNOWN ISSUES
3) CHANGE LOG
4) LICENSE

======
1) HOW TO COMPILE

Home page:
http://www.kalkulon.de

Latest source code:
Desktop: https://bitbucket.org/jholetzeck/kalkulon
Android: https://bitbucket.org/jholetzeck/kalkulon-for-android

There are three versions of Kalkulon
a) Console version (kkc) which should be compilable on every platform with 
   standard-conforming C++ compiler; source code files "core/*" 
b) GUI version (Kalkulon) which should be compilable on every platform providing
   at least Qt 4.2 framework (see http://qt-project.org); source code files
   "core/*" AND "gui/*"
c) Android port, the Kalkulon core is the same as for the desktop but GUI is written with
   Android framework in Java
   

Kalkulon can be built with freely available tools. The easiest way for Windows
and Linux is to get QtCreator from Qt website which contains Qt SDK, IDE and gcc compiler. 
For Windows I provide the binaries compiled with the open source version of 
Qt 4.x and the windows port of gcc MINGW.
For Android you need Android SDK and Android NDK installed.


a) I tested the console version with 
- VC++ 2010 Express (Windows)
- gcc/g++ on Linux (supporting readline library) and Windows
(no longer supported but may also work: VC6, VC2008 Express (/clr:pure))


If you want to compile as pure C++ code without any dependencies to external
libraries/APIs check the files stdafx.h and Makefile.* and undefine all
USE_xxx macros!

Windows:
change to directory "core"
- VC2010 C++ (Express): load kkc.sln and compile
- MINGW: check Makefile and run "mingw32-make"

Linux:
change to directory "core"
- be sure to either have readline developer files or undefine USE_READLINE in 
Makefile
- run "make"

To quick check the executeable run "kkc runregtest.k" (be sure that both files 
are in same directory and that subdirectory "examples" is also there)


b) I tested the GUI version with
- MINGW/Qt 4.8.x on Windows XP
- g++/Qt 4.7.x on Ubuntu 12.04

To compile (all platforms):
- be sure to have Qt 4.2.x (or higher) framework and suitable C++ compiler
  installed
- run "qmake"
- run "make"

To quick check the executeable run "Kalkulon" (be sure that "runregtest.k" and 
subdirectory "examples" is also there) and type in Kalkulon:
Load("runregtest.k")


c) Android for Kalkulon
- install Eclipse
- install Android SDK and NDK (Android 2.2 or higher)
- NDK is needed to compile Kalkulon core written in C++
- compile project with Eclipse

On the Android device the example and help files are automatically copied into
"<SDCARD>/Kalkulon" folder on first start. This is also the working directory
for Kalkulon. To quick check the executable type:
Load("runregtest.k")

The Exec() command works a little bit different on Android:
If the command is ACTION_EDIT or ACTION_VIEW, e.g.
Exec("ACTION_EDIT", "runregtest.k")
an Android Intent is sent to start an external Activity.
For all other commands a normal system() call is executed, e.g.
Exec("echo 1 > xxx") writes "1" into file "xxx" in Kalkulon folder.


======
2) KNOWN ISSUES:

---

======
3) CHANGE LOG

changes in 3.0.4.0
- add: support of octal numbers with prefix "0o" (zero "o") -> "0o1234567"

changes in 3.0.3.0
- add: Exec() now also supported on Linux and Android
- bugfix: shortening of long error messages
- bugfix: LinePos() returns wrong line number 

changes in 3.0.2.0
- change: Kalkulon core support of ARM/Android plattform
- add: GetTicks() supported for GLIBC, e.g. Linux and Android

changes in 3.0.1.4
- bugfix: call explicitly <setlocale(LC_ALL, "C")> because this changed by QApplication

changes in 3.0.1.3 (code only)
- code only: make compilable with g++ 4.4.0 on Windows (different include structure)

changes in 3.0.1.2 (fixes for Qt4.5 only)
- bugfix: call explicitly <setlocale(LC_ALL, "C")> because this changed by QApplication
- change: size of input window changed (QTextEdit has a larger margin in Qt4.5)

changes in 3.0.1.1 (code only)
- code only: make compilable with g++ 4.3.2 (different include structure)


changes in 3.0.1.0 (GUI only)
- add: mark matching parenthesis, brackets etc. while editing


changes in 3.0.0.2
- add: SetRecursionLimit(n), recursion is limited to 150 as default
- change: SetNumFormat, SetHexFormat etc. now return old format string 
- change: Type(n) == 2, for all numbers n (integer or not)
- bugfix: no stack overflow through unlimited recursion 
- bugfix: strings containing "<...>" are properly displayed in label window 
- code only: safer handling of snprintfs
- code only: faster handling of DataObject


changes in 3.0.0.1 (GUI only)
- bugfix: Help file opens even if there are spaces in Kalkulon path
- bugfix: Options dialog stays always in foreground of main window
- bugfix: in base window decimal number (2. line) wrap aroung like hex and bin
- code only: eliminate some warnings

changes in 3.0.0.0
- new: Qt GUI for Win32 and Linux Platform with free source code available
- change: Table(arg, pure-fn) modified for 0 and negative values
          Table(0, '#') returns empty list {}
          Table{-3, '#') returns {-1,-2,-3}

changes in 2.7.5.1
- code only: eliminate warnings for gcc (<= 4.03) with setting -Wall

changes in 2.7.5.0
- add: support of escape sequences in strings like "\\", "\"", "\n", "\t"
- bugfix: Sprintf("%032b", ...) prefix zeros on all platforms (Linux) 
- bugfix: Sprintf("%b", ...) doesn't cut off at 0x80000000 anymore (VC8, gcc) 

changes in 2.7.4.0
- add: support of readline library for Linux targets

changes in 2.7.3.2
- bugfix: Sprintf("%x", ...) doesn't cut off at 0x80000000 anymore (VC8, gcc) 

changes in 2.7.3.1
- bugfix: cast operators fixed

======
4) LICENSE

    Kalkulon is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Kalkulon is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

