forked from llvm/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[libc] added newhdrgen class implementation (llvm#96710)
Added a class representation of a libc header file, allowing for easier conversion from YAML to .h file output. Classes include: - Function (representing function headers) - Include (representing various include statements found on a header file) - Macro (representing macro definitions) - Enumeration (representing enum definitions) - Type (representing include statements for NamedTypes) - Object (representing ObjectSpec defintitions)
- Loading branch information
1 parent
133492f
commit 57d3d07
Showing
6 changed files
with
123 additions
and
0 deletions.
There are no files selected for viewing
21 changes: 21 additions & 0 deletions
21
libc/newhdrgen/class_implementation/classes/enumeration.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#!/usr/bin/env python | ||
# | ||
# ====-- Enumeration class for libc function headers ----------*- python -*--==# | ||
# | ||
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
# See https://llvm.org/LICENSE.txt for license information. | ||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
# | ||
# ==-------------------------------------------------------------------------==# | ||
|
||
|
||
class Enumeration: | ||
def __init__(self, name, value=None): | ||
self.name = name | ||
self.value = value | ||
|
||
def __str__(self): | ||
if self.value != None: | ||
return f"{self.name} = {self.value}" | ||
else: | ||
return f"{self.name}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
#!/usr/bin/env python | ||
# | ||
# ====-- Function class for libc function headers -------------*- python -*--==# | ||
# | ||
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
# See https://llvm.org/LICENSE.txt for license information. | ||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
# | ||
# ==-------------------------------------------------------------------------==# | ||
|
||
|
||
class Function: | ||
def __init__( | ||
self, standards, return_type, name, arguments, guard=None, attributes=[] | ||
): | ||
self.standards = standards | ||
self.return_type = return_type | ||
self.name = name | ||
self.arguments = [arg["type"] for arg in arguments] | ||
self.guard = guard | ||
self.attributes = attributes | ||
|
||
def __str__(self): | ||
args_str = ", ".join(self.arguments) | ||
attributes_str = " ".join(self.attributes) | ||
result = f"{self.return_type} {self.name}({args_str}){attributes_str};" | ||
if self.guard: | ||
result = f"#ifdef {self.guard}\n{result}\n#endif // {self.guard}" | ||
return result |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
#!/usr/bin/env python | ||
# | ||
# ====-- Include class for libc function headers --------------*- python -*--==# | ||
# | ||
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
# See https://llvm.org/LICENSE.txt for license information. | ||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
# | ||
# ==-------------------------------------------------------------------------==# | ||
|
||
|
||
class Include: | ||
def __init__(self, name): | ||
self.name = name | ||
|
||
def __str__(self): | ||
return f'#include "{self.name}"' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#!/usr/bin/env python | ||
# | ||
# ====-- Macro class for libc function headers ----------------*- python -*--==# | ||
# | ||
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
# See https://llvm.org/LICENSE.txt for license information. | ||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
# | ||
# ==-------------------------------------------------------------------------==# | ||
|
||
|
||
class Macro: | ||
def __init__(self, name, value=None): | ||
self.name = name | ||
self.value = value | ||
|
||
def __str__(self): | ||
if self.value != None: | ||
return f"#define {self.name} {self.value}" | ||
else: | ||
return f"#define {self.name}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#!/usr/bin/env python | ||
# | ||
# ====-- Object class for libc function headers ---------------*- python -*--==# | ||
# | ||
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
# See https://llvm.org/LICENSE.txt for license information. | ||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
# | ||
# ==-------------------------------------------------------------------------==# | ||
|
||
|
||
class Object: | ||
def __init__(self, name, type): | ||
self.name = name | ||
self.type = type | ||
|
||
def __str__(self): | ||
return f"extern {self.type} {self.name}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
#!/usr/bin/env python | ||
# | ||
# ====-- Type class for libc function headers -----------------*- python -*--==# | ||
# | ||
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
# See https://llvm.org/LICENSE.txt for license information. | ||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
# | ||
# ==-------------------------------------------------------------------------==# | ||
|
||
|
||
class Type: | ||
def __init__(self, type_name): | ||
self.type_name = type_name | ||
|
||
def __str__(self): | ||
return f"#include <llvm-libc-types/{self.type_name}.h>" |