Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement from_params methods #18

Merged
merged 7 commits into from
Oct 6, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 142 additions & 2 deletions src/devana/syntax_abstraction/classinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
from devana.syntax_abstraction.attribute import DescriptiveByAttributes
from devana.syntax_abstraction._external_source import create_external
from devana.utility.lazy import LazyNotInit, lazy_invoke
from devana.utility.traits import IBasicCreatable, ICursorValidate, IFromCursorCreatable
from devana.utility.init_params import init_params
from devana.utility.traits import IBasicCreatable, ICursorValidate, IFromCursorCreatable, IFromParamsCreatable
from devana.configuration import Configuration, ParsingErrorPolicy
from devana.utility.errors import ParserError
from devana.syntax_abstraction.syntax import ISyntaxElement
Expand Down Expand Up @@ -56,6 +57,14 @@ def from_cursor(cls, cursor: cindex.Cursor, _: Optional = None) -> Optional["Cla
result = cls(cursor)
return result

@classmethod
@init_params(skip={"cls"})
def from_params( # pylint: disable=unused-argument
cls,
access_specifier: Optional = None
) -> "ClassMember":
return cls(None)

@property
def access_specifier(self) -> AccessSpecifier:
"""Access scope of member."""
Expand Down Expand Up @@ -182,6 +191,26 @@ def __init__(self, cursor: Optional[cindex.Cursor] = None, parent: Optional[Code
else:
self._type = LazyNotInit

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
arguments: Optional = None,
name: Optional = None,
return_type: Optional = None,
modification: Optional = None,
body: Optional = None,
namespaces: Optional = None,
lexicon: Optional = None,
template: Optional = None,
associated_comment: Optional = None,
prefix: Optional = None,
access_specifier: Optional = None,
type: Optional = None,
) -> "MethodInfo":
return cls(None, parent)

@property
@lazy_invoke
def type(self) -> MethodType:
Expand Down Expand Up @@ -261,6 +290,27 @@ def __init__(self, cursor: Optional[cindex.Cursor] = None, parent: Optional[Code
self._initializer_list = LazyNotInit
self._name = LazyNotInit

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
arguments: Optional = None,
name: Optional = None,
return_type: Optional = None,
modification: Optional = None,
body: Optional = None,
namespaces: Optional = None,
lexicon: Optional = None,
template: Optional = None,
associated_comment: Optional = None,
prefix: Optional = None,
access_specifier: Optional = None,
type: Optional = None,
initializer_list: Optional = None,
) -> "ConstructorInfo":
return cls(None, parent)

@property
@lazy_invoke
def initializer_list(self) -> List[InitializerInfo]:
Expand Down Expand Up @@ -352,6 +402,26 @@ def __init__(self, cursor: Optional[cindex.Cursor] = None, parent: Optional[Code
else:
self._name = LazyNotInit

@classmethod
@init_params(skip={"cls", "parent", "type"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
arguments: Optional = None,
name: Optional = None,
return_type: Optional = None,
modification: Optional = None,
body: Optional = None,
namespaces: Optional = None,
lexicon: Optional = None,
template: Optional = None,
associated_comment: Optional = None,
prefix: Optional = None,
access_specifier: Optional = None,
type: Optional = None,
) -> "DestructorInfo":
return cls(None, parent)

@property
@lazy_invoke
def name(self) -> str:
Expand Down Expand Up @@ -408,6 +478,20 @@ def from_cursor(cls, cursor: cindex.Cursor, parent: Optional = None) -> Optional
return cls(cursor, parent)
return None

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
name: Optional = None,
type: Optional = None,
default_value: Optional = None,
lexicon: Optional = None,
access_specifier: Optional = None,
associated_comment: Optional = None
) -> "FieldInfo":
return cls(None, parent)

@property
@lazy_invoke
def associated_comment(self) -> Optional[Comment]:
Expand Down Expand Up @@ -460,6 +544,17 @@ def from_cursor(cls, cursor: cindex.Cursor, parent: Optional = None) -> Optional
return None
return cls(cursor, parent)

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
type: Optional = None,
is_unnamed: Optional = None,
content: Optional = None,
) -> "SectionInfo":
return cls(None, parent)

@staticmethod
def is_cursor_valid(cursor: cindex.Cursor) -> bool:
return cursor.kind == cindex.CursorKind.CXX_ACCESS_SPEC_DECL
Expand Down Expand Up @@ -532,7 +627,7 @@ def __repr__(self):
return f"{type(self).__name__}:{self.type} ({super().__repr__()})"


class InheritanceInfo(IFromCursorCreatable, ISyntaxElement):
class InheritanceInfo(IFromCursorCreatable, IFromParamsCreatable, ISyntaxElement):
"""Information about class/structure inheritance."""

class InheritanceValue(IBasicCreatable, ISyntaxElement):
Expand Down Expand Up @@ -563,6 +658,19 @@ def from_cursor(cls, cursor: cindex.Cursor, parent: Optional = None) -> Optional
".InheritanceValue")]:
return cls(cursor, parent)

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
access_specifier: Optional = None,
type: Optional = None,
is_virtual: Optional = None,
template_arguments: Optional = None,
namespaces: Optional = None,
) -> "InheritanceInfo.InheritanceValue":
return cls(None, parent)

@property
def parent(self) -> CodeContainer:
"""Class parent."""
Expand Down Expand Up @@ -667,6 +775,15 @@ def __init__(self, cursor: Optional[cindex.Cursor] = None, parent: Optional = No
def from_cursor(cls, cursor: cindex.Cursor, parent: Optional = None) -> Optional["InheritanceInfo"]:
return cls(cursor, parent)

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
type_parents: Optional = None,
) -> "InheritanceInfo":
return cls(None, parent)

@property
@lazy_invoke
def type_parents(self) -> List[InheritanceValue]:
Expand Down Expand Up @@ -776,6 +893,29 @@ def from_cursor(cls, cursor: cindex.Cursor, parent: Optional = None) -> Optional
except ParserError:
return None

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
content: Optional = None,
namespace: Optional = None,
attributes: Optional = None,
is_class: Optional = None,
is_struct: Optional = None,
is_final: Optional = None,
name: Optional = None,
inheritance: Optional = None,
is_declaration: Optional = None,
is_definition: Optional = None,
namespaces: Optional = None,
lexicon: Optional = None,
template: Optional = None,
associated_comment: Optional = None,
prefix: Optional = None
) -> "ClassInfo":
return cls(None, parent)

