+def _GenerateObjectTypeCheck(obj, fields_types):
+ """Helper to generate type checks for objects.
+
+ @param obj: The object to generate type checks
+ @param fields_types: The fields and their types as a dict
+ @return: A ht type check function
+
+ """
+ assert set(obj.GetAllSlots()) == set(fields_types.keys()), \
+ "%s != %s" % (set(obj.GetAllSlots()), set(fields_types.keys()))
+ return ht.TStrictDict(True, True, fields_types)
+
+
+_TQueryFieldDef = \
+ _GenerateObjectTypeCheck(objects.QueryFieldDefinition, {
+ "name": ht.TNonEmptyString,
+ "title": ht.TNonEmptyString,
+ "kind": ht.TElemOf(constants.QFT_ALL),
+ "doc": ht.TNonEmptyString,
+ })
+
+