@@ -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
@@ -1328,12 +1328,27 @@ namespace @IMPL_NAMESPACE@ {
13281328
13291329 set (CAP_NAMES "" )
13301330 set (CAP_TYPES "" )
1331+ set (CAP_KINDS "" )
13311332 if (HAS_CAPS)
13321333 math (EXPR LAST_CAP "${CAPS_LENGTH} - 1" )
13331334 foreach (CAP_IDX RANGE 0 ${LAST_CAP} )
1335+ string (JSON CAP_KIND ERROR_VARIABLE CAP_TYPE_ERROR GET "${IMPL_INPUTS} " ${INDEX} CAPS ${CAP_IDX} kind)
13341336 string (JSON CAP_NAME GET "${IMPL_INPUTS} " ${INDEX} CAPS ${CAP_IDX} name )
13351337 string (JSON CAP_TYPE GET "${IMPL_INPUTS} " ${INDEX} CAPS ${CAP_IDX} type )
13361338
1339+ # -> TODO: improve validation, input should be string
1340+ if (CAP_TYPE_ERROR)
1341+ set (CAP_KIND limits) # I assume its limit by default (or when invalid value present, currently)
1342+ else ()
1343+ if (NOT CAP_KIND MATCHES "^(limits|features)$" )
1344+ ERROR_WHILE_PARSING_ITEM(
1345+ "Invalid CAP kind \" ${CAP_KIND} \" for ${CAP_NAME} \n "
1346+ "Allowed kinds are: limits, features"
1347+ )
1348+ endif ()
1349+ endif ()
1350+ # <-
1351+
13371352 if (NOT CAP_TYPE MATCHES "^(bool|uint16_t|uint32_t|uint64_t)$" )
13381353 ERROR_WHILE_PARSING_ITEM(
13391354 "Invalid CAP type \" ${CAP_TYPE} \" for ${CAP_NAME} \n "
@@ -1371,6 +1386,7 @@ namespace @IMPL_NAMESPACE@ {
13711386 set (CAP_VALUES_${CAP_IDX} "${VALUES} " )
13721387 list (APPEND CAP_NAMES "${CAP_NAME} " )
13731388 list (APPEND CAP_TYPES "${CAP_TYPE} " )
1389+ list (APPEND CAP_KINDS "${CAP_KIND} " )
13741390 endforeach ()
13751391 endif ()
13761392
@@ -1410,12 +1426,16 @@ namespace @IMPL_NAMESPACE@ {
14101426
14111427]=])
14121428 unset (RETVAL_EVAL)
1413- foreach (CAP ${CAP_NAMES} )
1429+ list (LENGTH CAP_NAMES CAP_COUNT)
1430+ math (EXPR CAP_COUNT "${CAP_COUNT} - 1" )
1431+ foreach (i RANGE ${CAP_COUNT} )
1432+ list (GET CAP_NAMES ${i} CAP)
1433+ list (GET CAP_KINDS ${i} KIND)
14141434 string (CONFIGURE [=[
1415- retval += ".@CAP@_" + std::to_string(limits .@CAP@);
1435+ retval += ".@CAP@_" + std::to_string(@KIND@ .@CAP@);
14161436]=] RETVALUE_VIEW @ONLY)
14171437 string (APPEND RETVAL_EVAL "${RETVALUE_VIEW} " )
1418- endforeach (CAP )
1438+ endforeach ()
14191439 string (CONFIGURE "${HEADER_ITEM_VIEW} " HEADER_ITEM_EVAL @ONLY)
14201440 set_property (TARGET ${IMPL_TARGET} APPEND_STRING PROPERTY NBL_HEADER_CONTENT "${HEADER_ITEM_EVAL} " )
14211441
@@ -1466,6 +1486,7 @@ namespace @IMPL_NAMESPACE@ {
14661486
14671487 list (GET CAP_NAMES ${CAP_INDEX} CURRENT_CAP)
14681488 list (GET CAP_TYPES ${CAP_INDEX} CURRENT_TYPE)
1489+ list (GET CAP_KINDS ${CAP_INDEX} CURRENT_KIND)
14691490 set (VAR_NAME "CAP_VALUES_${CAP_INDEX} " )
14701491 set (VALUES "${${VAR_NAME} }" )
14711492
0 commit comments