@staticmethod
def is_cursor_valid(cursor: cindex.Cursor) -> bool:
if cursor.kind == cindex.CursorKind.STRUCT_DECL:
Expand Down
32 changes: 32 additions & 0 deletions src/devana/syntax_abstraction/enuminfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from devana.utility.errors import ParserError
from devana.utility.lazy import LazyNotInit, lazy_invoke
from devana.utility.traits import IBasicCreatable, ICursorValidate
from devana.utility.init_params import init_params
from devana.syntax_abstraction.syntax import ISyntaxElement


Expand Down Expand Up @@ -50,6 +51,18 @@ def from_cursor(cls, cursor: cindex.Cursor, parent: Optional = None) -> Optional
return None
return cls(cursor, parent)

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
name: Optional = None,
value: Optional = None,
is_default: Optional = None,
associated_comment: Optional = None,
) -> "EnumInfo.EnumValue":
return cls(None, parent)

@staticmethod
def is_cursor_valid(cursor: cindex.Cursor) -> bool:
return cursor.kind == cindex.CursorKind.ENUM_CONSTANT_DECL
Expand Down Expand Up @@ -144,6 +157,25 @@ def __init__(self, cursor: Optional[cindex.Cursor] = None, parent: Optional[Code
def is_cursor_valid(cursor: cindex.Cursor) -> bool:
return cursor.kind == cindex.CursorKind.ENUM_DECL

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
content: Optional = None,
namespace: Optional = None,
name: Optional = None,
values: Optional = None,
is_scoped: Optional = None,
prefix: Optional = None,
numeric_type: Optional = None,
is_declaration: Optional = None,
is_definition: Optional = None,
lexicon: Optional = None,
associated_comment: Optional = None,
) -> "EnumInfo":
return cls(None, parent)

@property
@lazy_invoke
def name(self) -> str:
Expand Down
14 changes: 13 additions & 1 deletion src/devana/syntax_abstraction/externc.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from devana.syntax_abstraction.functioninfo import FunctionInfo
from devana.utility.errors import ParserError
from devana.utility.lazy import lazy_invoke
from devana.syntax_abstraction.syntax import ISyntaxElement
from devana.utility.init_params import init_params


class ExternC(CodeContainer):
Expand All @@ -25,6 +25,18 @@ def __init__(self, cursor: Optional[cindex.Cursor] = None, parent: Optional[Code
self._namespace = None
self._lexicon = Lexicon.create(self)

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
content: Optional = None,
namespace: Optional = None,
name: Optional = None,
lexicon: Optional = None
):
return cls(None, parent)

@staticmethod
def is_cursor_valid(cursor: cindex.Cursor) -> bool:
if cursor.kind != cindex.CursorKind.LINKAGE_SPEC:
Expand Down
32 changes: 32 additions & 0 deletions src/devana/syntax_abstraction/functioninfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from devana.utility.lazy import LazyNotInit, lazy_invoke
from devana.utility.traits import IBasicCreatable, ICursorValidate
from devana.utility.errors import ParserError, CodeError
from devana.utility.init_params import init_params
from devana.syntax_abstraction.syntax import ISyntaxElement


Expand Down Expand Up @@ -275,6 +276,19 @@ def __init__(self, cursor: Optional[cindex.Cursor] = None, parent: Optional = No
def is_cursor_valid(cursor: cindex.Cursor) -> bool:
return cursor.kind == cindex.CursorKind.PARM_DECL

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
name: Optional = None,
type: Optional = None,
default_value: Optional = None,
lexicon: Optional = None,
attributes: Optional = None
) -> "FunctionInfo.Argument":
return cls(None, parent)

@property
@lazy_invoke
def attributes(self) -> List[AttributeDeclaration]:
Expand Down Expand Up @@ -335,6 +349,24 @@ def from_cursor(cls, cursor: cindex.Cursor, parent: Optional = None) -> Optional
return cls(cursor, parent)
return None

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
arguments: Optional = None,
name: Optional = None,
return_type: Optional = None,
modification: Optional = None,
body: Optional = None,
namespaces: Optional = None,
lexicon: Optional = None,
template: Optional = None,
associated_comment: Optional = None,
prefix: Optional = None,
) -> "FunctionInfo":
return cls(None, parent)

@property
@lazy_invoke
def arguments(self) -> List[Argument]:
Expand Down
12 changes: 12 additions & 0 deletions src/devana/syntax_abstraction/functiontype.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from devana.utility.lazy import LazyNotInit, lazy_invoke
from devana.utility.errors import ParserError
from devana.utility.traits import IBasicCreatable, ICursorValidate
from devana.utility.init_params import init_params
from devana.syntax_abstraction.syntax import ISyntaxElement


Expand Down Expand Up @@ -40,6 +41,17 @@ def from_cursor(cls, cursor: cindex.Cursor, parent: Optional = None) -> Optional
def create_default(cls, parent: Optional = None) -> "FunctionType":
return cls(None, parent)

@classmethod
@init_params(skip={"cls", "parent"})
def from_params( # pylint: disable=unused-argument
cls,
parent: Optional = None,
arguments: Optional = None,
return_type: Optional = None,
lexicon: Optional = None,
) -> "FunctionType":
return cls(None, parent)

@staticmethod
def is_cursor_valid(cursor: cindex.Cursor) -> bool:
return cursor.kind is cindex.TypeKind.FUNCTIONPROTO
Expand Down
Loading