;*** problem: detecting endo of undelimited literals
;--- see @CatStr() below:
.386
.model flat, stdcall
option casemap:none ; case sensitive
option proc:private
CStrX macro y:VARARG
local sym
CONST segment dword public 'CONST'
sym db y,0
CONST ends
exitm <offset sym>
endm
.data
HANDLE TYPEDEF DWORD
LPSTR TYPEDEF ptr BYTE
HKEY_CLASSES_ROOT equ 80000000h
NULL equ 0
REGSTRUCT struct
hRootKey HANDLE ?
lpszSubKey LPSTR ?
lpszValueName LPSTR ?
lpszData LPSTR ?
REGSTRUCT ends
Version_AsmCtrl equ <1>
AsmCtrl_ProgidEntries label REGSTRUCT
;--- prior to v2.05, the second -!"- argument of the @CatStr macro
;--- did also contain the closing bracket(s), because the tokenizer
;--- did stop only if a white space, a comma or a semi-colon was detected.
REGSTRUCT {HKEY_CLASSES_ROOT,CStrX(".", @CatStr(!",%Version_AsmCtrl,!")),0,CStrX("X")}
REGSTRUCT {HKEY_CLASSES_ROOT,CStrX(".", @CatStr(!",%Version_AsmCtrl,!"),"\X"),0,-1}
NUMREGSTRUCTENTRIES2 equ ($ - offset AsmCtrl_ProgidEntries) / sizeof REGSTRUCT
end