This allows simplifying how the size of UDT arrays are calculated,
and thus not leave memory uninitialised when doing a redim that
expands the array size.
The math here is wrong, it accounts for the extra quote when doing `-
2`, but obviously that quote is not there in this situation so it should
just be `- 1`. The result of the current logic is that it cuts off the
last character of the string.
Moves the qbs, command, and error handling APIs into separate .cpp files
in libqb/src/. This makes only minor changes to the actual code beyond
moving the logic, many global variables are left in place to be dealt
with in further changes.
Fixes: #146
- placing $INCLUDEONCE in any line in an include file will prevent including the file multiple times (BAS synonym for #pragma once)
- $INCLUDEONCE must be the only thing in the line
- using it in the main program has no effect and will be ignored without error
- adds filetype IDs
- now includes DECLARE LIBRARY files
- allows immediate recompile after error whitout the need to make a "fake" change to the program first
- tracks required external files for changes and triggers a rebuild if needed
- $EXEICON file
- $MIDISOUNDFONT (incl. the DEFAULT one)
- $INCLUDE (incl. nested ones)
- $EMBED files
- internal includes as forced by $COLOR or $DEBUG
This moves the CONST replacement up before we turn the elements into a
single string. The advantage is that we don't have to worry about
splitting the string properly to find the CONST names as the elements
are already split for us.t
- better check if _EMBEDDED$ appears inside a string or after a REM or apostrophe
- make sure REM is a valid command and not just part of a variable name
- better enforcement for 'handle' being a single literal string, i.e. not allowing stuff before or after
- As suggested by @mkilgore , moved the embed list array reset out of the $EMBED block
- Imposed a 20% least ratio for compression
- Moved the handle comparison into `func__embedded()` to avoid some unnecessary function calls
Fix to CONST with the math evaluator to toss a message and error with values out of acceptable range for ARCSEC and ARCCSC.
Tweak to _PI to add constexpr for speedier execution.
Fix to the math tests for the new (and unbuggy) values for ARCSEC and ARCCSC.
As per #362, this raises the limit in increments from 1,000 to a maximum of 25,000 subs and functions for a single QB64PE program. If that number is exceeded, the IDE will give an error message. reporting the issue for the user.
As per the sample code below:
Const a = 5 Mod 2.8
Const b = 5 \ 2.8
Print a; "="; 5 Mod 2.8
Print b; "="; 5 \ 2.8
Old output was wrong. Patch should make the CONST values the same as what QB64 normally generates for us.