Index: trunk/psModules/src/concepts/pmConcepts.c
===================================================================
--- trunk/psModules/src/concepts/pmConcepts.c	(revision 9570)
+++ trunk/psModules/src/concepts/pmConcepts.c	(revision 9572)
@@ -25,8 +25,6 @@
 }
 
-pmConceptSpec *pmConceptSpecAlloc(psMetadataItem *blank, // Blank value; contains the name
-                                  pmConceptParseFunc parse, // Function to call to parse the concept
-                                  pmConceptFormatFunc format // Function to call to format the concept
-                                 )
+pmConceptSpec *pmConceptSpecAlloc(psMetadataItem *blank, pmConceptParseFunc parse,
+                                  pmConceptFormatFunc format)
 {
     pmConceptSpec *spec = psAlloc(sizeof(pmConceptSpec));
@@ -41,9 +39,6 @@
 
 
-bool pmConceptRegister(psMetadataItem *blank, // Blank value; contains the name
-                       pmConceptParseFunc parse, // Function to call to parse the concept
-                       pmConceptFormatFunc format, // Function to call to format the concept
-                       pmFPALevel level // Level at which to store concept in the FPA hierarchy
-                      )
+bool pmConceptRegister(psMetadataItem *blank, pmConceptParseFunc parse,
+                       pmConceptFormatFunc format, pmFPALevel level)
 {
     PS_ASSERT_PTR_NON_NULL(blank, false);
@@ -185,10 +180,10 @@
 // Write all registered concepts for the specified level
 static bool conceptsWrite(psMetadata **specs, // One of the concepts specifications
-                          pmFPA *fpa,   // The FPA
-                          pmChip *chip, // The chip
-                          pmCell *cell, // The cell
+                          const pmFPA *fpa,   // The FPA
+                          const pmChip *chip, // The chip
+                          const pmCell *cell, // The cell
                           pmConceptSource source, // The source of the concepts to write
                           psDB *db,      // Database handle
-                          psMetadata *concepts // The concepts to write out
+                          const psMetadata *concepts // The concepts to write out
                          )
 {
@@ -218,20 +213,6 @@
 }
 
-// Set the concepts for a given FPA to blanks
-bool pmConceptsBlankFPA(pmFPA *fpa    // FPA for which to set blank concepts
-                       )
-{
-    PS_ASSERT_PTR_NON_NULL(fpa, false);
-    psTrace("psModules.concepts", 5, "Blanking FPA concepts: %p %p\n", conceptsFPA, fpa->concepts);
-    return conceptsBlank(&conceptsFPA, fpa->concepts);
-}
-
-// Read the concepts for the given set of fpa, chip, cell
-bool pmConceptsRead(pmFPA *fpa,         // FPA for which to read concepts
-                    pmChip *chip,       // Chip for which to read concepts, or NULL
-                    pmCell *cell,       // Cell for which to read concepts, or NULL
-                    pmConceptSource source, // The source of the concepts to read
-                    psDB *db            // Database handle
-                   )
+
+bool pmConceptsRead(pmFPA *fpa, pmChip *chip, pmCell *cell, pmConceptSource source, psDB *db)
 {
     PS_ASSERT_PTR_NON_NULL(fpa, false);
@@ -248,10 +229,13 @@
 
 
-// Read the concepts for a given FPA
-bool pmConceptsReadFPA(pmFPA *fpa,      // FPA for which to read concepts
-                       pmConceptSource source, // The source of the concepts to read
-                       bool propagateDown, // Propagate to lower levels?
-                       psDB *db        // Database handle
-                      )
+bool pmConceptsBlankFPA(pmFPA *fpa)
+{
+    PS_ASSERT_PTR_NON_NULL(fpa, false);
+    psTrace("psModules.concepts", 5, "Blanking FPA concepts: %p %p\n", conceptsFPA, fpa->concepts);
+    return conceptsBlank(&conceptsFPA, fpa->concepts);
+}
+
+
+bool pmConceptsReadFPA(pmFPA *fpa, pmConceptSource source, bool propagateDown, psDB *db)
 {
     PS_ASSERT_PTR_NON_NULL(fpa, false);
@@ -271,10 +255,5 @@
 }
 
-// Read the concepts for a given FPA
-bool pmConceptsWriteFPA(pmFPA *fpa,     // FPA for which to write concepts
-                        pmConceptSource source, // The source of the concepts to read
-                        bool propagateDown, // Propagate to lower levels?
-                        psDB *db        // Database handle
-                       )
+bool pmConceptsWriteFPA(const pmFPA *fpa, pmConceptSource source, bool propagateDown, psDB *db)
 {
     PS_ASSERT_PTR_NON_NULL(fpa, false);
@@ -293,7 +272,5 @@
 }
 
-// Set the concepts for a given chip to blanks
-bool pmConceptsBlankChip(pmChip *chip // FPA for which to set blank concepts
-                        )
+bool pmConceptsBlankChip(pmChip *chip)
 {
     PS_ASSERT_PTR_NON_NULL(chip, false);
@@ -302,11 +279,6 @@
 }
 
-// Read the concepts for a given FPA
-bool pmConceptsReadChip(pmChip *chip,   // Chip for which to read concepts
-                        pmConceptSource source, // The source of the concepts to read
-                        bool propagateUp, // Propagate to higher levels?
-                        bool propagateDown, // Propagate to lower levels?
-                        psDB *db        // Database handle
-                       )
+bool pmConceptsReadChip(pmChip *chip, pmConceptSource source, bool propagateUp,
+                        bool propagateDown, psDB *db)
 {
     PS_ASSERT_PTR_NON_NULL(chip, false);
@@ -330,11 +302,6 @@
 }
 
-// Read the concepts for a given FPA
-bool pmConceptsWriteChip(pmChip *chip,  // Chip for which to write concepts
-                         pmConceptSource source, // The source of the concepts to read
-                         bool propagateUp, // Propagate to higher levels?
-                         bool propagateDown, // Propagate to lower levels?
-                         psDB *db        // Database handle
-                        )
+bool pmConceptsWriteChip(const pmChip *chip, pmConceptSource source, bool propagateUp,
+                         bool propagateDown, psDB *db)
 {
     PS_ASSERT_PTR_NON_NULL(chip, false);
@@ -357,7 +324,5 @@
 }
 
-// Set the concepts for a given chip to blanks
-bool pmConceptsBlankCell(pmCell *cell // Cell for which to set blank concepts
-                        )
+bool pmConceptsBlankCell(pmCell *cell)
 {
     PS_ASSERT_PTR_NON_NULL(cell, false);
@@ -366,10 +331,5 @@
 }
 
-// Read the concepts for a given FPA
-bool pmConceptsReadCell(pmCell *cell,   // Cell for which to read concepts
-                        pmConceptSource source, // The source of the concepts to read
-                        bool propagateUp, // Propagate to higher levels?
-                        psDB *db        // Database handle
-                       )
+bool pmConceptsReadCell(pmCell *cell, pmConceptSource source, bool propagateUp, psDB *db)
 {
     PS_ASSERT_PTR_NON_NULL(cell, false);
@@ -394,10 +354,5 @@
 }
 
-// Read the concepts for a given FPA
-bool pmConceptsWriteCell(pmCell *cell,  // FPA for which to write concepts
-                         pmConceptSource source, // The source of the concepts to read
-                         bool propagateUp, // Propagate to higher levels?
-                         psDB *db       // Database handle
-                        )
+bool pmConceptsWriteCell(const pmCell *cell, pmConceptSource source, bool propagateUp, psDB *db)
 {
     PS_ASSERT_PTR_NON_NULL(cell, false);
@@ -423,4 +378,6 @@
 {
     conceptsInitialised = true;
+
+    p_psMemAllocatePersistent(true);
 
     bool init = false;                  // Did we initialise anything?
@@ -761,4 +718,6 @@
     }
 
+    p_psMemAllocatePersistent(false);
+
     return init;
 }
@@ -777,8 +736,5 @@
 
 
-// Copy concepts from one FPA to another
-bool pmFPACopyConcepts(pmFPA *target,   // The target FPA
-                       pmFPA *source    // The target FPA
-                      )
+bool pmFPACopyConcepts(pmFPA *target, const pmFPA *source)
 {
     PS_ASSERT_PTR_NON_NULL(target, false);
