1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-03 03:01:22 +00:00

Minor change to bit routines, added ability to ignore warnings in IDE

This commit is contained in:
SteveMcNeill 2019-12-04 12:30:02 -05:00
parent 472bf29d99
commit 58b82dff13
5 changed files with 93 additions and 68 deletions

View file

@ -29589,23 +29589,8 @@ void reinit_glut_callbacks(){
}
//CFont commented out as it requires more modern versions of Windows to run and work.
//Adding it into QB64 would mean that we would no longer run on Windows XP and such,
//and at this time, it's been decided that we dont actually want to drop compatability with those older operating systems.
//I'll leave the code in here, in case it's decided later that we're no longer to stick
//to Windows XP compatability.
//For now, the easiest solution to this dilemma seems to be to just leave the code here,
//and place a stub which does nothing in place of it.
//If people with newer operating systems want to make use of it, all they'd need to do is
//comment out the stub and uncomment the actual working code, and then purge_libqb.bat to rebuild the library we link to.
void CFont(qbs* FontName, int FontSize){
return; //you can't get much stubbier than this! LOL!
}
/*
void CFont(qbs* FontName, int FontSize){
/*
SECURITY_ATTRIBUTES SecAttribs = {sizeof(SECURITY_ATTRIBUTES), 0, 1};
HANDLE cl_conout = CreateFileA("CONOUT$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, & SecAttribs, OPEN_EXISTING, 0, 0);
static int OneTimePause;
@ -29626,8 +29611,9 @@ void reinit_glut_callbacks(){
}
SetCurrentConsoleFontEx(cl_conout, NULL, &info);
*/
}
*/
void sub__console_cursor(int32 visible, int32 cursorsize, int32 passed){
HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);

View file

