rspace tracing
[scpubgit/DX.git] / lib / DX / Utils.pm
index e7e3131..b52119d 100644 (file)
@@ -10,8 +10,8 @@ my @const = (
 
 our @EXPORT_OK = (
   @const,
-  (my @builders = qw(step string number dict proposition)),
-  'deparse', 'trace',
+  (my @builders = qw(rspace rstrat res string number dict proposition)),
+  'deparse', '*trace', 'expand_deps',
 );
 
 our %EXPORT_TAGS = (
@@ -42,16 +42,33 @@ our $VALUE_EXISTS = 1;
 our @VALUE_EXISTS = (EXISTENCE_OF(), TYPE_OF(), INDICES_OF(), CONTENTS_OF());
 our @VALUE_SET = (TYPE_OF(), INDICES_OF(), CONTENTS_OF());
 
-sub trace {
-  my ($tag, $thing) = @_;
-  my $dp = deparse($thing);
-  $dp =~ s/\n//;
-  warn "${tag}: ${dp}\n";
+sub trace { }
+
+sub _expand_dep {
+  my ($type, @path) = @{$_[0]};
+  my @expanded = map {
+    ref() ? @{$_->value_path or return ()} : $_
+  } @path;
+  return [ $type, @expanded ];
+}
+
+sub expand_deps {
+  [ map _expand_dep($_), @{$_[0]} ]
+}
+
+sub rspace {
+  require DX::ResolutionSpace;
+  DX::ResolutionSpace->new(@_);
+}
+
+sub rstrat {
+  require DX::ResolutionStrategy;
+  DX::ResolutionStrategy->new(@_);
 }
 
-sub step {
-  require DX::Step::Normal;
-  DX::Step::Normal->new(@_);
+sub res {
+  require DX::Resolution;
+  DX::Resolution->new(@_);
 }
 
 sub string {
@@ -85,11 +102,11 @@ sub proposition {
 
   sub deparse {
     $dp ||= do {
-      require DX::Deparse;
-      DX::Deparse->new;
+      require DX::TraceFormatter;
+      DX::TraceFormatter->new;
     };
     my ($thing) = @_;
-    $dp->fmt($thing);
+    $dp->format($thing);
   }
 }