mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-06-29 11:40:38 +00:00
Remove SUB sorting in the SUBs dialog.
This commit is contained in:
parent
4476436a50
commit
665dd67641
|
@ -240,20 +240,6 @@ IF LoadedIDESettings = 0 THEN
|
|||
ideindentsubs = 0
|
||||
end if
|
||||
|
||||
result = ReadConfigSetting("IDE_SortSUBs", value$)
|
||||
idesortsubs = VAL(value$)
|
||||
IF UCASE$(value$) = "TRUE" OR idesortsubs <> 0 THEN
|
||||
idesortsubs = 1
|
||||
elseif result = 0 then
|
||||
WriteConfigSetting "'[IDE DISPLAY SETTINGS]", "IDE_SortSUBs", "FALSE"
|
||||
idesortsubs = 0
|
||||
ELSEIF UCASE$(value$) <> "FALSE" AND value$ <> "0" THEN
|
||||
WriteConfigSetting "'[IDE DISPLAY SETTINGS]", "IDE_SortSUBs", "TRUE"
|
||||
idesortsubs = 1
|
||||
else
|
||||
idesortsubs = 0
|
||||
end if
|
||||
|
||||
result = ReadConfigSetting("IDE_IndentSize", value$)
|
||||
ideautoindentsize = VAL(value$)
|
||||
if ideautoindentsize < 1 OR ideautoindentsize > 64 then
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
DIM SHARED Version AS STRING
|
||||
DIM SHARED BuildNum AS STRING
|
||||
DIM SHARED AutoBuildMsg AS STRING
|
||||
DIM SHARED AutoBuildMsg AS STRING
|
||||
Version$ = "1.1"
|
||||
'BuildNum format is YYYYMMDD/id, where id is a ever-increasing
|
||||
'integer. If you make a change, update the date and increase the id!
|
||||
BuildNum$ = "20161109/50"
|
||||
BuildNum$ = "20170120/51"
|
||||
|
|
|
@ -201,7 +201,7 @@ DIM SHARED LastValidColorScheme AS INTEGER
|
|||
DIM SHARED menubar$, idecontextualSearch$
|
||||
DIM SHARED ideundocombo, ideundocombochr, idenoundo, idemergeundo
|
||||
DIM SHARED idealthighlight, ideentermenu
|
||||
DIM SHARED ideautolayout, ideautoindent, ideautoindentsize, ideindentsubs, idebackupsize, idesortsubs
|
||||
DIM SHARED ideautolayout, ideautoindent, ideautoindentsize, ideindentsubs, idebackupsize
|
||||
DIM SHARED idewx, idewy, idecustomfont, idecustomfontfile$, idecustomfontheight, idecustomfonthandle
|
||||
DIM SHARED iderunmode
|
||||
'IDE MODULE SECTION END: shared data & definitions
|
||||
|
|
|
@ -8038,17 +8038,12 @@ FUNCTION idesubs$
|
|||
'-------- init --------
|
||||
|
||||
ly$ = MKL$(1)
|
||||
lySorted$ = ly$
|
||||
CurrentlyViewingWhichSUBFUNC = 1
|
||||
PreferCurrentCursorSUBFUNC = 0
|
||||
InsideDECLARE = 0
|
||||
FoundExternalSUBFUNC = 0
|
||||
l$ = ideprogname$
|
||||
IF l$ = "" THEN l$ = "Untitled" + tempfolderindexstr$
|
||||
lSorted$ = l$
|
||||
|
||||
TotalSUBs = 0
|
||||
SortedSubsFlag = idesortsubs
|
||||
|
||||
FOR y = 1 TO iden
|
||||
a$ = idegetline(y)
|
||||
|
@ -8119,16 +8114,6 @@ FUNCTION idesubs$
|
|||
args$ = LEFT$(args$, (idewx - 44)) + STRING$(3, 250)
|
||||
END IF
|
||||
l$ = l$ + sep + CHR$(195) + CHR$(196) + n$ + " " + sf$ + args$
|
||||
|
||||
'Populate SortedSubsList()
|
||||
TotalSUBs = TotalSUBs + 1
|
||||
ListItemLength = LEN(n$ + " " + sf$ + args$)
|
||||
REDIM _PRESERVE SortedSubsList(1 TO TotalSUBs) AS STRING * 998
|
||||
REDIM _PRESERVE CaseBkpSubsList(1 TO TotalSUBs) AS STRING * 998
|
||||
CaseBkpSubsList(TotalSUBs) = n$ + " " + sf$ + args$
|
||||
SortedSubsList(TotalSUBs) = UCASE$(CaseBkpSubsList(TotalSUBs))
|
||||
MID$(CaseBkpSubsList(TotalSUBs), 992, 6) = MKL$(y) + MKI$(ListItemLength)
|
||||
MID$(SortedSubsList(TotalSUBs), 992, 6) = MKL$(y) + MKI$(ListItemLength)
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
|
@ -8137,30 +8122,6 @@ FUNCTION idesubs$
|
|||
IF a$ = CHR$(195) THEN MID$(l$, x, 1) = CHR$(192): EXIT FOR
|
||||
NEXT
|
||||
|
||||
IF TotalSUBs > 1 THEN
|
||||
DIM m AS _MEM
|
||||
m = _MEM(SortedSubsList())
|
||||
IF INSTR(_OS$, "64BIT") = 0 THEN Sort m 'Steve's sorting routine
|
||||
FOR x = 1 TO TotalSUBs
|
||||
ListItemLength = CVI(MID$(SortedSubsList(x), LEN(SortedSubsList(x)) - 2, 2))
|
||||
lySorted$ = lySorted$ + MID$(SortedSubsList(x), LEN(SortedSubsList(x)) - 6, 4)
|
||||
FOR RestoreCaseBkp = 1 TO TotalSUBs
|
||||
IF MID$(SortedSubsList(x), LEN(SortedSubsList(x)) - 6, 4) = MID$(CaseBkpSubsList(RestoreCaseBkp), LEN(CaseBkpSubsList(RestoreCaseBkp)) - 6, 4) THEN
|
||||
lSorted$ = lSorted$ + sep + CHR$(195) + CHR$(196) + LEFT$(CaseBkpSubsList(RestoreCaseBkp), ListItemLength)
|
||||
EXIT FOR
|
||||
END IF
|
||||
NEXT
|
||||
NEXT
|
||||
|
||||
FOR x = LEN(lSorted$) TO 1 STEP -1
|
||||
a$ = MID$(lSorted$, x, 1)
|
||||
IF a$ = CHR$(195) THEN MID$(lSorted$, x, 1) = CHR$(192): EXIT FOR
|
||||
NEXT
|
||||
SortedSubsFlag = idesortsubs
|
||||
ELSE
|
||||
SortedSubsFlag = 0 'Override idesortsubs if the current program doesn't have more than 1 subprocedure
|
||||
END IF
|
||||
|
||||
'72,19
|
||||
i = 0
|
||||
idepar p, idewx - 8, idewy + idesubwindow - 6, "SUBs"
|
||||
|
@ -8171,29 +8132,10 @@ FUNCTION idesubs$
|
|||
'68
|
||||
o(i).w = idewx - 12: o(i).h = idewy + idesubwindow - 9
|
||||
o(i).txt = idenewtxt(l$)
|
||||
IF SortedSubsFlag = 0 THEN
|
||||
IF PreferCurrentCursorSUBFUNC <> 0 THEN
|
||||
o(i).sel = PreferCurrentCursorSUBFUNC
|
||||
ELSE
|
||||
o(i).sel = CurrentlyViewingWhichSUBFUNC
|
||||
END IF
|
||||
IF PreferCurrentCursorSUBFUNC <> 0 THEN
|
||||
o(i).sel = PreferCurrentCursorSUBFUNC
|
||||
ELSE
|
||||
idetxt(o(i).txt) = lSorted$
|
||||
IF PreferCurrentCursorSUBFUNC <> 0 THEN
|
||||
FOR x = 1 TO TotalSUBs
|
||||
IF MID$(ly$, PreferCurrentCursorSUBFUNC * 4 - 3, 4) = MID$(SortedSubsList(x), LEN(SortedSubsList(x)) - 6, 4) THEN
|
||||
o(i).sel = x + 1 'The sorted list items array doesn't contain the first line (ideprogname$)
|
||||
EXIT FOR
|
||||
END IF
|
||||
NEXT
|
||||
ELSE
|
||||
FOR x = 1 TO TotalSUBs
|
||||
IF MID$(ly$, CurrentlyViewingWhichSUBFUNC * 4 - 3, 4) = MID$(SortedSubsList(x), LEN(SortedSubsList(x)) - 6, 4) THEN
|
||||
o(i).sel = x + 1 'The sorted list items array doesn't contain the first line (ideprogname$)
|
||||
EXIT FOR
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
o(i).sel = CurrentlyViewingWhichSUBFUNC
|
||||
END IF
|
||||
o(i).nam = idenewtxt("Program Items")
|
||||
|
||||
|
@ -8204,16 +8146,6 @@ FUNCTION idesubs$
|
|||
o(i).txt = idenewtxt("#Edit" + sep + "#Cancel")
|
||||
o(i).dft = 1
|
||||
|
||||
IF TotalSUBs > 1 AND INSTR(_OS$, "64BIT") = 0 THEN
|
||||
i = i + 1
|
||||
o(i).typ = 4 'check box
|
||||
o(i).x = idewx - 22
|
||||
o(i).y = idewy + idesubwindow - 6
|
||||
o(i).nam = idenewtxt("#Sorted A-Z")
|
||||
o(i).sel = SortedSubsFlag
|
||||
END IF
|
||||
|
||||
|
||||
'-------- end of init --------
|
||||
|
||||
'-------- generic init --------
|
||||
|
@ -8292,7 +8224,6 @@ FUNCTION idesubs$
|
|||
|
||||
IF K$ = CHR$(27) OR (focus = 3 AND info <> 0) THEN
|
||||
idesubs$ = "C"
|
||||
GOSUB SaveSortSettings
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
|
||||
|
@ -8300,74 +8231,18 @@ FUNCTION idesubs$
|
|||
y = o(1).sel
|
||||
IF y < 1 THEN y = -y
|
||||
AddQuickNavHistory idecy
|
||||
IF SortedSubsFlag = 0 THEN
|
||||
idecy = CVL(MID$(ly$, y * 4 - 3, 4))
|
||||
ELSE
|
||||
idecy = CVL(MID$(lySorted$, y * 4 - 3, 4))
|
||||
END IF
|
||||
idecy = CVL(MID$(ly$, y * 4 - 3, 4))
|
||||
idesy = idecy
|
||||
idecx = 1
|
||||
idesx = 1
|
||||
|
||||
GOSUB SaveSortSettings
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
|
||||
IF TotalSUBs > 1 THEN
|
||||
IF o(3).sel <> SortedSubsFlag THEN
|
||||
SortedSubsFlag = o(3).sel
|
||||
|
||||
IF SortedSubsFlag = 0 THEN
|
||||
'Replace list contents with unsorted version while mantaining current selection.
|
||||
PreviousSelection = -1
|
||||
IF o(1).sel > 0 THEN
|
||||
TargetSourceLine$ = MID$(lySorted$, o(1).sel * 4 - 3, 4)
|
||||
FOR x = 1 TO TotalSUBs
|
||||
IF MID$(ly$, x * 4 - 3, 4) = TargetSourceLine$ THEN
|
||||
PreviousSelection = x
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
|
||||
idetxt(o(1).txt) = l$
|
||||
o(1).sel = PreviousSelection
|
||||
focus = 1
|
||||
ELSE
|
||||
'Replace list contents with sorted version while mantaining current selection.
|
||||
PreviousSelection = -1
|
||||
IF o(1).sel > 0 THEN
|
||||
TargetSourceLine$ = MID$(ly$, o(1).sel * 4 - 3, 4)
|
||||
FOR x = 1 TO TotalSUBs
|
||||
IF MID$(lySorted$, x * 4 - 3, 4) = TargetSourceLine$ THEN
|
||||
PreviousSelection = x
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
|
||||
idetxt(o(1).txt) = lSorted$
|
||||
o(1).sel = PreviousSelection
|
||||
focus = 1
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
||||
'end of custom controls
|
||||
mousedown = 0
|
||||
mouseup = 0
|
||||
LOOP
|
||||
|
||||
EXIT FUNCTION
|
||||
SaveSortSettings:
|
||||
IF TotalSUBs > 1 AND idesortsubs <> SortedSubsFlag THEN
|
||||
idesortsubs = SortedSubsFlag
|
||||
IF idesortsubs THEN
|
||||
WriteConfigSetting "'[IDE DISPLAY SETTINGS]", "IDE_SortSUBs", "TRUE"
|
||||
ELSE
|
||||
WriteConfigSetting "'[IDE DISPLAY SETTINGS]", "IDE_SortSUBs", "FALSE"
|
||||
END IF
|
||||
END IF
|
||||
RETURN
|
||||
|
||||
END FUNCTION
|
||||
|
||||
|
||||
|
@ -13659,279 +13534,6 @@ SUB Mathbox
|
|||
idecx = idecx + LEN(messagestr$)
|
||||
END SUB
|
||||
|
||||
SUB Sort (m AS _MEM) 'Provided by Steve McNeill
|
||||
DIM t AS LONG: t = m.TYPE
|
||||
DIM i AS _UNSIGNED LONG
|
||||
DIM ES AS LONG, EC AS LONG
|
||||
|
||||
IF NOT t AND 65536 THEN EXIT SUB 'We won't work without an array
|
||||
IF t AND 1024 THEN DataType = 10
|
||||
IF t AND 1 THEN DataType = DataType + 1
|
||||
IF t AND 2 THEN DataType = DataType + 2
|
||||
IF t AND 4 THEN IF t AND 128 THEN DataType = DataType + 4 ELSE DataType = 3
|
||||
IF t AND 8 THEN IF t AND 128 THEN DataType = DataType + 8 ELSE DataType = 5
|
||||
IF t AND 32 THEN DataType = 6
|
||||
IF t AND 512 THEN DataType = 7
|
||||
|
||||
'Convert our offset data over to something we can work with
|
||||
DIM m1 AS _MEM: m1 = _MEMNEW(8)
|
||||
_MEMPUT m1, m1.OFFSET, m.ELEMENTSIZE: _MEMGET m1, m1.OFFSET, ES 'Element Size
|
||||
_MEMPUT m1, m1.OFFSET, m.SIZE: _MEMGET m1, m1.OFFSET, EC 'Element Count will temporily hold the WHOLE array size
|
||||
_MEMFREE m1
|
||||
EC = EC / ES - 1 'Now we take the whole element size / the size of the elements and get our actual element count. We subtract 1 so our arrays start at 0 and not 1.
|
||||
'And work with it!
|
||||
DIM o AS _OFFSET, o1 AS _OFFSET, counter AS _UNSIGNED LONG
|
||||
|
||||
SELECT CASE DataType
|
||||
CASE 1 'BYTE
|
||||
DIM temp1(-128 TO 127) AS _UNSIGNED LONG
|
||||
DIM t1 AS _BYTE
|
||||
i = 0
|
||||
DO
|
||||
_MEMGET m, m.OFFSET + i, t1
|
||||
temp1(t1) = temp1(t1) + 1
|
||||
i = i + 1
|
||||
LOOP UNTIL i > EC
|
||||
i1 = -128
|
||||
DO
|
||||
DO UNTIL temp1(i1) = 0
|
||||
_MEMPUT m, m.OFFSET + counter, i1 AS _BYTE
|
||||
counter = counter + 1
|
||||
temp1(i1) = temp1(i1) - 1
|
||||
IF counter > EC THEN EXIT SUB
|
||||
LOOP
|
||||
i1 = i1 + 1
|
||||
LOOP UNTIL i1 > 127
|
||||
CASE 2: 'INTEGER
|
||||
DIM temp2(-32768 TO 32767) AS _UNSIGNED LONG
|
||||
DIM t2 AS INTEGER
|
||||
i = 0
|
||||
DO
|
||||
_MEMGET m, m.OFFSET + i * 2, t2
|
||||
temp2(t2) = temp2(t2) + 1
|
||||
i = i + 1
|
||||
LOOP UNTIL i > EC
|
||||
i1 = -32768
|
||||
DO
|
||||
DO UNTIL temp2(i1) = 0
|
||||
_MEMPUT m, m.OFFSET + counter * 2, i1 AS INTEGER
|
||||
counter = counter + 1
|
||||
temp2(i1) = temp2(i1) - 1
|
||||
IF counter > EC THEN EXIT SUB
|
||||
LOOP
|
||||
i1 = i1 + 1
|
||||
LOOP UNTIL i1 > 32767
|
||||
CASE 3 'SINGLE
|
||||
DIM T3a AS SINGLE, T3b AS SINGLE
|
||||
gap = EC
|
||||
DO
|
||||
gap = 10 * gap \ 13
|
||||
IF gap < 1 THEN gap = 1
|
||||
i = 0
|
||||
swapped = 0
|
||||
DO
|
||||
o = m.OFFSET + i * 4
|
||||
o1 = m.OFFSET + (i + gap) * 4
|
||||
IF _MEMGET(m, o, SINGLE) > _MEMGET(m, o1, SINGLE) THEN
|
||||
_MEMGET m, o1, T3a
|
||||
_MEMGET m, o, T3b
|
||||
_MEMPUT m, o1, T3b
|
||||
_MEMPUT m, o, T3a
|
||||
swapped = -1
|
||||
END IF
|
||||
i = i + 1
|
||||
LOOP UNTIL i + gap > EC
|
||||
LOOP UNTIL gap = 1 AND swapped = 0
|
||||
CASE 4 'LONG
|
||||
DIM T4a AS LONG, T4b AS LONG
|
||||
gap = EC
|
||||
DO
|
||||
gap = 10 * gap \ 13
|
||||
IF gap < 1 THEN gap = 1
|
||||
i = 0
|
||||
swapped = 0
|
||||
DO
|
||||
o = m.OFFSET + i * 4
|
||||
o1 = m.OFFSET + (i + gap) * 4
|
||||
IF _MEMGET(m, o, LONG) > _MEMGET(m, o1, LONG) THEN
|
||||
_MEMGET m, o1, T4a
|
||||
_MEMGET m, o, T4b
|
||||
_MEMPUT m, o1, T4b
|
||||
_MEMPUT m, o, T4a
|
||||
swapped = -1
|
||||
END IF
|
||||
i = i + 1
|
||||
LOOP UNTIL i + gap > EC
|
||||
LOOP UNTIL gap = 1 AND swapped = 0
|
||||
CASE 5 'DOUBLE
|
||||
DIM T5a AS DOUBLE, T5b AS DOUBLE
|
||||
gap = EC
|
||||
DO
|
||||
gap = 10 * gap \ 13
|
||||
IF gap < 1 THEN gap = 1
|
||||
i = 0
|
||||
swapped = 0
|
||||
DO
|
||||
o = m.OFFSET + i * 8
|
||||
o1 = m.OFFSET + (i + gap) * 8
|
||||
IF _MEMGET(m, o, DOUBLE) > _MEMGET(m, o1, DOUBLE) THEN
|
||||
_MEMGET m, o1, T5a
|
||||
_MEMGET m, o, T5b
|
||||
_MEMPUT m, o1, T5b
|
||||
_MEMPUT m, o, T5a
|
||||
swapped = -1
|
||||
END IF
|
||||
i = i + 1
|
||||
LOOP UNTIL i + gap > EC
|
||||
LOOP UNTIL gap = 1 AND swapped = 0
|
||||
CASE 6 ' _FLOAT
|
||||
DIM T6a AS _FLOAT, T6b AS _FLOAT
|
||||
gap = EC
|
||||
DO
|
||||
gap = 10 * gap \ 13
|
||||
IF gap < 1 THEN gap = 1
|
||||
i = 0
|
||||
swapped = 0
|
||||
DO
|
||||
o = m.OFFSET + i * 32
|
||||
o1 = m.OFFSET + (i + gap) * 32
|
||||
IF _MEMGET(m, o, _FLOAT) > _MEMGET(m, o1, _FLOAT) THEN
|
||||
_MEMGET m, o1, T6a
|
||||
_MEMGET m, o, T6b
|
||||
_MEMPUT m, o1, T6b
|
||||
_MEMPUT m, o, T6a
|
||||
swapped = -1
|
||||
END IF
|
||||
i = i + 1
|
||||
LOOP UNTIL i + gap > EC
|
||||
LOOP UNTIL gap = 1 AND swapped = 0
|
||||
CASE 7 'String
|
||||
DIM T7a AS STRING, T7b AS STRING, T7c AS STRING
|
||||
T7a = SPACE$(ES): T7b = SPACE$(ES): T7c = SPACE$(ES)
|
||||
gap = EC
|
||||
DO
|
||||
gap = INT(gap / 1.247330950103979)
|
||||
IF gap < 1 THEN gap = 1
|
||||
i = 0
|
||||
swapped = 0
|
||||
DO
|
||||
o = m.OFFSET + i * ES
|
||||
o1 = m.OFFSET + (i + gap) * ES
|
||||
_MEMGET m, o, T7a
|
||||
_MEMGET m, o1, T7b
|
||||
IF T7a > T7b THEN
|
||||
T7c = T7b
|
||||
_MEMPUT m, o1, T7a
|
||||
_MEMPUT m, o, T7c
|
||||
swapped = -1
|
||||
END IF
|
||||
i = i + 1
|
||||
LOOP UNTIL i + gap > EC
|
||||
LOOP UNTIL gap = 1 AND swapped = false
|
||||
CASE 8 '_INTEGER64
|
||||
DIM T8a AS _INTEGER64, T8b AS _INTEGER64
|
||||
gap = EC
|
||||
DO
|
||||
gap = 10 * gap \ 13
|
||||
IF gap < 1 THEN gap = 1
|
||||
i = 0
|
||||
swapped = 0
|
||||
DO
|
||||
o = m.OFFSET + i * 8
|
||||
o1 = m.OFFSET + (i + gap) * 8
|
||||
IF _MEMGET(m, o, _INTEGER64) > _MEMGET(m, o1, _INTEGER64) THEN
|
||||
_MEMGET m, o1, T8a
|
||||
_MEMGET m, o, T8b
|
||||
_MEMPUT m, o1, T8b
|
||||
_MEMPUT m, o, T8a
|
||||
swapped = -1
|
||||
END IF
|
||||
i = i + 1
|
||||
LOOP UNTIL i + gap > EC
|
||||
LOOP UNTIL gap = 1 AND swapped = 0
|
||||
CASE 11: '_UNSIGNED _BYTE
|
||||
DIM temp11(0 TO 255) AS _UNSIGNED LONG
|
||||
DIM t11 AS _UNSIGNED _BYTE
|
||||
i = 0
|
||||
DO
|
||||
_MEMGET m, m.OFFSET + i, t11
|
||||
temp11(t11) = temp11(t11) + 1
|
||||
i = i + 1
|
||||
LOOP UNTIL i > EC
|
||||
i1 = 0
|
||||
DO
|
||||
DO UNTIL temp11(i1) = 0
|
||||
_MEMPUT m, m.OFFSET + counter, i1 AS _UNSIGNED _BYTE
|
||||
counter = counter + 1
|
||||
temp11(i1) = temp11(i1) - 1
|
||||
IF counter > EC THEN EXIT SUB
|
||||
LOOP
|
||||
i1 = i1 + 1
|
||||
LOOP UNTIL i1 > 255
|
||||
CASE 12 '_UNSIGNED INTEGER
|
||||
DIM temp12(0 TO 65535) AS _UNSIGNED LONG
|
||||
DIM t12 AS _UNSIGNED INTEGER
|
||||
i = 0
|
||||
DO
|
||||
_MEMGET m, m.OFFSET + i * 2, t12
|
||||
temp12(t12) = temp12(t12) + 1
|
||||
i = i + 1
|
||||
LOOP UNTIL i > EC
|
||||
i1 = 0
|
||||
DO
|
||||
DO UNTIL temp12(i1) = 0
|
||||
_MEMPUT m, m.OFFSET + counter * 2, i1 AS _UNSIGNED INTEGER
|
||||
counter = counter + 1
|
||||
temp12(i1) = temp12(i1) - 1
|
||||
IF counter > EC THEN EXIT SUB
|
||||
LOOP
|
||||
i1 = i1 + 1
|
||||
LOOP UNTIL i1 > 65535
|
||||
CASE 14 '_UNSIGNED LONG
|
||||
DIM T14a AS _UNSIGNED LONG, T14b AS _UNSIGNED LONG
|
||||
gap = EC
|
||||
DO
|
||||
gap = 10 * gap \ 13
|
||||
IF gap < 1 THEN gap = 1
|
||||
i = 0
|
||||
swapped = 0
|
||||
DO
|
||||
o = m.OFFSET + i * 4
|
||||
o1 = m.OFFSET + (i + gap) * 4
|
||||
IF _MEMGET(m, o, _UNSIGNED LONG) > _MEMGET(m, o1, _UNSIGNED LONG) THEN
|
||||
_MEMGET m, o1, T14a
|
||||
_MEMGET m, o, T14b
|
||||
_MEMPUT m, o1, T14b
|
||||
_MEMPUT m, o, T14a
|
||||
swapped = -1
|
||||
END IF
|
||||
i = i + 1
|
||||
LOOP UNTIL i + gap > EC
|
||||
LOOP UNTIL gap = 1 AND swapped = 0
|
||||
CASE 18: '_UNSIGNED _INTEGER64
|
||||
DIM T18a AS _UNSIGNED _INTEGER64, T18b AS _UNSIGNED _INTEGER64
|
||||
gap = EC
|
||||
DO
|
||||
gap = 10 * gap \ 13
|
||||
IF gap < 1 THEN gap = 1
|
||||
i = 0
|
||||
swapped = 0
|
||||
DO
|
||||
o = m.OFFSET + i * 8
|
||||
o1 = m.OFFSET + (i + gap) * 8
|
||||
IF _MEMGET(m, o, _UNSIGNED _INTEGER64) > _MEMGET(m, o1, _UNSIGNED _INTEGER64) THEN
|
||||
_MEMGET m, o1, T18a
|
||||
_MEMGET m, o, T18b
|
||||
_MEMPUT m, o1, T18b
|
||||
_MEMPUT m, o, T18a
|
||||
swapped = -1
|
||||
END IF
|
||||
i = i + 1
|
||||
LOOP UNTIL i + gap > EC
|
||||
LOOP UNTIL gap = 1 AND swapped = 0
|
||||
END SELECT
|
||||
END SUB
|
||||
|
||||
FUNCTION FindProposedTitle$
|
||||
'Finds the first occurence of _TITLE to suggest a file name
|
||||
'when saving for the first time or saving as.
|
||||
|
|
Loading…
Reference in a new issue