Porytiles
Loading...
Searching...
No Matches
porytiles::StructInitializerDeclaration Class Reference

Represents a parsed C struct variable declaration with its initializer fields. More...

#include <struct_initializer_declaration.hpp>

Public Member Functions

 StructInitializerDeclaration (std::string struct_type, std::string variable_name, std::vector< DesignatedInitializerField > fields, SourcePosition position)
 Constructs a StructInitializerDeclaration.
 
const std::string & struct_type () const
 Returns the struct type name.
 
const std::string & variable_name () const
 Returns the variable name.
 
const std::vector< DesignatedInitializerField > & fields () const
 Returns all designated initializer fields.
 
const SourcePositionposition () const
 Returns the source position of the variable name.
 
std::optional< std::string > field_value (const std::string &field_name) const
 Looks up the value of a field by name.
 

Detailed Description

Represents a parsed C struct variable declaration with its initializer fields.

StructInitializerDeclaration captures the full structure of C struct variable declarations including the designated initializer fields:

const struct Tileset gTileset_General = {
.isCompressed = TRUE,
.isSecondary = FALSE,
.tiles = gTilesetTiles_General,
.palettes = gTilesetPalettes_General,
.metatiles = gMetatiles_General,
.metatileAttributes = gMetatileAttributes_General,
.callback = InitTilesetAnim_General,
};
A complete tileset containing both Porytiles and Porymap components.
Definition tileset.hpp:14

This extends StructVariableDeclaration by also parsing and storing the initializer fields, enabling extraction of tileset metadata like isSecondary and variable references.

Invariant
struct_type_ is never empty
variable_name_ is never empty
position_ contains valid 1-based line and column numbers

Definition at line 37 of file struct_initializer_declaration.hpp.

Constructor & Destructor Documentation

◆ StructInitializerDeclaration()

porytiles::StructInitializerDeclaration::StructInitializerDeclaration ( std::string  struct_type,
std::string  variable_name,
std::vector< DesignatedInitializerField fields,
SourcePosition  position 
)
inline

Constructs a StructInitializerDeclaration.

Parameters
struct_typeThe struct type name (e.g., "Tileset")
variable_nameThe variable name (e.g., "gTileset_General")
fieldsThe designated initializer fields
positionThe source position of the variable name

Definition at line 47 of file struct_initializer_declaration.hpp.

Member Function Documentation

◆ field_value()

std::optional< std::string > porytiles::StructInitializerDeclaration::field_value ( const std::string &  field_name) const
inline

Looks up the value of a field by name.

Parameters
field_nameThe name of the field to look up
Returns
The value if the field exists, std::nullopt otherwise

Definition at line 103 of file struct_initializer_declaration.hpp.

◆ fields()

const std::vector< DesignatedInitializerField > & porytiles::StructInitializerDeclaration::fields ( ) const
inline

Returns all designated initializer fields.

Returns
A const reference to the vector of fields

Definition at line 82 of file struct_initializer_declaration.hpp.

◆ position()

const SourcePosition & porytiles::StructInitializerDeclaration::position ( ) const
inline

Returns the source position of the variable name.

Returns
A const reference to the source position

Definition at line 92 of file struct_initializer_declaration.hpp.

◆ struct_type()

const std::string & porytiles::StructInitializerDeclaration::struct_type ( ) const
inline

Returns the struct type name.

Returns
A const reference to the struct type name (e.g., "Tileset")

Definition at line 62 of file struct_initializer_declaration.hpp.

◆ variable_name()

const std::string & porytiles::StructInitializerDeclaration::variable_name ( ) const
inline

Returns the variable name.

Returns
A const reference to the variable name (e.g., "gTileset_General")

Definition at line 72 of file struct_initializer_declaration.hpp.


The documentation for this class was generated from the following file: