1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-01 12:40:36 +00:00

Fixes SUB calls like SHELL _HIDE command$ for $NOPREFIX use. Also:

- Fixes incorrect resolution of _BIT in variable declarations.
This commit is contained in:
FellippeHeitor 2020-01-06 04:46:29 -03:00
parent 18974d56e4
commit 3e474f2f0b
2 changed files with 40 additions and 29 deletions

View file

@ -13962,7 +13962,7 @@ FUNCTION dim2 (varname$, typ2$, method, elements$)
IF LEFT$(typ$, 4) = "_BIT" OR (LEFT$(typ$, 3) = "BIT" AND qb64prefix_set = 1) THEN
IF (LEFT$(typ$, 4) = "_BIT" AND LEN(typ$) > 4) OR (LEFT$(typ$, 3) = "BIT" AND LEN(typ$) > 3) THEN
IF LEFT$(typ$, 7) <> "_BIT * " AND LEFT$(typ$, 6) <> "BIT * " THEN Give_Error "Expected " + qb64prefix$ + "BIT * number": EXIT FUNCTION
c$ = MID$(typ$, INSTR(typ$, " * ") + 4)
c$ = MID$(typ$, INSTR(typ$, " * ") + 3)
IF isuinteger(c$) = 0 THEN Give_Error "Number expected after *": EXIT FUNCTION
IF LEN(c$) > 2 THEN Give_Error "Too many characters in number after *": EXIT FUNCTION
bits = VAL(c$)
@ -17704,10 +17704,18 @@ FUNCTION findid& (n2$)
'some subs require a second argument (eg. PUT #, DEF SEG, etc.)
IF ids(i).subfunc = 2 THEN
IF ASC(ids(i).secondargmustbe) <> 32 THEN 'exists?
IF secondarg$ <> ids(i).secondargmustbe THEN GOTO findidnomatch
IF RTRIM$(secondarg$) = RTRIM$(ids(i).secondargmustbe) THEN
ELSEIF qb64prefix_set = 1 AND LEFT$(ids(i).secondargmustbe, 1) = "_" AND LEFT$(secondarg$, 1) <> "_" AND RTRIM$(secondarg$) = MID$(RTRIM$(ids(i).secondargmustbe), 2) THEN
ELSE
GOTO findidnomatch
END IF
END IF
IF ASC(ids(i).secondargcantbe) <> 32 THEN 'exists?
IF secondarg$ = ids(i).secondargcantbe THEN GOTO findidnomatch
IF RTRIM$(secondarg$) <> RTRIM$(ids(i).secondargcantbe) THEN
ELSEIF qb64prefix_set = 1 AND LEFT$(ids(i).secondargcantbe, 1) = "_" AND LEFT$(secondarg$, 1) <> "_" AND RTRIM$(secondarg$) <> MID$(RTRIM$(ids(i).secondargcantbe), 2) THEN
ELSE
GOTO findidnomatch
END IF
END IF
END IF 'second sub argument possible
@ -21077,6 +21085,7 @@ FUNCTION seperateargs (a$, ca$, pass&)
OutOfRange = 2147483647
position = OutOfRange
which = 0
removePrefix = 0
IF i <= n THEN 'Past end of contect check
FOR o = 1 TO t
words = OptWords(x, o)
@ -21090,11 +21099,13 @@ FUNCTION seperateargs (a$, ca$, pass&)
c$ = c$ + " " + getelement$(a$, i3 + w - 1)
NEXT w
'Compare
IF c$ = RTRIM$(Opt(x, o)) THEN
noPrefixMatch = LEFT$(Opt(x, o), 1) = "_" AND qb64prefix_set = 1 AND c$ = MID$(RTRIM$(Opt(x, o)), 2)
IF c$ = RTRIM$(Opt(x, o)) OR noPrefixMatch THEN
'Record Match
IF i3 < position THEN
position = i3
which = o
IF noPrefixMatch THEN removePrefix = 1
bvalue = b
EXIT FOR 'Exit the i3 loop
END IF 'position check
@ -21137,7 +21148,7 @@ FUNCTION seperateargs (a$, ca$, pass&)
END IF
END IF 'Expression
i = i + OptWords(x, which)
separgslayout(x) = CHR$(LEN(RTRIM$(Opt(x, which)))) + RTRIM$(Opt(x, which))
separgslayout(x) = CHR$(LEN(RTRIM$(Opt(x, which))) - removePrefix) + MID$(RTRIM$(Opt(x, which)), removePrefix + 1)
separgs(x) = CHR$(0) + str2(which)
ELSE
'Not Found...

