mirror of
https://github.com/Mbed-TLS/mbedtls-framework.git
synced 2026-09-11 12:49:54 +00:00
c_wrapper_generator: Refactored blockstr_format().
* Method has been renamed to strip_identation(). * Dependency to inspect module has been removed. * Added ident_lv parameter. Signed-off-by: Minos Galanakis <[email protected]>
This commit is contained in:
@@ -11,7 +11,6 @@
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import inspect
|
|
||||||
from typing import Dict, NamedTuple, List, Optional, Tuple
|
from typing import Dict, NamedTuple, List, Optional, Tuple
|
||||||
|
|
||||||
from .c_parsing_helper import ArgumentInfo, FunctionInfo
|
from .c_parsing_helper import ArgumentInfo, FunctionInfo
|
||||||
@@ -31,9 +30,16 @@ WrapperInfo = NamedTuple('WrapperInfo', [
|
|||||||
('wrapper_name', str),
|
('wrapper_name', str),
|
||||||
])
|
])
|
||||||
|
|
||||||
def blockstr_format(in_str: str, new_lines: int = 1) -> str:
|
def strip_indentation(in_str: str, new_lines: int = 1, ident_lv: int = 4) -> str:
|
||||||
"""Return a whitespace stripped str, appended with user defined empty lines."""
|
"""Return a whitespace stripped str, appended with user defined empty lines.
|
||||||
return inspect.cleandoc(in_str) + ("\n" * (new_lines + 1))
|
|
||||||
|
The method will remove (ident_lv * 4) space-character identations from
|
||||||
|
input string. It will also remove all whitespace around the text-block.
|
||||||
|
At the end of the stream a `new_lines` ammount of empty lines will be added.
|
||||||
|
"""
|
||||||
|
|
||||||
|
return re.sub(r"(?m)^ {{{ident}}}".format(ident=ident_lv * 4), "",
|
||||||
|
in_str.strip()) + ("\n" * (new_lines + 1))
|
||||||
|
|
||||||
class Base:
|
class Base:
|
||||||
"""Generate a C source file containing wrapper functions."""
|
"""Generate a C source file containing wrapper functions."""
|
||||||
@@ -70,17 +76,17 @@ class Base:
|
|||||||
|
|
||||||
This includes a description comment and some include directives.
|
This includes a description comment and some include directives.
|
||||||
"""
|
"""
|
||||||
prologue = blockstr_format(f'''
|
prologue = strip_indentation(f'''
|
||||||
/* Automatically generated by {self.program_name}, do not edit! */
|
/* Automatically generated by {self.program_name}, do not edit! */
|
||||||
|
|
||||||
/* Copyright The Mbed TLS Contributors
|
/* Copyright The Mbed TLS Contributors
|
||||||
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
||||||
*/
|
*/
|
||||||
|
|
||||||
''')
|
''', ident_lv=3)
|
||||||
|
|
||||||
if header:
|
if header:
|
||||||
prologue += blockstr_format(f'''
|
prologue += strip_indentation(f'''
|
||||||
#ifndef {self.header_guard}
|
#ifndef {self.header_guard}
|
||||||
#define {self.header_guard}
|
#define {self.header_guard}
|
||||||
|
|
||||||
@@ -102,7 +108,7 @@ class Base:
|
|||||||
"""Write the epilogue of a C file."""
|
"""Write the epilogue of a C file."""
|
||||||
epilogue = ""
|
epilogue = ""
|
||||||
if header:
|
if header:
|
||||||
epilogue += blockstr_format(f'''
|
epilogue += strip_indentation(f'''
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}}
|
}}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user