mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Use brace counting to detect end of class in squirrel-exporter
parent
6482e16564
commit
fca75fd06a
|
@ -73,9 +73,7 @@ macro(reset_reader)
|
||||||
unset(STATIC_METHODS)
|
unset(STATIC_METHODS)
|
||||||
unset(CLS)
|
unset(CLS)
|
||||||
unset(START_SQUIRREL_DEFINE_ON_NEXT_LINE)
|
unset(START_SQUIRREL_DEFINE_ON_NEXT_LINE)
|
||||||
set(CLS_LEVEL 0)
|
|
||||||
unset(CLS_IN_API)
|
unset(CLS_IN_API)
|
||||||
set(BRACE_LEVEL 0)
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
reset_reader()
|
reset_reader()
|
||||||
|
@ -83,6 +81,9 @@ reset_reader()
|
||||||
file(STRINGS "${SCRIPT_API_FILE}" SOURCE_LINES)
|
file(STRINGS "${SCRIPT_API_FILE}" SOURCE_LINES)
|
||||||
|
|
||||||
set(NUM_LINE 0)
|
set(NUM_LINE 0)
|
||||||
|
set(CLS_LEVEL 0)
|
||||||
|
set(BRACE_LEVEL 0)
|
||||||
|
|
||||||
macro(doxygen_check)
|
macro(doxygen_check)
|
||||||
if(NOT "${DOXYGEN_SKIP}" STREQUAL "")
|
if(NOT "${DOXYGEN_SKIP}" STREQUAL "")
|
||||||
message(FATAL_ERROR "${SCRIPT_API_FILE}:${NUM_LINE}: a DOXYGEN_API block was not properly closed")
|
message(FATAL_ERROR "${SCRIPT_API_FILE}:${NUM_LINE}: a DOXYGEN_API block was not properly closed")
|
||||||
|
@ -156,6 +157,13 @@ foreach(LINE IN LISTS SOURCE_LINES)
|
||||||
continue()
|
continue()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Count braces to skip function bodies
|
||||||
|
string(REGEX REPLACE "[^{]" "" OPENING_BRACES "${LINE}")
|
||||||
|
string(LENGTH "${OPENING_BRACES}" OPENING_BRACES)
|
||||||
|
string(REGEX REPLACE "[^}]" "" CLOSING_BRACES "${LINE}")
|
||||||
|
string(LENGTH "${CLOSING_BRACES}" CLOSING_BRACES)
|
||||||
|
math(EXPR BRACE_LEVEL "${BRACE_LEVEL} + ${OPENING_BRACES} - ${CLOSING_BRACES}")
|
||||||
|
|
||||||
# Ignore forward declarations of classes
|
# Ignore forward declarations of classes
|
||||||
if("${LINE}" MATCHES "^(\t*)class(.*);")
|
if("${LINE}" MATCHES "^(\t*)class(.*);")
|
||||||
continue()
|
continue()
|
||||||
|
@ -274,7 +282,7 @@ foreach(LINE IN LISTS SOURCE_LINES)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Maybe the end of the class, if so we can start with the Squirrel export pretty soon
|
# Maybe the end of the class, if so we can start with the Squirrel export pretty soon
|
||||||
if("${LINE}" MATCHES "};")
|
if(BRACE_LEVEL LESS CLS_LEVEL)
|
||||||
math(EXPR CLS_LEVEL "${CLS_LEVEL} - 1")
|
math(EXPR CLS_LEVEL "${CLS_LEVEL} - 1")
|
||||||
if(CLS_LEVEL)
|
if(CLS_LEVEL)
|
||||||
unset(IN_ENUM)
|
unset(IN_ENUM)
|
||||||
|
@ -529,13 +537,9 @@ foreach(LINE IN LISTS SOURCE_LINES)
|
||||||
continue()
|
continue()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Count braces to skip function bodies
|
if(NOT BRACE_LEVEL EQUAL CLS_LEVEL)
|
||||||
string(REGEX REPLACE "[^{]" "" OPENING_BRACES "${LINE}")
|
continue()
|
||||||
string(LENGTH "${OPENING_BRACES}" OPENING_BRACES)
|
endif()
|
||||||
string(REGEX REPLACE "[^}]" "" CLOSING_BRACES "${LINE}")
|
|
||||||
string(LENGTH "${CLOSING_BRACES}" CLOSING_BRACES)
|
|
||||||
set(OLD_BRACE_LEVEL "${BRACE_LEVEL}")
|
|
||||||
math(EXPR BRACE_LEVEL "${BRACE_LEVEL} + ${OPENING_BRACES} - ${CLOSING_BRACES}")
|
|
||||||
|
|
||||||
# Add enums
|
# Add enums
|
||||||
if(IN_ENUM)
|
if(IN_ENUM)
|
||||||
|
@ -565,10 +569,6 @@ foreach(LINE IN LISTS SOURCE_LINES)
|
||||||
continue()
|
continue()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(OLD_BRACE_LEVEL)
|
|
||||||
continue()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Add a const (non-enum) value
|
# Add a const (non-enum) value
|
||||||
if("${LINE}" MATCHES "^[ \t]*static const [^ ]+ ([^ ]+) = -?\\(?[^ ]*\\)?[^ ]+;")
|
if("${LINE}" MATCHES "^[ \t]*static const [^ ]+ ([^ ]+) = -?\\(?[^ ]*\\)?[^ ]+;")
|
||||||
list(APPEND CONST_VALUES "${CMAKE_MATCH_1}")
|
list(APPEND CONST_VALUES "${CMAKE_MATCH_1}")
|
||||||
|
|
Loading…
Reference in New Issue