View file

@ -90,7 +90,7 @@ id.subfunc = 2
id.callname = "sub__resize"
id.args = 2
id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "[{ON|OFF}][,{" + qb64prefix$ + "STRETCH|" + qb64prefix$ + "SMOOTH}]"
id.specialformat = "[{ON|OFF}][,{_STRETCH|_SMOOTH}]"
regid
clearid
@ -135,7 +135,7 @@ id.subfunc = 2
id.callname = "sub__glrender"
id.args = 1
id.arg = MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "{" + qb64prefix$ + "BEHIND|" + qb64prefix$ + "ONTOP|" + qb64prefix$ + "ONLY}"
id.specialformat = "{_BEHIND|_ONTOP|_ONLY}"
regid
clearid
@ -144,7 +144,7 @@ id.subfunc = 2
id.callname = "sub__displayorder"
id.args = 4
id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "[{" + qb64prefix$ + "SOFTWARE|" + qb64prefix$ + "HARDWARE|" + qb64prefix$ + "HARDWARE1|" + qb64prefix$ + "GLRENDER}[,{" + qb64prefix$ + "SOFTWARE|" + qb64prefix$ + "HARDWARE|" + qb64prefix$ + "HARDWARE1|" + qb64prefix$ + "GLRENDER}[,{" + qb64prefix$ + "SOFTWARE|" + qb64prefix$ + "HARDWARE|" + qb64prefix$ + "HARDWARE1|" + qb64prefix$ + "GLRENDER}[,{" + qb64prefix$ + "SOFTWARE|" + qb64prefix$ + "HARDWARE|" + qb64prefix$ + "HARDWARE1|" + qb64prefix$ + "GLRENDER}]]]]"
id.specialformat = "[{_SOFTWARE|_HARDWARE|_HARDWARE1|_GLRENDER}[,{_SOFTWARE|_HARDWARE|_HARDWARE1|_GLRENDER}[,{_SOFTWARE|_HARDWARE|_HARDWARE1|_GLRENDER}[,{_SOFTWARE|_HARDWARE|_HARDWARE1|_GLRENDER}]]]]"
regid
clearid
@ -484,7 +484,7 @@ id.subfunc = 2
id.callname = "sub__screenmove"
id.args = 2
id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "[{" + qb64prefix$ + "MIDDLE}][?,?]"
id.specialformat = "[{_MIDDLE}][?,?]"
regid
clearid
@ -644,7 +644,7 @@ id.subfunc = 2
id.callname = "sub__fullscreen"
id.args = 1
id.arg = MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "[{" + qb64prefix$ + "OFF|" + qb64prefix$ + "STRETCH|" + qb64prefix$ + "SQUAREPIXELS|OFF}][,{" + qb64prefix$ + "SMOOTH}]"
id.specialformat = "[{_OFF|_STRETCH|_SQUAREPIXELS|OFF}][,{_SMOOTH}]"
regid
clearid
@ -653,7 +653,7 @@ id.subfunc = 2
id.callname = "sub__allowfullscreen"
id.args = 2
id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "[{" + qb64prefix$ + "STRETCH|" + qb64prefix$ + "SQUAREPIXELS|" + qb64prefix$ + "OFF|" + qb64prefix$ + "ALL|OFF}][,{" + qb64prefix$ + "SMOOTH|" + qb64prefix$ + "OFF|" + qb64prefix$ + "ALL|OFF}]"
id.specialformat = "[{_STRETCH|_SQUAREPIXELS|_OFF|_ALL|OFF}][,{_SMOOTH|_OFF|_ALL|OFF}]"
regid
clearid
@ -832,7 +832,7 @@ id.subfunc = 2
id.callname = "sub__fps"
id.args = 1
id.arg = MKL$(DOUBLETYPE - ISPOINTER)
id.specialformat = "[{" + qb64prefix$ + "AUTO}][?]"
id.specialformat = "[{_AUTO}][?]"
regid
clearid
@ -1025,7 +1025,7 @@ id.subfunc = 2
id.callname = "sub__clearcolor"
id.args = 2
id.arg = MKL$(ULONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "[{" + qb64prefix$ + "NONE}][?][,?]"
id.specialformat = "[{_NONE}][?][,?]"
regid
'USING/CHANGING A SURFACE
@ -1036,7 +1036,7 @@ id.subfunc = 2
id.callname = "sub__putimage"
id.args = 10
id.arg = MKL$(DOUBLETYPE - ISPOINTER) + MKL$(DOUBLETYPE - ISPOINTER) + MKL$(DOUBLETYPE - ISPOINTER) + MKL$(DOUBLETYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(DOUBLETYPE - ISPOINTER) + MKL$(DOUBLETYPE - ISPOINTER) + MKL$(DOUBLETYPE - ISPOINTER) + MKL$(DOUBLETYPE - ISPOINTER)
id.specialformat = "[[{STEP}](?,?)[-[{STEP}](?,?)]][,[?][,[?][,[[{STEP}](?,?)[-[{STEP}](?,?)]][,{" + qb64prefix$ + "SMOOTH}]]]]"
id.specialformat = "[[{STEP}](?,?)[-[{STEP}](?,?)]][,[?][,[?][,[[{STEP}](?,?)[-[{STEP}](?,?)]][,{_SMOOTH}]]]]"
regid
clearid
@ -1045,7 +1045,7 @@ id.subfunc = 2
id.callname = "sub__maptriangle"
id.args = 19
id.arg = MKL$(LONGTYPE - ISPOINTER)+MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(SINGLETYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "[{" + qb64prefix$ + "CLOCKWISE|" + qb64prefix$ + "ANTICLOCKWISE}][{" + qb64prefix$ + "SEAMLESS}](?,?)-(?,?)-(?,?)[,?]{TO}(?,?[,?])-(?,?[,?])-(?,?[,?])[,[?][,{" + qb64prefix$ + "SMOOTH|" + qb64prefix$ + "SMOOTHSHRUNK|" + qb64prefix$ + "SMOOTHSTRETCHED}]]"
id.specialformat = "[{_CLOCKWISE|_ANTICLOCKWISE}][{_SEAMLESS}](?,?)-(?,?)-(?,?)[,?]{TO}(?,?[,?])-(?,?[,?])-(?,?[,?])[,[?][,{_SMOOTH|_SMOOTHSHRUNK|_SMOOTHSTRETCHED}]]"
regid
clearid
@ -1054,7 +1054,7 @@ id.subfunc = 2
id.callname = "sub__depthbuffer"
id.args = 2
id.arg = MKL$(LONGTYPE - ISPOINTER)+MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "{ON|OFF|LOCK|" + qb64prefix$ + "CLEAR}[,?]"
id.specialformat = "{ON|OFF|LOCK|_CLEAR}[,?]"
regid
clearid
@ -1253,7 +1253,7 @@ id.subfunc = 2
id.callname = "sub__printmode"
id.args = 2
id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "{" + qb64prefix$ + "FILLBACKGROUND|" + qb64prefix$ + "KEEPBACKGROUND|" + qb64prefix$ + "ONLYBACKGROUND}[,?]"
id.specialformat = "{_FILLBACKGROUND|_KEEPBACKGROUND|_ONLYBACKGROUND}[,?]"
regid
clearid
@ -1583,7 +1583,7 @@ id.callname = "sub_shell"
id.args = 1
id.arg = MKL$(STRINGTYPE - ISPOINTER)
id.specialformat = "[?]"
'id.secondargcantbe = qb64prefix$ + "HIDE"
'id.secondargcantbe = "_HIDE"
regid
clearid
@ -1592,8 +1592,8 @@ id.subfunc = 2
id.callname = "sub_shell2"
id.args = 1
id.arg = MKL$(STRINGTYPE - ISPOINTER)
id.specialformat = "{" + qb64prefix$ + "HIDE}[{" + qb64prefix$ + "DONTWAIT}][?]"
id.secondargmustbe = qb64prefix$ + "HIDE"
id.specialformat = "{_HIDE}[{_DONTWAIT}][?]"
id.secondargmustbe = "_HIDE"
regid
clearid
@ -1602,8 +1602,8 @@ id.subfunc = 2
id.callname = "sub_shell3"
id.args = 1
id.arg = MKL$(STRINGTYPE - ISPOINTER)
id.specialformat = "{" + qb64prefix$ + "DONTWAIT}[{" + qb64prefix$ + "HIDE}][?]"
id.secondargmustbe = qb64prefix$ + "DONTWAIT"
id.specialformat = "{_DONTWAIT}[{_HIDE}][?]"
id.secondargmustbe = "_DONTWAIT"
regid
clearid
@ -2219,7 +2219,7 @@ id.subfunc = 2
id.callname = "sub_graphics_put"
id.args = 5
id.arg = MKL$(FLOATTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER) + MKL$(-3) + MKL$(LONGTYPE - ISPOINTER) + MKL$(ULONGTYPE - ISPOINTER)
id.specialformat = "[{STEP}](?,?),?[,[{" + qb64prefix$ + "CLIP}][{PSET|PRESET|AND|OR|XOR}][,?]]"
id.specialformat = "[{STEP}](?,?),?[,[{_CLIP}][{PSET|PRESET|AND|OR|XOR}][,?]]"
'PUT [STEP] (x!,y!),arrayname# [(indexes%)] [,actionverb]
'PUT (10, 10), myimage, _CLIP, 0
id.secondargmustbe = "STEP"
@ -2230,7 +2230,7 @@ id.subfunc = 2
id.callname = "sub_graphics_put"
id.args = 5
id.arg = MKL$(FLOATTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER) + MKL$(-3) + MKL$(LONGTYPE - ISPOINTER) + MKL$(ULONGTYPE - ISPOINTER)
id.specialformat = "[{STEP}](?,?),?[,[{" + qb64prefix$ + "CLIP}][{PSET|PRESET|AND|OR|XOR}][,?]]"
id.specialformat = "[{STEP}](?,?),?[,[{_CLIP}][{PSET|PRESET|AND|OR|XOR}][,?]]"
'PUT [STEP] (x!,y!),arrayname# [(indexes%)] [,actionverb]
'PUT (10, 10), myimage, _CLIP, 0
id.secondargmustbe = "("
@ -2760,7 +2760,7 @@ id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE
'id.specialformat = "[?][,[?][,[?][,?]]]" 'new!
'id.specialformat = "[?][,[?][,[?][,[?][,{_MANUALDISPLAY}]]]]" 'breaks compilation!
'id.specialformat = "[?][,[?][,[?][,[?][,[{_MANUALDISPLAY}]]]]]" <-pre-bulletproofing
id.specialformat = "[?][,[?][,[?][,[?][,[{" + qb64prefix$ + "MANUALDISPLAY}?]]]]]" 'a temp format for transition reasons"
id.specialformat = "[?][,[?][,[?][,[?][,[{_MANUALDISPLAY}?]]]]]" 'a temp format for transition reasons"
regid
clearid
@ -3354,7 +3354,7 @@ id.subfunc = 2
id.callname = "sub__capslock"
id.arg = MKL$(LONGTYPE - ISPOINTER)
id.args = 1
id.specialformat = "{ON|OFF|" + qb64prefix$ + "TOGGLE}"
id.specialformat = "{ON|OFF|_TOGGLE}"
regid
clearid
@ -3363,7 +3363,7 @@ id.subfunc = 2
id.callname = "sub__scrolllock"
id.arg = MKL$(LONGTYPE - ISPOINTER)
id.args = 1
id.specialformat = "{ON|OFF|" + qb64prefix$ + "TOGGLE}"
id.specialformat = "{ON|OFF|_TOGGLE}"
regid
clearid
@ -3372,7 +3372,7 @@ id.subfunc = 2
id.callname = "sub__numlock"
id.arg = MKL$(LONGTYPE - ISPOINTER)
id.args = 1
id.specialformat = "{ON|OFF|" + qb64prefix$ + "TOGGLE}"
id.specialformat = "{ON|OFF|_TOGGLE}"
regid
clearid
@ -3389,7 +3389,7 @@ id.subfunc = 2
id.callname = "sub__console_cursor"
id.args = 2
id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
id.specialformat = "[{" + qb64prefix$ + "SHOW|" + qb64prefix$ + "HIDE}][,?]"
id.specialformat = "[{_SHOW|_HIDE}][,?]"
regid
clearid