Files
j6-uefi-headers/templates/proto.j2
2020-05-25 02:28:52 -07:00

55 lines
1.6 KiB
Django/Jinja

#pragma once
#ifndef _uefi_protos_{{ name }}_h_
#define _uefi_protos_{{ name }}_h_
// This file was auto generated by the j6-uefi-headers project. Please see
// https://github.com/justinian/j6-uefi-headers for more information.
#include <uefi/guid.h>
#include <uefi/types.h>
{%- for header in headers %}
#include <{{ header }}>
{%- endfor %}
namespace uefi {
namespace protos {
struct {{ name }};
struct {{ name }}
{
{% if guid %}static constexpr uefi::guid guid{ {{ guid }} };{% endif %}
{% for method in methods %}
inline uefi::status {{ method.name }}(
{%- for arg in method.args -%}
{% if not loop.first %}, {% endif -%}
{{ arg.type }} {{ arg.name }}
{%- endfor %}) {
return _{{ method.name }}(
{%- if not method.get("skip_this", false) -%}this{%- endif -%}
{%- if not method.get("skip_this", false) and method.args %}, {% endif -%}
{{ method.args|join(', ', attribute='name') }});
}
{% endfor %}
{%- for datum in pre_data %}
{{ datum.type }} {{ datum.name }};
{%- endfor %}
protected:
{%- for method in methods %}
using _{{ method.name }}_def = uefi::status (*)(
{%- if not method.get("skip_this", false) -%}uefi::protos::{{ name }} *{%- endif -%}
{%- if not method.get("skip_this", false) and method.args %}, {% endif -%}
{{ method.args|join(', ', attribute='type') }});
_{{ method.name }}_def _{{ method.name }};
{% endfor %}
public:
{%- for datum in post_data %}
{{ datum.type }} {{ datum.name }};
{%- endfor %}
};
} // namespace protos
} // namespace uefi
#endif // _uefi_protos_{{ name }}_h_