clarified signature;
authorwenzelm
Wed, 03 Aug 2022 12:58:17 +0200
changeset 75746 3513fdfeb4d8
parent 75745 ebbb7d6eb296
child 75747 8dc9d979bbac
clarified signature;
src/Pure/Thy/export.scala
src/Pure/Thy/export_theory.scala
src/Pure/Thy/presentation.scala
--- a/src/Pure/Thy/export.scala	Wed Aug 03 12:25:37 2022 +0200
+++ b/src/Pure/Thy/export.scala	Wed Aug 03 12:58:17 2022 +0200
@@ -267,20 +267,20 @@
     def database(
       db: SQL.Database,
       cache: XML.Cache,
-      session_name: String,
-      theory_name: String
+      session: String,
+      theory: String = ""
     ) : Provider = {
       new Provider {
         def apply(export_name: String): Option[Entry] =
-          if (theory_name.isEmpty) None
+          if (theory.isEmpty) None
           else {
-            Entry_Name(session = session_name, theory = theory_name, name = export_name)
+            Entry_Name(session = session, theory = theory, name = export_name)
               .read(db, cache)
           }
 
         def focus(other_theory: String): Provider =
-          if (other_theory == theory_name) this
-          else Provider.database(db, cache, session_name, other_theory)
+          if (other_theory == theory) this
+          else Provider.database(db, cache, session, theory = other_theory)
 
         override def toString: String = db.toString
       }
--- a/src/Pure/Thy/export_theory.scala	Wed Aug 03 12:25:37 2022 +0200
+++ b/src/Pure/Thy/export_theory.scala	Wed Aug 03 12:58:17 2022 +0200
@@ -33,10 +33,10 @@
     val thys =
       sessions_structure.build_requirements(List(session_name)).flatMap(session =>
         using(store.open_database(session)) { db =>
+          val provider = Export.Provider.database(db, store.cache, session)
           for (theory <- Export.read_theory_names(db, session))
           yield {
             progress.echo("Reading theory " + theory)
-            val provider = Export.Provider.database(db, store.cache, session, theory)
             read_theory(provider, session, theory, cache = cache)
           }
         })
@@ -110,7 +110,7 @@
   def read_theory_parents(provider: Export.Provider, theory_name: String): Option[List[String]] = {
     if (theory_name == Thy_Header.PURE) Some(Nil)
     else {
-      provider(Export.THEORY_PREFIX + "parents")
+      provider.focus(theory_name)(Export.THEORY_PREFIX + "parents")
         .map(entry => split_lines(entry.uncompressed.text))
     }
   }
@@ -124,25 +124,26 @@
     theory_name: String,
     cache: Term.Cache = Term.Cache.none
   ): Theory = {
+    val theory_provider = provider.focus(theory_name)
     val parents =
-      read_theory_parents(provider, theory_name) getOrElse
+      read_theory_parents(theory_provider, theory_name) getOrElse
         error("Missing theory export in session " + quote(session_name) + ": " + quote(theory_name))
     val theory =
       Theory(theory_name, parents,
-        read_types(provider),
-        read_consts(provider),
-        read_axioms(provider),
-        read_thms(provider),
-        read_classes(provider),
-        read_locales(provider),
-        read_locale_dependencies(provider),
-        read_classrel(provider),
-        read_arities(provider),
-        read_constdefs(provider),
-        read_typedefs(provider),
-        read_datatypes(provider),
-        read_spec_rules(provider),
-        read_others(provider))
+        read_types(theory_provider),
+        read_consts(theory_provider),
+        read_axioms(theory_provider),
+        read_thms(theory_provider),
+        read_classes(theory_provider),
+        read_locales(theory_provider),
+        read_locale_dependencies(theory_provider),
+        read_classrel(theory_provider),
+        read_arities(theory_provider),
+        read_constdefs(theory_provider),
+        read_typedefs(theory_provider),
+        read_datatypes(theory_provider),
+        read_spec_rules(theory_provider),
+        read_others(theory_provider))
     if (cache.no_cache) theory else theory.cache(cache)
   }
 
@@ -151,7 +152,7 @@
     val theory_name = Thy_Header.PURE
 
     using(store.open_database(session_name)) { db =>
-      val provider = Export.Provider.database(db, store.cache, session_name, theory_name)
+      val provider = Export.Provider.database(db, store.cache, session_name)
       read(provider, session_name, theory_name)
     }
   }
--- a/src/Pure/Thy/presentation.scala	Wed Aug 03 12:25:37 2022 +0200
+++ b/src/Pure/Thy/presentation.scala	Wed Aug 03 12:58:17 2022 +0200
@@ -126,13 +126,12 @@
         Par_List.map[Batch, List[(String, Node_Info)]](
           { case (session, thys) =>
               db_context.database(session) { db =>
-                val provider0 = Export.Provider.database(db, db_context.cache, session, "")
+                val provider = Export.Provider.database(db, db_context.cache, session)
                 val result =
                   for (thy_name <- thys) yield {
                     val theory =
                       if (thy_name == Thy_Header.PURE) Export_Theory.no_theory
                       else {
-                        val provider = provider0.focus(thy_name)
                         if (Export_Theory.read_theory_parents(provider, thy_name).isDefined) {
                           Export_Theory.read_theory(provider, session, thy_name, cache = db_context.cache)
                         }