@@ -1210,7 +1210,7 @@ struct DeviceConfigCaps
12101210
12111211 get_target_property (HEADER_RULE_GENERATED ${IMPL_TARGET} NBL_HEADER_GENERATED_RULE)
12121212 if (NOT HEADER_RULE_GENERATED)
1213- set (INCLUDE_DIR "$<TARGET_PROPERTY:${IMPL_TARGET} ,BINARY_DIR>/${IMPL_TARGET} /.cmake/include" )
1213+ set (INCLUDE_DIR "$<TARGET_PROPERTY:${IMPL_TARGET} ,BINARY_DIR>/${IMPL_TARGET} /.cmake/include" )
12141214 set (INCLUDE_FILE "${INCLUDE_DIR} /$<TARGET_PROPERTY:${IMPL_TARGET} ,NBL_HEADER_PATH>" )
12151215 set (INCLUDE_CONTENT $<TARGET_PROPERTY:${IMPL_TARGET} ,NBL_HEADER_CONTENT>)
12161216
@@ -1323,12 +1323,27 @@ namespace @IMPL_NAMESPACE@ {
13231323
13241324 set (CAP_NAMES "" )
13251325 set (CAP_TYPES "" )
1326+ set (CAP_KINDS "" )
13261327 if (HAS_CAPS)
13271328 math (EXPR LAST_CAP "${CAPS_LENGTH} - 1" )
13281329 foreach (CAP_IDX RANGE 0 ${LAST_CAP} )
1330+ string (JSON CAP_KIND ERROR_VARIABLE CAP_TYPE_ERROR GET "${IMPL_INPUTS} " ${INDEX} CAPS ${CAP_IDX} kind)
13291331 string (JSON CAP_NAME GET "${IMPL_INPUTS} " ${INDEX} CAPS ${CAP_IDX} name )
13301332 string (JSON CAP_TYPE GET "${IMPL_INPUTS} " ${INDEX} CAPS ${CAP_IDX} type )
13311333
1334+ # -> TODO: improve validation, input should be string
1335+ if (CAP_TYPE_ERROR)
1336+ set (CAP_KIND limits) # I assume its limit by default (or when invalid value present, currently)
1337+ else ()
1338+ if (NOT CAP_KIND MATCHES "^(limits|features)$" )
1339+ ERROR_WHILE_PARSING_ITEM(
1340+ "Invalid CAP kind \" ${CAP_KIND} \" for ${CAP_NAME} \n "
1341+ "Allowed kinds are: limits, features"
1342+ )
1343+ endif ()
1344+ endif ()
1345+ # <-
1346+
13321347 if (NOT CAP_TYPE MATCHES "^(bool|uint16_t|uint32_t|uint64_t)$" )
13331348 ERROR_WHILE_PARSING_ITEM(
13341349 "Invalid CAP type \" ${CAP_TYPE} \" for ${CAP_NAME} \n "
@@ -1366,6 +1381,7 @@ namespace @IMPL_NAMESPACE@ {
13661381 set (CAP_VALUES_${CAP_IDX} "${VALUES} " )
13671382 list (APPEND CAP_NAMES "${CAP_NAME} " )
13681383 list (APPEND CAP_TYPES "${CAP_TYPE} " )
1384+ list (APPEND CAP_KINDS "${CAP_KIND} " )
13691385 endforeach ()
13701386 endif ()
13711387
@@ -1405,12 +1421,16 @@ namespace @IMPL_NAMESPACE@ {
14051421
14061422]=])
14071423 unset (RETVAL_EVAL)
1408- foreach (CAP ${CAP_NAMES} )
1424+ list (LENGTH CAP_NAMES CAP_COUNT)
1425+ math (EXPR CAP_COUNT "${CAP_COUNT} - 1" )
1426+ foreach (i RANGE ${CAP_COUNT} )
1427+ list (GET CAP_NAMES ${i} CAP)
1428+ list (GET CAP_KINDS ${i} KIND)
14091429 string (CONFIGURE [=[
1410- retval += ".@CAP@_" + std::to_string(limits .@CAP@);
1430+ retval += ".@CAP@_" + std::to_string(@KIND@ .@CAP@);
14111431]=] RETVALUE_VIEW @ONLY)
14121432 string (APPEND RETVAL_EVAL "${RETVALUE_VIEW} " )
1413- endforeach (CAP )
1433+ endforeach ()
14141434 string (CONFIGURE "${HEADER_ITEM_VIEW} " HEADER_ITEM_EVAL @ONLY)
14151435 set_property (TARGET ${IMPL_TARGET} APPEND_STRING PROPERTY NBL_HEADER_CONTENT "${HEADER_ITEM_EVAL} " )
14161436
@@ -1461,6 +1481,7 @@ namespace @IMPL_NAMESPACE@ {
14611481
14621482 list (GET CAP_NAMES ${CAP_INDEX} CURRENT_CAP)
14631483 list (GET CAP_TYPES ${CAP_INDEX} CURRENT_TYPE)
1484+ list (GET CAP_KINDS ${CAP_INDEX} CURRENT_KIND)
14641485 set (VAR_NAME "CAP_VALUES_${CAP_INDEX} " )
14651486 set (VALUES "${${VAR_NAME} }" )
14661487
0 commit comments