Skip to content

Commit d82cb3f

Browse files
committed
Slightly better plugin code generation
1 parent 37833dd commit d82cb3f

File tree

1 file changed

+15
-27
lines changed

1 file changed

+15
-27
lines changed

CMakeLists.txt

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -372,38 +372,26 @@ foreach(core_SOURCE ${plugdata_sources})
372372
source_group("Source\\${core_SOURCE_group}" FILES "${core_SOURCE}")
373373
endforeach()
374374

375-
function(generate_plugin_code str output_var)
376-
string(REGEX REPLACE "[^A-Za-z]" "" clean "${str}") # strip non-letters
377-
string(TOUPPER "${clean}" clean)
375+
function(generate_plugin_code input output_var)
376+
string(MD5 md5 "${input}")
377+
378+
# Convert each pair of hex digits to a letter
379+
set(code "")
380+
foreach(i RANGE 0 6 2) # 0, 2, 4, 6 → first 4 letters
381+
string(SUBSTRING "${md5}" ${i} 2 byte)
382+
string(HEX ${byte} decimal) # convert hex to decimal
383+
math(EXPR index "${decimal} % 26")
384+
string(SUBSTRING "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ${index} 1 letter)
385+
set(code "${code}${letter}")
386+
endforeach()
378387

379-
# Default values in case input is too short
380-
set(part1 "XX")
381-
set(part2 "YY")
382-
383-
string(LENGTH "${clean}" clean_length)
384-
385-
if(clean_length GREATER 1)
386-
string(SUBSTRING "${clean}" 0 2 part1)
387-
elseif(clean_length GREATER 0)
388-
string(SUBSTRING "${clean}" 0 1 part1)
389-
set(part1 "${part1}X")
390-
endif()
391-
392-
if(clean_length GREATER 3)
393-
string(SUBSTRING "${clean}" 2 2 part2)
394-
elseif(clean_length GREATER 2)
395-
string(SUBSTRING "${clean}" 2 1 part2)
396-
set(part2 "${part2}Y")
397-
endif()
398-
399-
set(code "${part1}${part2}")
400388
set(${output_var} "${code}" PARENT_SCOPE)
401389
endfunction()
402390

403391
if(CUSTOM_PLUGIN_NAME)
404-
generate_plugin_code("${COMPANY_NAME}" PLUGIN_MANUFACTURER_CODE)
405-
generate_plugin_code("${PLUGIN_NAME}" PLUGIN_INSTRUMENT_CODE)
406-
generate_plugin_code("${PLUGIN_NAME}" PLUGIN_FX_CODE)
392+
generate_plugin_code("${CUSTOM_PLUGIN_COMPANY}" PLUGIN_MANUFACTURER_CODE)
393+
generate_plugin_code("${CUSTOM_PLUGIN_NAME}" PLUGIN_INSTRUMENT_CODE)
394+
generate_plugin_code("${CUSTOM_PLUGIN_NAME}" PLUGIN_FX_CODE)
407395
else()
408396
set(PLUGIN_MANUFACTURER_CODE "PlDt")
409397
set(PLUGIN_INSTRUMENT_CODE "PdIn")

0 commit comments

Comments
 (0)