Files
CydandClaude Fable 5 db7745fcd0 sda4: commit the Glaze developer hard-drive dump
Un-ignored: the dev drive is the ground truth the restoration and
emulator work constantly reference (DPL3/LIBDPL + VRENDER i860 renderer
source, BT/RP live+dev game trees, VGL_LABS pod boot, scene/audio
content). Kept in-repo for the pod-owner community.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 19:41:15 -05:00

119 lines
2.4 KiB
Objective-C

;**
;** BRIEF -- Basic Reconfigurable Interactive Editing Facility
;**
;** Written by Dave Nanian and Michael Strickman.
;**
;** brace.m:
;**
;** This macro is an attempt at a "locate the unmatched brace" utility.
;** Although it attempts to be fairly smart about things, it has an IQ of
;** 4 or 5, so be careful before taking its word for something.
;**
;** It DOES NOT WORK if there are braces inside quotes, apostrophes, or
;** comments. The macro can, however, be modified to ignore everything
;** inside these structures (and check for the appropriate mismatches).
;**
;** Revision history:
;** -----------------
#define TRUE 1
#define BACK 1
#define DONE 2
(macro brace
(
(int tot_count
start_line
start_col
mismatch
char_we_got
backward
)
(string msg_pattern
msg_text)
(= msg_pattern "Checking braces, %d unmatched {s.")
(inq_position start_line start_col)
(top_of_buffer)
(while (< backward DONE)
(
(while (&& (char_search backward) (! mismatch))
(
(sprintf msg_text msg_pattern tot_count)
(message msg_text)
(if backward
(= char_we_got (index "}{" (read 1)))
;else
(= char_we_got (index "{}" (read 1)))
)
(if (== char_we_got 1)
(++ tot_count)
;else
(if (== char_we_got 2)
(if tot_count
(-- tot_count)
;else
(
(if backward
(message "Mismatched opening brace.")
;else
(message "Mismatched closing brace.")
)
(= mismatch TRUE)
)
)
)
)
(if (! mismatch)
(
(if backward
(prev_char)
;else
(next_char)
)
)
)
)
)
(if (! mismatch)
(if tot_count
(
(end_of_buffer)
(= tot_count 0)
(= backward BACK)
(= msg_pattern "Locating mismatch, %d unmatched }s.")
)
;else
(= backward DONE)
)
;else
(= backward DONE)
)
)
)
(if (! mismatch)
(
(message "All braces match.")
(move_abs start_line start_col)
)
)
)
)
(macro char_search
(
(int backward)
(get_parm 0 backward)
(if backward
(returns (search_back "[\\{\\}]"))
;else
(returns (search_fwd "[\\{\\}]"))
)
)
)