From 00b08bb5e1fe80d6ab5d953f29f01d2cc73c9867 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 7 Sep 2016 16:37:10 -0400
Subject: [PATCH] Use compute_map and fix_map to list compute and fix styles

---
 src/info.cpp   | 20 ++++++++++++--------
 src/modify.cpp |  6 ++----
 src/modify.h   |  9 ++++++---
 3 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/src/info.cpp b/src/info.cpp
index bb8380aa19..4166238e66 100644
--- a/src/info.cpp
+++ b/src/info.cpp
@@ -685,10 +685,11 @@ void Info::fix_styles(FILE * out)
   fprintf(out, "\nFix styles:\n");
 
   vector<string> styles;
-#define FIX_CLASS
-#define FixStyle(key,Class) styles.push_back(#key);
-#include "style_fix.h"
-#undef FIX_CLASS
+
+  for(Modify::FixCreatorMap::iterator it = modify->fix_map->begin(); it != modify->fix_map->end(); ++it) {
+    styles.push_back(it->first);
+  }
+
   print_columns(out, styles);
   fprintf(out, "\n\n\n");
 }
@@ -698,10 +699,11 @@ void Info::compute_styles(FILE * out)
   fprintf(out, "\nCompute styles:\n");
 
   vector<string> styles;
-#define COMPUTE_CLASS
-#define ComputeStyle(key,Class) styles.push_back(#key);
-#include "style_compute.h"
-#undef COMPUTE_CLASS
+
+  for(Modify::ComputeCreatorMap::iterator it = modify->compute_map->begin(); it != modify->compute_map->end(); ++it) {
+    styles.push_back(it->first);
+  }
+
   print_columns(out, styles);
   fprintf(out, "\n\n\n");
 }
@@ -737,9 +739,11 @@ void Info::command_styles(FILE * out)
   fprintf(out, "\nCommand styles (add-on input script commands):\n");
 
   vector<string> styles;
+
   for(Input::CommandCreatorMap::iterator it = input->command_map->begin(); it != input->command_map->end(); ++it) {
     styles.push_back(it->first);
   }
+
   print_columns(out, styles);
   fprintf(out, "\n\n\n");
 }
diff --git a/src/modify.cpp b/src/modify.cpp
index 219c233f2b..dea0d9dc08 100644
--- a/src/modify.cpp
+++ b/src/modify.cpp
@@ -28,8 +28,6 @@
 #include "memory.h"
 #include "error.h"
 
-#include <map>
-
 using namespace LAMMPS_NS;
 using namespace FixConst;
 
@@ -80,7 +78,7 @@ Modify::Modify(LAMMPS *lmp) : Pointers(lmp)
 
   // fill map with fixes listed in style_fix.h
 
-  fix_map = new std::map<std::string,FixCreator>();
+  fix_map = new FixCreatorMap();
 
 #define FIX_CLASS
 #define FixStyle(key,Class) \
@@ -91,7 +89,7 @@ Modify::Modify(LAMMPS *lmp) : Pointers(lmp)
 
   // fill map with computes listed in style_compute.h
 
-  compute_map = new std::map<std::string,ComputeCreator>();
+  compute_map = new ComputeCreatorMap();
 
 #define COMPUTE_CLASS
 #define ComputeStyle(key,Class) \
diff --git a/src/modify.h b/src/modify.h
index 934ceb13dc..6472c9bf6a 100644
--- a/src/modify.h
+++ b/src/modify.h
@@ -149,13 +149,16 @@ class Modify : protected Pointers {
   void list_init_dofflag(int &, int *&);
   void list_init_compute();
 
- protected:
+ public:
   typedef Compute *(*ComputeCreator)(LAMMPS *, int, char **);
-  std::map<std::string,ComputeCreator> *compute_map;
+  typedef std::map<std::string,ComputeCreator> ComputeCreatorMap;
+  ComputeCreatorMap *compute_map;
 
   typedef Fix *(*FixCreator)(LAMMPS *, int, char **);
-  std::map<std::string,FixCreator> *fix_map;
+  typedef std::map<std::string,FixCreator> FixCreatorMap;
+  FixCreatorMap *fix_map;
 
+ protected:
   template <typename T> static Compute *compute_creator(LAMMPS *, int, char **);
   template <typename T> static Fix *fix_creator(LAMMPS *, int, char **);
 };
-- 
GitLab