Dave Cross: Still Munging Data With Perl: Online event - Mar 17 Learn more

use strict;
use Config;
use Carp 'confess';
use File::Basename 'dirname';
use overload bool => sub {1}, '""' => sub { shift->to_string }, fallback => 1;
# Fields
sub object_file {
my $self = shift;
if (@_) {
$self->{object_file} = $_[0];
return $self;
}
else {
return $self->{object_file};
}
}
sub source_file {
my $self = shift;
if (@_) {
$self->{source_file} = $_[0];
return $self;
}
else {
return $self->{source_file};
}
}
sub cc {
my $self = shift;
if (@_) {
$self->{cc} = $_[0];
return $self;
}
else {
return $self->{cc};
}
}
sub ccflags {
my $self = shift;
if (@_) {
$self->{ccflags} = $_[0];
return $self;
}
else {
return $self->{ccflags};
}
}
sub class_name {
my $self = shift;
if (@_) {
$self->{class_name} = $_[0];
return $self;
}
else {
return $self->{class_name};
}
}
sub is_resource {
my $self = shift;
if (@_) {
$self->{is_resource} = $_[0];
return $self;
}
else {
return $self->{is_resource};
}
}
sub is_lib_file {
my $self = shift;
if (@_) {
$self->{is_lib_file} = $_[0];
return $self;
}
else {
return $self->{is_lib_file};
}
}
sub is_native_source {
my $self = shift;
if (@_) {
$self->{is_native_source} = $_[0];
return $self;
}
else {
return $self->{is_native_source};
}
}
sub is_exe_config {
my $self = shift;
if (@_) {
$self->{is_exe_config} = $_[0];
return $self;
}
else {
return $self->{is_exe_config};
}
}
# Methods
sub to_string {
my ($self) = @_;
return $self->object_file;
}
# Methods
sub new {
my $class = shift;
my $self = {@_};
bless $self, $class;
unless (defined $self->ccflags) {
$self->ccflags([]);
}
return $self;
}
1;
=head1 NAME
SPVM::Builder::ObjectFileInfo - Object file information
=head1 DESCRIPTION
B<SPVM::Builder::ObjectFileInfo> is a object file information. This infromation is used by the linker.
=head1 FIELDS
Fields of B<SPVM::Builder::ObjectFileInfo>.
=head2 object_file
my $object_file = $object_file_info->object_file;
$object_file_info->object_file($object_file);
Get and set the object file that is compiled.
=head2 source_file
my $source_file = $object_file_info->source_file;
$object_file_info->source_file($source_file);
Get and set the source file that is the source of the compiled object file.
=head2 cc
my $cc = $object_file_info->cc;
$object_file_info->cc($cc);
Get and set the compiler name that compiled the object file.
=head2 ccflags
my $ccflags = $object_file_info->ccflags;
$object_file_info->ccflags($ccflags);
Get and set the compiler flags that compiled the object file. The default value is C<[]>.
=head2 class_name
my $class_name = $object_file_info->class_name;
$object_file_info->class_name($class_name);
Get and set the class name belonged to when the object file was compiled.
=head2 is_resource
my $is_resource = $object_file_info->is_resource;
$object_file_info->is_resource($is_resource);
Get and set if the object file(this is static library(.a)) is a resource.
=head2 is_lib_file
my $is_lib_file = $object_file_info->is_lib_file;
$object_file_info->is_lib_file($is_lib_file);
Get and set if the object file is a library file.
=head2 is_native_source
my $is_native_source = $object_file_info->is_native_source;
$object_file_info->is_native_source($is_native_source);
Get and set if the object file is compiled from a native source file.
=head2 is_exe_config
my $is_exe_config = $object_file_info->is_exe_config;
$object_file_info->is_exe_config($is_exe_config);
Get and set if the object file is compiled using L<SPVM::Builder::Config::Exe>.
=head1 METHODS
Methods of B<SPVM::Builder::ObjectFileInfo>.
=head2 new
my $object_file_info = SPVM::Builder::ObjectFileInfo->new;
=head2 to_string
my $object_file = $object_file_info->to_string;
Get the object file name. This is same as C<object_file> field.
=head1 OPERATORS
L<SPVM::BlessedObject::String> overloads the following operators.
=head2 bool
my $bool = !!$object_file_info;
Always true.
=head2 stringify
my $object_file_name = "$object_file_info";
Alias for L</"to_string">.