switchover to rspace next_step and dump step()
[scpubgit/DX.git] / lib / DX / ResolutionSpace.pm
CommitLineData
7f385fb2 1package DX::ResolutionSpace;
2
d69f4df4 3use DX::Step::Backtrack;
29daa554 4use DX::Step::ResolveProposition;
7f385fb2 5use DX::Class;
6
0c1b8f3b 7has proposition => (is => 'ro');
8
7f385fb2 9has geometry_depends_on => (is => 'ro', required => 1);
10
11has members => (is => 'ro', required => 1);
12
113f21b9 13sub next_resolution {
14 my ($self) = @_;
15 return undef unless my ($first) = @{$self->members};
16 return $first->next_resolution;
17}
18
19sub remaining_resolution_space {
20 my ($self) = @_;
21 die "Sense makes not" unless my ($first, @rest) = @{$self->members};
22 return $self->but(members => [ $first->remainder, @rest ]);
23}
24
0c1b8f3b 25sub next_step {
26 my ($self) = @_;
d69f4df4 27 return DX::Step::Backtrack->new unless @{$self->members};
29daa554 28 return DX::Step::ResolveProposition->new(resolution_space => $self);
0c1b8f3b 29}
30
7f385fb2 311;