vk-layer-generate.py: put layer functions into a namespace

Move everything into namespace object_tracker and unique_objects
respectively.  I had to add some wrappers to make everything work.
diff --git a/layers/object_tracker.h b/layers/object_tracker.h
index 30a1f29..623600a 100644
--- a/layers/object_tracker.h
+++ b/layers/object_tracker.h
@@ -28,6 +28,8 @@
 #include "vk_layer_table.h"
 #include "vk_layer_utils.h"
 
+namespace object_tracker {
+
 // Object Tracker ERROR codes
 enum OBJECT_TRACK_ERROR {
     OBJTRACK_NONE,                     // Used for INFO & other non-error messages
@@ -107,8 +109,6 @@
 static uint64_t numTotalObjs = 0;
 std::vector<VkQueueFamilyProperties> queue_family_properties;
 
-template layer_data *get_my_data_ptr<layer_data>(void *data_key, std::unordered_map<void *, layer_data *> &data_map);
-
 //
 // Internal Object Tracker Functions
 //
@@ -1059,3 +1059,5 @@
     lock.unlock();
     return result;
 }
+
+} // namespace object_tracker
diff --git a/layers/unique_objects.h b/layers/unique_objects.h
index 6c2c2e3..0da90a1 100644
--- a/layers/unique_objects.h
+++ b/layers/unique_objects.h
@@ -39,6 +39,8 @@
 #include "vk_safe_struct.h"
 #include "vk_layer_utils.h"
 
+namespace unique_objects {
+
 // All increments must be guarded by global_lock
 static uint64_t global_unique_id = 1;
 
@@ -393,3 +395,5 @@
     }
     return result;
 }
+
+} // namespace unique_objects
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index f48a1d3..3d45a69 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -347,6 +347,31 @@
         r_body.append('}')
         return "\n".join(r_body)
 
+    def _gen_layer_logging_workaround(self):
+        body = []
+        body.append('%s' % self.lineinfo.get())
+        body.append('// vk_layer_logging.h expects these to be defined')
+        body.append('')
+        body.append('VKAPI_ATTR VkResult VKAPI_CALL')
+        body.append('vkCreateDebugReportCallbackEXT(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT *pCreateInfo,')
+        body.append('                               const VkAllocationCallbacks *pAllocator, VkDebugReportCallbackEXT *pMsgCallback) {')
+        body.append('    return %s::vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pMsgCallback);' % self.layer_name)
+        body.append('}')
+        body.append('')
+        body.append('VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(VkInstance instance,')
+        body.append('                                                                           VkDebugReportCallbackEXT msgCallback,')
+        body.append('                                                                           const VkAllocationCallbacks *pAllocator) {')
+        body.append('    %s::vkDestroyDebugReportCallbackEXT(instance, msgCallback, pAllocator);' % self.layer_name)
+        body.append('}')
+        body.append('')
+        body.append('VKAPI_ATTR void VKAPI_CALL')
+        body.append('vkDebugReportMessageEXT(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t object,')
+        body.append('                        size_t location, int32_t msgCode, const char *pLayerPrefix, const char *pMsg) {')
+        body.append('    %s::vkDebugReportMessageEXT(instance, flags, objType, object, location, msgCode, pLayerPrefix, pMsg);' % self.layer_name)
+        body.append('}')
+
+        return "\n".join(body)
+
     def _gen_layer_interface_v0_functions(self):
         body = []
         body.append('%s' % self.lineinfo.get())
@@ -395,6 +420,16 @@
         body.append('{')
         body.append('    return util_GetLayerProperties(1, &globalLayerProps, pCount, pProperties);')
         body.append('}')
+        body.append('')
+        body.append('VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkDevice dev, const char *funcName)')
+        body.append('{')
+        body.append('    return %s::vkGetDeviceProcAddr(dev, funcName);' % self.layer_name)
+        body.append('}')
+        body.append('')
+        body.append('VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, const char *funcName)')
+        body.append('{')
+        body.append('    return %s::vkGetInstanceProcAddr(instance, funcName);' % self.layer_name)
+        body.append('}')
 
         return "\n".join(body)
 
@@ -1297,7 +1332,8 @@
             print('Error: Undefined DisplayServer')
             instance_extensions=[]
 
-        body = [self.generate_maps(),
+        body = ["namespace %s {" % self.layer_name,
+                self.generate_maps(),
                 self.generate_procs(),
                 self.generate_destroy_instance(),
                 self.generate_destroy_device(),
@@ -1305,6 +1341,8 @@
                 self._generate_extensions(),
                 self._generate_layer_gpa_function(extensions,
                                                   instance_extensions),
+                "} // namespace %s" % self.layer_name,
+                self._gen_layer_logging_workaround(),
                 self._gen_layer_interface_v0_functions()]
         return "\n\n".join(body)
 
@@ -1603,9 +1641,11 @@
             print('Error: Undefined DisplayServer')
             instance_extensions=[]
 
-        body = [self._generate_dispatch_entrypoints("VK_LAYER_EXPORT"),
+        body = ["namespace %s {" % self.layer_name,
+                self._generate_dispatch_entrypoints("VK_LAYER_EXPORT"),
                 self._generate_layer_gpa_function(extensions,
                                                   instance_extensions),
+                "} // namespace %s" % self.layer_name,
                 self._gen_layer_interface_v0_functions()]
         return "\n\n".join(body)