@ -982,16 +982,16 @@ inline int64 func__shr(int64 a1,int b1)
{return a1>>b1;}
inline int64 func__readbit(int64 a1, int b1)
{if (a1 & 1<<b1) return -1; else return 0;}
{if (a1 & 1ull<<b1) return -1; else return 0;}
inline int64 func__setbit(int64 a1, int b1)
{return a1 | 1<<b1;}
{return a1 | 1ull<<b1;}
inline int64 func__resetbit(int64 a1, int b1)
{return a1 & ~(1<<b1);}
{return a1 & ~(1ull<<b1);}
inline int64 func__togglebit(int64 a1, int b1)
{return a1 ^ 1<<b1;}
{return a1 ^ 1ull<<b1;}
//Working with 32bit colors:
inline uint32 func__rgb32(int32 r,int32 g,int32 b,int32 a){

View file

@ -13,6 +13,7 @@ DIM SHARED PasteCursorAtEnd AS _BYTE
DIM SHARED SaveExeWithSource AS _BYTE, EnableQuickNav AS _BYTE
DIM SHARED IDEShowErrorsImmediately AS _BYTE
DIM SHARED ShowLineNumbersSeparator AS _BYTE, ShowLineNumbersUseBG AS _BYTE
DIM SHARED IgnoreWarnings AS _BYTE
IF LoadedIDESettings = 0 THEN
'We only want to load the file once when QB64 first starts
@ -326,6 +327,17 @@ IF LoadedIDESettings = 0 THEN
IDE_LeftPosition = 0
END IF
result = ReadConfigSetting("IgnoreWarnings", value$)
IF result THEN
IF UCASE$(value$) = "TRUE" OR ABS(VAL(value$)) = 1 THEN
IgnoreWarnings = -1
ELSE
IgnoreWarnings = 0
WriteConfigSetting "'[GENERAL SETTINGS]", "IgnoreWarnings", "FALSE"
END IF
END IF
'I was going to do some basic error checking for screen position to make certain that we appeared on the monitor,
'but I decided not to. Some people (like me) may have multiple monitors set up and may wish for QB64 to pop-up at
'a coordinate which seems insane at first glance (-1000,0 for instance), but which may move the IDE window to the

View file

@ -332,6 +332,12 @@ FUNCTION ide2 (ignore)
menu$(OptionsMenuID, OptionsMenuShowErrorsImmediately) = CHR$(7) + menu$(OptionsMenuID, OptionsMenuShowErrorsImmediately)
END IF
OptionsMenuIgnoreWarnings = i
menu$(m, 11) = "Ignore Warnings": i = 12
IF IgnoreWarnings THEN menu$(OptionsMenuID, 11) = CHR$(7) + "Ignore Warnings"
menusize(m) = i - 1
m = m + 1: i = 0
@ -4658,6 +4664,22 @@ FUNCTION ide2 (ignore)
GOTO ideloop
END IF
IF RIGHT$(menu$(m, s), 15) = "Ignore Warnings" THEN
PCOPY 2, 0
IF Ignorewarnings = 0 THEN
Ignorewarnings = -1
WriteConfigSetting "'[GENERAL SETTINGS]", "IgnoreWarnings", "TRUE"
menu$(OptionsMenuID, 11) = CHR$(7) + "Ignore Warnings"
ELSE
Ignorewarnings = 0
WriteConfigSetting "'[GENERAL SETTINGS]", "IgnoreWarnings", "FALSE"
menu$(OptionsMenuID, 11) = "Ignore Warnings"
END IF
idechangemade = 1
PCOPY 3, 0: SCREEN , , 3, 0: idewait4mous: idewait4alt
GOTO ideloop
END IF
IF RIGHT$(menu$(m, s), 28) = "Output EXE to Source #Folder" THEN
PCOPY 2, 0
SaveExeWithSource = NOT SaveExeWithSource

View file

@ -2317,16 +2317,18 @@ DO
END IF
END IF
IF issueWarning THEN
addWarning 0, "Constant already defined (same value):"
addWarning linenumber, n$
IF idemode = 0 THEN
IF duplicateConstWarning = 0 THEN PRINT "WARNING: duplicate constant definition";
IF VerboseMode THEN
PRINT ": '"; n$; "' (line"; STR$(linenumber); ")"
ELSE
IF duplicateConstWarning = 0 THEN
duplicateConstWarning = -1
PRINT
IF NOT IgnoreWarnings THEN
addWarning 0, "Constant already defined (same value):"
addWarning linenumber, n$
IF idemode = 0 THEN
IF duplicateConstWarning = 0 THEN PRINT "WARNING: duplicate constant definition";
IF VerboseMode THEN
PRINT ": '"; n$; "' (line"; STR$(linenumber); ")"
ELSE
IF duplicateConstWarning = 0 THEN
duplicateConstWarning = -1
PRINT
END IF
END IF
END IF
END IF
@ -11835,14 +11837,44 @@ OPEN compilelog$ FOR OUTPUT AS #1: CLOSE #1 'Clear log
'OPEN "unusedVariableList.txt" FOR BINARY AS #1
'PUT #1, 1, usedVariableList$ 'warning$(1)
'CLOSE #1
IF totalUnusedVariables > 0 THEN
IF idemode = 0 THEN
PRINT "WARNING:"; STR$(totalUnusedVariables); " unused variable";
IF totalUnusedVariables > 1 THEN PRINT "s";
IF VerboseMode THEN
PRINT ":"
IF NOT IgnoreWarnings THEN
IF totalUnusedVariables > 0 THEN
IF idemode = 0 THEN
PRINT "WARNING:"; STR$(totalUnusedVariables); " unused variable";
IF totalUnusedVariables > 1 THEN PRINT "s";
IF VerboseMode THEN
PRINT ":"
findItem = 0
DO
s$ = CHR$(2) + "VAR:" + CHR$(3)
findItem = INSTR(findItem + 1, usedVariableList$, s$)
IF findItem = 0 THEN EXIT DO
whichLine = CVL(MID$(usedVariableList$, findItem - 4, 4))
varNameLen = CVI(MID$(usedVariableList$, findItem + 6, 2))
internalVarName$ = MID$(usedVariableList$, findItem + 8, varNameLen)
findLF = INSTR(findItem + 9 + varNameLen, usedVariableList$, CHR$(10))
varname$ = MID$(usedVariableList$, findItem + 9 + varNameLen, findLF - (findItem + 9 + varNameLen))
PRINT SPACE$(4); varname$; " ("; internalVarName$; ", line"; STR$(whichLine); ")"
LOOP
ELSE
PRINT
END IF
ELSE
findItem = 0
maxVarNameLen = 0
DO
s$ = CHR$(2) + "VAR:" + CHR$(3)
findItem = INSTR(findItem + 1, usedVariableList$, s$)
IF findItem = 0 THEN EXIT DO
varNameLen = CVI(MID$(usedVariableList$, findItem + 6, 2))
internalVarName$ = MID$(usedVariableList$, findItem + 8, varNameLen)
findLF = INSTR(findItem + 9 + varNameLen, usedVariableList$, CHR$(10))
varname$ = MID$(usedVariableList$, findItem + 9 + varNameLen, findLF - (findItem + 9 + varNameLen))
IF LEN(varname$) > maxVarNameLen THEN maxVarNameLen = LEN(varname$)
LOOP
findItem = 0
addWarning 0, "Unused variables (" + LTRIM$(STR$(totalUnusedVariables)) + "):"
DO
s$ = CHR$(2) + "VAR:" + CHR$(3)
findItem = INSTR(findItem + 1, usedVariableList$, s$)
@ -11852,38 +11884,9 @@ IF totalUnusedVariables > 0 THEN
internalVarName$ = MID$(usedVariableList$, findItem + 8, varNameLen)
findLF = INSTR(findItem + 9 + varNameLen, usedVariableList$, CHR$(10))
varname$ = MID$(usedVariableList$, findItem + 9 + varNameLen, findLF - (findItem + 9 + varNameLen))
PRINT SPACE$(4); varname$; " ("; internalVarName$; ", line"; STR$(whichLine); ")"
addWarning whichLine, varname$ + SPACE$((maxVarNameLen + 1) - LEN(varname$)) + " (" + internalVarName$ + ")"
LOOP
ELSE
PRINT
END IF
ELSE
findItem = 0
maxVarNameLen = 0
DO
s$ = CHR$(2) + "VAR:" + CHR$(3)
findItem = INSTR(findItem + 1, usedVariableList$, s$)
IF findItem = 0 THEN EXIT DO
varNameLen = CVI(MID$(usedVariableList$, findItem + 6, 2))
internalVarName$ = MID$(usedVariableList$, findItem + 8, varNameLen)
findLF = INSTR(findItem + 9 + varNameLen, usedVariableList$, CHR$(10))
varname$ = MID$(usedVariableList$, findItem + 9 + varNameLen, findLF - (findItem + 9 + varNameLen))
IF LEN(varname$) > maxVarNameLen THEN maxVarNameLen = LEN(varname$)
LOOP
findItem = 0
addWarning 0, "Unused variables (" + LTRIM$(STR$(totalUnusedVariables)) + "):"
DO
s$ = CHR$(2) + "VAR:" + CHR$(3)
findItem = INSTR(findItem + 1, usedVariableList$, s$)
IF findItem = 0 THEN EXIT DO
whichLine = CVL(MID$(usedVariableList$, findItem - 4, 4))
varNameLen = CVI(MID$(usedVariableList$, findItem + 6, 2))
internalVarName$ = MID$(usedVariableList$, findItem + 8, varNameLen)
findLF = INSTR(findItem + 9 + varNameLen, usedVariableList$, CHR$(10))
varname$ = MID$(usedVariableList$, findItem + 9 + varNameLen, findLF - (findItem + 9 + varNameLen))
addWarning whichLine, varname$ + SPACE$((maxVarNameLen + 1) - LEN(varname$)) + " (" + internalVarName$ + ")"
LOOP
END IF
END IF
@ -25184,6 +25187,7 @@ SUB manageVariableList (name$, __cname$, action AS _BYTE)
END SUB
SUB addWarning (lineNumber AS LONG, text$)
IF NOT IgnoreWarnings THEN
IF lineNumber > 0 THEN
totalWarnings = totalWarnings + 1
ELSE
@ -25197,6 +25201,7 @@ SUB addWarning (lineNumber AS LONG, text$)
warningListItems = warningListItems + 1
IF warningListItems > UBOUND(warning$) THEN REDIM _PRESERVE warning$(warningListItems + 999)
warning$(warningListItems) = MKL$(lineNumber) + text$
end if
END SUB
'$INCLUDE:'utilities\strings.bas'