qapi/schema: make c_type() and json_type() abstract methods

These methods should always return a str, it's only the default abstract
implementation that doesn't. They can be marked "abstract", which
requires subclasses to override the method with the proper return type.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240315152301.3621858-9-armbru@redhat.com>
This commit is contained in:
John Snow 2024-03-15 16:22:44 +01:00 committed by Markus Armbruster
parent 578cd9329b
commit d150be3d54
1 changed files with 4 additions and 1 deletions

View File

@ -16,6 +16,7 @@
# TODO catching name collisions in generated code would be nice # TODO catching name collisions in generated code would be nice
from abc import ABC, abstractmethod
from collections import OrderedDict from collections import OrderedDict
import os import os
import re import re
@ -245,9 +246,10 @@ class QAPISchemaInclude(QAPISchemaEntity):
visitor.visit_include(self._sub_module.name, self.info) visitor.visit_include(self._sub_module.name, self.info)
class QAPISchemaType(QAPISchemaDefinition): class QAPISchemaType(QAPISchemaDefinition, ABC):
# Return the C type for common use. # Return the C type for common use.
# For the types we commonly box, this is a pointer type. # For the types we commonly box, this is a pointer type.
@abstractmethod
def c_type(self): def c_type(self):
pass pass
@ -259,6 +261,7 @@ class QAPISchemaType(QAPISchemaDefinition):
def c_unboxed_type(self): def c_unboxed_type(self):
return self.c_type() return self.c_type()
@abstractmethod
def json_type(self): def json_type(self):
pass pass