Azure IoT common library

Dependents:   STM32F746_iothub_client_sample_mqtt f767zi_mqtt iothub_client_sample_amqp iothub_client_sample_http ... more

Revision:
24:96ae4d5375ef
Parent:
22:10640b226104
Child:
42:0cc3c211ad26
--- a/azure_c_shared_utility/macro_utils.h	Fri Mar 24 16:36:20 2017 -0700
+++ b/azure_c_shared_utility/macro_utils.h	Thu Apr 06 14:12:06 2017 -0700
@@ -12577,7 +12577,7 @@
 #define DEFINE_ENUM_STRINGS(enumName, ...) const char* C2(enumName, StringStorage)[COUNT_ARG(__VA_ARGS__)] = {FOR_EACH_1(DEFINE_ENUMERATION_CONSTANT_AS_STRING, __VA_ARGS__)}; \
 const char* C2(enumName,Strings)(enumName value)                   \
 {                                                                  \
-    if((int)value>=COUNT_ARG(__VA_ARGS__))                         \
+    if((int)value<0 || (int)value>=COUNT_ARG(__VA_ARGS__))                         \
     {                                                              \
         /*this is an error case*/                                  \
         return NULL;                                               \
@@ -12610,6 +12610,21 @@
     }                                                                           \
 }                                                                               \
 
+#define DEFINE_LOCAL_ENUM(enumName, ...) typedef enum C2(enumName, _TAG) { FOR_EACH_1(DEFINE_ENUMERATION_CONSTANT, __VA_ARGS__)} enumName; \
+static const char* C2(enumName, StringStorage)[COUNT_ARG(__VA_ARGS__)] = {FOR_EACH_1(DEFINE_ENUMERATION_CONSTANT_AS_STRING, __VA_ARGS__)}; \
+static const char* C2(enumName,Strings)(enumName value)                   \
+{                                                                  \
+    if((int)value<0 || (int)value>=COUNT_ARG(__VA_ARGS__))                         \
+    {                                                              \
+        /*this is an error case*/                                  \
+        return NULL;                                               \
+    }                                                              \
+    else                                                           \
+    {                                                              \
+        return C2(enumName, StringStorage)[value];                 \
+    }                                                              \
+}
+
 #define ENUM_TO_STRING(enumName, enumValue) C2(enumName, Strings)(enumValue)
 #define STRING_TO_ENUM(stringValue, enumName, addressOfEnumVariable) C2(enumName, _FromString)(stringValue, addressOfEnumVariable)