123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- package Automake::VarDef;
- use 5.006;
- use strict;
- use Carp;
- use Automake::ChannelDefs;
- use Automake::ItemDef;
- require Exporter;
- use vars '@ISA', '@EXPORT';
- @ISA = qw/Automake::ItemDef Exporter/;
- @EXPORT = qw (&VAR_AUTOMAKE &VAR_CONFIGURE &VAR_MAKEFILE
- &VAR_ASIS &VAR_PRETTY &VAR_SILENT &VAR_SORTED);
- use constant VAR_AUTOMAKE => 0;
- use constant VAR_CONFIGURE => 1;
- use constant VAR_MAKEFILE => 2;
- use constant VAR_ASIS => 0;
- use constant VAR_PRETTY => 1;
- use constant VAR_SILENT => 2;
-
- use constant VAR_SORTED => 3;
- sub new ($$$$$$$$)
- {
- my ($class, $var, $value, $comment, $location, $type, $owner, $pretty) = @_;
-
-
- if ($owner != VAR_AUTOMAKE && $type eq '+')
- {
- error $location, "$var must be set with '=' before using '+='";
- }
- my $self = Automake::ItemDef::new ($class, $comment, $location, $owner);
- $self->{'value'} = $value;
- $self->{'type'} = $type;
- $self->{'pretty'} = $pretty;
- $self->{'seen'} = 0;
- return $self;
- }
- sub append ($$$)
- {
- my ($self, $value, $comment) = @_;
- $self->{'comment'} .= $comment;
- my $val = $self->{'value'};
-
-
-
-
-
-
-
- $val =~ s/ ?#.*//;
-
- $val .= ' ' if $val;
- $self->{'value'} = $val . $value;
-
-
- $self->{'pretty'} = VAR_PRETTY if $self->{'pretty'} == VAR_ASIS;
- }
- sub value ($)
- {
- my ($self) = @_;
- my $val = $self->raw_value;
-
-
- $val =~ s/#.*$//s;
-
- $val =~ s/\\$/ /mg;
- return $val;
- }
- sub raw_value ($)
- {
- my ($self) = @_;
- return $self->{'value'};
- }
- sub type ($)
- {
- my ($self) = @_;
- return $self->{'type'};
- }
- sub pretty ($)
- {
- my ($self) = @_;
- return $self->{'pretty'};
- }
- sub set_owner ($$$)
- {
- my ($self, $owner, $location) = @_;
-
-
-
- $self->{'owner'} = $owner;
- $self->{'location'} = $location;
- }
- sub set_seen ($)
- {
- my ($self) = @_;
- $self->{'seen'} = 1;
- }
- sub seen ($)
- {
- my ($self) = @_;
- return $self->{'seen'};
- }
- sub dump ($)
- {
- my ($self) = @_;
- my $owner = $self->owner;
- if ($owner == VAR_AUTOMAKE)
- {
- $owner = 'Automake';
- }
- elsif ($owner == VAR_CONFIGURE)
- {
- $owner = 'Configure';
- }
- elsif ($owner == VAR_MAKEFILE)
- {
- $owner = 'Makefile';
- }
- else
- {
- prog_error ("unexpected owner");
- }
- my $where = $self->location->dump;
- my $comment = $self->comment;
- my $value = $self->raw_value;
- my $type = $self->type;
- return "{
- type: $type=
- where: $where comment: $comment
- value: $value
- owner: $owner
- }\n";
- }
- 1;
|