diff --git a/Makefile b/Makefile index 6265f6f5..b5e6adfa 100644 --- a/Makefile +++ b/Makefile @@ -32,6 +32,9 @@ clean: $(MAKE) -C $(top_srcdir)/cpp/examples/MinOZW/ -$(MAKEFLAGS) $(MAKECMDGOALS) $(MAKE) -C $(top_srcdir)/cpp/test/ -$(MAKEFLAGS) $(MAKECMDGOALS) +updateIndexDefines: + $(MAKE) -C $(top_srcdir)/cpp/build -$(MAKEFLAGS) $(MAKECMDGOALS) + test: $(MAKE) -C $(top_srcdir)/cpp/test/ -$(MAKEFLAGS) $(MAKECMDGOALS) diff --git a/config/NotificationCCTypes.xml b/config/NotificationCCTypes.xml index 4cf6b6bc..af72ed0e 100644 --- a/config/NotificationCCTypes.xml +++ b/config/NotificationCCTypes.xml @@ -1,6 +1,7 @@ - + + diff --git a/cpp/build/Makefile b/cpp/build/Makefile index 8e6cd52a..3d7b0c1c 100644 --- a/cpp/build/Makefile +++ b/cpp/build/Makefile @@ -178,6 +178,10 @@ $(top_srcdir)/cpp/src/vers.cpp: -e 's|[@]VERSION@|$(VERSION).$(VERSION_REV)|g' \ < "$(top_srcdir)/dist/openzwave.spec.in" > "$(top_srcdir)/dist/openzwave.spec" +#create a vers.cpp file that contains our version and subversion revisions +updateIndexDefines: $(top_srcdir)/cpp/src/ValueIDIndexesDefines.def + @$(CXX) -E -P -o $(top_srcdir)/cpp/src/ValueIDIndexesDefines.h -x c++ $< + #$(OBJDIR)/vers.o: $(top_builddir)/vers.cpp @@ -202,7 +206,7 @@ $(LIBDIR)/$(SHARED_LIB_NAME): $(patsubst %.cpp,$(OBJDIR)/%.o,$(tinyxml)) \ $(patsubst %.cpp,$(OBJDIR)/%.o,$(indep)) \ $(OBJDIR)/vers.o @echo "Linking Shared Library" - @$(LD) $(LDFLAGS) $(TARCH) -o $@ $+ $(LIBS) + $(LD) $(LDFLAGS) $(TARCH) -o $@ $+ $(LIBS) @ln -sf $(SHARED_LIB_NAME) $(LIBDIR)/$(SHARED_LIB_UNVERSIONED) $(top_builddir)/libopenzwave.pc: $(top_srcdir)/cpp/build/libopenzwave.pc.in $(PKGCONFIG) diff --git a/cpp/build/support.mk b/cpp/build/support.mk index 3ffd17e4..5d69d8f8 100644 --- a/cpp/build/support.mk +++ b/cpp/build/support.mk @@ -74,9 +74,9 @@ CC := $(CROSS_COMPILE)cc CXX := $(CROSS_COMPILE)c++ LD := $(CROSS_COMPILE)c++ else -CC := $(CROSS_COMPILE)gcc -CXX := $(CROSS_COMPILE)g++ -LD := $(CROSS_COMPILE)g++ +CC ?= $(CROSS_COMPILE)gcc +CXX ?= $(CROSS_COMPILE)g++ +LD ?= $(CROSS_COMPILE)g++ endif ifeq ($(UNAME),Darwin) AR := libtool -static -o diff --git a/cpp/src/ValueIDIndexes.h b/cpp/src/ValueIDIndexes.h deleted file mode 100644 index 4e15c8de..00000000 --- a/cpp/src/ValueIDIndexes.h +++ /dev/null @@ -1,491 +0,0 @@ -//----------------------------------------------------------------------------- -// -// ValueIDIndexes.h -// -// List of all Possible ValueID Indexes in OZW -// -// Copyright (c) 2010 Mal Lansell -// -// SOFTWARE NOTICE AND LICENSE -// -// This file is part of OpenZWave. -// -// OpenZWave is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published -// by the Free Software Foundation, either version 3 of the License, -// or (at your option) any later version. -// -// OpenZWave is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with OpenZWave. If not, see . -// -//----------------------------------------------------------------------------- - -#ifndef _ValueIDIndexes_H -#define _ValueIDIndexes_H - -#include "Defs.h" -#include - -using namespace std; - -namespace OpenZWave -{ - - -/* this is good for upto 100 entries per ENUM. I shall predict that 100 entries shall be enough for any CommandClass :) */ - -#define MAP(macro, ...) \ - IDENTITY( \ - APPLY(CHOOSE_MAP_START, COUNT(__VA_ARGS__)) \ - (macro, __VA_ARGS__)) - -#define CHOOSE_MAP_START(count) MAP ## count - -#define APPLY(macro, ...) IDENTITY(macro(__VA_ARGS__)) - -// Needed to expand __VA_ARGS__ "eagerly" on the MSVC preprocessor. -#define IDENTITY(x) x - -#define MAP1(m, x) m(x) -#define MAP2(m, x, ...) m(x) IDENTITY(MAP1(m, __VA_ARGS__)) -#define MAP3(m, x, ...) m(x) IDENTITY(MAP2(m, __VA_ARGS__)) -#define MAP4(m, x, ...) m(x) IDENTITY(MAP3(m, __VA_ARGS__)) -#define MAP5(m, x, ...) m(x) IDENTITY(MAP4(m, __VA_ARGS__)) -#define MAP6(m, x, ...) m(x) IDENTITY(MAP5(m, __VA_ARGS__)) -#define MAP7(m, x, ...) m(x) IDENTITY(MAP6(m, __VA_ARGS__)) -#define MAP8(m, x, ...) m(x) IDENTITY(MAP7(m, __VA_ARGS__)) -#define MAP9(m, x, ...) m(x) IDENTITY(MAP8(m, __VA_ARGS__)) -#define MAP10(m, x, ...) m(x) IDENTITY(MAP9(m, __VA_ARGS__)) -#define MAP11(m, x, ...) m(x) IDENTITY(MAP10(m, __VA_ARGS__)) -#define MAP12(m, x, ...) m(x) IDENTITY(MAP11(m, __VA_ARGS__)) -#define MAP13(m, x, ...) m(x) IDENTITY(MAP12(m, __VA_ARGS__)) -#define MAP14(m, x, ...) m(x) IDENTITY(MAP13(m, __VA_ARGS__)) -#define MAP15(m, x, ...) m(x) IDENTITY(MAP14(m, __VA_ARGS__)) -#define MAP16(m, x, ...) m(x) IDENTITY(MAP15(m, __VA_ARGS__)) -#define MAP17(m, x, ...) m(x) IDENTITY(MAP16(m, __VA_ARGS__)) -#define MAP18(m, x, ...) m(x) IDENTITY(MAP17(m, __VA_ARGS__)) -#define MAP19(m, x, ...) m(x) IDENTITY(MAP18(m, __VA_ARGS__)) -#define MAP20(m, x, ...) m(x) IDENTITY(MAP19(m, __VA_ARGS__)) -#define MAP21(m, x, ...) m(x) IDENTITY(MAP20(m, __VA_ARGS__)) -#define MAP22(m, x, ...) m(x) IDENTITY(MAP21(m, __VA_ARGS__)) -#define MAP23(m, x, ...) m(x) IDENTITY(MAP22(m, __VA_ARGS__)) -#define MAP24(m, x, ...) m(x) IDENTITY(MAP23(m, __VA_ARGS__)) -#define MAP25(m, x, ...) m(x) IDENTITY(MAP24(m, __VA_ARGS__)) -#define MAP26(m, x, ...) m(x) IDENTITY(MAP25(m, __VA_ARGS__)) -#define MAP27(m, x, ...) m(x) IDENTITY(MAP26(m, __VA_ARGS__)) -#define MAP28(m, x, ...) m(x) IDENTITY(MAP27(m, __VA_ARGS__)) -#define MAP29(m, x, ...) m(x) IDENTITY(MAP28(m, __VA_ARGS__)) -#define MAP30(m, x, ...) m(x) IDENTITY(MAP29(m, __VA_ARGS__)) -#define MAP31(m, x, ...) m(x) IDENTITY(MAP30(m, __VA_ARGS__)) -#define MAP32(m, x, ...) m(x) IDENTITY(MAP31(m, __VA_ARGS__)) -#define MAP33(m, x, ...) m(x) IDENTITY(MAP32(m, __VA_ARGS__)) -#define MAP34(m, x, ...) m(x) IDENTITY(MAP33(m, __VA_ARGS__)) -#define MAP35(m, x, ...) m(x) IDENTITY(MAP34(m, __VA_ARGS__)) -#define MAP36(m, x, ...) m(x) IDENTITY(MAP35(m, __VA_ARGS__)) -#define MAP37(m, x, ...) m(x) IDENTITY(MAP36(m, __VA_ARGS__)) -#define MAP38(m, x, ...) m(x) IDENTITY(MAP37(m, __VA_ARGS__)) -#define MAP39(m, x, ...) m(x) IDENTITY(MAP38(m, __VA_ARGS__)) -#define MAP40(m, x, ...) m(x) IDENTITY(MAP39(m, __VA_ARGS__)) -#define MAP41(m, x, ...) m(x) IDENTITY(MAP40(m, __VA_ARGS__)) -#define MAP42(m, x, ...) m(x) IDENTITY(MAP41(m, __VA_ARGS__)) -#define MAP43(m, x, ...) m(x) IDENTITY(MAP42(m, __VA_ARGS__)) -#define MAP44(m, x, ...) m(x) IDENTITY(MAP43(m, __VA_ARGS__)) -#define MAP45(m, x, ...) m(x) IDENTITY(MAP44(m, __VA_ARGS__)) -#define MAP46(m, x, ...) m(x) IDENTITY(MAP45(m, __VA_ARGS__)) -#define MAP47(m, x, ...) m(x) IDENTITY(MAP46(m, __VA_ARGS__)) -#define MAP48(m, x, ...) m(x) IDENTITY(MAP47(m, __VA_ARGS__)) -#define MAP49(m, x, ...) m(x) IDENTITY(MAP48(m, __VA_ARGS__)) -#define MAP50(m, x, ...) m(x) IDENTITY(MAP49(m, __VA_ARGS__)) -#define MAP51(m, x, ...) m(x) IDENTITY(MAP50(m, __VA_ARGS__)) -#define MAP52(m, x, ...) m(x) IDENTITY(MAP51(m, __VA_ARGS__)) -#define MAP53(m, x, ...) m(x) IDENTITY(MAP52(m, __VA_ARGS__)) -#define MAP54(m, x, ...) m(x) IDENTITY(MAP53(m, __VA_ARGS__)) -#define MAP55(m, x, ...) m(x) IDENTITY(MAP54(m, __VA_ARGS__)) -#define MAP56(m, x, ...) m(x) IDENTITY(MAP55(m, __VA_ARGS__)) -#define MAP57(m, x, ...) m(x) IDENTITY(MAP56(m, __VA_ARGS__)) -#define MAP58(m, x, ...) m(x) IDENTITY(MAP57(m, __VA_ARGS__)) -#define MAP59(m, x, ...) m(x) IDENTITY(MAP58(m, __VA_ARGS__)) -#define MAP60(m, x, ...) m(x) IDENTITY(MAP59(m, __VA_ARGS__)) -#define MAP61(m, x, ...) m(x) IDENTITY(MAP60(m, __VA_ARGS__)) -#define MAP62(m, x, ...) m(x) IDENTITY(MAP61(m, __VA_ARGS__)) -#define MAP63(m, x, ...) m(x) IDENTITY(MAP62(m, __VA_ARGS__)) -#define MAP64(m, x, ...) m(x) IDENTITY(MAP63(m, __VA_ARGS__)) -#define MAP65(m, x, ...) m(x) IDENTITY(MAP64(m, __VA_ARGS__)) -#define MAP66(m, x, ...) m(x) IDENTITY(MAP65(m, __VA_ARGS__)) -#define MAP67(m, x, ...) m(x) IDENTITY(MAP66(m, __VA_ARGS__)) -#define MAP68(m, x, ...) m(x) IDENTITY(MAP67(m, __VA_ARGS__)) -#define MAP69(m, x, ...) m(x) IDENTITY(MAP68(m, __VA_ARGS__)) -#define MAP70(m, x, ...) m(x) IDENTITY(MAP69(m, __VA_ARGS__)) -#define MAP71(m, x, ...) m(x) IDENTITY(MAP70(m, __VA_ARGS__)) -#define MAP72(m, x, ...) m(x) IDENTITY(MAP71(m, __VA_ARGS__)) -#define MAP73(m, x, ...) m(x) IDENTITY(MAP72(m, __VA_ARGS__)) -#define MAP74(m, x, ...) m(x) IDENTITY(MAP73(m, __VA_ARGS__)) -#define MAP75(m, x, ...) m(x) IDENTITY(MAP74(m, __VA_ARGS__)) -#define MAP76(m, x, ...) m(x) IDENTITY(MAP75(m, __VA_ARGS__)) -#define MAP77(m, x, ...) m(x) IDENTITY(MAP76(m, __VA_ARGS__)) -#define MAP78(m, x, ...) m(x) IDENTITY(MAP77(m, __VA_ARGS__)) -#define MAP79(m, x, ...) m(x) IDENTITY(MAP78(m, __VA_ARGS__)) -#define MAP80(m, x, ...) m(x) IDENTITY(MAP79(m, __VA_ARGS__)) -#define MAP81(m, x, ...) m(x) IDENTITY(MAP80(m, __VA_ARGS__)) -#define MAP82(m, x, ...) m(x) IDENTITY(MAP81(m, __VA_ARGS__)) -#define MAP83(m, x, ...) m(x) IDENTITY(MAP82(m, __VA_ARGS__)) -#define MAP84(m, x, ...) m(x) IDENTITY(MAP83(m, __VA_ARGS__)) -#define MAP85(m, x, ...) m(x) IDENTITY(MAP84(m, __VA_ARGS__)) -#define MAP86(m, x, ...) m(x) IDENTITY(MAP85(m, __VA_ARGS__)) -#define MAP87(m, x, ...) m(x) IDENTITY(MAP86(m, __VA_ARGS__)) -#define MAP88(m, x, ...) m(x) IDENTITY(MAP87(m, __VA_ARGS__)) -#define MAP89(m, x, ...) m(x) IDENTITY(MAP88(m, __VA_ARGS__)) -#define MAP90(m, x, ...) m(x) IDENTITY(MAP89(m, __VA_ARGS__)) -#define MAP91(m, x, ...) m(x) IDENTITY(MAP90(m, __VA_ARGS__)) -#define MAP92(m, x, ...) m(x) IDENTITY(MAP91(m, __VA_ARGS__)) -#define MAP93(m, x, ...) m(x) IDENTITY(MAP92(m, __VA_ARGS__)) -#define MAP94(m, x, ...) m(x) IDENTITY(MAP93(m, __VA_ARGS__)) -#define MAP95(m, x, ...) m(x) IDENTITY(MAP94(m, __VA_ARGS__)) -#define MAP96(m, x, ...) m(x) IDENTITY(MAP95(m, __VA_ARGS__)) -#define MAP97(m, x, ...) m(x) IDENTITY(MAP96(m, __VA_ARGS__)) -#define MAP98(m, x, ...) m(x) IDENTITY(MAP97(m, __VA_ARGS__)) -#define MAP99(m, x, ...) m(x) IDENTITY(MAP98(m, __VA_ARGS__)) -#define MAP100(m, x, ...) m(x) IDENTITY(MAP99(m, __VA_ARGS__)) - - -#define EVALUATE_COUNT(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \ - _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \ - _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \ - _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \ - _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \ - _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \ - _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, \ - _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, \ - _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, \ - _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, \ - count, ...) count - -#define COUNT(...) \ - IDENTITY(EVALUATE_COUNT(__VA_ARGS__, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, \ - 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, \ - 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, \ - 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, \ - 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, \ - 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, \ - 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, \ - 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, \ - 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, \ - 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)) - - - -struct ignore_assign { - ignore_assign(int value) : _value(value) { } - operator int() const { return _value; } - - const ignore_assign& operator =(int dummy) { return *this; } - - int _value; -}; - -#define IGNORE_ASSIGN_SINGLE(expression) (ignore_assign)expression, -#define IGNORE_ASSIGN(...) IDENTITY(MAP(IGNORE_ASSIGN_SINGLE, __VA_ARGS__)) - -#define STRINGIZE_SINGLE(expression) #expression, -#define STRINGIZE(...) IDENTITY(MAP(STRINGIZE_SINGLE, __VA_ARGS__)) - - - -#define ENUM(EnumName, ...) \ -struct EnumName { \ - enum _enumerated { __VA_ARGS__ }; \ - \ - _enumerated _value; \ - \ - EnumName(_enumerated value) : _value(value) { } \ - operator _enumerated() const { return _value; } \ - \ - const char* _to_string() const \ - { \ - for (size_t index = 0; index < _count; ++index) { \ - if (_values()[index] == _value) \ - return _names()[index]; \ - } \ - \ - return NULL; \ - } \ - \ - static const size_t _count = IDENTITY(COUNT(__VA_ARGS__)); \ - \ - static const int* _values() \ - { \ - static const int values[] = \ - { IDENTITY(IGNORE_ASSIGN(__VA_ARGS__)) }; \ - return values; \ - } \ - \ - static const char* const* _names() \ - { \ - static const char* const raw_names[] = \ - { IDENTITY(STRINGIZE(__VA_ARGS__)) }; \ - \ - static char* processed_names[_count]; \ - static bool initialized = false; \ - \ - if (!initialized) { \ - for (size_t index = 0; index < _count; ++index) { \ - size_t length = \ - std::strcspn(raw_names[index], " =\t\n\r"); \ - \ - processed_names[index] = new char[length + 1]; \ - \ - strncpy( \ - processed_names[index], raw_names[index], length); \ - processed_names[index][length] = '\0'; \ - } \ - } \ - \ - return processed_names; \ - } \ -}; - -ENUM(ValueID_Index_Alarm, - Type_Start = 0, - Type_End = 255, - Type_ParamStart = 256, - Type_ParamEnd = 511, - Type_v1 = 512, - Level_v1 = 513, - AutoClearEvents = 514 - ); -ENUM(ValueID_Index_AssociationCommandConfiguration, - MaxCommandLength = 0, - CommandsAreValues = 1, - CommandsAreConfigurable = 2, - NumFreeCommands = 3, - MaxCommands = 4 - ); -ENUM(ValueID_Index_BarrierOperator, - Command = 0, - Label = 1, - SupportedSignals = 2, - Audible = 3, - Visual = 4 - ); -ENUM(ValueID_Index_Basic, - Set = 0 - ); -ENUM(ValueID_Index_BasicWindowCovering, - Open = 0, - Close = 1 - ); -ENUM(ValueID_Index_Battery, - Level = 0 - ); -ENUM(ValueID_Index_CentralScene, - Start = 1, - End = 255, - SceneCount = 256, - ClearSceneTimeout = 257 - ); -ENUM(ValueID_Index_ClimateControlSchedule, - DOW_Monday = 1, - DOW_Tuesday = 2, - DOW_Wednesday = 3, - DOW_Thursday = 4, - DOW_Friday = 5, - DOW_Saturday = 6, - DOW_Sunday = 7, - OverrideState = 8, - OverrideSetback = 9 - ); -ENUM(ValueID_Index_Clock, - Day = 0, - Hour = 1, - Minute = 2 - ); -ENUM(ValueID_Index_Color, - Color = 0, - Index = 1, - Channels_Capabilities = 2, - Duration = 4 - ); -ENUM(ValueID_Index_Configuration, - Param_Start = 0, - Param_End = 255 - ); -ENUM(ValueID_Index_ControllerReplication, - NodeId = 0, - Function = 1, - Replicate = 2 - ); -ENUM(ValueID_Index_DoorLock, - Lock = 0, - Lock_Mode = 1, - System_Config_Mode = 2, - System_Config_Minutes = 3, - System_Config_Seconds = 4, - System_Config_OutsideHandles = 5, - System_Config_InsideHandles = 6 - ); -ENUM(ValueID_Index_DoorLockLogging, - System_Config_MaxRecords = 0, - GetRecordNo = 1, - LogRecord = 2 - ); -ENUM(ValueID_Index_EnergyProduction, - Instant = 0, - Total = 1, - Today = 2, - Time = 3 - ); -ENUM(ValueID_Index_Indicator, - Indicator = 0 - ); -ENUM(ValueID_Index_Language, - Language = 0, - Country = 1 - ); -ENUM(ValueID_Index_Lock, - Locked = 0 - ); -ENUM(ValueID_Index_ManufacturerProprietary, - FibaroVenetianBlinds_Blinds = 0, - FibaroVenetianBlinds_Tilt = 1 - ); -ENUM(ValueID_Index_ManufacturerSpecific, - LoadedConfig = 0, - LocalConfig = 1, - LatestConfig = 2, - DeviceID = 3, - SerialNumber = 4 - ); -ENUM(ValueID_Index_Meter, - Start = 0, - End = 31, - Exporting = 32, - Reset = 33 - ); -ENUM(ValueID_Index_MeterPulse, - Count = 0 - ); -ENUM(ValueID_Index_PowerLevel, - Powerlevel = 0, - Timeout = 1, - Set = 2, - TestNode = 3, - TestPowerlevel = 4, - TestFrames = 5, - Test = 6, - Report = 7, - TestStatus = 8, - TestAckFrames = 9 - ); -ENUM(ValueID_Index_Protection, - Protection = 0 - ); -ENUM(ValueID_Index_SceneActivation, - SceneID = 0, - Duration = 1 - ); -ENUM(ValueID_Index_Security, - Secured = 0 - ); -ENUM(ValueID_Index_SensorAlarm, - Start = 0, - End = 255 - ); -ENUM(ValueID_Index_SensorBinary, - Sensor = 0, - Start = 1, - End = 255 - ); -ENUM(ValueID_Index_SensorMultiLevel, - Start = 0, - End = 255 - ); -ENUM(ValueID_Index_SimpleAV, - Command = 0 - ); -ENUM(ValueID_Index_SoundSwitch, - Tone_Count = 0, - Tones = 1, - Volume = 2, - Default_Tone = 3 - ); -ENUM(ValueID_Index_SwitchAll, - SwitchAll = 0 - ); -ENUM(ValueID_Index_SwitchBinary, - Level = 0, - TargetState = 1, - Duration = 2 - ); -ENUM(ValueID_Index_SwitchMultiLevel, - Level = 0, - Bright = 1, - Dim = 2, - IgnoreStartLevel = 3, - StartLevel = 4, - Duration = 5, - Step = 6, - Inc = 7, - Dec = 8, - TargetValue = 9 - ); -ENUM(ValueID_Index_SwitchToggleBinary, - ToggleSwitch = 0 - ); -ENUM(ValueID_Index_SwitchToggleMultilevel, - Level = 0 - ); -ENUM(ValueID_Index_ThermostatFanMode, - FanMode = 0 - ); -ENUM(ValueID_Index_ThermostatFanState, - FanState = 0 - ); -ENUM(ValueID_Index_ThermostatMode, - Mode = 0 - ); -ENUM(ValueID_Index_ThermostatOperatingState, - OperatingState = 0 - ); -ENUM(ValueID_Index_ThermostatSetpoint, - Start = 0, - End = 255 - ); -ENUM(ValueID_Index_TimeParameters, - Date = 0, - Time = 1, - Set = 2, - Refresh = 3 - ); -ENUM(ValueID_Index_UserCode, - Start = 1, - End = 254, - Refresh = 255, - RemoveCode = 256, - Count = 257, - RawValue = 258, - RawValueIndex = 259 - ); -ENUM(ValueID_Index_Version, - Library = 0, - Protocol = 1, - Application = 2 - ); -ENUM(ValueID_Index_WakeUp, - Interval = 0, - Min_Interval = 1, - Max_Interval = 2, - Default_Interval = 3, - Interval_Step = 4 - ); -ENUM(ValueID_Index_ZWavePlusInfo, - Version = 0, - InstallerIcon = 1, - UserIcon = 2 - ); -} -#endif diff --git a/cpp/src/ValueIDIndexesDefines.def b/cpp/src/ValueIDIndexesDefines.def new file mode 100644 index 00000000..77d774f1 --- /dev/null +++ b/cpp/src/ValueIDIndexesDefines.def @@ -0,0 +1,3216 @@ +//----------------------------------------------------------------------------- +// +// ValueIDIndexes.h +// +// List of all Possible ValueID Indexes in OZW +// +// Copyright (c) 2010 Mal Lansell +// +// SOFTWARE NOTICE AND LICENSE +// +// This file is part of OpenZWave. +// +// OpenZWave is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published +// by the Free Software Foundation, either version 3 of the License, +// or (at your option) any later version. +// +// OpenZWave is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with OpenZWave. If not, see . +// +//----------------------------------------------------------------------------- + + + +/* This file is run through the preprocessor and output to ValueIDIndexesDefines.h to avoid problems + * with MSVC not supporting enough arguments with Macro's. + * If you are adding a ValueID, you should add its index ENUM to ValuIDIndexDefines.def and the run + * 'make updateIndexDefines' to regenerate the the ValueIDIndexDefines.h file + * Obviously the regeneration will not work on MSVC, so you need clang or gnugcc to do the preprocessing + * how to do that is left to the reader to figure out on Windows. On Unix and Mac, as long as the compiler + * supports more than 512 Macro arguements, all should be good. + * + * This also has the nice side benefit in that we only have to do the pre-processing once, and the output is + * included into all the files that include ValueIDIndexes.h without having to process it again + */ + + + +#ifndef _ValueIDIndexesDefines_H +#define _ValueIDIndexesDefines_H + + + +/* this is good for upto 768 entries per ENUM. I shall predict that 768 entries shall be enough for any CommandClass :) */ + +#define MAP(macro, ...) \ + IDENTITY( \ + APPLY(CHOOSE_MAP_START, COUNT(__VA_ARGS__)) \ + (macro, __VA_ARGS__)) + +#define CHOOSE_MAP_START(count) MAP ## count + +#define APPLY(macro, ...) IDENTITY(macro(__VA_ARGS__)) + +// Needed to expand __VA_ARGS__ "eagerly" on the MSVC preprocessor. +#define IDENTITY(x) x + +#define MAP1(m, x) m(x) +#define MAP2(m, x, ...) m(x) IDENTITY(MAP1(m, __VA_ARGS__)) +#define MAP3(m, x, ...) m(x) IDENTITY(MAP2(m, __VA_ARGS__)) +#define MAP4(m, x, ...) m(x) IDENTITY(MAP3(m, __VA_ARGS__)) +#define MAP5(m, x, ...) m(x) IDENTITY(MAP4(m, __VA_ARGS__)) +#define MAP6(m, x, ...) m(x) IDENTITY(MAP5(m, __VA_ARGS__)) +#define MAP7(m, x, ...) m(x) IDENTITY(MAP6(m, __VA_ARGS__)) +#define MAP8(m, x, ...) m(x) IDENTITY(MAP7(m, __VA_ARGS__)) +#define MAP9(m, x, ...) m(x) IDENTITY(MAP8(m, __VA_ARGS__)) +#define MAP10(m, x, ...) m(x) IDENTITY(MAP9(m, __VA_ARGS__)) +#define MAP11(m, x, ...) m(x) IDENTITY(MAP10(m, __VA_ARGS__)) +#define MAP12(m, x, ...) m(x) IDENTITY(MAP11(m, __VA_ARGS__)) +#define MAP13(m, x, ...) m(x) IDENTITY(MAP12(m, __VA_ARGS__)) +#define MAP14(m, x, ...) m(x) IDENTITY(MAP13(m, __VA_ARGS__)) +#define MAP15(m, x, ...) m(x) IDENTITY(MAP14(m, __VA_ARGS__)) +#define MAP16(m, x, ...) m(x) IDENTITY(MAP15(m, __VA_ARGS__)) +#define MAP17(m, x, ...) m(x) IDENTITY(MAP16(m, __VA_ARGS__)) +#define MAP18(m, x, ...) m(x) IDENTITY(MAP17(m, __VA_ARGS__)) +#define MAP19(m, x, ...) m(x) IDENTITY(MAP18(m, __VA_ARGS__)) +#define MAP20(m, x, ...) m(x) IDENTITY(MAP19(m, __VA_ARGS__)) +#define MAP21(m, x, ...) m(x) IDENTITY(MAP20(m, __VA_ARGS__)) +#define MAP22(m, x, ...) m(x) IDENTITY(MAP21(m, __VA_ARGS__)) +#define MAP23(m, x, ...) m(x) IDENTITY(MAP22(m, __VA_ARGS__)) +#define MAP24(m, x, ...) m(x) IDENTITY(MAP23(m, __VA_ARGS__)) +#define MAP25(m, x, ...) m(x) IDENTITY(MAP24(m, __VA_ARGS__)) +#define MAP26(m, x, ...) m(x) IDENTITY(MAP25(m, __VA_ARGS__)) +#define MAP27(m, x, ...) m(x) IDENTITY(MAP26(m, __VA_ARGS__)) +#define MAP28(m, x, ...) m(x) IDENTITY(MAP27(m, __VA_ARGS__)) +#define MAP29(m, x, ...) m(x) IDENTITY(MAP28(m, __VA_ARGS__)) +#define MAP30(m, x, ...) m(x) IDENTITY(MAP29(m, __VA_ARGS__)) +#define MAP31(m, x, ...) m(x) IDENTITY(MAP30(m, __VA_ARGS__)) +#define MAP32(m, x, ...) m(x) IDENTITY(MAP31(m, __VA_ARGS__)) +#define MAP33(m, x, ...) m(x) IDENTITY(MAP32(m, __VA_ARGS__)) +#define MAP34(m, x, ...) m(x) IDENTITY(MAP33(m, __VA_ARGS__)) +#define MAP35(m, x, ...) m(x) IDENTITY(MAP34(m, __VA_ARGS__)) +#define MAP36(m, x, ...) m(x) IDENTITY(MAP35(m, __VA_ARGS__)) +#define MAP37(m, x, ...) m(x) IDENTITY(MAP36(m, __VA_ARGS__)) +#define MAP38(m, x, ...) m(x) IDENTITY(MAP37(m, __VA_ARGS__)) +#define MAP39(m, x, ...) m(x) IDENTITY(MAP38(m, __VA_ARGS__)) +#define MAP40(m, x, ...) m(x) IDENTITY(MAP39(m, __VA_ARGS__)) +#define MAP41(m, x, ...) m(x) IDENTITY(MAP40(m, __VA_ARGS__)) +#define MAP42(m, x, ...) m(x) IDENTITY(MAP41(m, __VA_ARGS__)) +#define MAP43(m, x, ...) m(x) IDENTITY(MAP42(m, __VA_ARGS__)) +#define MAP44(m, x, ...) m(x) IDENTITY(MAP43(m, __VA_ARGS__)) +#define MAP45(m, x, ...) m(x) IDENTITY(MAP44(m, __VA_ARGS__)) +#define MAP46(m, x, ...) m(x) IDENTITY(MAP45(m, __VA_ARGS__)) +#define MAP47(m, x, ...) m(x) IDENTITY(MAP46(m, __VA_ARGS__)) +#define MAP48(m, x, ...) m(x) IDENTITY(MAP47(m, __VA_ARGS__)) +#define MAP49(m, x, ...) m(x) IDENTITY(MAP48(m, __VA_ARGS__)) +#define MAP50(m, x, ...) m(x) IDENTITY(MAP49(m, __VA_ARGS__)) +#define MAP51(m, x, ...) m(x) IDENTITY(MAP50(m, __VA_ARGS__)) +#define MAP52(m, x, ...) m(x) IDENTITY(MAP51(m, __VA_ARGS__)) +#define MAP53(m, x, ...) m(x) IDENTITY(MAP52(m, __VA_ARGS__)) +#define MAP54(m, x, ...) m(x) IDENTITY(MAP53(m, __VA_ARGS__)) +#define MAP55(m, x, ...) m(x) IDENTITY(MAP54(m, __VA_ARGS__)) +#define MAP56(m, x, ...) m(x) IDENTITY(MAP55(m, __VA_ARGS__)) +#define MAP57(m, x, ...) m(x) IDENTITY(MAP56(m, __VA_ARGS__)) +#define MAP58(m, x, ...) m(x) IDENTITY(MAP57(m, __VA_ARGS__)) +#define MAP59(m, x, ...) m(x) IDENTITY(MAP58(m, __VA_ARGS__)) +#define MAP60(m, x, ...) m(x) IDENTITY(MAP59(m, __VA_ARGS__)) +#define MAP61(m, x, ...) m(x) IDENTITY(MAP60(m, __VA_ARGS__)) +#define MAP62(m, x, ...) m(x) IDENTITY(MAP61(m, __VA_ARGS__)) +#define MAP63(m, x, ...) m(x) IDENTITY(MAP62(m, __VA_ARGS__)) +#define MAP64(m, x, ...) m(x) IDENTITY(MAP63(m, __VA_ARGS__)) +#define MAP65(m, x, ...) m(x) IDENTITY(MAP64(m, __VA_ARGS__)) +#define MAP66(m, x, ...) m(x) IDENTITY(MAP65(m, __VA_ARGS__)) +#define MAP67(m, x, ...) m(x) IDENTITY(MAP66(m, __VA_ARGS__)) +#define MAP68(m, x, ...) m(x) IDENTITY(MAP67(m, __VA_ARGS__)) +#define MAP69(m, x, ...) m(x) IDENTITY(MAP68(m, __VA_ARGS__)) +#define MAP70(m, x, ...) m(x) IDENTITY(MAP69(m, __VA_ARGS__)) +#define MAP71(m, x, ...) m(x) IDENTITY(MAP70(m, __VA_ARGS__)) +#define MAP72(m, x, ...) m(x) IDENTITY(MAP71(m, __VA_ARGS__)) +#define MAP73(m, x, ...) m(x) IDENTITY(MAP72(m, __VA_ARGS__)) +#define MAP74(m, x, ...) m(x) IDENTITY(MAP73(m, __VA_ARGS__)) +#define MAP75(m, x, ...) m(x) IDENTITY(MAP74(m, __VA_ARGS__)) +#define MAP76(m, x, ...) m(x) IDENTITY(MAP75(m, __VA_ARGS__)) +#define MAP77(m, x, ...) m(x) IDENTITY(MAP76(m, __VA_ARGS__)) +#define MAP78(m, x, ...) m(x) IDENTITY(MAP77(m, __VA_ARGS__)) +#define MAP79(m, x, ...) m(x) IDENTITY(MAP78(m, __VA_ARGS__)) +#define MAP80(m, x, ...) m(x) IDENTITY(MAP79(m, __VA_ARGS__)) +#define MAP81(m, x, ...) m(x) IDENTITY(MAP80(m, __VA_ARGS__)) +#define MAP82(m, x, ...) m(x) IDENTITY(MAP81(m, __VA_ARGS__)) +#define MAP83(m, x, ...) m(x) IDENTITY(MAP82(m, __VA_ARGS__)) +#define MAP84(m, x, ...) m(x) IDENTITY(MAP83(m, __VA_ARGS__)) +#define MAP85(m, x, ...) m(x) IDENTITY(MAP84(m, __VA_ARGS__)) +#define MAP86(m, x, ...) m(x) IDENTITY(MAP85(m, __VA_ARGS__)) +#define MAP87(m, x, ...) m(x) IDENTITY(MAP86(m, __VA_ARGS__)) +#define MAP88(m, x, ...) m(x) IDENTITY(MAP87(m, __VA_ARGS__)) +#define MAP89(m, x, ...) m(x) IDENTITY(MAP88(m, __VA_ARGS__)) +#define MAP90(m, x, ...) m(x) IDENTITY(MAP89(m, __VA_ARGS__)) +#define MAP91(m, x, ...) m(x) IDENTITY(MAP90(m, __VA_ARGS__)) +#define MAP92(m, x, ...) m(x) IDENTITY(MAP91(m, __VA_ARGS__)) +#define MAP93(m, x, ...) m(x) IDENTITY(MAP92(m, __VA_ARGS__)) +#define MAP94(m, x, ...) m(x) IDENTITY(MAP93(m, __VA_ARGS__)) +#define MAP95(m, x, ...) m(x) IDENTITY(MAP94(m, __VA_ARGS__)) +#define MAP96(m, x, ...) m(x) IDENTITY(MAP95(m, __VA_ARGS__)) +#define MAP97(m, x, ...) m(x) IDENTITY(MAP96(m, __VA_ARGS__)) +#define MAP98(m, x, ...) m(x) IDENTITY(MAP97(m, __VA_ARGS__)) +#define MAP99(m, x, ...) m(x) IDENTITY(MAP98(m, __VA_ARGS__)) +#define MAP100(m, x, ...) m(x) IDENTITY(MAP99(m, __VA_ARGS__)) +#define MAP101(m, x, ...) m(x) IDENTITY(MAP100(m, __VA_ARGS__)) +#define MAP102(m, x, ...) m(x) IDENTITY(MAP101(m, __VA_ARGS__)) +#define MAP103(m, x, ...) m(x) IDENTITY(MAP102(m, __VA_ARGS__)) +#define MAP104(m, x, ...) m(x) IDENTITY(MAP103(m, __VA_ARGS__)) +#define MAP105(m, x, ...) m(x) IDENTITY(MAP104(m, __VA_ARGS__)) +#define MAP106(m, x, ...) m(x) IDENTITY(MAP105(m, __VA_ARGS__)) +#define MAP107(m, x, ...) m(x) IDENTITY(MAP106(m, __VA_ARGS__)) +#define MAP108(m, x, ...) m(x) IDENTITY(MAP107(m, __VA_ARGS__)) +#define MAP109(m, x, ...) m(x) IDENTITY(MAP108(m, __VA_ARGS__)) +#define MAP110(m, x, ...) m(x) IDENTITY(MAP109(m, __VA_ARGS__)) +#define MAP111(m, x, ...) m(x) IDENTITY(MAP110(m, __VA_ARGS__)) +#define MAP112(m, x, ...) m(x) IDENTITY(MAP111(m, __VA_ARGS__)) +#define MAP113(m, x, ...) m(x) IDENTITY(MAP112(m, __VA_ARGS__)) +#define MAP114(m, x, ...) m(x) IDENTITY(MAP113(m, __VA_ARGS__)) +#define MAP115(m, x, ...) m(x) IDENTITY(MAP114(m, __VA_ARGS__)) +#define MAP116(m, x, ...) m(x) IDENTITY(MAP115(m, __VA_ARGS__)) +#define MAP117(m, x, ...) m(x) IDENTITY(MAP116(m, __VA_ARGS__)) +#define MAP118(m, x, ...) m(x) IDENTITY(MAP117(m, __VA_ARGS__)) +#define MAP119(m, x, ...) m(x) IDENTITY(MAP118(m, __VA_ARGS__)) +#define MAP120(m, x, ...) m(x) IDENTITY(MAP119(m, __VA_ARGS__)) +#define MAP121(m, x, ...) m(x) IDENTITY(MAP120(m, __VA_ARGS__)) +#define MAP122(m, x, ...) m(x) IDENTITY(MAP121(m, __VA_ARGS__)) +#define MAP123(m, x, ...) m(x) IDENTITY(MAP122(m, __VA_ARGS__)) +#define MAP124(m, x, ...) m(x) IDENTITY(MAP123(m, __VA_ARGS__)) +#define MAP125(m, x, ...) m(x) IDENTITY(MAP124(m, __VA_ARGS__)) +#define MAP126(m, x, ...) m(x) IDENTITY(MAP125(m, __VA_ARGS__)) +#define MAP127(m, x, ...) m(x) IDENTITY(MAP126(m, __VA_ARGS__)) +#define MAP128(m, x, ...) m(x) IDENTITY(MAP127(m, __VA_ARGS__)) +#define MAP129(m, x, ...) m(x) IDENTITY(MAP128(m, __VA_ARGS__)) +#define MAP130(m, x, ...) m(x) IDENTITY(MAP129(m, __VA_ARGS__)) +#define MAP131(m, x, ...) m(x) IDENTITY(MAP130(m, __VA_ARGS__)) +#define MAP132(m, x, ...) m(x) IDENTITY(MAP131(m, __VA_ARGS__)) +#define MAP133(m, x, ...) m(x) IDENTITY(MAP132(m, __VA_ARGS__)) +#define MAP134(m, x, ...) m(x) IDENTITY(MAP133(m, __VA_ARGS__)) +#define MAP135(m, x, ...) m(x) IDENTITY(MAP134(m, __VA_ARGS__)) +#define MAP136(m, x, ...) m(x) IDENTITY(MAP135(m, __VA_ARGS__)) +#define MAP137(m, x, ...) m(x) IDENTITY(MAP136(m, __VA_ARGS__)) +#define MAP138(m, x, ...) m(x) IDENTITY(MAP137(m, __VA_ARGS__)) +#define MAP139(m, x, ...) m(x) IDENTITY(MAP138(m, __VA_ARGS__)) +#define MAP140(m, x, ...) m(x) IDENTITY(MAP139(m, __VA_ARGS__)) +#define MAP141(m, x, ...) m(x) IDENTITY(MAP140(m, __VA_ARGS__)) +#define MAP142(m, x, ...) m(x) IDENTITY(MAP141(m, __VA_ARGS__)) +#define MAP143(m, x, ...) m(x) IDENTITY(MAP142(m, __VA_ARGS__)) +#define MAP144(m, x, ...) m(x) IDENTITY(MAP143(m, __VA_ARGS__)) +#define MAP145(m, x, ...) m(x) IDENTITY(MAP144(m, __VA_ARGS__)) +#define MAP146(m, x, ...) m(x) IDENTITY(MAP145(m, __VA_ARGS__)) +#define MAP147(m, x, ...) m(x) IDENTITY(MAP146(m, __VA_ARGS__)) +#define MAP148(m, x, ...) m(x) IDENTITY(MAP147(m, __VA_ARGS__)) +#define MAP149(m, x, ...) m(x) IDENTITY(MAP148(m, __VA_ARGS__)) +#define MAP150(m, x, ...) m(x) IDENTITY(MAP149(m, __VA_ARGS__)) +#define MAP151(m, x, ...) m(x) IDENTITY(MAP150(m, __VA_ARGS__)) +#define MAP152(m, x, ...) m(x) IDENTITY(MAP151(m, __VA_ARGS__)) +#define MAP153(m, x, ...) m(x) IDENTITY(MAP152(m, __VA_ARGS__)) +#define MAP154(m, x, ...) m(x) IDENTITY(MAP153(m, __VA_ARGS__)) +#define MAP155(m, x, ...) m(x) IDENTITY(MAP154(m, __VA_ARGS__)) +#define MAP156(m, x, ...) m(x) IDENTITY(MAP155(m, __VA_ARGS__)) +#define MAP157(m, x, ...) m(x) IDENTITY(MAP156(m, __VA_ARGS__)) +#define MAP158(m, x, ...) m(x) IDENTITY(MAP157(m, __VA_ARGS__)) +#define MAP159(m, x, ...) m(x) IDENTITY(MAP158(m, __VA_ARGS__)) +#define MAP160(m, x, ...) m(x) IDENTITY(MAP159(m, __VA_ARGS__)) +#define MAP161(m, x, ...) m(x) IDENTITY(MAP160(m, __VA_ARGS__)) +#define MAP162(m, x, ...) m(x) IDENTITY(MAP161(m, __VA_ARGS__)) +#define MAP163(m, x, ...) m(x) IDENTITY(MAP162(m, __VA_ARGS__)) +#define MAP164(m, x, ...) m(x) IDENTITY(MAP163(m, __VA_ARGS__)) +#define MAP165(m, x, ...) m(x) IDENTITY(MAP164(m, __VA_ARGS__)) +#define MAP166(m, x, ...) m(x) IDENTITY(MAP165(m, __VA_ARGS__)) +#define MAP167(m, x, ...) m(x) IDENTITY(MAP166(m, __VA_ARGS__)) +#define MAP168(m, x, ...) m(x) IDENTITY(MAP167(m, __VA_ARGS__)) +#define MAP169(m, x, ...) m(x) IDENTITY(MAP168(m, __VA_ARGS__)) +#define MAP170(m, x, ...) m(x) IDENTITY(MAP169(m, __VA_ARGS__)) +#define MAP171(m, x, ...) m(x) IDENTITY(MAP170(m, __VA_ARGS__)) +#define MAP172(m, x, ...) m(x) IDENTITY(MAP171(m, __VA_ARGS__)) +#define MAP173(m, x, ...) m(x) IDENTITY(MAP172(m, __VA_ARGS__)) +#define MAP174(m, x, ...) m(x) IDENTITY(MAP173(m, __VA_ARGS__)) +#define MAP175(m, x, ...) m(x) IDENTITY(MAP174(m, __VA_ARGS__)) +#define MAP176(m, x, ...) m(x) IDENTITY(MAP175(m, __VA_ARGS__)) +#define MAP177(m, x, ...) m(x) IDENTITY(MAP176(m, __VA_ARGS__)) +#define MAP178(m, x, ...) m(x) IDENTITY(MAP177(m, __VA_ARGS__)) +#define MAP179(m, x, ...) m(x) IDENTITY(MAP178(m, __VA_ARGS__)) +#define MAP180(m, x, ...) m(x) IDENTITY(MAP179(m, __VA_ARGS__)) +#define MAP181(m, x, ...) m(x) IDENTITY(MAP180(m, __VA_ARGS__)) +#define MAP182(m, x, ...) m(x) IDENTITY(MAP181(m, __VA_ARGS__)) +#define MAP183(m, x, ...) m(x) IDENTITY(MAP182(m, __VA_ARGS__)) +#define MAP184(m, x, ...) m(x) IDENTITY(MAP183(m, __VA_ARGS__)) +#define MAP185(m, x, ...) m(x) IDENTITY(MAP184(m, __VA_ARGS__)) +#define MAP186(m, x, ...) m(x) IDENTITY(MAP185(m, __VA_ARGS__)) +#define MAP187(m, x, ...) m(x) IDENTITY(MAP186(m, __VA_ARGS__)) +#define MAP188(m, x, ...) m(x) IDENTITY(MAP187(m, __VA_ARGS__)) +#define MAP189(m, x, ...) m(x) IDENTITY(MAP188(m, __VA_ARGS__)) +#define MAP190(m, x, ...) m(x) IDENTITY(MAP189(m, __VA_ARGS__)) +#define MAP191(m, x, ...) m(x) IDENTITY(MAP190(m, __VA_ARGS__)) +#define MAP192(m, x, ...) m(x) IDENTITY(MAP191(m, __VA_ARGS__)) +#define MAP193(m, x, ...) m(x) IDENTITY(MAP192(m, __VA_ARGS__)) +#define MAP194(m, x, ...) m(x) IDENTITY(MAP193(m, __VA_ARGS__)) +#define MAP195(m, x, ...) m(x) IDENTITY(MAP194(m, __VA_ARGS__)) +#define MAP196(m, x, ...) m(x) IDENTITY(MAP195(m, __VA_ARGS__)) +#define MAP197(m, x, ...) m(x) IDENTITY(MAP196(m, __VA_ARGS__)) +#define MAP198(m, x, ...) m(x) IDENTITY(MAP197(m, __VA_ARGS__)) +#define MAP199(m, x, ...) m(x) IDENTITY(MAP198(m, __VA_ARGS__)) +#define MAP200(m, x, ...) m(x) IDENTITY(MAP199(m, __VA_ARGS__)) +#define MAP201(m, x, ...) m(x) IDENTITY(MAP200(m, __VA_ARGS__)) +#define MAP202(m, x, ...) m(x) IDENTITY(MAP201(m, __VA_ARGS__)) +#define MAP203(m, x, ...) m(x) IDENTITY(MAP202(m, __VA_ARGS__)) +#define MAP204(m, x, ...) m(x) IDENTITY(MAP203(m, __VA_ARGS__)) +#define MAP205(m, x, ...) m(x) IDENTITY(MAP204(m, __VA_ARGS__)) +#define MAP206(m, x, ...) m(x) IDENTITY(MAP205(m, __VA_ARGS__)) +#define MAP207(m, x, ...) m(x) IDENTITY(MAP206(m, __VA_ARGS__)) +#define MAP208(m, x, ...) m(x) IDENTITY(MAP207(m, __VA_ARGS__)) +#define MAP209(m, x, ...) m(x) IDENTITY(MAP208(m, __VA_ARGS__)) +#define MAP210(m, x, ...) m(x) IDENTITY(MAP209(m, __VA_ARGS__)) +#define MAP211(m, x, ...) m(x) IDENTITY(MAP210(m, __VA_ARGS__)) +#define MAP212(m, x, ...) m(x) IDENTITY(MAP211(m, __VA_ARGS__)) +#define MAP213(m, x, ...) m(x) IDENTITY(MAP212(m, __VA_ARGS__)) +#define MAP214(m, x, ...) m(x) IDENTITY(MAP213(m, __VA_ARGS__)) +#define MAP215(m, x, ...) m(x) IDENTITY(MAP214(m, __VA_ARGS__)) +#define MAP216(m, x, ...) m(x) IDENTITY(MAP215(m, __VA_ARGS__)) +#define MAP217(m, x, ...) m(x) IDENTITY(MAP216(m, __VA_ARGS__)) +#define MAP218(m, x, ...) m(x) IDENTITY(MAP217(m, __VA_ARGS__)) +#define MAP219(m, x, ...) m(x) IDENTITY(MAP218(m, __VA_ARGS__)) +#define MAP220(m, x, ...) m(x) IDENTITY(MAP219(m, __VA_ARGS__)) +#define MAP221(m, x, ...) m(x) IDENTITY(MAP220(m, __VA_ARGS__)) +#define MAP222(m, x, ...) m(x) IDENTITY(MAP221(m, __VA_ARGS__)) +#define MAP223(m, x, ...) m(x) IDENTITY(MAP222(m, __VA_ARGS__)) +#define MAP224(m, x, ...) m(x) IDENTITY(MAP223(m, __VA_ARGS__)) +#define MAP225(m, x, ...) m(x) IDENTITY(MAP224(m, __VA_ARGS__)) +#define MAP226(m, x, ...) m(x) IDENTITY(MAP225(m, __VA_ARGS__)) +#define MAP227(m, x, ...) m(x) IDENTITY(MAP226(m, __VA_ARGS__)) +#define MAP228(m, x, ...) m(x) IDENTITY(MAP227(m, __VA_ARGS__)) +#define MAP229(m, x, ...) m(x) IDENTITY(MAP228(m, __VA_ARGS__)) +#define MAP230(m, x, ...) m(x) IDENTITY(MAP229(m, __VA_ARGS__)) +#define MAP231(m, x, ...) m(x) IDENTITY(MAP230(m, __VA_ARGS__)) +#define MAP232(m, x, ...) m(x) IDENTITY(MAP231(m, __VA_ARGS__)) +#define MAP233(m, x, ...) m(x) IDENTITY(MAP232(m, __VA_ARGS__)) +#define MAP234(m, x, ...) m(x) IDENTITY(MAP233(m, __VA_ARGS__)) +#define MAP235(m, x, ...) m(x) IDENTITY(MAP234(m, __VA_ARGS__)) +#define MAP236(m, x, ...) m(x) IDENTITY(MAP235(m, __VA_ARGS__)) +#define MAP237(m, x, ...) m(x) IDENTITY(MAP236(m, __VA_ARGS__)) +#define MAP238(m, x, ...) m(x) IDENTITY(MAP237(m, __VA_ARGS__)) +#define MAP239(m, x, ...) m(x) IDENTITY(MAP238(m, __VA_ARGS__)) +#define MAP240(m, x, ...) m(x) IDENTITY(MAP239(m, __VA_ARGS__)) +#define MAP241(m, x, ...) m(x) IDENTITY(MAP240(m, __VA_ARGS__)) +#define MAP242(m, x, ...) m(x) IDENTITY(MAP241(m, __VA_ARGS__)) +#define MAP243(m, x, ...) m(x) IDENTITY(MAP242(m, __VA_ARGS__)) +#define MAP244(m, x, ...) m(x) IDENTITY(MAP243(m, __VA_ARGS__)) +#define MAP245(m, x, ...) m(x) IDENTITY(MAP244(m, __VA_ARGS__)) +#define MAP246(m, x, ...) m(x) IDENTITY(MAP245(m, __VA_ARGS__)) +#define MAP247(m, x, ...) m(x) IDENTITY(MAP246(m, __VA_ARGS__)) +#define MAP248(m, x, ...) m(x) IDENTITY(MAP247(m, __VA_ARGS__)) +#define MAP249(m, x, ...) m(x) IDENTITY(MAP248(m, __VA_ARGS__)) +#define MAP250(m, x, ...) m(x) IDENTITY(MAP249(m, __VA_ARGS__)) +#define MAP251(m, x, ...) m(x) IDENTITY(MAP250(m, __VA_ARGS__)) +#define MAP252(m, x, ...) m(x) IDENTITY(MAP251(m, __VA_ARGS__)) +#define MAP253(m, x, ...) m(x) IDENTITY(MAP252(m, __VA_ARGS__)) +#define MAP254(m, x, ...) m(x) IDENTITY(MAP253(m, __VA_ARGS__)) +#define MAP255(m, x, ...) m(x) IDENTITY(MAP254(m, __VA_ARGS__)) +#define MAP256(m, x, ...) m(x) IDENTITY(MAP255(m, __VA_ARGS__)) +#define MAP257(m, x, ...) m(x) IDENTITY(MAP256(m, __VA_ARGS__)) +#define MAP258(m, x, ...) m(x) IDENTITY(MAP257(m, __VA_ARGS__)) +#define MAP259(m, x, ...) m(x) IDENTITY(MAP258(m, __VA_ARGS__)) +#define MAP260(m, x, ...) m(x) IDENTITY(MAP259(m, __VA_ARGS__)) +#define MAP261(m, x, ...) m(x) IDENTITY(MAP260(m, __VA_ARGS__)) +#define MAP262(m, x, ...) m(x) IDENTITY(MAP261(m, __VA_ARGS__)) +#define MAP263(m, x, ...) m(x) IDENTITY(MAP262(m, __VA_ARGS__)) +#define MAP264(m, x, ...) m(x) IDENTITY(MAP263(m, __VA_ARGS__)) +#define MAP265(m, x, ...) m(x) IDENTITY(MAP264(m, __VA_ARGS__)) +#define MAP266(m, x, ...) m(x) IDENTITY(MAP265(m, __VA_ARGS__)) +#define MAP267(m, x, ...) m(x) IDENTITY(MAP266(m, __VA_ARGS__)) +#define MAP268(m, x, ...) m(x) IDENTITY(MAP267(m, __VA_ARGS__)) +#define MAP269(m, x, ...) m(x) IDENTITY(MAP268(m, __VA_ARGS__)) +#define MAP270(m, x, ...) m(x) IDENTITY(MAP269(m, __VA_ARGS__)) +#define MAP271(m, x, ...) m(x) IDENTITY(MAP270(m, __VA_ARGS__)) +#define MAP272(m, x, ...) m(x) IDENTITY(MAP271(m, __VA_ARGS__)) +#define MAP273(m, x, ...) m(x) IDENTITY(MAP272(m, __VA_ARGS__)) +#define MAP274(m, x, ...) m(x) IDENTITY(MAP273(m, __VA_ARGS__)) +#define MAP275(m, x, ...) m(x) IDENTITY(MAP274(m, __VA_ARGS__)) +#define MAP276(m, x, ...) m(x) IDENTITY(MAP275(m, __VA_ARGS__)) +#define MAP277(m, x, ...) m(x) IDENTITY(MAP276(m, __VA_ARGS__)) +#define MAP278(m, x, ...) m(x) IDENTITY(MAP277(m, __VA_ARGS__)) +#define MAP279(m, x, ...) m(x) IDENTITY(MAP278(m, __VA_ARGS__)) +#define MAP280(m, x, ...) m(x) IDENTITY(MAP279(m, __VA_ARGS__)) +#define MAP281(m, x, ...) m(x) IDENTITY(MAP280(m, __VA_ARGS__)) +#define MAP282(m, x, ...) m(x) IDENTITY(MAP281(m, __VA_ARGS__)) +#define MAP283(m, x, ...) m(x) IDENTITY(MAP282(m, __VA_ARGS__)) +#define MAP284(m, x, ...) m(x) IDENTITY(MAP283(m, __VA_ARGS__)) +#define MAP285(m, x, ...) m(x) IDENTITY(MAP284(m, __VA_ARGS__)) +#define MAP286(m, x, ...) m(x) IDENTITY(MAP285(m, __VA_ARGS__)) +#define MAP287(m, x, ...) m(x) IDENTITY(MAP286(m, __VA_ARGS__)) +#define MAP288(m, x, ...) m(x) IDENTITY(MAP287(m, __VA_ARGS__)) +#define MAP289(m, x, ...) m(x) IDENTITY(MAP288(m, __VA_ARGS__)) +#define MAP290(m, x, ...) m(x) IDENTITY(MAP289(m, __VA_ARGS__)) +#define MAP291(m, x, ...) m(x) IDENTITY(MAP290(m, __VA_ARGS__)) +#define MAP292(m, x, ...) m(x) IDENTITY(MAP291(m, __VA_ARGS__)) +#define MAP293(m, x, ...) m(x) IDENTITY(MAP292(m, __VA_ARGS__)) +#define MAP294(m, x, ...) m(x) IDENTITY(MAP293(m, __VA_ARGS__)) +#define MAP295(m, x, ...) m(x) IDENTITY(MAP294(m, __VA_ARGS__)) +#define MAP296(m, x, ...) m(x) IDENTITY(MAP295(m, __VA_ARGS__)) +#define MAP297(m, x, ...) m(x) IDENTITY(MAP296(m, __VA_ARGS__)) +#define MAP298(m, x, ...) m(x) IDENTITY(MAP297(m, __VA_ARGS__)) +#define MAP299(m, x, ...) m(x) IDENTITY(MAP298(m, __VA_ARGS__)) +#define MAP300(m, x, ...) m(x) IDENTITY(MAP299(m, __VA_ARGS__)) +#define MAP301(m, x, ...) m(x) IDENTITY(MAP300(m, __VA_ARGS__)) +#define MAP302(m, x, ...) m(x) IDENTITY(MAP301(m, __VA_ARGS__)) +#define MAP303(m, x, ...) m(x) IDENTITY(MAP302(m, __VA_ARGS__)) +#define MAP304(m, x, ...) m(x) IDENTITY(MAP303(m, __VA_ARGS__)) +#define MAP305(m, x, ...) m(x) IDENTITY(MAP304(m, __VA_ARGS__)) +#define MAP306(m, x, ...) m(x) IDENTITY(MAP305(m, __VA_ARGS__)) +#define MAP307(m, x, ...) m(x) IDENTITY(MAP306(m, __VA_ARGS__)) +#define MAP308(m, x, ...) m(x) IDENTITY(MAP307(m, __VA_ARGS__)) +#define MAP309(m, x, ...) m(x) IDENTITY(MAP308(m, __VA_ARGS__)) +#define MAP310(m, x, ...) m(x) IDENTITY(MAP309(m, __VA_ARGS__)) +#define MAP311(m, x, ...) m(x) IDENTITY(MAP310(m, __VA_ARGS__)) +#define MAP312(m, x, ...) m(x) IDENTITY(MAP311(m, __VA_ARGS__)) +#define MAP313(m, x, ...) m(x) IDENTITY(MAP312(m, __VA_ARGS__)) +#define MAP314(m, x, ...) m(x) IDENTITY(MAP313(m, __VA_ARGS__)) +#define MAP315(m, x, ...) m(x) IDENTITY(MAP314(m, __VA_ARGS__)) +#define MAP316(m, x, ...) m(x) IDENTITY(MAP315(m, __VA_ARGS__)) +#define MAP317(m, x, ...) m(x) IDENTITY(MAP316(m, __VA_ARGS__)) +#define MAP318(m, x, ...) m(x) IDENTITY(MAP317(m, __VA_ARGS__)) +#define MAP319(m, x, ...) m(x) IDENTITY(MAP318(m, __VA_ARGS__)) +#define MAP320(m, x, ...) m(x) IDENTITY(MAP319(m, __VA_ARGS__)) +#define MAP321(m, x, ...) m(x) IDENTITY(MAP320(m, __VA_ARGS__)) +#define MAP322(m, x, ...) m(x) IDENTITY(MAP321(m, __VA_ARGS__)) +#define MAP323(m, x, ...) m(x) IDENTITY(MAP322(m, __VA_ARGS__)) +#define MAP324(m, x, ...) m(x) IDENTITY(MAP323(m, __VA_ARGS__)) +#define MAP325(m, x, ...) m(x) IDENTITY(MAP324(m, __VA_ARGS__)) +#define MAP326(m, x, ...) m(x) IDENTITY(MAP325(m, __VA_ARGS__)) +#define MAP327(m, x, ...) m(x) IDENTITY(MAP326(m, __VA_ARGS__)) +#define MAP328(m, x, ...) m(x) IDENTITY(MAP327(m, __VA_ARGS__)) +#define MAP329(m, x, ...) m(x) IDENTITY(MAP328(m, __VA_ARGS__)) +#define MAP330(m, x, ...) m(x) IDENTITY(MAP329(m, __VA_ARGS__)) +#define MAP331(m, x, ...) m(x) IDENTITY(MAP330(m, __VA_ARGS__)) +#define MAP332(m, x, ...) m(x) IDENTITY(MAP331(m, __VA_ARGS__)) +#define MAP333(m, x, ...) m(x) IDENTITY(MAP332(m, __VA_ARGS__)) +#define MAP334(m, x, ...) m(x) IDENTITY(MAP333(m, __VA_ARGS__)) +#define MAP335(m, x, ...) m(x) IDENTITY(MAP334(m, __VA_ARGS__)) +#define MAP336(m, x, ...) m(x) IDENTITY(MAP335(m, __VA_ARGS__)) +#define MAP337(m, x, ...) m(x) IDENTITY(MAP336(m, __VA_ARGS__)) +#define MAP338(m, x, ...) m(x) IDENTITY(MAP337(m, __VA_ARGS__)) +#define MAP339(m, x, ...) m(x) IDENTITY(MAP338(m, __VA_ARGS__)) +#define MAP340(m, x, ...) m(x) IDENTITY(MAP339(m, __VA_ARGS__)) +#define MAP341(m, x, ...) m(x) IDENTITY(MAP340(m, __VA_ARGS__)) +#define MAP342(m, x, ...) m(x) IDENTITY(MAP341(m, __VA_ARGS__)) +#define MAP343(m, x, ...) m(x) IDENTITY(MAP342(m, __VA_ARGS__)) +#define MAP344(m, x, ...) m(x) IDENTITY(MAP343(m, __VA_ARGS__)) +#define MAP345(m, x, ...) m(x) IDENTITY(MAP344(m, __VA_ARGS__)) +#define MAP346(m, x, ...) m(x) IDENTITY(MAP345(m, __VA_ARGS__)) +#define MAP347(m, x, ...) m(x) IDENTITY(MAP346(m, __VA_ARGS__)) +#define MAP348(m, x, ...) m(x) IDENTITY(MAP347(m, __VA_ARGS__)) +#define MAP349(m, x, ...) m(x) IDENTITY(MAP348(m, __VA_ARGS__)) +#define MAP350(m, x, ...) m(x) IDENTITY(MAP349(m, __VA_ARGS__)) +#define MAP351(m, x, ...) m(x) IDENTITY(MAP350(m, __VA_ARGS__)) +#define MAP352(m, x, ...) m(x) IDENTITY(MAP351(m, __VA_ARGS__)) +#define MAP353(m, x, ...) m(x) IDENTITY(MAP352(m, __VA_ARGS__)) +#define MAP354(m, x, ...) m(x) IDENTITY(MAP353(m, __VA_ARGS__)) +#define MAP355(m, x, ...) m(x) IDENTITY(MAP354(m, __VA_ARGS__)) +#define MAP356(m, x, ...) m(x) IDENTITY(MAP355(m, __VA_ARGS__)) +#define MAP357(m, x, ...) m(x) IDENTITY(MAP356(m, __VA_ARGS__)) +#define MAP358(m, x, ...) m(x) IDENTITY(MAP357(m, __VA_ARGS__)) +#define MAP359(m, x, ...) m(x) IDENTITY(MAP358(m, __VA_ARGS__)) +#define MAP360(m, x, ...) m(x) IDENTITY(MAP359(m, __VA_ARGS__)) +#define MAP361(m, x, ...) m(x) IDENTITY(MAP360(m, __VA_ARGS__)) +#define MAP362(m, x, ...) m(x) IDENTITY(MAP361(m, __VA_ARGS__)) +#define MAP363(m, x, ...) m(x) IDENTITY(MAP362(m, __VA_ARGS__)) +#define MAP364(m, x, ...) m(x) IDENTITY(MAP363(m, __VA_ARGS__)) +#define MAP365(m, x, ...) m(x) IDENTITY(MAP364(m, __VA_ARGS__)) +#define MAP366(m, x, ...) m(x) IDENTITY(MAP365(m, __VA_ARGS__)) +#define MAP367(m, x, ...) m(x) IDENTITY(MAP366(m, __VA_ARGS__)) +#define MAP368(m, x, ...) m(x) IDENTITY(MAP367(m, __VA_ARGS__)) +#define MAP369(m, x, ...) m(x) IDENTITY(MAP368(m, __VA_ARGS__)) +#define MAP370(m, x, ...) m(x) IDENTITY(MAP369(m, __VA_ARGS__)) +#define MAP371(m, x, ...) m(x) IDENTITY(MAP370(m, __VA_ARGS__)) +#define MAP372(m, x, ...) m(x) IDENTITY(MAP371(m, __VA_ARGS__)) +#define MAP373(m, x, ...) m(x) IDENTITY(MAP372(m, __VA_ARGS__)) +#define MAP374(m, x, ...) m(x) IDENTITY(MAP373(m, __VA_ARGS__)) +#define MAP375(m, x, ...) m(x) IDENTITY(MAP374(m, __VA_ARGS__)) +#define MAP376(m, x, ...) m(x) IDENTITY(MAP375(m, __VA_ARGS__)) +#define MAP377(m, x, ...) m(x) IDENTITY(MAP376(m, __VA_ARGS__)) +#define MAP378(m, x, ...) m(x) IDENTITY(MAP377(m, __VA_ARGS__)) +#define MAP379(m, x, ...) m(x) IDENTITY(MAP378(m, __VA_ARGS__)) +#define MAP380(m, x, ...) m(x) IDENTITY(MAP379(m, __VA_ARGS__)) +#define MAP381(m, x, ...) m(x) IDENTITY(MAP380(m, __VA_ARGS__)) +#define MAP382(m, x, ...) m(x) IDENTITY(MAP381(m, __VA_ARGS__)) +#define MAP383(m, x, ...) m(x) IDENTITY(MAP382(m, __VA_ARGS__)) +#define MAP384(m, x, ...) m(x) IDENTITY(MAP383(m, __VA_ARGS__)) +#define MAP385(m, x, ...) m(x) IDENTITY(MAP384(m, __VA_ARGS__)) +#define MAP386(m, x, ...) m(x) IDENTITY(MAP385(m, __VA_ARGS__)) +#define MAP387(m, x, ...) m(x) IDENTITY(MAP386(m, __VA_ARGS__)) +#define MAP388(m, x, ...) m(x) IDENTITY(MAP387(m, __VA_ARGS__)) +#define MAP389(m, x, ...) m(x) IDENTITY(MAP388(m, __VA_ARGS__)) +#define MAP390(m, x, ...) m(x) IDENTITY(MAP389(m, __VA_ARGS__)) +#define MAP391(m, x, ...) m(x) IDENTITY(MAP390(m, __VA_ARGS__)) +#define MAP392(m, x, ...) m(x) IDENTITY(MAP391(m, __VA_ARGS__)) +#define MAP393(m, x, ...) m(x) IDENTITY(MAP392(m, __VA_ARGS__)) +#define MAP394(m, x, ...) m(x) IDENTITY(MAP393(m, __VA_ARGS__)) +#define MAP395(m, x, ...) m(x) IDENTITY(MAP394(m, __VA_ARGS__)) +#define MAP396(m, x, ...) m(x) IDENTITY(MAP395(m, __VA_ARGS__)) +#define MAP397(m, x, ...) m(x) IDENTITY(MAP396(m, __VA_ARGS__)) +#define MAP398(m, x, ...) m(x) IDENTITY(MAP397(m, __VA_ARGS__)) +#define MAP399(m, x, ...) m(x) IDENTITY(MAP398(m, __VA_ARGS__)) +#define MAP400(m, x, ...) m(x) IDENTITY(MAP399(m, __VA_ARGS__)) +#define MAP401(m, x, ...) m(x) IDENTITY(MAP400(m, __VA_ARGS__)) +#define MAP402(m, x, ...) m(x) IDENTITY(MAP401(m, __VA_ARGS__)) +#define MAP403(m, x, ...) m(x) IDENTITY(MAP402(m, __VA_ARGS__)) +#define MAP404(m, x, ...) m(x) IDENTITY(MAP403(m, __VA_ARGS__)) +#define MAP405(m, x, ...) m(x) IDENTITY(MAP404(m, __VA_ARGS__)) +#define MAP406(m, x, ...) m(x) IDENTITY(MAP405(m, __VA_ARGS__)) +#define MAP407(m, x, ...) m(x) IDENTITY(MAP406(m, __VA_ARGS__)) +#define MAP408(m, x, ...) m(x) IDENTITY(MAP407(m, __VA_ARGS__)) +#define MAP409(m, x, ...) m(x) IDENTITY(MAP408(m, __VA_ARGS__)) +#define MAP410(m, x, ...) m(x) IDENTITY(MAP409(m, __VA_ARGS__)) +#define MAP411(m, x, ...) m(x) IDENTITY(MAP410(m, __VA_ARGS__)) +#define MAP412(m, x, ...) m(x) IDENTITY(MAP411(m, __VA_ARGS__)) +#define MAP413(m, x, ...) m(x) IDENTITY(MAP412(m, __VA_ARGS__)) +#define MAP414(m, x, ...) m(x) IDENTITY(MAP413(m, __VA_ARGS__)) +#define MAP415(m, x, ...) m(x) IDENTITY(MAP414(m, __VA_ARGS__)) +#define MAP416(m, x, ...) m(x) IDENTITY(MAP415(m, __VA_ARGS__)) +#define MAP417(m, x, ...) m(x) IDENTITY(MAP416(m, __VA_ARGS__)) +#define MAP418(m, x, ...) m(x) IDENTITY(MAP417(m, __VA_ARGS__)) +#define MAP419(m, x, ...) m(x) IDENTITY(MAP418(m, __VA_ARGS__)) +#define MAP420(m, x, ...) m(x) IDENTITY(MAP419(m, __VA_ARGS__)) +#define MAP421(m, x, ...) m(x) IDENTITY(MAP420(m, __VA_ARGS__)) +#define MAP422(m, x, ...) m(x) IDENTITY(MAP421(m, __VA_ARGS__)) +#define MAP423(m, x, ...) m(x) IDENTITY(MAP422(m, __VA_ARGS__)) +#define MAP424(m, x, ...) m(x) IDENTITY(MAP423(m, __VA_ARGS__)) +#define MAP425(m, x, ...) m(x) IDENTITY(MAP424(m, __VA_ARGS__)) +#define MAP426(m, x, ...) m(x) IDENTITY(MAP425(m, __VA_ARGS__)) +#define MAP427(m, x, ...) m(x) IDENTITY(MAP426(m, __VA_ARGS__)) +#define MAP428(m, x, ...) m(x) IDENTITY(MAP427(m, __VA_ARGS__)) +#define MAP429(m, x, ...) m(x) IDENTITY(MAP428(m, __VA_ARGS__)) +#define MAP430(m, x, ...) m(x) IDENTITY(MAP429(m, __VA_ARGS__)) +#define MAP431(m, x, ...) m(x) IDENTITY(MAP430(m, __VA_ARGS__)) +#define MAP432(m, x, ...) m(x) IDENTITY(MAP431(m, __VA_ARGS__)) +#define MAP433(m, x, ...) m(x) IDENTITY(MAP432(m, __VA_ARGS__)) +#define MAP434(m, x, ...) m(x) IDENTITY(MAP433(m, __VA_ARGS__)) +#define MAP435(m, x, ...) m(x) IDENTITY(MAP434(m, __VA_ARGS__)) +#define MAP436(m, x, ...) m(x) IDENTITY(MAP435(m, __VA_ARGS__)) +#define MAP437(m, x, ...) m(x) IDENTITY(MAP436(m, __VA_ARGS__)) +#define MAP438(m, x, ...) m(x) IDENTITY(MAP437(m, __VA_ARGS__)) +#define MAP439(m, x, ...) m(x) IDENTITY(MAP438(m, __VA_ARGS__)) +#define MAP440(m, x, ...) m(x) IDENTITY(MAP439(m, __VA_ARGS__)) +#define MAP441(m, x, ...) m(x) IDENTITY(MAP440(m, __VA_ARGS__)) +#define MAP442(m, x, ...) m(x) IDENTITY(MAP441(m, __VA_ARGS__)) +#define MAP443(m, x, ...) m(x) IDENTITY(MAP442(m, __VA_ARGS__)) +#define MAP444(m, x, ...) m(x) IDENTITY(MAP443(m, __VA_ARGS__)) +#define MAP445(m, x, ...) m(x) IDENTITY(MAP444(m, __VA_ARGS__)) +#define MAP446(m, x, ...) m(x) IDENTITY(MAP445(m, __VA_ARGS__)) +#define MAP447(m, x, ...) m(x) IDENTITY(MAP446(m, __VA_ARGS__)) +#define MAP448(m, x, ...) m(x) IDENTITY(MAP447(m, __VA_ARGS__)) +#define MAP449(m, x, ...) m(x) IDENTITY(MAP448(m, __VA_ARGS__)) +#define MAP450(m, x, ...) m(x) IDENTITY(MAP449(m, __VA_ARGS__)) +#define MAP451(m, x, ...) m(x) IDENTITY(MAP450(m, __VA_ARGS__)) +#define MAP452(m, x, ...) m(x) IDENTITY(MAP451(m, __VA_ARGS__)) +#define MAP453(m, x, ...) m(x) IDENTITY(MAP452(m, __VA_ARGS__)) +#define MAP454(m, x, ...) m(x) IDENTITY(MAP453(m, __VA_ARGS__)) +#define MAP455(m, x, ...) m(x) IDENTITY(MAP454(m, __VA_ARGS__)) +#define MAP456(m, x, ...) m(x) IDENTITY(MAP455(m, __VA_ARGS__)) +#define MAP457(m, x, ...) m(x) IDENTITY(MAP456(m, __VA_ARGS__)) +#define MAP458(m, x, ...) m(x) IDENTITY(MAP457(m, __VA_ARGS__)) +#define MAP459(m, x, ...) m(x) IDENTITY(MAP458(m, __VA_ARGS__)) +#define MAP460(m, x, ...) m(x) IDENTITY(MAP459(m, __VA_ARGS__)) +#define MAP461(m, x, ...) m(x) IDENTITY(MAP460(m, __VA_ARGS__)) +#define MAP462(m, x, ...) m(x) IDENTITY(MAP461(m, __VA_ARGS__)) +#define MAP463(m, x, ...) m(x) IDENTITY(MAP462(m, __VA_ARGS__)) +#define MAP464(m, x, ...) m(x) IDENTITY(MAP463(m, __VA_ARGS__)) +#define MAP465(m, x, ...) m(x) IDENTITY(MAP464(m, __VA_ARGS__)) +#define MAP466(m, x, ...) m(x) IDENTITY(MAP465(m, __VA_ARGS__)) +#define MAP467(m, x, ...) m(x) IDENTITY(MAP466(m, __VA_ARGS__)) +#define MAP468(m, x, ...) m(x) IDENTITY(MAP467(m, __VA_ARGS__)) +#define MAP469(m, x, ...) m(x) IDENTITY(MAP468(m, __VA_ARGS__)) +#define MAP470(m, x, ...) m(x) IDENTITY(MAP469(m, __VA_ARGS__)) +#define MAP471(m, x, ...) m(x) IDENTITY(MAP470(m, __VA_ARGS__)) +#define MAP472(m, x, ...) m(x) IDENTITY(MAP471(m, __VA_ARGS__)) +#define MAP473(m, x, ...) m(x) IDENTITY(MAP472(m, __VA_ARGS__)) +#define MAP474(m, x, ...) m(x) IDENTITY(MAP473(m, __VA_ARGS__)) +#define MAP475(m, x, ...) m(x) IDENTITY(MAP474(m, __VA_ARGS__)) +#define MAP476(m, x, ...) m(x) IDENTITY(MAP475(m, __VA_ARGS__)) +#define MAP477(m, x, ...) m(x) IDENTITY(MAP476(m, __VA_ARGS__)) +#define MAP478(m, x, ...) m(x) IDENTITY(MAP477(m, __VA_ARGS__)) +#define MAP479(m, x, ...) m(x) IDENTITY(MAP478(m, __VA_ARGS__)) +#define MAP480(m, x, ...) m(x) IDENTITY(MAP479(m, __VA_ARGS__)) +#define MAP481(m, x, ...) m(x) IDENTITY(MAP480(m, __VA_ARGS__)) +#define MAP482(m, x, ...) m(x) IDENTITY(MAP481(m, __VA_ARGS__)) +#define MAP483(m, x, ...) m(x) IDENTITY(MAP482(m, __VA_ARGS__)) +#define MAP484(m, x, ...) m(x) IDENTITY(MAP483(m, __VA_ARGS__)) +#define MAP485(m, x, ...) m(x) IDENTITY(MAP484(m, __VA_ARGS__)) +#define MAP486(m, x, ...) m(x) IDENTITY(MAP485(m, __VA_ARGS__)) +#define MAP487(m, x, ...) m(x) IDENTITY(MAP486(m, __VA_ARGS__)) +#define MAP488(m, x, ...) m(x) IDENTITY(MAP487(m, __VA_ARGS__)) +#define MAP489(m, x, ...) m(x) IDENTITY(MAP488(m, __VA_ARGS__)) +#define MAP490(m, x, ...) m(x) IDENTITY(MAP489(m, __VA_ARGS__)) +#define MAP491(m, x, ...) m(x) IDENTITY(MAP490(m, __VA_ARGS__)) +#define MAP492(m, x, ...) m(x) IDENTITY(MAP491(m, __VA_ARGS__)) +#define MAP493(m, x, ...) m(x) IDENTITY(MAP492(m, __VA_ARGS__)) +#define MAP494(m, x, ...) m(x) IDENTITY(MAP493(m, __VA_ARGS__)) +#define MAP495(m, x, ...) m(x) IDENTITY(MAP494(m, __VA_ARGS__)) +#define MAP496(m, x, ...) m(x) IDENTITY(MAP495(m, __VA_ARGS__)) +#define MAP497(m, x, ...) m(x) IDENTITY(MAP496(m, __VA_ARGS__)) +#define MAP498(m, x, ...) m(x) IDENTITY(MAP497(m, __VA_ARGS__)) +#define MAP499(m, x, ...) m(x) IDENTITY(MAP498(m, __VA_ARGS__)) +#define MAP500(m, x, ...) m(x) IDENTITY(MAP499(m, __VA_ARGS__)) +#define MAP501(m, x, ...) m(x) IDENTITY(MAP500(m, __VA_ARGS__)) +#define MAP502(m, x, ...) m(x) IDENTITY(MAP501(m, __VA_ARGS__)) +#define MAP503(m, x, ...) m(x) IDENTITY(MAP502(m, __VA_ARGS__)) +#define MAP504(m, x, ...) m(x) IDENTITY(MAP503(m, __VA_ARGS__)) +#define MAP505(m, x, ...) m(x) IDENTITY(MAP504(m, __VA_ARGS__)) +#define MAP506(m, x, ...) m(x) IDENTITY(MAP505(m, __VA_ARGS__)) +#define MAP507(m, x, ...) m(x) IDENTITY(MAP506(m, __VA_ARGS__)) +#define MAP508(m, x, ...) m(x) IDENTITY(MAP507(m, __VA_ARGS__)) +#define MAP509(m, x, ...) m(x) IDENTITY(MAP508(m, __VA_ARGS__)) +#define MAP510(m, x, ...) m(x) IDENTITY(MAP509(m, __VA_ARGS__)) +#define MAP511(m, x, ...) m(x) IDENTITY(MAP510(m, __VA_ARGS__)) +#define MAP512(m, x, ...) m(x) IDENTITY(MAP511(m, __VA_ARGS__)) +#define MAP513(m, x, ...) m(x) IDENTITY(MAP512(m, __VA_ARGS__)) +#define MAP514(m, x, ...) m(x) IDENTITY(MAP513(m, __VA_ARGS__)) +#define MAP515(m, x, ...) m(x) IDENTITY(MAP514(m, __VA_ARGS__)) +#define MAP516(m, x, ...) m(x) IDENTITY(MAP515(m, __VA_ARGS__)) +#define MAP517(m, x, ...) m(x) IDENTITY(MAP516(m, __VA_ARGS__)) +#define MAP518(m, x, ...) m(x) IDENTITY(MAP517(m, __VA_ARGS__)) +#define MAP519(m, x, ...) m(x) IDENTITY(MAP518(m, __VA_ARGS__)) +#define MAP520(m, x, ...) m(x) IDENTITY(MAP519(m, __VA_ARGS__)) +#define MAP521(m, x, ...) m(x) IDENTITY(MAP520(m, __VA_ARGS__)) +#define MAP522(m, x, ...) m(x) IDENTITY(MAP521(m, __VA_ARGS__)) +#define MAP523(m, x, ...) m(x) IDENTITY(MAP522(m, __VA_ARGS__)) +#define MAP524(m, x, ...) m(x) IDENTITY(MAP523(m, __VA_ARGS__)) +#define MAP525(m, x, ...) m(x) IDENTITY(MAP524(m, __VA_ARGS__)) +#define MAP526(m, x, ...) m(x) IDENTITY(MAP525(m, __VA_ARGS__)) +#define MAP527(m, x, ...) m(x) IDENTITY(MAP526(m, __VA_ARGS__)) +#define MAP528(m, x, ...) m(x) IDENTITY(MAP527(m, __VA_ARGS__)) +#define MAP529(m, x, ...) m(x) IDENTITY(MAP528(m, __VA_ARGS__)) +#define MAP530(m, x, ...) m(x) IDENTITY(MAP529(m, __VA_ARGS__)) +#define MAP531(m, x, ...) m(x) IDENTITY(MAP530(m, __VA_ARGS__)) +#define MAP532(m, x, ...) m(x) IDENTITY(MAP531(m, __VA_ARGS__)) +#define MAP533(m, x, ...) m(x) IDENTITY(MAP532(m, __VA_ARGS__)) +#define MAP534(m, x, ...) m(x) IDENTITY(MAP533(m, __VA_ARGS__)) +#define MAP535(m, x, ...) m(x) IDENTITY(MAP534(m, __VA_ARGS__)) +#define MAP536(m, x, ...) m(x) IDENTITY(MAP535(m, __VA_ARGS__)) +#define MAP537(m, x, ...) m(x) IDENTITY(MAP536(m, __VA_ARGS__)) +#define MAP538(m, x, ...) m(x) IDENTITY(MAP537(m, __VA_ARGS__)) +#define MAP539(m, x, ...) m(x) IDENTITY(MAP538(m, __VA_ARGS__)) +#define MAP540(m, x, ...) m(x) IDENTITY(MAP539(m, __VA_ARGS__)) +#define MAP541(m, x, ...) m(x) IDENTITY(MAP540(m, __VA_ARGS__)) +#define MAP542(m, x, ...) m(x) IDENTITY(MAP541(m, __VA_ARGS__)) +#define MAP543(m, x, ...) m(x) IDENTITY(MAP542(m, __VA_ARGS__)) +#define MAP544(m, x, ...) m(x) IDENTITY(MAP543(m, __VA_ARGS__)) +#define MAP545(m, x, ...) m(x) IDENTITY(MAP544(m, __VA_ARGS__)) +#define MAP546(m, x, ...) m(x) IDENTITY(MAP545(m, __VA_ARGS__)) +#define MAP547(m, x, ...) m(x) IDENTITY(MAP546(m, __VA_ARGS__)) +#define MAP548(m, x, ...) m(x) IDENTITY(MAP547(m, __VA_ARGS__)) +#define MAP549(m, x, ...) m(x) IDENTITY(MAP548(m, __VA_ARGS__)) +#define MAP550(m, x, ...) m(x) IDENTITY(MAP549(m, __VA_ARGS__)) +#define MAP551(m, x, ...) m(x) IDENTITY(MAP550(m, __VA_ARGS__)) +#define MAP552(m, x, ...) m(x) IDENTITY(MAP551(m, __VA_ARGS__)) +#define MAP553(m, x, ...) m(x) IDENTITY(MAP552(m, __VA_ARGS__)) +#define MAP554(m, x, ...) m(x) IDENTITY(MAP553(m, __VA_ARGS__)) +#define MAP555(m, x, ...) m(x) IDENTITY(MAP554(m, __VA_ARGS__)) +#define MAP556(m, x, ...) m(x) IDENTITY(MAP555(m, __VA_ARGS__)) +#define MAP557(m, x, ...) m(x) IDENTITY(MAP556(m, __VA_ARGS__)) +#define MAP558(m, x, ...) m(x) IDENTITY(MAP557(m, __VA_ARGS__)) +#define MAP559(m, x, ...) m(x) IDENTITY(MAP558(m, __VA_ARGS__)) +#define MAP560(m, x, ...) m(x) IDENTITY(MAP559(m, __VA_ARGS__)) +#define MAP561(m, x, ...) m(x) IDENTITY(MAP560(m, __VA_ARGS__)) +#define MAP562(m, x, ...) m(x) IDENTITY(MAP561(m, __VA_ARGS__)) +#define MAP563(m, x, ...) m(x) IDENTITY(MAP562(m, __VA_ARGS__)) +#define MAP564(m, x, ...) m(x) IDENTITY(MAP563(m, __VA_ARGS__)) +#define MAP565(m, x, ...) m(x) IDENTITY(MAP564(m, __VA_ARGS__)) +#define MAP566(m, x, ...) m(x) IDENTITY(MAP565(m, __VA_ARGS__)) +#define MAP567(m, x, ...) m(x) IDENTITY(MAP566(m, __VA_ARGS__)) +#define MAP568(m, x, ...) m(x) IDENTITY(MAP567(m, __VA_ARGS__)) +#define MAP569(m, x, ...) m(x) IDENTITY(MAP568(m, __VA_ARGS__)) +#define MAP570(m, x, ...) m(x) IDENTITY(MAP569(m, __VA_ARGS__)) +#define MAP571(m, x, ...) m(x) IDENTITY(MAP570(m, __VA_ARGS__)) +#define MAP572(m, x, ...) m(x) IDENTITY(MAP571(m, __VA_ARGS__)) +#define MAP573(m, x, ...) m(x) IDENTITY(MAP572(m, __VA_ARGS__)) +#define MAP574(m, x, ...) m(x) IDENTITY(MAP573(m, __VA_ARGS__)) +#define MAP575(m, x, ...) m(x) IDENTITY(MAP574(m, __VA_ARGS__)) +#define MAP576(m, x, ...) m(x) IDENTITY(MAP575(m, __VA_ARGS__)) +#define MAP577(m, x, ...) m(x) IDENTITY(MAP576(m, __VA_ARGS__)) +#define MAP578(m, x, ...) m(x) IDENTITY(MAP577(m, __VA_ARGS__)) +#define MAP579(m, x, ...) m(x) IDENTITY(MAP578(m, __VA_ARGS__)) +#define MAP580(m, x, ...) m(x) IDENTITY(MAP579(m, __VA_ARGS__)) +#define MAP581(m, x, ...) m(x) IDENTITY(MAP580(m, __VA_ARGS__)) +#define MAP582(m, x, ...) m(x) IDENTITY(MAP581(m, __VA_ARGS__)) +#define MAP583(m, x, ...) m(x) IDENTITY(MAP582(m, __VA_ARGS__)) +#define MAP584(m, x, ...) m(x) IDENTITY(MAP583(m, __VA_ARGS__)) +#define MAP585(m, x, ...) m(x) IDENTITY(MAP584(m, __VA_ARGS__)) +#define MAP586(m, x, ...) m(x) IDENTITY(MAP585(m, __VA_ARGS__)) +#define MAP587(m, x, ...) m(x) IDENTITY(MAP586(m, __VA_ARGS__)) +#define MAP588(m, x, ...) m(x) IDENTITY(MAP587(m, __VA_ARGS__)) +#define MAP589(m, x, ...) m(x) IDENTITY(MAP588(m, __VA_ARGS__)) +#define MAP590(m, x, ...) m(x) IDENTITY(MAP589(m, __VA_ARGS__)) +#define MAP591(m, x, ...) m(x) IDENTITY(MAP590(m, __VA_ARGS__)) +#define MAP592(m, x, ...) m(x) IDENTITY(MAP591(m, __VA_ARGS__)) +#define MAP593(m, x, ...) m(x) IDENTITY(MAP592(m, __VA_ARGS__)) +#define MAP594(m, x, ...) m(x) IDENTITY(MAP593(m, __VA_ARGS__)) +#define MAP595(m, x, ...) m(x) IDENTITY(MAP594(m, __VA_ARGS__)) +#define MAP596(m, x, ...) m(x) IDENTITY(MAP595(m, __VA_ARGS__)) +#define MAP597(m, x, ...) m(x) IDENTITY(MAP596(m, __VA_ARGS__)) +#define MAP598(m, x, ...) m(x) IDENTITY(MAP597(m, __VA_ARGS__)) +#define MAP599(m, x, ...) m(x) IDENTITY(MAP598(m, __VA_ARGS__)) +#define MAP600(m, x, ...) m(x) IDENTITY(MAP499(m, __VA_ARGS__)) +#define MAP601(m, x, ...) m(x) IDENTITY(MAP600(m, __VA_ARGS__)) +#define MAP602(m, x, ...) m(x) IDENTITY(MAP601(m, __VA_ARGS__)) +#define MAP603(m, x, ...) m(x) IDENTITY(MAP602(m, __VA_ARGS__)) +#define MAP604(m, x, ...) m(x) IDENTITY(MAP603(m, __VA_ARGS__)) +#define MAP605(m, x, ...) m(x) IDENTITY(MAP604(m, __VA_ARGS__)) +#define MAP606(m, x, ...) m(x) IDENTITY(MAP605(m, __VA_ARGS__)) +#define MAP607(m, x, ...) m(x) IDENTITY(MAP606(m, __VA_ARGS__)) +#define MAP608(m, x, ...) m(x) IDENTITY(MAP607(m, __VA_ARGS__)) +#define MAP609(m, x, ...) m(x) IDENTITY(MAP608(m, __VA_ARGS__)) +#define MAP610(m, x, ...) m(x) IDENTITY(MAP609(m, __VA_ARGS__)) +#define MAP611(m, x, ...) m(x) IDENTITY(MAP610(m, __VA_ARGS__)) +#define MAP612(m, x, ...) m(x) IDENTITY(MAP611(m, __VA_ARGS__)) +#define MAP613(m, x, ...) m(x) IDENTITY(MAP612(m, __VA_ARGS__)) +#define MAP614(m, x, ...) m(x) IDENTITY(MAP613(m, __VA_ARGS__)) +#define MAP615(m, x, ...) m(x) IDENTITY(MAP614(m, __VA_ARGS__)) +#define MAP616(m, x, ...) m(x) IDENTITY(MAP615(m, __VA_ARGS__)) +#define MAP617(m, x, ...) m(x) IDENTITY(MAP616(m, __VA_ARGS__)) +#define MAP618(m, x, ...) m(x) IDENTITY(MAP617(m, __VA_ARGS__)) +#define MAP619(m, x, ...) m(x) IDENTITY(MAP618(m, __VA_ARGS__)) +#define MAP620(m, x, ...) m(x) IDENTITY(MAP619(m, __VA_ARGS__)) +#define MAP621(m, x, ...) m(x) IDENTITY(MAP620(m, __VA_ARGS__)) +#define MAP622(m, x, ...) m(x) IDENTITY(MAP621(m, __VA_ARGS__)) +#define MAP623(m, x, ...) m(x) IDENTITY(MAP622(m, __VA_ARGS__)) +#define MAP624(m, x, ...) m(x) IDENTITY(MAP623(m, __VA_ARGS__)) +#define MAP625(m, x, ...) m(x) IDENTITY(MAP624(m, __VA_ARGS__)) +#define MAP626(m, x, ...) m(x) IDENTITY(MAP625(m, __VA_ARGS__)) +#define MAP627(m, x, ...) m(x) IDENTITY(MAP626(m, __VA_ARGS__)) +#define MAP628(m, x, ...) m(x) IDENTITY(MAP627(m, __VA_ARGS__)) +#define MAP629(m, x, ...) m(x) IDENTITY(MAP628(m, __VA_ARGS__)) +#define MAP630(m, x, ...) m(x) IDENTITY(MAP629(m, __VA_ARGS__)) +#define MAP631(m, x, ...) m(x) IDENTITY(MAP630(m, __VA_ARGS__)) +#define MAP632(m, x, ...) m(x) IDENTITY(MAP631(m, __VA_ARGS__)) +#define MAP633(m, x, ...) m(x) IDENTITY(MAP632(m, __VA_ARGS__)) +#define MAP634(m, x, ...) m(x) IDENTITY(MAP633(m, __VA_ARGS__)) +#define MAP635(m, x, ...) m(x) IDENTITY(MAP634(m, __VA_ARGS__)) +#define MAP636(m, x, ...) m(x) IDENTITY(MAP635(m, __VA_ARGS__)) +#define MAP637(m, x, ...) m(x) IDENTITY(MAP636(m, __VA_ARGS__)) +#define MAP638(m, x, ...) m(x) IDENTITY(MAP637(m, __VA_ARGS__)) +#define MAP639(m, x, ...) m(x) IDENTITY(MAP638(m, __VA_ARGS__)) +#define MAP640(m, x, ...) m(x) IDENTITY(MAP639(m, __VA_ARGS__)) +#define MAP641(m, x, ...) m(x) IDENTITY(MAP640(m, __VA_ARGS__)) +#define MAP642(m, x, ...) m(x) IDENTITY(MAP641(m, __VA_ARGS__)) +#define MAP643(m, x, ...) m(x) IDENTITY(MAP642(m, __VA_ARGS__)) +#define MAP644(m, x, ...) m(x) IDENTITY(MAP643(m, __VA_ARGS__)) +#define MAP645(m, x, ...) m(x) IDENTITY(MAP644(m, __VA_ARGS__)) +#define MAP646(m, x, ...) m(x) IDENTITY(MAP645(m, __VA_ARGS__)) +#define MAP647(m, x, ...) m(x) IDENTITY(MAP646(m, __VA_ARGS__)) +#define MAP648(m, x, ...) m(x) IDENTITY(MAP647(m, __VA_ARGS__)) +#define MAP649(m, x, ...) m(x) IDENTITY(MAP648(m, __VA_ARGS__)) +#define MAP650(m, x, ...) m(x) IDENTITY(MAP649(m, __VA_ARGS__)) +#define MAP651(m, x, ...) m(x) IDENTITY(MAP650(m, __VA_ARGS__)) +#define MAP652(m, x, ...) m(x) IDENTITY(MAP651(m, __VA_ARGS__)) +#define MAP653(m, x, ...) m(x) IDENTITY(MAP652(m, __VA_ARGS__)) +#define MAP654(m, x, ...) m(x) IDENTITY(MAP653(m, __VA_ARGS__)) +#define MAP655(m, x, ...) m(x) IDENTITY(MAP654(m, __VA_ARGS__)) +#define MAP656(m, x, ...) m(x) IDENTITY(MAP655(m, __VA_ARGS__)) +#define MAP657(m, x, ...) m(x) IDENTITY(MAP656(m, __VA_ARGS__)) +#define MAP658(m, x, ...) m(x) IDENTITY(MAP657(m, __VA_ARGS__)) +#define MAP659(m, x, ...) m(x) IDENTITY(MAP658(m, __VA_ARGS__)) +#define MAP660(m, x, ...) m(x) IDENTITY(MAP659(m, __VA_ARGS__)) +#define MAP661(m, x, ...) m(x) IDENTITY(MAP660(m, __VA_ARGS__)) +#define MAP662(m, x, ...) m(x) IDENTITY(MAP661(m, __VA_ARGS__)) +#define MAP663(m, x, ...) m(x) IDENTITY(MAP662(m, __VA_ARGS__)) +#define MAP664(m, x, ...) m(x) IDENTITY(MAP663(m, __VA_ARGS__)) +#define MAP665(m, x, ...) m(x) IDENTITY(MAP664(m, __VA_ARGS__)) +#define MAP666(m, x, ...) m(x) IDENTITY(MAP665(m, __VA_ARGS__)) +#define MAP667(m, x, ...) m(x) IDENTITY(MAP666(m, __VA_ARGS__)) +#define MAP668(m, x, ...) m(x) IDENTITY(MAP667(m, __VA_ARGS__)) +#define MAP669(m, x, ...) m(x) IDENTITY(MAP668(m, __VA_ARGS__)) +#define MAP670(m, x, ...) m(x) IDENTITY(MAP669(m, __VA_ARGS__)) +#define MAP671(m, x, ...) m(x) IDENTITY(MAP670(m, __VA_ARGS__)) +#define MAP672(m, x, ...) m(x) IDENTITY(MAP671(m, __VA_ARGS__)) +#define MAP673(m, x, ...) m(x) IDENTITY(MAP672(m, __VA_ARGS__)) +#define MAP674(m, x, ...) m(x) IDENTITY(MAP673(m, __VA_ARGS__)) +#define MAP675(m, x, ...) m(x) IDENTITY(MAP674(m, __VA_ARGS__)) +#define MAP676(m, x, ...) m(x) IDENTITY(MAP675(m, __VA_ARGS__)) +#define MAP677(m, x, ...) m(x) IDENTITY(MAP676(m, __VA_ARGS__)) +#define MAP678(m, x, ...) m(x) IDENTITY(MAP677(m, __VA_ARGS__)) +#define MAP679(m, x, ...) m(x) IDENTITY(MAP678(m, __VA_ARGS__)) +#define MAP680(m, x, ...) m(x) IDENTITY(MAP679(m, __VA_ARGS__)) +#define MAP681(m, x, ...) m(x) IDENTITY(MAP680(m, __VA_ARGS__)) +#define MAP682(m, x, ...) m(x) IDENTITY(MAP681(m, __VA_ARGS__)) +#define MAP683(m, x, ...) m(x) IDENTITY(MAP682(m, __VA_ARGS__)) +#define MAP684(m, x, ...) m(x) IDENTITY(MAP683(m, __VA_ARGS__)) +#define MAP685(m, x, ...) m(x) IDENTITY(MAP684(m, __VA_ARGS__)) +#define MAP686(m, x, ...) m(x) IDENTITY(MAP685(m, __VA_ARGS__)) +#define MAP687(m, x, ...) m(x) IDENTITY(MAP686(m, __VA_ARGS__)) +#define MAP688(m, x, ...) m(x) IDENTITY(MAP687(m, __VA_ARGS__)) +#define MAP689(m, x, ...) m(x) IDENTITY(MAP688(m, __VA_ARGS__)) +#define MAP690(m, x, ...) m(x) IDENTITY(MAP689(m, __VA_ARGS__)) +#define MAP691(m, x, ...) m(x) IDENTITY(MAP690(m, __VA_ARGS__)) +#define MAP692(m, x, ...) m(x) IDENTITY(MAP691(m, __VA_ARGS__)) +#define MAP693(m, x, ...) m(x) IDENTITY(MAP692(m, __VA_ARGS__)) +#define MAP694(m, x, ...) m(x) IDENTITY(MAP693(m, __VA_ARGS__)) +#define MAP695(m, x, ...) m(x) IDENTITY(MAP694(m, __VA_ARGS__)) +#define MAP696(m, x, ...) m(x) IDENTITY(MAP695(m, __VA_ARGS__)) +#define MAP697(m, x, ...) m(x) IDENTITY(MAP696(m, __VA_ARGS__)) +#define MAP698(m, x, ...) m(x) IDENTITY(MAP697(m, __VA_ARGS__)) +#define MAP699(m, x, ...) m(x) IDENTITY(MAP698(m, __VA_ARGS__)) +#define MAP700(m, x, ...) m(x) IDENTITY(MAP499(m, __VA_ARGS__)) +#define MAP701(m, x, ...) m(x) IDENTITY(MAP700(m, __VA_ARGS__)) +#define MAP702(m, x, ...) m(x) IDENTITY(MAP701(m, __VA_ARGS__)) +#define MAP703(m, x, ...) m(x) IDENTITY(MAP702(m, __VA_ARGS__)) +#define MAP704(m, x, ...) m(x) IDENTITY(MAP703(m, __VA_ARGS__)) +#define MAP705(m, x, ...) m(x) IDENTITY(MAP704(m, __VA_ARGS__)) +#define MAP706(m, x, ...) m(x) IDENTITY(MAP705(m, __VA_ARGS__)) +#define MAP707(m, x, ...) m(x) IDENTITY(MAP706(m, __VA_ARGS__)) +#define MAP708(m, x, ...) m(x) IDENTITY(MAP707(m, __VA_ARGS__)) +#define MAP709(m, x, ...) m(x) IDENTITY(MAP708(m, __VA_ARGS__)) +#define MAP710(m, x, ...) m(x) IDENTITY(MAP709(m, __VA_ARGS__)) +#define MAP711(m, x, ...) m(x) IDENTITY(MAP710(m, __VA_ARGS__)) +#define MAP712(m, x, ...) m(x) IDENTITY(MAP711(m, __VA_ARGS__)) +#define MAP713(m, x, ...) m(x) IDENTITY(MAP712(m, __VA_ARGS__)) +#define MAP714(m, x, ...) m(x) IDENTITY(MAP713(m, __VA_ARGS__)) +#define MAP715(m, x, ...) m(x) IDENTITY(MAP714(m, __VA_ARGS__)) +#define MAP716(m, x, ...) m(x) IDENTITY(MAP715(m, __VA_ARGS__)) +#define MAP717(m, x, ...) m(x) IDENTITY(MAP716(m, __VA_ARGS__)) +#define MAP718(m, x, ...) m(x) IDENTITY(MAP717(m, __VA_ARGS__)) +#define MAP719(m, x, ...) m(x) IDENTITY(MAP718(m, __VA_ARGS__)) +#define MAP720(m, x, ...) m(x) IDENTITY(MAP719(m, __VA_ARGS__)) +#define MAP721(m, x, ...) m(x) IDENTITY(MAP720(m, __VA_ARGS__)) +#define MAP722(m, x, ...) m(x) IDENTITY(MAP721(m, __VA_ARGS__)) +#define MAP723(m, x, ...) m(x) IDENTITY(MAP722(m, __VA_ARGS__)) +#define MAP724(m, x, ...) m(x) IDENTITY(MAP723(m, __VA_ARGS__)) +#define MAP725(m, x, ...) m(x) IDENTITY(MAP724(m, __VA_ARGS__)) +#define MAP726(m, x, ...) m(x) IDENTITY(MAP725(m, __VA_ARGS__)) +#define MAP727(m, x, ...) m(x) IDENTITY(MAP726(m, __VA_ARGS__)) +#define MAP728(m, x, ...) m(x) IDENTITY(MAP727(m, __VA_ARGS__)) +#define MAP729(m, x, ...) m(x) IDENTITY(MAP728(m, __VA_ARGS__)) +#define MAP730(m, x, ...) m(x) IDENTITY(MAP729(m, __VA_ARGS__)) +#define MAP731(m, x, ...) m(x) IDENTITY(MAP730(m, __VA_ARGS__)) +#define MAP732(m, x, ...) m(x) IDENTITY(MAP731(m, __VA_ARGS__)) +#define MAP733(m, x, ...) m(x) IDENTITY(MAP732(m, __VA_ARGS__)) +#define MAP734(m, x, ...) m(x) IDENTITY(MAP733(m, __VA_ARGS__)) +#define MAP735(m, x, ...) m(x) IDENTITY(MAP734(m, __VA_ARGS__)) +#define MAP736(m, x, ...) m(x) IDENTITY(MAP735(m, __VA_ARGS__)) +#define MAP737(m, x, ...) m(x) IDENTITY(MAP736(m, __VA_ARGS__)) +#define MAP738(m, x, ...) m(x) IDENTITY(MAP737(m, __VA_ARGS__)) +#define MAP739(m, x, ...) m(x) IDENTITY(MAP738(m, __VA_ARGS__)) +#define MAP740(m, x, ...) m(x) IDENTITY(MAP739(m, __VA_ARGS__)) +#define MAP741(m, x, ...) m(x) IDENTITY(MAP740(m, __VA_ARGS__)) +#define MAP742(m, x, ...) m(x) IDENTITY(MAP741(m, __VA_ARGS__)) +#define MAP743(m, x, ...) m(x) IDENTITY(MAP742(m, __VA_ARGS__)) +#define MAP744(m, x, ...) m(x) IDENTITY(MAP743(m, __VA_ARGS__)) +#define MAP745(m, x, ...) m(x) IDENTITY(MAP744(m, __VA_ARGS__)) +#define MAP746(m, x, ...) m(x) IDENTITY(MAP745(m, __VA_ARGS__)) +#define MAP747(m, x, ...) m(x) IDENTITY(MAP746(m, __VA_ARGS__)) +#define MAP748(m, x, ...) m(x) IDENTITY(MAP747(m, __VA_ARGS__)) +#define MAP749(m, x, ...) m(x) IDENTITY(MAP748(m, __VA_ARGS__)) +#define MAP750(m, x, ...) m(x) IDENTITY(MAP749(m, __VA_ARGS__)) +#define MAP751(m, x, ...) m(x) IDENTITY(MAP750(m, __VA_ARGS__)) +#define MAP752(m, x, ...) m(x) IDENTITY(MAP751(m, __VA_ARGS__)) +#define MAP753(m, x, ...) m(x) IDENTITY(MAP752(m, __VA_ARGS__)) +#define MAP754(m, x, ...) m(x) IDENTITY(MAP753(m, __VA_ARGS__)) +#define MAP755(m, x, ...) m(x) IDENTITY(MAP754(m, __VA_ARGS__)) +#define MAP756(m, x, ...) m(x) IDENTITY(MAP755(m, __VA_ARGS__)) +#define MAP757(m, x, ...) m(x) IDENTITY(MAP756(m, __VA_ARGS__)) +#define MAP758(m, x, ...) m(x) IDENTITY(MAP757(m, __VA_ARGS__)) +#define MAP759(m, x, ...) m(x) IDENTITY(MAP758(m, __VA_ARGS__)) +#define MAP760(m, x, ...) m(x) IDENTITY(MAP759(m, __VA_ARGS__)) +#define MAP761(m, x, ...) m(x) IDENTITY(MAP760(m, __VA_ARGS__)) +#define MAP762(m, x, ...) m(x) IDENTITY(MAP761(m, __VA_ARGS__)) +#define MAP763(m, x, ...) m(x) IDENTITY(MAP762(m, __VA_ARGS__)) +#define MAP764(m, x, ...) m(x) IDENTITY(MAP763(m, __VA_ARGS__)) +#define MAP765(m, x, ...) m(x) IDENTITY(MAP764(m, __VA_ARGS__)) +#define MAP766(m, x, ...) m(x) IDENTITY(MAP765(m, __VA_ARGS__)) +#define MAP767(m, x, ...) m(x) IDENTITY(MAP766(m, __VA_ARGS__)) +#define MAP768(m, x, ...) m(x) IDENTITY(MAP767(m, __VA_ARGS__)) + + +#define EVALUATE_COUNT(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \ + _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \ + _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \ + _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \ + _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \ + _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \ + _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, \ + _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, \ + _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, \ + _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, \ + _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, \ + _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, \ + _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, \ + _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, \ + _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, \ + _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, \ + _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, \ + _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, \ + _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, \ + _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, \ + _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, \ + _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, \ + _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, \ + _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, \ + _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, \ + _251, _252, _253, _254, _255, _256, _257, _258, _259, _260, \ + _261, _262, _263, _264, _265, _266, _267, _268, _269, _270, \ + _271, _272, _273, _274, _275, _276, _277, _278, _279, _280, \ + _281, _282, _283, _284, _285, _286, _287, _288, _289, _290, \ + _291, _292, _293, _294, _295, _296, _297, _298, _299, _300, \ + _301, _302, _303, _304, _305, _306, _307, _308, _309, _310, \ + _311, _312, _313, _314, _315, _316, _317, _318, _319, _320, \ + _321, _322, _323, _324, _325, _326, _327, _328, _329, _330, \ + _331, _332, _333, _334, _335, _336, _337, _338, _339, _340, \ + _341, _342, _343, _344, _345, _346, _347, _348, _349, _350, \ + _351, _352, _353, _354, _355, _356, _357, _358, _359, _360, \ + _361, _362, _363, _364, _365, _366, _367, _368, _369, _370, \ + _371, _372, _373, _374, _375, _376, _377, _378, _379, _380, \ + _381, _382, _383, _384, _385, _386, _387, _388, _389, _390, \ + _391, _392, _393, _394, _395, _396, _397, _398, _399, _400, \ + _401, _402, _403, _404, _405, _406, _407, _408, _409, _410, \ + _411, _412, _413, _414, _415, _416, _417, _418, _419, _420, \ + _421, _422, _423, _424, _425, _426, _427, _428, _429, _430, \ + _431, _432, _433, _434, _435, _436, _437, _438, _439, _440, \ + _441, _442, _443, _444, _445, _446, _447, _448, _449, _450, \ + _451, _452, _453, _454, _455, _456, _457, _458, _459, _460, \ + _461, _462, _463, _464, _465, _466, _467, _468, _469, _470, \ + _471, _472, _473, _474, _475, _476, _477, _478, _479, _480, \ + _481, _482, _483, _484, _485, _486, _487, _488, _489, _490, \ + _491, _492, _493, _494, _495, _496, _497, _498, _499, _500, \ + _501, _502, _503, _504, _505, _506, _507, _508, _509, _510, \ + _511, _512, _513, _514, _515, _516, _517, _518, _519, _520, \ + _521, _522, _523, _524, _525, _526, _527, _528, _529, _530, \ + _531, _532, _533, _534, _535, _536, _537, _538, _539, _540, \ + _541, _542, _543, _544, _545, _546, _547, _548, _549, _550, \ + _551, _552, _553, _554, _555, _556, _557, _558, _559, _560, \ + _561, _562, _563, _564, _565, _566, _567, _568, _569, _570, \ + _571, _572, _573, _574, _575, _576, _577, _578, _579, _580, \ + _581, _582, _583, _584, _585, _586, _587, _588, _589, _590, \ + _591, _592, _593, _594, _595, _596, _597, _598, _599, _600, \ + _601, _602, _603, _604, _605, _606, _607, _608, _609, _610, \ + _611, _612, _613, _614, _615, _616, _617, _618, _619, _620, \ + _621, _622, _623, _624, _625, _626, _627, _628, _629, _630, \ + _631, _632, _633, _634, _635, _636, _637, _638, _639, _640, \ + _641, _642, _643, _644, _645, _646, _647, _648, _649, _650, \ + _651, _652, _653, _654, _655, _656, _657, _658, _659, _660, \ + _661, _662, _663, _664, _665, _666, _667, _668, _669, _670, \ + _671, _672, _673, _674, _675, _676, _677, _678, _679, _680, \ + _681, _682, _683, _684, _685, _686, _687, _688, _689, _690, \ + _691, _692, _693, _694, _695, _696, _697, _698, _699, _700, \ + _701, _702, _703, _704, _705, _706, _707, _708, _709, _710, \ + _711, _712, _713, _714, _715, _716, _717, _718, _719, _720, \ + _721, _722, _723, _724, _725, _726, _727, _728, _729, _730, \ + _731, _732, _733, _734, _735, _736, _737, _738, _739, _740, \ + _741, _742, _743, _744, _745, _746, _747, _748, _749, _750, \ + _751, _752, _753, _754, _755, _756, _757, _758, _759, _760, \ + _761, _762, _763, _764, _765, _766, _767, _768, \ + count, ...) count + +#define COUNT(...) \ + IDENTITY(EVALUATE_COUNT(__VA_ARGS__, 768, 767, 766, 765, 764, 763, 762, 761, \ + 760, 759, 758, 757, 756, 755, 754, 753, 752, 751, \ + 750, 749, 748, 747, 746, 745, 744, 743, 742, 741, \ + 740, 739, 738, 737, 736, 735, 734, 733, 732, 731, \ + 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, \ + 720, 719, 718, 717, 716, 715, 714, 713, 712, 711, \ + 710, 709, 708, 707, 706, 705, 704, 703, 702, 701, \ + 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, \ + 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, \ + 680, 679, 678, 677, 676, 675, 674, 673, 672, 671, \ + 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, \ + 660, 659, 658, 657, 656, 655, 654, 653, 652, 651, \ + 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, \ + 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, \ + 630, 629, 628, 627, 626, 625, 624, 623, 622, 621, \ + 620, 619, 618, 617, 616, 615, 614, 613, 612, 611, \ + 610, 609, 608, 607, 606, 605, 604, 603, 602, 601, \ + 600, 599, 598, 597, 596, 595, 594, 593, 592, 591, \ + 590, 589, 588, 587, 586, 585, 584, 583, 582, 581, \ + 580, 579, 578, 577, 576, 575, 574, 573, 572, 571, \ + 570, 569, 568, 567, 566, 565, 564, 563, 562, 561, \ + 560, 559, 558, 557, 556, 555, 554, 553, 552, 551, \ + 550, 549, 548, 547, 546, 545, 544, 543, 542, 541, \ + 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, \ + 530, 529, 528, 527, 526, 525, 524, 523, 522, 521, \ + 520, 519, 518, 517, 516, 515, 514, 513, 512, 511, \ + 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, \ + 500, 499, 498, 497, 496, 495, 494, 493, 492, 491, \ + 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, \ + 480, 479, 478, 477, 476, 475, 474, 473, 472, 471, \ + 470, 469, 468, 467, 466, 465, 464, 463, 462, 461, \ + 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, \ + 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, \ + 440, 439, 438, 437, 436, 435, 434, 433, 432, 431, \ + 430, 429, 428, 427, 426, 425, 424, 423, 422, 421, \ + 420, 419, 418, 417, 416, 415, 414, 413, 412, 411, \ + 410, 409, 408, 407, 406, 405, 404, 403, 402, 401, \ + 400, 399, 398, 397, 396, 395, 394, 393, 392, 391, \ + 390, 389, 388, 387, 386, 385, 384, 383, 382, 381, \ + 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, \ + 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, \ + 360, 359, 358, 357, 356, 355, 354, 353, 352, 351, \ + 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, \ + 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, \ + 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, \ + 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, \ + 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, \ + 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, \ + 290, 289, 288, 287, 286, 285, 284, 283, 282, 281, \ + 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, \ + 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, \ + 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, \ + 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, \ + 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, \ + 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, \ + 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, \ + 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, \ + 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, \ + 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, \ + 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, \ + 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, \ + 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, \ + 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, \ + 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, \ + 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, \ + 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, \ + 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, \ + 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, \ + 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, \ + 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, \ + 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, \ + 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, \ + 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, \ + 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, \ + 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, \ + 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, \ + 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)) + + +struct ignore_assign { + ignore_assign(int value) : _value(value) { } + operator int() const { return _value; } + + const ignore_assign& operator =(int dummy) { return *this; } + + int _value; +}; + +#define IGNORE_ASSIGN_SINGLE(expression) (ignore_assign)expression, +#define IGNORE_ASSIGN(...) IDENTITY(MAP(IGNORE_ASSIGN_SINGLE, __VA_ARGS__)) + +#define STRINGIZE_SINGLE(expression) #expression, +#define STRINGIZE(...) IDENTITY(MAP(STRINGIZE_SINGLE, __VA_ARGS__)) + + + +#define ENUM(EnumName, ...) \ +struct EnumName { \ + enum _enumerated { __VA_ARGS__ }; \ + \ + _enumerated _value; \ + \ + EnumName(_enumerated value) : _value(value) { } \ + operator _enumerated() const { return _value; } \ + \ + const char* _to_string() const \ + { \ + for (size_t index = 0; index < _count; ++index) { \ + if (_values()[index] == _value) \ + return _names()[index]; \ + } \ + \ + return NULL; \ + } \ + \ + static const size_t _count = IDENTITY(COUNT(__VA_ARGS__)); \ + \ + static const int* _values() \ + { \ + static const int values[] = \ + { IDENTITY(IGNORE_ASSIGN(__VA_ARGS__)) }; \ + return values; \ + } \ + \ + static const char* const* _names() \ + { \ + static const char* const raw_names[] = \ + { IDENTITY(STRINGIZE(__VA_ARGS__)) }; \ + \ + static char* processed_names[_count]; \ + static bool initialized = false; \ + \ + if (!initialized) { \ + for (size_t index = 0; index < _count; ++index) { \ + size_t length = \ + std::strcspn(raw_names[index], " =\t\n\r"); \ + \ + processed_names[index] = new char[length + 1]; \ + \ + strncpy( \ + processed_names[index], raw_names[index], length); \ + processed_names[index][length] = '\0'; \ + } \ + } \ + \ + return processed_names; \ + } \ +}; + + +/* !!! If you are adding new Enums for Events or Params + * Please keep the existing Type_Event_XXX definition (and assign it a value) + * and add your new definition such like Type_NewNotification = XX + */ + +ENUM(ValueID_Index_Alarm, + Type_Start = 0, + Type_Smoke_Alarm = 1, + Type_Carbon_Monoxied = 2, + Type_Carbon_Dixoide = 3, + Type_Heat = 4, + Type_Water = 5, + Type_Access_Control = 6, + Type_Home_Security = 7, + Type_Power_Management = 8, + Type_System = 9, + Type_Emergency = 10, + Type_Clock = 11, + Type_Appliance = 12, + Type_Home_Health = 13, + Type_Siren = 14, + Type_Water_Valve = 15, + Type_Weather = 16, + Type_Irrigation = 17, + Type_Gas = 18, + Type_Event_19, + Type_Event_20, + Type_Event_21, + Type_Event_22, + Type_Event_23, + Type_Event_24, + Type_Event_25, + Type_Event_26, + Type_Event_27, + Type_Event_28, + Type_Event_29, + Type_Event_30, + Type_Event_31, + Type_Event_32, + Type_Event_33, + Type_Event_34, + Type_Event_35, + Type_Event_36, + Type_Event_37, + Type_Event_38, + Type_Event_39, + Type_Event_40, + Type_Event_41, + Type_Event_42, + Type_Event_43, + Type_Event_44, + Type_Event_45, + Type_Event_46, + Type_Event_47, + Type_Event_48, + Type_Event_49, + Type_Event_50, + Type_Event_51, + Type_Event_52, + Type_Event_53, + Type_Event_54, + Type_Event_55, + Type_Event_56, + Type_Event_57, + Type_Event_58, + Type_Event_59, + Type_Event_60, + Type_Event_61, + Type_Event_62, + Type_Event_63, + Type_Event_64, + Type_Event_65, + Type_Event_66, + Type_Event_67, + Type_Event_68, + Type_Event_69, + Type_Event_70, + Type_Event_71, + Type_Event_72, + Type_Event_73, + Type_Event_74, + Type_Event_75, + Type_Event_76, + Type_Event_77, + Type_Event_78, + Type_Event_79, + Type_Event_80, + Type_Event_81, + Type_Event_82, + Type_Event_83, + Type_Event_84, + Type_Event_85, + Type_Event_86, + Type_Event_87, + Type_Event_88, + Type_Event_89, + Type_Event_90, + Type_Event_91, + Type_Event_92, + Type_Event_93, + Type_Event_94, + Type_Event_95, + Type_Event_96, + Type_Event_97, + Type_Event_98, + Type_Event_99, + Type_Event_100, + Type_Event_101, + Type_Event_102, + Type_Event_103, + Type_Event_104, + Type_Event_105, + Type_Event_106, + Type_Event_107, + Type_Event_108, + Type_Event_109, + Type_Event_110, + Type_Event_111, + Type_Event_112, + Type_Event_113, + Type_Event_114, + Type_Event_115, + Type_Event_116, + Type_Event_117, + Type_Event_118, + Type_Event_119, + Type_Event_120, + Type_Event_121, + Type_Event_122, + Type_Event_123, + Type_Event_124, + Type_Event_125, + Type_Event_126, + Type_Event_127, + Type_Event_128, + Type_Event_129, + Type_Event_130, + Type_Event_131, + Type_Event_132, + Type_Event_133, + Type_Event_134, + Type_Event_135, + Type_Event_136, + Type_Event_137, + Type_Event_138, + Type_Event_139, + Type_Event_140, + Type_Event_141, + Type_Event_142, + Type_Event_143, + Type_Event_144, + Type_Event_145, + Type_Event_146, + Type_Event_147, + Type_Event_148, + Type_Event_149, + Type_Event_150, + Type_Event_151, + Type_Event_152, + Type_Event_153, + Type_Event_154, + Type_Event_155, + Type_Event_156, + Type_Event_157, + Type_Event_158, + Type_Event_159, + Type_Event_160, + Type_Event_161, + Type_Event_162, + Type_Event_163, + Type_Event_164, + Type_Event_165, + Type_Event_166, + Type_Event_167, + Type_Event_168, + Type_Event_169, + Type_Event_170, + Type_Event_171, + Type_Event_172, + Type_Event_173, + Type_Event_174, + Type_Event_175, + Type_Event_176, + Type_Event_177, + Type_Event_178, + Type_Event_179, + Type_Event_180, + Type_Event_181, + Type_Event_182, + Type_Event_183, + Type_Event_184, + Type_Event_185, + Type_Event_186, + Type_Event_187, + Type_Event_188, + Type_Event_189, + Type_Event_190, + Type_Event_191, + Type_Event_192, + Type_Event_193, + Type_Event_194, + Type_Event_195, + Type_Event_196, + Type_Event_197, + Type_Event_198, + Type_Event_199, + Type_Event_200, + Type_Event_201, + Type_Event_202, + Type_Event_203, + Type_Event_204, + Type_Event_205, + Type_Event_206, + Type_Event_207, + Type_Event_208, + Type_Event_209, + Type_Event_210, + Type_Event_211, + Type_Event_212, + Type_Event_213, + Type_Event_214, + Type_Event_215, + Type_Event_216, + Type_Event_217, + Type_Event_218, + Type_Event_219, + Type_Event_220, + Type_Event_221, + Type_Event_222, + Type_Event_223, + Type_Event_224, + Type_Event_225, + Type_Event_226, + Type_Event_227, + Type_Event_228, + Type_Event_229, + Type_Event_230, + Type_Event_231, + Type_Event_232, + Type_Event_233, + Type_Event_234, + Type_Event_235, + Type_Event_236, + Type_Event_237, + Type_Event_238, + Type_Event_239, + Type_Event_240, + Type_Event_241, + Type_Event_242, + Type_Event_243, + Type_Event_244, + Type_Event_245, + Type_Event_246, + Type_Event_247, + Type_Event_248, + Type_Event_249, + Type_Event_250, + Type_Event_251, + Type_Event_252, + Type_Event_253, + Type_Event_254, + Type_Event_255, + Type_Event_Param_Previous_Event = 256, + Type_Event_Param_Location = 257, + Type_Event_Param_Result = 258, + Type_Event_Param_Threshold = 259, + Type_Event_Param_UserCode = 260, + Type_Event_Param_261 = 261, + Type_Event_Param_Progress = 262, + Type_Event_Param_Mode = 263, + Type_Event_Param_Obstruction = 264, + Type_Event_Param_Sensor_ID = 265, + Type_Event_Param_Error_Code = 266, + Type_Event_Param_Duration = 267, + Type_Event_Param_Pollution_Level = 268, + Type_Event_Param_Status = 269, + Type_Event_Param_Schedule_ID = 270, + Type_Event_Param_Valve_Table_ID = 271, + Type_Event_Param_272, + Type_Event_Param_273, + Type_Event_Param_274, + Type_Event_Param_275, + Type_Event_Param_276, + Type_Event_Param_277, + Type_Event_Param_278, + Type_Event_Param_279, + Type_Event_Param_280, + Type_Event_Param_281, + Type_Event_Param_282, + Type_Event_Param_283, + Type_Event_Param_284, + Type_Event_Param_285, + Type_Event_Param_286, + Type_Event_Param_287, + Type_Event_Param_288, + Type_Event_Param_289, + Type_Event_Param_290, + Type_Event_Param_291, + Type_Event_Param_292, + Type_Event_Param_293, + Type_Event_Param_294, + Type_Event_Param_295, + Type_Event_Param_296, + Type_Event_Param_297, + Type_Event_Param_298, + Type_Event_Param_299, + Type_Event_Param_300, + Type_Event_Param_301, + Type_Event_Param_302, + Type_Event_Param_303, + Type_Event_Param_304, + Type_Event_Param_305, + Type_Event_Param_306, + Type_Event_Param_307, + Type_Event_Param_308, + Type_Event_Param_309, + Type_Event_Param_310, + Type_Event_Param_311, + Type_Event_Param_312, + Type_Event_Param_313, + Type_Event_Param_314, + Type_Event_Param_315, + Type_Event_Param_316, + Type_Event_Param_317, + Type_Event_Param_318, + Type_Event_Param_319, + Type_Event_Param_320, + Type_Event_Param_321, + Type_Event_Param_322, + Type_Event_Param_323, + Type_Event_Param_324, + Type_Event_Param_325, + Type_Event_Param_326, + Type_Event_Param_327, + Type_Event_Param_328, + Type_Event_Param_329, + Type_Event_Param_330, + Type_Event_Param_331, + Type_Event_Param_332, + Type_Event_Param_333, + Type_Event_Param_334, + Type_Event_Param_335, + Type_Event_Param_336, + Type_Event_Param_337, + Type_Event_Param_338, + Type_Event_Param_339, + Type_Event_Param_340, + Type_Event_Param_341, + Type_Event_Param_342, + Type_Event_Param_343, + Type_Event_Param_344, + Type_Event_Param_345, + Type_Event_Param_346, + Type_Event_Param_347, + Type_Event_Param_348, + Type_Event_Param_349, + Type_Event_Param_350, + Type_Event_Param_351, + Type_Event_Param_352, + Type_Event_Param_353, + Type_Event_Param_354, + Type_Event_Param_355, + Type_Event_Param_356, + Type_Event_Param_357, + Type_Event_Param_358, + Type_Event_Param_359, + Type_Event_Param_360, + Type_Event_Param_361, + Type_Event_Param_362, + Type_Event_Param_363, + Type_Event_Param_364, + Type_Event_Param_365, + Type_Event_Param_366, + Type_Event_Param_367, + Type_Event_Param_368, + Type_Event_Param_369, + Type_Event_Param_370, + Type_Event_Param_371, + Type_Event_Param_372, + Type_Event_Param_373, + Type_Event_Param_374, + Type_Event_Param_375, + Type_Event_Param_376, + Type_Event_Param_377, + Type_Event_Param_378, + Type_Event_Param_379, + Type_Event_Param_380, + Type_Event_Param_381, + Type_Event_Param_382, + Type_Event_Param_383, + Type_Event_Param_384, + Type_Event_Param_385, + Type_Event_Param_386, + Type_Event_Param_387, + Type_Event_Param_388, + Type_Event_Param_389, + Type_Event_Param_390, + Type_Event_Param_391, + Type_Event_Param_392, + Type_Event_Param_393, + Type_Event_Param_394, + Type_Event_Param_395, + Type_Event_Param_396, + Type_Event_Param_397, + Type_Event_Param_398, + Type_Event_Param_399, + Type_Event_Param_400, + Type_Event_Param_401, + Type_Event_Param_402, + Type_Event_Param_403, + Type_Event_Param_404, + Type_Event_Param_405, + Type_Event_Param_406, + Type_Event_Param_407, + Type_Event_Param_408, + Type_Event_Param_409, + Type_Event_Param_410, + Type_Event_Param_411, + Type_Event_Param_412, + Type_Event_Param_413, + Type_Event_Param_414, + Type_Event_Param_415, + Type_Event_Param_416, + Type_Event_Param_417, + Type_Event_Param_418, + Type_Event_Param_419, + Type_Event_Param_420, + Type_Event_Param_421, + Type_Event_Param_422, + Type_Event_Param_423, + Type_Event_Param_424, + Type_Event_Param_425, + Type_Event_Param_426, + Type_Event_Param_427, + Type_Event_Param_428, + Type_Event_Param_429, + Type_Event_Param_430, + Type_Event_Param_431, + Type_Event_Param_432, + Type_Event_Param_433, + Type_Event_Param_434, + Type_Event_Param_435, + Type_Event_Param_436, + Type_Event_Param_437, + Type_Event_Param_438, + Type_Event_Param_439, + Type_Event_Param_440, + Type_Event_Param_441, + Type_Event_Param_442, + Type_Event_Param_443, + Type_Event_Param_444, + Type_Event_Param_445, + Type_Event_Param_446, + Type_Event_Param_447, + Type_Event_Param_448, + Type_Event_Param_449, + Type_Event_Param_450, + Type_Event_Param_451, + Type_Event_Param_452, + Type_Event_Param_453, + Type_Event_Param_454, + Type_Event_Param_455, + Type_Event_Param_456, + Type_Event_Param_457, + Type_Event_Param_458, + Type_Event_Param_459, + Type_Event_Param_460, + Type_Event_Param_461, + Type_Event_Param_462, + Type_Event_Param_463, + Type_Event_Param_464, + Type_Event_Param_465, + Type_Event_Param_466, + Type_Event_Param_467, + Type_Event_Param_468, + Type_Event_Param_469, + Type_Event_Param_470, + Type_Event_Param_471, + Type_Event_Param_472, + Type_Event_Param_473, + Type_Event_Param_474, + Type_Event_Param_475, + Type_Event_Param_476, + Type_Event_Param_477, + Type_Event_Param_478, + Type_Event_Param_479, + Type_Event_Param_480, + Type_Event_Param_481, + Type_Event_Param_482, + Type_Event_Param_483, + Type_Event_Param_484, + Type_Event_Param_485, + Type_Event_Param_486, + Type_Event_Param_487, + Type_Event_Param_488, + Type_Event_Param_489, + Type_Event_Param_490, + Type_Event_Param_491, + Type_Event_Param_492, + Type_Event_Param_493, + Type_Event_Param_494, + Type_Event_Param_495, + Type_Event_Param_496, + Type_Event_Param_497, + Type_Event_Param_498, + Type_Event_Param_499, + Type_Event_Param_500, + Type_Event_Param_501, + Type_Event_Param_502, + Type_Event_Param_503, + Type_Event_Param_504, + Type_Event_Param_505, + Type_Event_Param_506, + Type_Event_Param_507, + Type_Event_Param_508, + Type_Event_Param_509, + Type_Event_Param_510, + Type_Event_Param_511, + Type_v1 = 512, + Level_v1 = 513, + AutoClearEvents = 514 + ); +ENUM(ValueID_Index_AssociationCommandConfiguration, + MaxCommandLength = 0, + CommandsAreValues = 1, + CommandsAreConfigurable = 2, + NumFreeCommands = 3, + MaxCommands = 4 + ); +ENUM(ValueID_Index_BarrierOperator, + Command = 0, + Label = 1, + SupportedSignals = 2, + Audible = 3, + Visual = 4 + ); +ENUM(ValueID_Index_Basic, + Set = 0 + ); +ENUM(ValueID_Index_BasicWindowCovering, + Open = 0, + Close = 1 + ); +ENUM(ValueID_Index_Battery, + Level = 0 + ); +ENUM(ValueID_Index_CentralScene, + Scene_1 = 1, + Scene_2, + Scene_3, + Scene_4, + Scene_5, + Scene_6, + Scene_7, + Scene_8, + Scene_9, + Scene_10, + Scene_11, + Scene_12, + Scene_13, + Scene_14, + Scene_15, + Scene_16, + Scene_17, + Scene_18, + Scene_19, + Scene_20, + Scene_21, + Scene_22, + Scene_23, + Scene_24, + Scene_25, + Scene_26, + Scene_27, + Scene_28, + Scene_29, + Scene_30, + Scene_31, + Scene_32, + Scene_33, + Scene_34, + Scene_35, + Scene_36, + Scene_37, + Scene_38, + Scene_39, + Scene_40, + Scene_41, + Scene_42, + Scene_43, + Scene_44, + Scene_45, + Scene_46, + Scene_47, + Scene_48, + Scene_49, + Scene_50, + Scene_51, + Scene_52, + Scene_53, + Scene_54, + Scene_55, + Scene_56, + Scene_57, + Scene_58, + Scene_59, + Scene_60, + Scene_61, + Scene_62, + Scene_63, + Scene_64, + Scene_65, + Scene_66, + Scene_67, + Scene_68, + Scene_69, + Scene_70, + Scene_71, + Scene_72, + Scene_73, + Scene_74, + Scene_75, + Scene_76, + Scene_77, + Scene_78, + Scene_79, + Scene_80, + Scene_81, + Scene_82, + Scene_83, + Scene_84, + Scene_85, + Scene_86, + Scene_87, + Scene_88, + Scene_89, + Scene_90, + Scene_91, + Scene_92, + Scene_93, + Scene_94, + Scene_95, + Scene_96, + Scene_97, + Scene_98, + Scene_99, + Scene_100, + Scene_101, + Scene_102, + Scene_103, + Scene_104, + Scene_105, + Scene_106, + Scene_107, + Scene_108, + Scene_109, + Scene_110, + Scene_111, + Scene_112, + Scene_113, + Scene_114, + Scene_115, + Scene_116, + Scene_117, + Scene_118, + Scene_119, + Scene_120, + Scene_121, + Scene_122, + Scene_123, + Scene_124, + Scene_125, + Scene_126, + Scene_127, + Scene_128, + Scene_129, + Scene_130, + Scene_131, + Scene_132, + Scene_133, + Scene_134, + Scene_135, + Scene_136, + Scene_137, + Scene_138, + Scene_139, + Scene_140, + Scene_141, + Scene_142, + Scene_143, + Scene_144, + Scene_145, + Scene_146, + Scene_147, + Scene_148, + Scene_149, + Scene_150, + Scene_151, + Scene_152, + Scene_153, + Scene_154, + Scene_155, + Scene_156, + Scene_157, + Scene_158, + Scene_159, + Scene_160, + Scene_161, + Scene_162, + Scene_163, + Scene_164, + Scene_165, + Scene_166, + Scene_167, + Scene_168, + Scene_169, + Scene_170, + Scene_171, + Scene_172, + Scene_173, + Scene_174, + Scene_175, + Scene_176, + Scene_177, + Scene_178, + Scene_179, + Scene_180, + Scene_181, + Scene_182, + Scene_183, + Scene_184, + Scene_185, + Scene_186, + Scene_187, + Scene_188, + Scene_189, + Scene_190, + Scene_191, + Scene_192, + Scene_193, + Scene_194, + Scene_195, + Scene_196, + Scene_197, + Scene_198, + Scene_199, + Scene_200, + Scene_201, + Scene_202, + Scene_203, + Scene_204, + Scene_205, + Scene_206, + Scene_207, + Scene_208, + Scene_209, + Scene_210, + Scene_211, + Scene_212, + Scene_213, + Scene_214, + Scene_215, + Scene_216, + Scene_217, + Scene_218, + Scene_219, + Scene_220, + Scene_221, + Scene_222, + Scene_223, + Scene_224, + Scene_225, + Scene_226, + Scene_227, + Scene_228, + Scene_229, + Scene_230, + Scene_231, + Scene_232, + Scene_233, + Scene_234, + Scene_235, + Scene_236, + Scene_237, + Scene_238, + Scene_239, + Scene_240, + Scene_241, + Scene_242, + Scene_243, + Scene_244, + Scene_245, + Scene_246, + Scene_247, + Scene_248, + Scene_249, + Scene_250, + Scene_251, + Scene_252, + Scene_253, + Scene_254, + Scene_255, + SceneCount = 256, + ClearSceneTimeout = 257 + ); +ENUM(ValueID_Index_ClimateControlSchedule, + DOW_Monday = 1, + DOW_Tuesday = 2, + DOW_Wednesday = 3, + DOW_Thursday = 4, + DOW_Friday = 5, + DOW_Saturday = 6, + DOW_Sunday = 7, + OverrideState = 8, + OverrideSetback = 9 + ); +ENUM(ValueID_Index_Clock, + Day = 0, + Hour = 1, + Minute = 2 + ); +ENUM(ValueID_Index_Color, + Color = 0, + Index = 1, + Channels_Capabilities = 2, + Duration = 4 + ); +ENUM(ValueID_Index_Configuration, + Parameter_1 = 1, + Parameter_2, + Parameter_3, + Parameter_4, + Parameter_5, + Parameter_6, + Parameter_7, + Parameter_8, + Parameter_9, + Parameter_10, + Parameter_11, + Parameter_12, + Parameter_13, + Parameter_14, + Parameter_15, + Parameter_16, + Parameter_17, + Parameter_18, + Parameter_19, + Parameter_20, + Parameter_21, + Parameter_22, + Parameter_23, + Parameter_24, + Parameter_25, + Parameter_26, + Parameter_27, + Parameter_28, + Parameter_29, + Parameter_30, + Parameter_31, + Parameter_32, + Parameter_33, + Parameter_34, + Parameter_35, + Parameter_36, + Parameter_37, + Parameter_38, + Parameter_39, + Parameter_40, + Parameter_41, + Parameter_42, + Parameter_43, + Parameter_44, + Parameter_45, + Parameter_46, + Parameter_47, + Parameter_48, + Parameter_49, + Parameter_50, + Parameter_51, + Parameter_52, + Parameter_53, + Parameter_54, + Parameter_55, + Parameter_56, + Parameter_57, + Parameter_58, + Parameter_59, + Parameter_60, + Parameter_61, + Parameter_62, + Parameter_63, + Parameter_64, + Parameter_65, + Parameter_66, + Parameter_67, + Parameter_68, + Parameter_69, + Parameter_70, + Parameter_71, + Parameter_72, + Parameter_73, + Parameter_74, + Parameter_75, + Parameter_76, + Parameter_77, + Parameter_78, + Parameter_79, + Parameter_80, + Parameter_81, + Parameter_82, + Parameter_83, + Parameter_84, + Parameter_85, + Parameter_86, + Parameter_87, + Parameter_88, + Parameter_89, + Parameter_90, + Parameter_91, + Parameter_92, + Parameter_93, + Parameter_94, + Parameter_95, + Parameter_96, + Parameter_97, + Parameter_98, + Parameter_99, + Parameter_100, + Parameter_101, + Parameter_102, + Parameter_103, + Parameter_104, + Parameter_105, + Parameter_106, + Parameter_107, + Parameter_108, + Parameter_109, + Parameter_110, + Parameter_111, + Parameter_112, + Parameter_113, + Parameter_114, + Parameter_115, + Parameter_116, + Parameter_117, + Parameter_118, + Parameter_119, + Parameter_120, + Parameter_121, + Parameter_122, + Parameter_123, + Parameter_124, + Parameter_125, + Parameter_126, + Parameter_127, + Parameter_128, + Parameter_129, + Parameter_130, + Parameter_131, + Parameter_132, + Parameter_133, + Parameter_134, + Parameter_135, + Parameter_136, + Parameter_137, + Parameter_138, + Parameter_139, + Parameter_140, + Parameter_141, + Parameter_142, + Parameter_143, + Parameter_144, + Parameter_145, + Parameter_146, + Parameter_147, + Parameter_148, + Parameter_149, + Parameter_150, + Parameter_151, + Parameter_152, + Parameter_153, + Parameter_154, + Parameter_155, + Parameter_156, + Parameter_157, + Parameter_158, + Parameter_159, + Parameter_160, + Parameter_161, + Parameter_162, + Parameter_163, + Parameter_164, + Parameter_165, + Parameter_166, + Parameter_167, + Parameter_168, + Parameter_169, + Parameter_170, + Parameter_171, + Parameter_172, + Parameter_173, + Parameter_174, + Parameter_175, + Parameter_176, + Parameter_177, + Parameter_178, + Parameter_179, + Parameter_180, + Parameter_181, + Parameter_182, + Parameter_183, + Parameter_184, + Parameter_185, + Parameter_186, + Parameter_187, + Parameter_188, + Parameter_189, + Parameter_190, + Parameter_191, + Parameter_192, + Parameter_193, + Parameter_194, + Parameter_195, + Parameter_196, + Parameter_197, + Parameter_198, + Parameter_199, + Parameter_200, + Parameter_201, + Parameter_202, + Parameter_203, + Parameter_204, + Parameter_205, + Parameter_206, + Parameter_207, + Parameter_208, + Parameter_209, + Parameter_210, + Parameter_211, + Parameter_212, + Parameter_213, + Parameter_214, + Parameter_215, + Parameter_216, + Parameter_217, + Parameter_218, + Parameter_219, + Parameter_220, + Parameter_221, + Parameter_222, + Parameter_223, + Parameter_224, + Parameter_225, + Parameter_226, + Parameter_227, + Parameter_228, + Parameter_229, + Parameter_230, + Parameter_231, + Parameter_232, + Parameter_233, + Parameter_234, + Parameter_235, + Parameter_236, + Parameter_237, + Parameter_238, + Parameter_239, + Parameter_240, + Parameter_241, + Parameter_242, + Parameter_243, + Parameter_244, + Parameter_245, + Parameter_246, + Parameter_247, + Parameter_248, + Parameter_249, + Parameter_250, + Parameter_251, + Parameter_252, + Parameter_253, + Parameter_254, + Parameter_255 + ); +ENUM(ValueID_Index_ControllerReplication, + NodeId = 0, + Function = 1, + Replicate = 2 + ); +ENUM(ValueID_Index_DoorLock, + Lock = 0, + Lock_Mode = 1, + System_Config_Mode = 2, + System_Config_Minutes = 3, + System_Config_Seconds = 4, + System_Config_OutsideHandles = 5, + System_Config_InsideHandles = 6 + ); +ENUM(ValueID_Index_DoorLockLogging, + System_Config_MaxRecords = 0, + GetRecordNo = 1, + LogRecord = 2 + ); +ENUM(ValueID_Index_EnergyProduction, + Instant = 0, + Total = 1, + Today = 2, + Time = 3 + ); +ENUM(ValueID_Index_Indicator, + Indicator = 0 + ); +ENUM(ValueID_Index_Language, + Language = 0, + Country = 1 + ); +ENUM(ValueID_Index_Lock, + Locked = 0 + ); +ENUM(ValueID_Index_ManufacturerProprietary, + FibaroVenetianBlinds_Blinds = 0, + FibaroVenetianBlinds_Tilt = 1 + ); +ENUM(ValueID_Index_ManufacturerSpecific, + LoadedConfig = 0, + LocalConfig = 1, + LatestConfig = 2, + DeviceID = 3, + SerialNumber = 4 + ); +ENUM(ValueID_Index_Meter, + Meter_1 = 0, + Meter_2, + Meter_3, + Meter_4, + Meter_5, + Meter_6, + Meter_7, + Meter_8, + Meter_9, + Meter_10, + Meter_11, + Meter_12, + Meter_13, + Meter_14, + Meter_15, + Meter_16, + Meter_17, + Meter_18, + Meter_19, + Meter_20, + Meter_21, + Meter_22, + Meter_23, + Meter_24, + Meter_25, + Meter_26, + Meter_27, + Meter_28, + Meter_29, + Meter_30, + Meter_31, + Meter_32, + Exporting = 32, + Reset = 33 + ); +ENUM(ValueID_Index_MeterPulse, + Count = 0 + ); +ENUM(ValueID_Index_PowerLevel, + Powerlevel = 0, + Timeout = 1, + Set = 2, + TestNode = 3, + TestPowerlevel = 4, + TestFrames = 5, + Test = 6, + Report = 7, + TestStatus = 8, + TestAckFrames = 9 + ); +ENUM(ValueID_Index_Protection, + Protection = 0 + ); +ENUM(ValueID_Index_SceneActivation, + SceneID = 0, + Duration = 1 + ); +ENUM(ValueID_Index_Security, + Secured = 0 + ); +ENUM(ValueID_Index_SensorAlarm, + Sensor_1, + Sensor_2, + Sensor_3, + Sensor_4, + Sensor_5, + Sensor_6, + Sensor_7, + Sensor_8, + Sensor_9, + Sensor_10, + Sensor_11, + Sensor_12, + Sensor_13, + Sensor_14, + Sensor_15, + Sensor_16, + Sensor_17, + Sensor_18, + Sensor_19, + Sensor_20, + Sensor_21, + Sensor_22, + Sensor_23, + Sensor_24, + Sensor_25, + Sensor_26, + Sensor_27, + Sensor_28, + Sensor_29, + Sensor_30, + Sensor_31, + Sensor_32, + Sensor_33, + Sensor_34, + Sensor_35, + Sensor_36, + Sensor_37, + Sensor_38, + Sensor_39, + Sensor_40, + Sensor_41, + Sensor_42, + Sensor_43, + Sensor_44, + Sensor_45, + Sensor_46, + Sensor_47, + Sensor_48, + Sensor_49, + Sensor_50, + Sensor_51, + Sensor_52, + Sensor_53, + Sensor_54, + Sensor_55, + Sensor_56, + Sensor_57, + Sensor_58, + Sensor_59, + Sensor_60, + Sensor_61, + Sensor_62, + Sensor_63, + Sensor_64, + Sensor_65, + Sensor_66, + Sensor_67, + Sensor_68, + Sensor_69, + Sensor_70, + Sensor_71, + Sensor_72, + Sensor_73, + Sensor_74, + Sensor_75, + Sensor_76, + Sensor_77, + Sensor_78, + Sensor_79, + Sensor_80, + Sensor_81, + Sensor_82, + Sensor_83, + Sensor_84, + Sensor_85, + Sensor_86, + Sensor_87, + Sensor_88, + Sensor_89, + Sensor_90, + Sensor_91, + Sensor_92, + Sensor_93, + Sensor_94, + Sensor_95, + Sensor_96, + Sensor_97, + Sensor_98, + Sensor_99, + Sensor_100, + Sensor_101, + Sensor_102, + Sensor_103, + Sensor_104, + Sensor_105, + Sensor_106, + Sensor_107, + Sensor_108, + Sensor_109, + Sensor_110, + Sensor_111, + Sensor_112, + Sensor_113, + Sensor_114, + Sensor_115, + Sensor_116, + Sensor_117, + Sensor_118, + Sensor_119, + Sensor_120, + Sensor_121, + Sensor_122, + Sensor_123, + Sensor_124, + Sensor_125, + Sensor_126, + Sensor_127, + Sensor_128, + Sensor_129, + Sensor_130, + Sensor_131, + Sensor_132, + Sensor_133, + Sensor_134, + Sensor_135, + Sensor_136, + Sensor_137, + Sensor_138, + Sensor_139, + Sensor_140, + Sensor_141, + Sensor_142, + Sensor_143, + Sensor_144, + Sensor_145, + Sensor_146, + Sensor_147, + Sensor_148, + Sensor_149, + Sensor_150, + Sensor_151, + Sensor_152, + Sensor_153, + Sensor_154, + Sensor_155, + Sensor_156, + Sensor_157, + Sensor_158, + Sensor_159, + Sensor_160, + Sensor_161, + Sensor_162, + Sensor_163, + Sensor_164, + Sensor_165, + Sensor_166, + Sensor_167, + Sensor_168, + Sensor_169, + Sensor_170, + Sensor_171, + Sensor_172, + Sensor_173, + Sensor_174, + Sensor_175, + Sensor_176, + Sensor_177, + Sensor_178, + Sensor_179, + Sensor_180, + Sensor_181, + Sensor_182, + Sensor_183, + Sensor_184, + Sensor_185, + Sensor_186, + Sensor_187, + Sensor_188, + Sensor_189, + Sensor_190, + Sensor_191, + Sensor_192, + Sensor_193, + Sensor_194, + Sensor_195, + Sensor_196, + Sensor_197, + Sensor_198, + Sensor_199, + Sensor_200, + Sensor_201, + Sensor_202, + Sensor_203, + Sensor_204, + Sensor_205, + Sensor_206, + Sensor_207, + Sensor_208, + Sensor_209, + Sensor_210, + Sensor_211, + Sensor_212, + Sensor_213, + Sensor_214, + Sensor_215, + Sensor_216, + Sensor_217, + Sensor_218, + Sensor_219, + Sensor_220, + Sensor_221, + Sensor_222, + Sensor_223, + Sensor_224, + Sensor_225, + Sensor_226, + Sensor_227, + Sensor_228, + Sensor_229, + Sensor_230, + Sensor_231, + Sensor_232, + Sensor_233, + Sensor_234, + Sensor_235, + Sensor_236, + Sensor_237, + Sensor_238, + Sensor_239, + Sensor_240, + Sensor_241, + Sensor_242, + Sensor_243, + Sensor_244, + Sensor_245, + Sensor_246, + Sensor_247, + Sensor_248, + Sensor_249, + Sensor_250, + Sensor_251, + Sensor_252, + Sensor_253, + Sensor_254, + Sensor_255 + ); +ENUM(ValueID_Index_SensorBinary, + Sensor_1, + Sensor_2, + Sensor_3, + Sensor_4, + Sensor_5, + Sensor_6, + Sensor_7, + Sensor_8, + Sensor_9, + Sensor_10, + Sensor_11, + Sensor_12, + Sensor_13, + Sensor_14, + Sensor_15, + Sensor_16, + Sensor_17, + Sensor_18, + Sensor_19, + Sensor_20, + Sensor_21, + Sensor_22, + Sensor_23, + Sensor_24, + Sensor_25, + Sensor_26, + Sensor_27, + Sensor_28, + Sensor_29, + Sensor_30, + Sensor_31, + Sensor_32, + Sensor_33, + Sensor_34, + Sensor_35, + Sensor_36, + Sensor_37, + Sensor_38, + Sensor_39, + Sensor_40, + Sensor_41, + Sensor_42, + Sensor_43, + Sensor_44, + Sensor_45, + Sensor_46, + Sensor_47, + Sensor_48, + Sensor_49, + Sensor_50, + Sensor_51, + Sensor_52, + Sensor_53, + Sensor_54, + Sensor_55, + Sensor_56, + Sensor_57, + Sensor_58, + Sensor_59, + Sensor_60, + Sensor_61, + Sensor_62, + Sensor_63, + Sensor_64, + Sensor_65, + Sensor_66, + Sensor_67, + Sensor_68, + Sensor_69, + Sensor_70, + Sensor_71, + Sensor_72, + Sensor_73, + Sensor_74, + Sensor_75, + Sensor_76, + Sensor_77, + Sensor_78, + Sensor_79, + Sensor_80, + Sensor_81, + Sensor_82, + Sensor_83, + Sensor_84, + Sensor_85, + Sensor_86, + Sensor_87, + Sensor_88, + Sensor_89, + Sensor_90, + Sensor_91, + Sensor_92, + Sensor_93, + Sensor_94, + Sensor_95, + Sensor_96, + Sensor_97, + Sensor_98, + Sensor_99, + Sensor_100, + Sensor_101, + Sensor_102, + Sensor_103, + Sensor_104, + Sensor_105, + Sensor_106, + Sensor_107, + Sensor_108, + Sensor_109, + Sensor_110, + Sensor_111, + Sensor_112, + Sensor_113, + Sensor_114, + Sensor_115, + Sensor_116, + Sensor_117, + Sensor_118, + Sensor_119, + Sensor_120, + Sensor_121, + Sensor_122, + Sensor_123, + Sensor_124, + Sensor_125, + Sensor_126, + Sensor_127, + Sensor_128, + Sensor_129, + Sensor_130, + Sensor_131, + Sensor_132, + Sensor_133, + Sensor_134, + Sensor_135, + Sensor_136, + Sensor_137, + Sensor_138, + Sensor_139, + Sensor_140, + Sensor_141, + Sensor_142, + Sensor_143, + Sensor_144, + Sensor_145, + Sensor_146, + Sensor_147, + Sensor_148, + Sensor_149, + Sensor_150, + Sensor_151, + Sensor_152, + Sensor_153, + Sensor_154, + Sensor_155, + Sensor_156, + Sensor_157, + Sensor_158, + Sensor_159, + Sensor_160, + Sensor_161, + Sensor_162, + Sensor_163, + Sensor_164, + Sensor_165, + Sensor_166, + Sensor_167, + Sensor_168, + Sensor_169, + Sensor_170, + Sensor_171, + Sensor_172, + Sensor_173, + Sensor_174, + Sensor_175, + Sensor_176, + Sensor_177, + Sensor_178, + Sensor_179, + Sensor_180, + Sensor_181, + Sensor_182, + Sensor_183, + Sensor_184, + Sensor_185, + Sensor_186, + Sensor_187, + Sensor_188, + Sensor_189, + Sensor_190, + Sensor_191, + Sensor_192, + Sensor_193, + Sensor_194, + Sensor_195, + Sensor_196, + Sensor_197, + Sensor_198, + Sensor_199, + Sensor_200, + Sensor_201, + Sensor_202, + Sensor_203, + Sensor_204, + Sensor_205, + Sensor_206, + Sensor_207, + Sensor_208, + Sensor_209, + Sensor_210, + Sensor_211, + Sensor_212, + Sensor_213, + Sensor_214, + Sensor_215, + Sensor_216, + Sensor_217, + Sensor_218, + Sensor_219, + Sensor_220, + Sensor_221, + Sensor_222, + Sensor_223, + Sensor_224, + Sensor_225, + Sensor_226, + Sensor_227, + Sensor_228, + Sensor_229, + Sensor_230, + Sensor_231, + Sensor_232, + Sensor_233, + Sensor_234, + Sensor_235, + Sensor_236, + Sensor_237, + Sensor_238, + Sensor_239, + Sensor_240, + Sensor_241, + Sensor_242, + Sensor_243, + Sensor_244, + Sensor_245, + Sensor_246, + Sensor_247, + Sensor_248, + Sensor_249, + Sensor_250, + Sensor_251, + Sensor_252, + Sensor_253, + Sensor_254, + Sensor_255 + ); +ENUM(ValueID_Index_SensorMultiLevel, + Temperature = 1, + General, + Luminance, + Power, + RelativeHumidity, + Velocity, + Direction, + AtmosphericPressure, + BarometricPressure, + SolarRadiation, + DewPoint, + RainRate, + TideLevel, + Weight, + Voltage, + Current, + CO2, + AirFlow, + TankCapacity, + Distance, + AnglePosition, + Rotation, + WaterTemperature, + SoilTemperature, + SeismicIntensity, + SeismicMagnitude, + Ultraviolet, + ElectricalResistivity, + ElectricalConductivity, + Loudness, + Moisture, + Frequency, + Time, + TargetTemperature, + PM25, + CH2O, + RadonConcentration, + CH4Density, + VOC, + CO, + SoilHumidity, + SoilReactivity, + SoilSalinity, + HeartRate, + BloodPressure, + MuscleMass, + FatMass, + BoneMass, + TBW, + BMR, + BMI, + AccelerationX, + AccelerationY, + AccelerationZ, + SmokeDensity, + WaterFlow, + WaterPressure, + RFSignalStrength, + PM10, + RespiratoryRate, + RelativeModulationLevel, + BoilerWaterTemperature, + DHWTemperature, + OutsideTemperature, + ExhaustTemperature, + WaterChlorineLevel, + WaterAcidity, + WaterOxidation + ); +ENUM(ValueID_Index_SimpleAV, + Command = 0 + ); +ENUM(ValueID_Index_SoundSwitch, + Tone_Count = 0, + Tones = 1, + Volume = 2, + Default_Tone = 3 + ); +ENUM(ValueID_Index_SwitchAll, + SwitchAll = 0 + ); +ENUM(ValueID_Index_SwitchBinary, + Level = 0, + TargetState = 1, + Duration = 2 + ); +ENUM(ValueID_Index_SwitchMultiLevel, + Level = 0, + Bright = 1, + Dim = 2, + IgnoreStartLevel = 3, + StartLevel = 4, + Duration = 5, + Step = 6, + Inc = 7, + Dec = 8, + TargetValue = 9 + ); +ENUM(ValueID_Index_SwitchToggleBinary, + ToggleSwitch = 0 + ); +ENUM(ValueID_Index_SwitchToggleMultilevel, + Level = 0 + ); +ENUM(ValueID_Index_ThermostatFanMode, + FanMode = 0 + ); +ENUM(ValueID_Index_ThermostatFanState, + FanState = 0 + ); +ENUM(ValueID_Index_ThermostatMode, + Mode = 0 + ); +ENUM(ValueID_Index_ThermostatOperatingState, + OperatingState = 0 + ); +ENUM(ValueID_Index_ThermostatSetpoint, + Unused_0 = 0, + Heating, + Cooling, + Unused_3, + Unused_4, + Unused_5, + Unused_6, + Furnace, + DryAir, + MoistAir, + AutoChangeover, + HeatingEcon, + CoolingEcon, + AwayHeating, + CoolingHeating, + Unused_0_Minimum = 100, + Heating_Minimum, + Cooling_Minimum, + Unused_3_Minimum, + Unused_4_Minimum, + Unused_5_Minimum, + Unused_6_Minimum, + Furnace_Minimum, + DryAir_Minimum, + MoistAir_Minimum, + AutoChangeOver_Minimum, + Heating_Econ_Minimum, + Cooling_Econ_Minimum, + Away_Heating_Minimum, + Cooling_Heating_Minimum, + Unused_0_Maximum = 200, + Heating_Maximum, + Cooling_Maximum, + Unused_3_Maximum, + Unused_4_Maximum, + Unused_5_Maximum, + Unused_6_Maximum, + Furnace_Maximum, + DryAir_Maximum, + MoistAir_Maximum, + AutoChangeOver_Maximum, + Heating_Econ_Maximum, + Cooling_Econ_Maximum, + Away_Heating_Maximum, + Cooling_Heating_Maximum + ); +ENUM(ValueID_Index_TimeParameters, + Date = 0, + Time = 1, + Set = 2, + Refresh = 3 + ); +ENUM(ValueID_Index_UserCode, + Enrollment_Code = 0, + Code_1, + Code_2, + Code_3, + Code_4, + Code_5, + Code_6, + Code_7, + Code_8, + Code_9, + Code_10, + Code_11, + Code_12, + Code_13, + Code_14, + Code_15, + Code_16, + Code_17, + Code_18, + Code_19, + Code_20, + Code_21, + Code_22, + Code_23, + Code_24, + Code_25, + Code_26, + Code_27, + Code_28, + Code_29, + Code_30, + Code_31, + Code_32, + Code_33, + Code_34, + Code_35, + Code_36, + Code_37, + Code_38, + Code_39, + Code_40, + Code_41, + Code_42, + Code_43, + Code_44, + Code_45, + Code_46, + Code_47, + Code_48, + Code_49, + Code_50, + Code_51, + Code_52, + Code_53, + Code_54, + Code_55, + Code_56, + Code_57, + Code_58, + Code_59, + Code_60, + Code_61, + Code_62, + Code_63, + Code_64, + Code_65, + Code_66, + Code_67, + Code_68, + Code_69, + Code_70, + Code_71, + Code_72, + Code_73, + Code_74, + Code_75, + Code_76, + Code_77, + Code_78, + Code_79, + Code_80, + Code_81, + Code_82, + Code_83, + Code_84, + Code_85, + Code_86, + Code_87, + Code_88, + Code_89, + Code_90, + Code_91, + Code_92, + Code_93, + Code_94, + Code_95, + Code_96, + Code_97, + Code_98, + Code_99, + Code_100, + Code_101, + Code_102, + Code_103, + Code_104, + Code_105, + Code_106, + Code_107, + Code_108, + Code_109, + Code_110, + Code_111, + Code_112, + Code_113, + Code_114, + Code_115, + Code_116, + Code_117, + Code_118, + Code_119, + Code_120, + Code_121, + Code_122, + Code_123, + Code_124, + Code_125, + Code_126, + Code_127, + Code_128, + Code_129, + Code_130, + Code_131, + Code_132, + Code_133, + Code_134, + Code_135, + Code_136, + Code_137, + Code_138, + Code_139, + Code_140, + Code_141, + Code_142, + Code_143, + Code_144, + Code_145, + Code_146, + Code_147, + Code_148, + Code_149, + Code_150, + Code_151, + Code_152, + Code_153, + Code_154, + Code_155, + Code_156, + Code_157, + Code_158, + Code_159, + Code_160, + Code_161, + Code_162, + Code_163, + Code_164, + Code_165, + Code_166, + Code_167, + Code_168, + Code_169, + Code_170, + Code_171, + Code_172, + Code_173, + Code_174, + Code_175, + Code_176, + Code_177, + Code_178, + Code_179, + Code_180, + Code_181, + Code_182, + Code_183, + Code_184, + Code_185, + Code_186, + Code_187, + Code_188, + Code_189, + Code_190, + Code_191, + Code_192, + Code_193, + Code_194, + Code_195, + Code_196, + Code_197, + Code_198, + Code_199, + Code_200, + Code_201, + Code_202, + Code_203, + Code_204, + Code_205, + Code_206, + Code_207, + Code_208, + Code_209, + Code_210, + Code_211, + Code_212, + Code_213, + Code_214, + Code_215, + Code_216, + Code_217, + Code_218, + Code_219, + Code_220, + Code_221, + Code_222, + Code_223, + Code_224, + Code_225, + Code_226, + Code_227, + Code_228, + Code_229, + Code_230, + Code_231, + Code_232, + Code_233, + Code_234, + Code_235, + Code_236, + Code_237, + Code_238, + Code_239, + Code_240, + Code_241, + Code_242, + Code_243, + Code_244, + Code_245, + Code_246, + Code_247, + Code_248, + Code_249, + Code_250, + Code_251, + Code_252, + Code_253, + Refresh = 255, + RemoveCode = 256, + Count = 257, + RawValue = 258, + RawValueIndex = 259 + ); +ENUM(ValueID_Index_Version, + Library = 0, + Protocol = 1, + Application = 2 + ); +ENUM(ValueID_Index_WakeUp, + Interval = 0, + Min_Interval = 1, + Max_Interval = 2, + Default_Interval = 3, + Interval_Step = 4 + ); +ENUM(ValueID_Index_ZWavePlusInfo, + Version = 0, + InstallerIcon = 1, + UserIcon = 2 + ); +#endif diff --git a/cpp/src/ValueIDIndexesDefines.h b/cpp/src/ValueIDIndexesDefines.h new file mode 100644 index 00000000..7b7e557c --- /dev/null +++ b/cpp/src/ValueIDIndexesDefines.h @@ -0,0 +1,160 @@ +struct ignore_assign { + ignore_assign(int value) : _value(value) { } + operator int() const { return _value; } + + const ignore_assign& operator =(int dummy) { return *this; } + + int _value; +}; +struct ValueID_Index_Alarm { enum _enumerated { Type_Start = 0, Type_Smoke_Alarm = 1, Type_Carbon_Monoxied = 2, Type_Carbon_Dixoide = 3, Type_Heat = 4, Type_Water = 5, Type_Access_Control = 6, Type_Home_Security = 7, Type_Power_Management = 8, Type_System = 9, Type_Emergency = 10, Type_Clock = 11, Type_Appliance = 12, Type_Home_Health = 13, Type_Siren = 14, Type_Water_Valve = 15, Type_Weather = 16, Type_Irrigation = 17, Type_Gas = 18, Type_Event_19, Type_Event_20, Type_Event_21, Type_Event_22, Type_Event_23, Type_Event_24, Type_Event_25, Type_Event_26, Type_Event_27, Type_Event_28, Type_Event_29, Type_Event_30, Type_Event_31, Type_Event_32, Type_Event_33, Type_Event_34, Type_Event_35, Type_Event_36, Type_Event_37, Type_Event_38, Type_Event_39, Type_Event_40, Type_Event_41, Type_Event_42, Type_Event_43, Type_Event_44, Type_Event_45, Type_Event_46, Type_Event_47, Type_Event_48, Type_Event_49, Type_Event_50, Type_Event_51, Type_Event_52, Type_Event_53, Type_Event_54, Type_Event_55, Type_Event_56, Type_Event_57, Type_Event_58, Type_Event_59, Type_Event_60, Type_Event_61, Type_Event_62, Type_Event_63, Type_Event_64, Type_Event_65, Type_Event_66, Type_Event_67, Type_Event_68, Type_Event_69, Type_Event_70, Type_Event_71, Type_Event_72, Type_Event_73, Type_Event_74, Type_Event_75, Type_Event_76, Type_Event_77, Type_Event_78, Type_Event_79, Type_Event_80, Type_Event_81, Type_Event_82, Type_Event_83, Type_Event_84, Type_Event_85, Type_Event_86, Type_Event_87, Type_Event_88, Type_Event_89, Type_Event_90, Type_Event_91, Type_Event_92, Type_Event_93, Type_Event_94, Type_Event_95, Type_Event_96, Type_Event_97, Type_Event_98, Type_Event_99, Type_Event_100, Type_Event_101, Type_Event_102, Type_Event_103, Type_Event_104, Type_Event_105, Type_Event_106, Type_Event_107, Type_Event_108, Type_Event_109, Type_Event_110, Type_Event_111, Type_Event_112, Type_Event_113, Type_Event_114, Type_Event_115, Type_Event_116, Type_Event_117, Type_Event_118, Type_Event_119, Type_Event_120, Type_Event_121, Type_Event_122, Type_Event_123, Type_Event_124, Type_Event_125, Type_Event_126, Type_Event_127, Type_Event_128, Type_Event_129, Type_Event_130, Type_Event_131, Type_Event_132, Type_Event_133, Type_Event_134, Type_Event_135, Type_Event_136, Type_Event_137, Type_Event_138, Type_Event_139, Type_Event_140, Type_Event_141, Type_Event_142, Type_Event_143, Type_Event_144, Type_Event_145, Type_Event_146, Type_Event_147, Type_Event_148, Type_Event_149, Type_Event_150, Type_Event_151, Type_Event_152, Type_Event_153, Type_Event_154, Type_Event_155, Type_Event_156, Type_Event_157, Type_Event_158, Type_Event_159, Type_Event_160, Type_Event_161, Type_Event_162, Type_Event_163, Type_Event_164, Type_Event_165, Type_Event_166, Type_Event_167, Type_Event_168, Type_Event_169, Type_Event_170, Type_Event_171, Type_Event_172, Type_Event_173, Type_Event_174, Type_Event_175, Type_Event_176, Type_Event_177, Type_Event_178, Type_Event_179, Type_Event_180, Type_Event_181, Type_Event_182, Type_Event_183, Type_Event_184, Type_Event_185, Type_Event_186, Type_Event_187, Type_Event_188, Type_Event_189, Type_Event_190, Type_Event_191, Type_Event_192, Type_Event_193, Type_Event_194, Type_Event_195, Type_Event_196, Type_Event_197, Type_Event_198, Type_Event_199, Type_Event_200, Type_Event_201, Type_Event_202, Type_Event_203, Type_Event_204, Type_Event_205, Type_Event_206, Type_Event_207, Type_Event_208, Type_Event_209, Type_Event_210, Type_Event_211, Type_Event_212, Type_Event_213, Type_Event_214, Type_Event_215, Type_Event_216, Type_Event_217, Type_Event_218, Type_Event_219, Type_Event_220, Type_Event_221, Type_Event_222, Type_Event_223, Type_Event_224, Type_Event_225, Type_Event_226, Type_Event_227, Type_Event_228, Type_Event_229, Type_Event_230, Type_Event_231, Type_Event_232, Type_Event_233, Type_Event_234, Type_Event_235, Type_Event_236, Type_Event_237, Type_Event_238, Type_Event_239, Type_Event_240, Type_Event_241, Type_Event_242, Type_Event_243, Type_Event_244, Type_Event_245, Type_Event_246, Type_Event_247, Type_Event_248, Type_Event_249, Type_Event_250, Type_Event_251, Type_Event_252, Type_Event_253, Type_Event_254, Type_Event_255, Type_Event_Param_Previous_Event = 256, Type_Event_Param_Location = 257, Type_Event_Param_Result = 258, Type_Event_Param_Threshold = 259, Type_Event_Param_UserCode = 260, Type_Event_Param_261 = 261, Type_Event_Param_Progress = 262, Type_Event_Param_Mode = 263, Type_Event_Param_Obstruction = 264, Type_Event_Param_Sensor_ID = 265, Type_Event_Param_Error_Code = 266, Type_Event_Param_Duration = 267, Type_Event_Param_Pollution_Level = 268, Type_Event_Param_Status = 269, Type_Event_Param_Schedule_ID = 270, Type_Event_Param_Valve_Table_ID = 271, Type_Event_Param_272, Type_Event_Param_273, Type_Event_Param_274, Type_Event_Param_275, Type_Event_Param_276, Type_Event_Param_277, Type_Event_Param_278, Type_Event_Param_279, Type_Event_Param_280, Type_Event_Param_281, Type_Event_Param_282, Type_Event_Param_283, Type_Event_Param_284, Type_Event_Param_285, Type_Event_Param_286, Type_Event_Param_287, Type_Event_Param_288, Type_Event_Param_289, Type_Event_Param_290, Type_Event_Param_291, Type_Event_Param_292, Type_Event_Param_293, Type_Event_Param_294, Type_Event_Param_295, Type_Event_Param_296, Type_Event_Param_297, Type_Event_Param_298, Type_Event_Param_299, Type_Event_Param_300, Type_Event_Param_301, Type_Event_Param_302, Type_Event_Param_303, Type_Event_Param_304, Type_Event_Param_305, Type_Event_Param_306, Type_Event_Param_307, Type_Event_Param_308, Type_Event_Param_309, Type_Event_Param_310, Type_Event_Param_311, Type_Event_Param_312, Type_Event_Param_313, Type_Event_Param_314, Type_Event_Param_315, Type_Event_Param_316, Type_Event_Param_317, Type_Event_Param_318, Type_Event_Param_319, Type_Event_Param_320, Type_Event_Param_321, Type_Event_Param_322, Type_Event_Param_323, Type_Event_Param_324, Type_Event_Param_325, Type_Event_Param_326, Type_Event_Param_327, Type_Event_Param_328, Type_Event_Param_329, Type_Event_Param_330, Type_Event_Param_331, Type_Event_Param_332, Type_Event_Param_333, Type_Event_Param_334, Type_Event_Param_335, Type_Event_Param_336, Type_Event_Param_337, Type_Event_Param_338, Type_Event_Param_339, Type_Event_Param_340, Type_Event_Param_341, Type_Event_Param_342, Type_Event_Param_343, Type_Event_Param_344, Type_Event_Param_345, Type_Event_Param_346, Type_Event_Param_347, Type_Event_Param_348, Type_Event_Param_349, Type_Event_Param_350, Type_Event_Param_351, Type_Event_Param_352, Type_Event_Param_353, Type_Event_Param_354, Type_Event_Param_355, Type_Event_Param_356, Type_Event_Param_357, Type_Event_Param_358, Type_Event_Param_359, Type_Event_Param_360, Type_Event_Param_361, Type_Event_Param_362, Type_Event_Param_363, Type_Event_Param_364, Type_Event_Param_365, Type_Event_Param_366, Type_Event_Param_367, Type_Event_Param_368, Type_Event_Param_369, Type_Event_Param_370, Type_Event_Param_371, Type_Event_Param_372, Type_Event_Param_373, Type_Event_Param_374, Type_Event_Param_375, Type_Event_Param_376, Type_Event_Param_377, Type_Event_Param_378, Type_Event_Param_379, Type_Event_Param_380, Type_Event_Param_381, Type_Event_Param_382, Type_Event_Param_383, Type_Event_Param_384, Type_Event_Param_385, Type_Event_Param_386, Type_Event_Param_387, Type_Event_Param_388, Type_Event_Param_389, Type_Event_Param_390, Type_Event_Param_391, Type_Event_Param_392, Type_Event_Param_393, Type_Event_Param_394, Type_Event_Param_395, Type_Event_Param_396, Type_Event_Param_397, Type_Event_Param_398, Type_Event_Param_399, Type_Event_Param_400, Type_Event_Param_401, Type_Event_Param_402, Type_Event_Param_403, Type_Event_Param_404, Type_Event_Param_405, Type_Event_Param_406, Type_Event_Param_407, Type_Event_Param_408, Type_Event_Param_409, Type_Event_Param_410, Type_Event_Param_411, Type_Event_Param_412, Type_Event_Param_413, Type_Event_Param_414, Type_Event_Param_415, Type_Event_Param_416, Type_Event_Param_417, Type_Event_Param_418, Type_Event_Param_419, Type_Event_Param_420, Type_Event_Param_421, Type_Event_Param_422, Type_Event_Param_423, Type_Event_Param_424, Type_Event_Param_425, Type_Event_Param_426, Type_Event_Param_427, Type_Event_Param_428, Type_Event_Param_429, Type_Event_Param_430, Type_Event_Param_431, Type_Event_Param_432, Type_Event_Param_433, Type_Event_Param_434, Type_Event_Param_435, Type_Event_Param_436, Type_Event_Param_437, Type_Event_Param_438, Type_Event_Param_439, Type_Event_Param_440, Type_Event_Param_441, Type_Event_Param_442, Type_Event_Param_443, Type_Event_Param_444, Type_Event_Param_445, Type_Event_Param_446, Type_Event_Param_447, Type_Event_Param_448, Type_Event_Param_449, Type_Event_Param_450, Type_Event_Param_451, Type_Event_Param_452, Type_Event_Param_453, Type_Event_Param_454, Type_Event_Param_455, Type_Event_Param_456, Type_Event_Param_457, Type_Event_Param_458, Type_Event_Param_459, Type_Event_Param_460, Type_Event_Param_461, Type_Event_Param_462, Type_Event_Param_463, Type_Event_Param_464, Type_Event_Param_465, Type_Event_Param_466, Type_Event_Param_467, Type_Event_Param_468, Type_Event_Param_469, Type_Event_Param_470, Type_Event_Param_471, Type_Event_Param_472, Type_Event_Param_473, Type_Event_Param_474, Type_Event_Param_475, Type_Event_Param_476, Type_Event_Param_477, Type_Event_Param_478, Type_Event_Param_479, Type_Event_Param_480, Type_Event_Param_481, Type_Event_Param_482, Type_Event_Param_483, Type_Event_Param_484, Type_Event_Param_485, Type_Event_Param_486, Type_Event_Param_487, Type_Event_Param_488, Type_Event_Param_489, Type_Event_Param_490, Type_Event_Param_491, Type_Event_Param_492, Type_Event_Param_493, Type_Event_Param_494, Type_Event_Param_495, Type_Event_Param_496, Type_Event_Param_497, Type_Event_Param_498, Type_Event_Param_499, Type_Event_Param_500, Type_Event_Param_501, Type_Event_Param_502, Type_Event_Param_503, Type_Event_Param_504, Type_Event_Param_505, Type_Event_Param_506, Type_Event_Param_507, Type_Event_Param_508, Type_Event_Param_509, Type_Event_Param_510, Type_Event_Param_511, Type_v1 = 512, Level_v1 = 513, AutoClearEvents = 514 }; _enumerated _value; ValueID_Index_Alarm(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 515; static const int* _values() { static const int values[] = { (ignore_assign)Type_Start = 0, (ignore_assign)Type_Smoke_Alarm = 1, (ignore_assign)Type_Carbon_Monoxied = 2, (ignore_assign)Type_Carbon_Dixoide = 3, (ignore_assign)Type_Heat = 4, (ignore_assign)Type_Water = 5, (ignore_assign)Type_Access_Control = 6, (ignore_assign)Type_Home_Security = 7, (ignore_assign)Type_Power_Management = 8, (ignore_assign)Type_System = 9, (ignore_assign)Type_Emergency = 10, (ignore_assign)Type_Clock = 11, (ignore_assign)Type_Appliance = 12, (ignore_assign)Type_Home_Health = 13, (ignore_assign)Type_Siren = 14, (ignore_assign)Type_Water_Valve = 15, (ignore_assign)Type_Weather = 16, (ignore_assign)Type_Irrigation = 17, (ignore_assign)Type_Gas = 18, (ignore_assign)Type_Event_19, (ignore_assign)Type_Event_20, (ignore_assign)Type_Event_21, (ignore_assign)Type_Event_22, (ignore_assign)Type_Event_23, (ignore_assign)Type_Event_24, (ignore_assign)Type_Event_25, (ignore_assign)Type_Event_26, (ignore_assign)Type_Event_27, (ignore_assign)Type_Event_28, (ignore_assign)Type_Event_29, (ignore_assign)Type_Event_30, (ignore_assign)Type_Event_31, (ignore_assign)Type_Event_32, (ignore_assign)Type_Event_33, (ignore_assign)Type_Event_34, (ignore_assign)Type_Event_35, (ignore_assign)Type_Event_36, (ignore_assign)Type_Event_37, (ignore_assign)Type_Event_38, (ignore_assign)Type_Event_39, (ignore_assign)Type_Event_40, (ignore_assign)Type_Event_41, (ignore_assign)Type_Event_42, (ignore_assign)Type_Event_43, (ignore_assign)Type_Event_44, (ignore_assign)Type_Event_45, (ignore_assign)Type_Event_46, (ignore_assign)Type_Event_47, (ignore_assign)Type_Event_48, (ignore_assign)Type_Event_49, (ignore_assign)Type_Event_50, (ignore_assign)Type_Event_51, (ignore_assign)Type_Event_52, (ignore_assign)Type_Event_53, (ignore_assign)Type_Event_54, (ignore_assign)Type_Event_55, (ignore_assign)Type_Event_56, (ignore_assign)Type_Event_57, (ignore_assign)Type_Event_58, (ignore_assign)Type_Event_59, (ignore_assign)Type_Event_60, (ignore_assign)Type_Event_61, (ignore_assign)Type_Event_62, (ignore_assign)Type_Event_63, (ignore_assign)Type_Event_64, (ignore_assign)Type_Event_65, (ignore_assign)Type_Event_66, (ignore_assign)Type_Event_67, (ignore_assign)Type_Event_68, (ignore_assign)Type_Event_69, (ignore_assign)Type_Event_70, (ignore_assign)Type_Event_71, (ignore_assign)Type_Event_72, (ignore_assign)Type_Event_73, (ignore_assign)Type_Event_74, (ignore_assign)Type_Event_75, (ignore_assign)Type_Event_76, (ignore_assign)Type_Event_77, (ignore_assign)Type_Event_78, (ignore_assign)Type_Event_79, (ignore_assign)Type_Event_80, (ignore_assign)Type_Event_81, (ignore_assign)Type_Event_82, (ignore_assign)Type_Event_83, (ignore_assign)Type_Event_84, (ignore_assign)Type_Event_85, (ignore_assign)Type_Event_86, (ignore_assign)Type_Event_87, (ignore_assign)Type_Event_88, (ignore_assign)Type_Event_89, (ignore_assign)Type_Event_90, (ignore_assign)Type_Event_91, (ignore_assign)Type_Event_92, (ignore_assign)Type_Event_93, (ignore_assign)Type_Event_94, (ignore_assign)Type_Event_95, (ignore_assign)Type_Event_96, (ignore_assign)Type_Event_97, (ignore_assign)Type_Event_98, (ignore_assign)Type_Event_99, (ignore_assign)Type_Event_100, (ignore_assign)Type_Event_101, (ignore_assign)Type_Event_102, (ignore_assign)Type_Event_103, (ignore_assign)Type_Event_104, (ignore_assign)Type_Event_105, (ignore_assign)Type_Event_106, (ignore_assign)Type_Event_107, (ignore_assign)Type_Event_108, (ignore_assign)Type_Event_109, (ignore_assign)Type_Event_110, (ignore_assign)Type_Event_111, (ignore_assign)Type_Event_112, (ignore_assign)Type_Event_113, (ignore_assign)Type_Event_114, (ignore_assign)Type_Event_115, (ignore_assign)Type_Event_116, (ignore_assign)Type_Event_117, (ignore_assign)Type_Event_118, (ignore_assign)Type_Event_119, (ignore_assign)Type_Event_120, (ignore_assign)Type_Event_121, (ignore_assign)Type_Event_122, (ignore_assign)Type_Event_123, (ignore_assign)Type_Event_124, (ignore_assign)Type_Event_125, (ignore_assign)Type_Event_126, (ignore_assign)Type_Event_127, (ignore_assign)Type_Event_128, (ignore_assign)Type_Event_129, (ignore_assign)Type_Event_130, (ignore_assign)Type_Event_131, (ignore_assign)Type_Event_132, (ignore_assign)Type_Event_133, (ignore_assign)Type_Event_134, (ignore_assign)Type_Event_135, (ignore_assign)Type_Event_136, (ignore_assign)Type_Event_137, (ignore_assign)Type_Event_138, (ignore_assign)Type_Event_139, (ignore_assign)Type_Event_140, (ignore_assign)Type_Event_141, (ignore_assign)Type_Event_142, (ignore_assign)Type_Event_143, (ignore_assign)Type_Event_144, (ignore_assign)Type_Event_145, (ignore_assign)Type_Event_146, (ignore_assign)Type_Event_147, (ignore_assign)Type_Event_148, (ignore_assign)Type_Event_149, (ignore_assign)Type_Event_150, (ignore_assign)Type_Event_151, (ignore_assign)Type_Event_152, (ignore_assign)Type_Event_153, (ignore_assign)Type_Event_154, (ignore_assign)Type_Event_155, (ignore_assign)Type_Event_156, (ignore_assign)Type_Event_157, (ignore_assign)Type_Event_158, (ignore_assign)Type_Event_159, (ignore_assign)Type_Event_160, (ignore_assign)Type_Event_161, (ignore_assign)Type_Event_162, (ignore_assign)Type_Event_163, (ignore_assign)Type_Event_164, (ignore_assign)Type_Event_165, (ignore_assign)Type_Event_166, (ignore_assign)Type_Event_167, (ignore_assign)Type_Event_168, (ignore_assign)Type_Event_169, (ignore_assign)Type_Event_170, (ignore_assign)Type_Event_171, (ignore_assign)Type_Event_172, (ignore_assign)Type_Event_173, (ignore_assign)Type_Event_174, (ignore_assign)Type_Event_175, (ignore_assign)Type_Event_176, (ignore_assign)Type_Event_177, (ignore_assign)Type_Event_178, (ignore_assign)Type_Event_179, (ignore_assign)Type_Event_180, (ignore_assign)Type_Event_181, (ignore_assign)Type_Event_182, (ignore_assign)Type_Event_183, (ignore_assign)Type_Event_184, (ignore_assign)Type_Event_185, (ignore_assign)Type_Event_186, (ignore_assign)Type_Event_187, (ignore_assign)Type_Event_188, (ignore_assign)Type_Event_189, (ignore_assign)Type_Event_190, (ignore_assign)Type_Event_191, (ignore_assign)Type_Event_192, (ignore_assign)Type_Event_193, (ignore_assign)Type_Event_194, (ignore_assign)Type_Event_195, (ignore_assign)Type_Event_196, (ignore_assign)Type_Event_197, (ignore_assign)Type_Event_198, (ignore_assign)Type_Event_199, (ignore_assign)Type_Event_200, (ignore_assign)Type_Event_201, (ignore_assign)Type_Event_202, (ignore_assign)Type_Event_203, (ignore_assign)Type_Event_204, (ignore_assign)Type_Event_205, (ignore_assign)Type_Event_206, (ignore_assign)Type_Event_207, (ignore_assign)Type_Event_208, (ignore_assign)Type_Event_209, (ignore_assign)Type_Event_210, (ignore_assign)Type_Event_211, (ignore_assign)Type_Event_212, (ignore_assign)Type_Event_213, (ignore_assign)Type_Event_214, (ignore_assign)Type_Event_215, (ignore_assign)Type_Event_216, (ignore_assign)Type_Event_217, (ignore_assign)Type_Event_218, (ignore_assign)Type_Event_219, (ignore_assign)Type_Event_220, (ignore_assign)Type_Event_221, (ignore_assign)Type_Event_222, (ignore_assign)Type_Event_223, (ignore_assign)Type_Event_224, (ignore_assign)Type_Event_225, (ignore_assign)Type_Event_226, (ignore_assign)Type_Event_227, (ignore_assign)Type_Event_228, (ignore_assign)Type_Event_229, (ignore_assign)Type_Event_230, (ignore_assign)Type_Event_231, (ignore_assign)Type_Event_232, (ignore_assign)Type_Event_233, (ignore_assign)Type_Event_234, (ignore_assign)Type_Event_235, (ignore_assign)Type_Event_236, (ignore_assign)Type_Event_237, (ignore_assign)Type_Event_238, (ignore_assign)Type_Event_239, (ignore_assign)Type_Event_240, (ignore_assign)Type_Event_241, (ignore_assign)Type_Event_242, (ignore_assign)Type_Event_243, (ignore_assign)Type_Event_244, (ignore_assign)Type_Event_245, (ignore_assign)Type_Event_246, (ignore_assign)Type_Event_247, (ignore_assign)Type_Event_248, (ignore_assign)Type_Event_249, (ignore_assign)Type_Event_250, (ignore_assign)Type_Event_251, (ignore_assign)Type_Event_252, (ignore_assign)Type_Event_253, (ignore_assign)Type_Event_254, (ignore_assign)Type_Event_255, (ignore_assign)Type_Event_Param_Previous_Event = 256, (ignore_assign)Type_Event_Param_Location = 257, (ignore_assign)Type_Event_Param_Result = 258, (ignore_assign)Type_Event_Param_Threshold = 259, (ignore_assign)Type_Event_Param_UserCode = 260, (ignore_assign)Type_Event_Param_261 = 261, (ignore_assign)Type_Event_Param_Progress = 262, (ignore_assign)Type_Event_Param_Mode = 263, (ignore_assign)Type_Event_Param_Obstruction = 264, (ignore_assign)Type_Event_Param_Sensor_ID = 265, (ignore_assign)Type_Event_Param_Error_Code = 266, (ignore_assign)Type_Event_Param_Duration = 267, (ignore_assign)Type_Event_Param_Pollution_Level = 268, (ignore_assign)Type_Event_Param_Status = 269, (ignore_assign)Type_Event_Param_Schedule_ID = 270, (ignore_assign)Type_Event_Param_Valve_Table_ID = 271, (ignore_assign)Type_Event_Param_272, (ignore_assign)Type_Event_Param_273, (ignore_assign)Type_Event_Param_274, (ignore_assign)Type_Event_Param_275, (ignore_assign)Type_Event_Param_276, (ignore_assign)Type_Event_Param_277, (ignore_assign)Type_Event_Param_278, (ignore_assign)Type_Event_Param_279, (ignore_assign)Type_Event_Param_280, (ignore_assign)Type_Event_Param_281, (ignore_assign)Type_Event_Param_282, (ignore_assign)Type_Event_Param_283, (ignore_assign)Type_Event_Param_284, (ignore_assign)Type_Event_Param_285, (ignore_assign)Type_Event_Param_286, (ignore_assign)Type_Event_Param_287, (ignore_assign)Type_Event_Param_288, (ignore_assign)Type_Event_Param_289, (ignore_assign)Type_Event_Param_290, (ignore_assign)Type_Event_Param_291, (ignore_assign)Type_Event_Param_292, (ignore_assign)Type_Event_Param_293, (ignore_assign)Type_Event_Param_294, (ignore_assign)Type_Event_Param_295, (ignore_assign)Type_Event_Param_296, (ignore_assign)Type_Event_Param_297, (ignore_assign)Type_Event_Param_298, (ignore_assign)Type_Event_Param_299, (ignore_assign)Type_Event_Param_300, (ignore_assign)Type_Event_Param_301, (ignore_assign)Type_Event_Param_302, (ignore_assign)Type_Event_Param_303, (ignore_assign)Type_Event_Param_304, (ignore_assign)Type_Event_Param_305, (ignore_assign)Type_Event_Param_306, (ignore_assign)Type_Event_Param_307, (ignore_assign)Type_Event_Param_308, (ignore_assign)Type_Event_Param_309, (ignore_assign)Type_Event_Param_310, (ignore_assign)Type_Event_Param_311, (ignore_assign)Type_Event_Param_312, (ignore_assign)Type_Event_Param_313, (ignore_assign)Type_Event_Param_314, (ignore_assign)Type_Event_Param_315, (ignore_assign)Type_Event_Param_316, (ignore_assign)Type_Event_Param_317, (ignore_assign)Type_Event_Param_318, (ignore_assign)Type_Event_Param_319, (ignore_assign)Type_Event_Param_320, (ignore_assign)Type_Event_Param_321, (ignore_assign)Type_Event_Param_322, (ignore_assign)Type_Event_Param_323, (ignore_assign)Type_Event_Param_324, (ignore_assign)Type_Event_Param_325, (ignore_assign)Type_Event_Param_326, (ignore_assign)Type_Event_Param_327, (ignore_assign)Type_Event_Param_328, (ignore_assign)Type_Event_Param_329, (ignore_assign)Type_Event_Param_330, (ignore_assign)Type_Event_Param_331, (ignore_assign)Type_Event_Param_332, (ignore_assign)Type_Event_Param_333, (ignore_assign)Type_Event_Param_334, (ignore_assign)Type_Event_Param_335, (ignore_assign)Type_Event_Param_336, (ignore_assign)Type_Event_Param_337, (ignore_assign)Type_Event_Param_338, (ignore_assign)Type_Event_Param_339, (ignore_assign)Type_Event_Param_340, (ignore_assign)Type_Event_Param_341, (ignore_assign)Type_Event_Param_342, (ignore_assign)Type_Event_Param_343, (ignore_assign)Type_Event_Param_344, (ignore_assign)Type_Event_Param_345, (ignore_assign)Type_Event_Param_346, (ignore_assign)Type_Event_Param_347, (ignore_assign)Type_Event_Param_348, (ignore_assign)Type_Event_Param_349, (ignore_assign)Type_Event_Param_350, (ignore_assign)Type_Event_Param_351, (ignore_assign)Type_Event_Param_352, (ignore_assign)Type_Event_Param_353, (ignore_assign)Type_Event_Param_354, (ignore_assign)Type_Event_Param_355, (ignore_assign)Type_Event_Param_356, (ignore_assign)Type_Event_Param_357, (ignore_assign)Type_Event_Param_358, (ignore_assign)Type_Event_Param_359, (ignore_assign)Type_Event_Param_360, (ignore_assign)Type_Event_Param_361, (ignore_assign)Type_Event_Param_362, (ignore_assign)Type_Event_Param_363, (ignore_assign)Type_Event_Param_364, (ignore_assign)Type_Event_Param_365, (ignore_assign)Type_Event_Param_366, (ignore_assign)Type_Event_Param_367, (ignore_assign)Type_Event_Param_368, (ignore_assign)Type_Event_Param_369, (ignore_assign)Type_Event_Param_370, (ignore_assign)Type_Event_Param_371, (ignore_assign)Type_Event_Param_372, (ignore_assign)Type_Event_Param_373, (ignore_assign)Type_Event_Param_374, (ignore_assign)Type_Event_Param_375, (ignore_assign)Type_Event_Param_376, (ignore_assign)Type_Event_Param_377, (ignore_assign)Type_Event_Param_378, (ignore_assign)Type_Event_Param_379, (ignore_assign)Type_Event_Param_380, (ignore_assign)Type_Event_Param_381, (ignore_assign)Type_Event_Param_382, (ignore_assign)Type_Event_Param_383, (ignore_assign)Type_Event_Param_384, (ignore_assign)Type_Event_Param_385, (ignore_assign)Type_Event_Param_386, (ignore_assign)Type_Event_Param_387, (ignore_assign)Type_Event_Param_388, (ignore_assign)Type_Event_Param_389, (ignore_assign)Type_Event_Param_390, (ignore_assign)Type_Event_Param_391, (ignore_assign)Type_Event_Param_392, (ignore_assign)Type_Event_Param_393, (ignore_assign)Type_Event_Param_394, (ignore_assign)Type_Event_Param_395, (ignore_assign)Type_Event_Param_396, (ignore_assign)Type_Event_Param_397, (ignore_assign)Type_Event_Param_398, (ignore_assign)Type_Event_Param_399, (ignore_assign)Type_Event_Param_400, (ignore_assign)Type_Event_Param_401, (ignore_assign)Type_Event_Param_402, (ignore_assign)Type_Event_Param_403, (ignore_assign)Type_Event_Param_404, (ignore_assign)Type_Event_Param_405, (ignore_assign)Type_Event_Param_406, (ignore_assign)Type_Event_Param_407, (ignore_assign)Type_Event_Param_408, (ignore_assign)Type_Event_Param_409, (ignore_assign)Type_Event_Param_410, (ignore_assign)Type_Event_Param_411, (ignore_assign)Type_Event_Param_412, (ignore_assign)Type_Event_Param_413, (ignore_assign)Type_Event_Param_414, (ignore_assign)Type_Event_Param_415, (ignore_assign)Type_Event_Param_416, (ignore_assign)Type_Event_Param_417, (ignore_assign)Type_Event_Param_418, (ignore_assign)Type_Event_Param_419, (ignore_assign)Type_Event_Param_420, (ignore_assign)Type_Event_Param_421, (ignore_assign)Type_Event_Param_422, (ignore_assign)Type_Event_Param_423, (ignore_assign)Type_Event_Param_424, (ignore_assign)Type_Event_Param_425, (ignore_assign)Type_Event_Param_426, (ignore_assign)Type_Event_Param_427, (ignore_assign)Type_Event_Param_428, (ignore_assign)Type_Event_Param_429, (ignore_assign)Type_Event_Param_430, (ignore_assign)Type_Event_Param_431, (ignore_assign)Type_Event_Param_432, (ignore_assign)Type_Event_Param_433, (ignore_assign)Type_Event_Param_434, (ignore_assign)Type_Event_Param_435, (ignore_assign)Type_Event_Param_436, (ignore_assign)Type_Event_Param_437, (ignore_assign)Type_Event_Param_438, (ignore_assign)Type_Event_Param_439, (ignore_assign)Type_Event_Param_440, (ignore_assign)Type_Event_Param_441, (ignore_assign)Type_Event_Param_442, (ignore_assign)Type_Event_Param_443, (ignore_assign)Type_Event_Param_444, (ignore_assign)Type_Event_Param_445, (ignore_assign)Type_Event_Param_446, (ignore_assign)Type_Event_Param_447, (ignore_assign)Type_Event_Param_448, (ignore_assign)Type_Event_Param_449, (ignore_assign)Type_Event_Param_450, (ignore_assign)Type_Event_Param_451, (ignore_assign)Type_Event_Param_452, (ignore_assign)Type_Event_Param_453, (ignore_assign)Type_Event_Param_454, (ignore_assign)Type_Event_Param_455, (ignore_assign)Type_Event_Param_456, (ignore_assign)Type_Event_Param_457, (ignore_assign)Type_Event_Param_458, (ignore_assign)Type_Event_Param_459, (ignore_assign)Type_Event_Param_460, (ignore_assign)Type_Event_Param_461, (ignore_assign)Type_Event_Param_462, (ignore_assign)Type_Event_Param_463, (ignore_assign)Type_Event_Param_464, (ignore_assign)Type_Event_Param_465, (ignore_assign)Type_Event_Param_466, (ignore_assign)Type_Event_Param_467, (ignore_assign)Type_Event_Param_468, (ignore_assign)Type_Event_Param_469, (ignore_assign)Type_Event_Param_470, (ignore_assign)Type_Event_Param_471, (ignore_assign)Type_Event_Param_472, (ignore_assign)Type_Event_Param_473, (ignore_assign)Type_Event_Param_474, (ignore_assign)Type_Event_Param_475, (ignore_assign)Type_Event_Param_476, (ignore_assign)Type_Event_Param_477, (ignore_assign)Type_Event_Param_478, (ignore_assign)Type_Event_Param_479, (ignore_assign)Type_Event_Param_480, (ignore_assign)Type_Event_Param_481, (ignore_assign)Type_Event_Param_482, (ignore_assign)Type_Event_Param_483, (ignore_assign)Type_Event_Param_484, (ignore_assign)Type_Event_Param_485, (ignore_assign)Type_Event_Param_486, (ignore_assign)Type_Event_Param_487, (ignore_assign)Type_Event_Param_488, (ignore_assign)Type_Event_Param_489, (ignore_assign)Type_Event_Param_490, (ignore_assign)Type_Event_Param_491, (ignore_assign)Type_Event_Param_492, (ignore_assign)Type_Event_Param_493, (ignore_assign)Type_Event_Param_494, (ignore_assign)Type_Event_Param_495, (ignore_assign)Type_Event_Param_496, (ignore_assign)Type_Event_Param_497, (ignore_assign)Type_Event_Param_498, (ignore_assign)Type_Event_Param_499, (ignore_assign)Type_Event_Param_500, (ignore_assign)Type_Event_Param_501, (ignore_assign)Type_Event_Param_502, (ignore_assign)Type_Event_Param_503, (ignore_assign)Type_Event_Param_504, (ignore_assign)Type_Event_Param_505, (ignore_assign)Type_Event_Param_506, (ignore_assign)Type_Event_Param_507, (ignore_assign)Type_Event_Param_508, (ignore_assign)Type_Event_Param_509, (ignore_assign)Type_Event_Param_510, (ignore_assign)Type_Event_Param_511, (ignore_assign)Type_v1 = 512, (ignore_assign)Level_v1 = 513, (ignore_assign)AutoClearEvents = 514, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Type_Start = 0", "Type_Smoke_Alarm = 1", "Type_Carbon_Monoxied = 2", "Type_Carbon_Dixoide = 3", "Type_Heat = 4", "Type_Water = 5", "Type_Access_Control = 6", "Type_Home_Security = 7", "Type_Power_Management = 8", "Type_System = 9", "Type_Emergency = 10", "Type_Clock = 11", "Type_Appliance = 12", "Type_Home_Health = 13", "Type_Siren = 14", "Type_Water_Valve = 15", "Type_Weather = 16", "Type_Irrigation = 17", "Type_Gas = 18", "Type_Event_19", "Type_Event_20", "Type_Event_21", "Type_Event_22", "Type_Event_23", "Type_Event_24", "Type_Event_25", "Type_Event_26", "Type_Event_27", "Type_Event_28", "Type_Event_29", "Type_Event_30", "Type_Event_31", "Type_Event_32", "Type_Event_33", "Type_Event_34", "Type_Event_35", "Type_Event_36", "Type_Event_37", "Type_Event_38", "Type_Event_39", "Type_Event_40", "Type_Event_41", "Type_Event_42", "Type_Event_43", "Type_Event_44", "Type_Event_45", "Type_Event_46", "Type_Event_47", "Type_Event_48", "Type_Event_49", "Type_Event_50", "Type_Event_51", "Type_Event_52", "Type_Event_53", "Type_Event_54", "Type_Event_55", "Type_Event_56", "Type_Event_57", "Type_Event_58", "Type_Event_59", "Type_Event_60", "Type_Event_61", "Type_Event_62", "Type_Event_63", "Type_Event_64", "Type_Event_65", "Type_Event_66", "Type_Event_67", "Type_Event_68", "Type_Event_69", "Type_Event_70", "Type_Event_71", "Type_Event_72", "Type_Event_73", "Type_Event_74", "Type_Event_75", "Type_Event_76", "Type_Event_77", "Type_Event_78", "Type_Event_79", "Type_Event_80", "Type_Event_81", "Type_Event_82", "Type_Event_83", "Type_Event_84", "Type_Event_85", "Type_Event_86", "Type_Event_87", "Type_Event_88", "Type_Event_89", "Type_Event_90", "Type_Event_91", "Type_Event_92", "Type_Event_93", "Type_Event_94", "Type_Event_95", "Type_Event_96", "Type_Event_97", "Type_Event_98", "Type_Event_99", "Type_Event_100", "Type_Event_101", "Type_Event_102", "Type_Event_103", "Type_Event_104", "Type_Event_105", "Type_Event_106", "Type_Event_107", "Type_Event_108", "Type_Event_109", "Type_Event_110", "Type_Event_111", "Type_Event_112", "Type_Event_113", "Type_Event_114", "Type_Event_115", "Type_Event_116", "Type_Event_117", "Type_Event_118", "Type_Event_119", "Type_Event_120", "Type_Event_121", "Type_Event_122", "Type_Event_123", "Type_Event_124", "Type_Event_125", "Type_Event_126", "Type_Event_127", "Type_Event_128", "Type_Event_129", "Type_Event_130", "Type_Event_131", "Type_Event_132", "Type_Event_133", "Type_Event_134", "Type_Event_135", "Type_Event_136", "Type_Event_137", "Type_Event_138", "Type_Event_139", "Type_Event_140", "Type_Event_141", "Type_Event_142", "Type_Event_143", "Type_Event_144", "Type_Event_145", "Type_Event_146", "Type_Event_147", "Type_Event_148", "Type_Event_149", "Type_Event_150", "Type_Event_151", "Type_Event_152", "Type_Event_153", "Type_Event_154", "Type_Event_155", "Type_Event_156", "Type_Event_157", "Type_Event_158", "Type_Event_159", "Type_Event_160", "Type_Event_161", "Type_Event_162", "Type_Event_163", "Type_Event_164", "Type_Event_165", "Type_Event_166", "Type_Event_167", "Type_Event_168", "Type_Event_169", "Type_Event_170", "Type_Event_171", "Type_Event_172", "Type_Event_173", "Type_Event_174", "Type_Event_175", "Type_Event_176", "Type_Event_177", "Type_Event_178", "Type_Event_179", "Type_Event_180", "Type_Event_181", "Type_Event_182", "Type_Event_183", "Type_Event_184", "Type_Event_185", "Type_Event_186", "Type_Event_187", "Type_Event_188", "Type_Event_189", "Type_Event_190", "Type_Event_191", "Type_Event_192", "Type_Event_193", "Type_Event_194", "Type_Event_195", "Type_Event_196", "Type_Event_197", "Type_Event_198", "Type_Event_199", "Type_Event_200", "Type_Event_201", "Type_Event_202", "Type_Event_203", "Type_Event_204", "Type_Event_205", "Type_Event_206", "Type_Event_207", "Type_Event_208", "Type_Event_209", "Type_Event_210", "Type_Event_211", "Type_Event_212", "Type_Event_213", "Type_Event_214", "Type_Event_215", "Type_Event_216", "Type_Event_217", "Type_Event_218", "Type_Event_219", "Type_Event_220", "Type_Event_221", "Type_Event_222", "Type_Event_223", "Type_Event_224", "Type_Event_225", "Type_Event_226", "Type_Event_227", "Type_Event_228", "Type_Event_229", "Type_Event_230", "Type_Event_231", "Type_Event_232", "Type_Event_233", "Type_Event_234", "Type_Event_235", "Type_Event_236", "Type_Event_237", "Type_Event_238", "Type_Event_239", "Type_Event_240", "Type_Event_241", "Type_Event_242", "Type_Event_243", "Type_Event_244", "Type_Event_245", "Type_Event_246", "Type_Event_247", "Type_Event_248", "Type_Event_249", "Type_Event_250", "Type_Event_251", "Type_Event_252", "Type_Event_253", "Type_Event_254", "Type_Event_255", "Type_Event_Param_Previous_Event = 256", "Type_Event_Param_Location = 257", "Type_Event_Param_Result = 258", "Type_Event_Param_Threshold = 259", "Type_Event_Param_UserCode = 260", "Type_Event_Param_261 = 261", "Type_Event_Param_Progress = 262", "Type_Event_Param_Mode = 263", "Type_Event_Param_Obstruction = 264", "Type_Event_Param_Sensor_ID = 265", "Type_Event_Param_Error_Code = 266", "Type_Event_Param_Duration = 267", "Type_Event_Param_Pollution_Level = 268", "Type_Event_Param_Status = 269", "Type_Event_Param_Schedule_ID = 270", "Type_Event_Param_Valve_Table_ID = 271", "Type_Event_Param_272", "Type_Event_Param_273", "Type_Event_Param_274", "Type_Event_Param_275", "Type_Event_Param_276", "Type_Event_Param_277", "Type_Event_Param_278", "Type_Event_Param_279", "Type_Event_Param_280", "Type_Event_Param_281", "Type_Event_Param_282", "Type_Event_Param_283", "Type_Event_Param_284", "Type_Event_Param_285", "Type_Event_Param_286", "Type_Event_Param_287", "Type_Event_Param_288", "Type_Event_Param_289", "Type_Event_Param_290", "Type_Event_Param_291", "Type_Event_Param_292", "Type_Event_Param_293", "Type_Event_Param_294", "Type_Event_Param_295", "Type_Event_Param_296", "Type_Event_Param_297", "Type_Event_Param_298", "Type_Event_Param_299", "Type_Event_Param_300", "Type_Event_Param_301", "Type_Event_Param_302", "Type_Event_Param_303", "Type_Event_Param_304", "Type_Event_Param_305", "Type_Event_Param_306", "Type_Event_Param_307", "Type_Event_Param_308", "Type_Event_Param_309", "Type_Event_Param_310", "Type_Event_Param_311", "Type_Event_Param_312", "Type_Event_Param_313", "Type_Event_Param_314", "Type_Event_Param_315", "Type_Event_Param_316", "Type_Event_Param_317", "Type_Event_Param_318", "Type_Event_Param_319", "Type_Event_Param_320", "Type_Event_Param_321", "Type_Event_Param_322", "Type_Event_Param_323", "Type_Event_Param_324", "Type_Event_Param_325", "Type_Event_Param_326", "Type_Event_Param_327", "Type_Event_Param_328", "Type_Event_Param_329", "Type_Event_Param_330", "Type_Event_Param_331", "Type_Event_Param_332", "Type_Event_Param_333", "Type_Event_Param_334", "Type_Event_Param_335", "Type_Event_Param_336", "Type_Event_Param_337", "Type_Event_Param_338", "Type_Event_Param_339", "Type_Event_Param_340", "Type_Event_Param_341", "Type_Event_Param_342", "Type_Event_Param_343", "Type_Event_Param_344", "Type_Event_Param_345", "Type_Event_Param_346", "Type_Event_Param_347", "Type_Event_Param_348", "Type_Event_Param_349", "Type_Event_Param_350", "Type_Event_Param_351", "Type_Event_Param_352", "Type_Event_Param_353", "Type_Event_Param_354", "Type_Event_Param_355", "Type_Event_Param_356", "Type_Event_Param_357", "Type_Event_Param_358", "Type_Event_Param_359", "Type_Event_Param_360", "Type_Event_Param_361", "Type_Event_Param_362", "Type_Event_Param_363", "Type_Event_Param_364", "Type_Event_Param_365", "Type_Event_Param_366", "Type_Event_Param_367", "Type_Event_Param_368", "Type_Event_Param_369", "Type_Event_Param_370", "Type_Event_Param_371", "Type_Event_Param_372", "Type_Event_Param_373", "Type_Event_Param_374", "Type_Event_Param_375", "Type_Event_Param_376", "Type_Event_Param_377", "Type_Event_Param_378", "Type_Event_Param_379", "Type_Event_Param_380", "Type_Event_Param_381", "Type_Event_Param_382", "Type_Event_Param_383", "Type_Event_Param_384", "Type_Event_Param_385", "Type_Event_Param_386", "Type_Event_Param_387", "Type_Event_Param_388", "Type_Event_Param_389", "Type_Event_Param_390", "Type_Event_Param_391", "Type_Event_Param_392", "Type_Event_Param_393", "Type_Event_Param_394", "Type_Event_Param_395", "Type_Event_Param_396", "Type_Event_Param_397", "Type_Event_Param_398", "Type_Event_Param_399", "Type_Event_Param_400", "Type_Event_Param_401", "Type_Event_Param_402", "Type_Event_Param_403", "Type_Event_Param_404", "Type_Event_Param_405", "Type_Event_Param_406", "Type_Event_Param_407", "Type_Event_Param_408", "Type_Event_Param_409", "Type_Event_Param_410", "Type_Event_Param_411", "Type_Event_Param_412", "Type_Event_Param_413", "Type_Event_Param_414", "Type_Event_Param_415", "Type_Event_Param_416", "Type_Event_Param_417", "Type_Event_Param_418", "Type_Event_Param_419", "Type_Event_Param_420", "Type_Event_Param_421", "Type_Event_Param_422", "Type_Event_Param_423", "Type_Event_Param_424", "Type_Event_Param_425", "Type_Event_Param_426", "Type_Event_Param_427", "Type_Event_Param_428", "Type_Event_Param_429", "Type_Event_Param_430", "Type_Event_Param_431", "Type_Event_Param_432", "Type_Event_Param_433", "Type_Event_Param_434", "Type_Event_Param_435", "Type_Event_Param_436", "Type_Event_Param_437", "Type_Event_Param_438", "Type_Event_Param_439", "Type_Event_Param_440", "Type_Event_Param_441", "Type_Event_Param_442", "Type_Event_Param_443", "Type_Event_Param_444", "Type_Event_Param_445", "Type_Event_Param_446", "Type_Event_Param_447", "Type_Event_Param_448", "Type_Event_Param_449", "Type_Event_Param_450", "Type_Event_Param_451", "Type_Event_Param_452", "Type_Event_Param_453", "Type_Event_Param_454", "Type_Event_Param_455", "Type_Event_Param_456", "Type_Event_Param_457", "Type_Event_Param_458", "Type_Event_Param_459", "Type_Event_Param_460", "Type_Event_Param_461", "Type_Event_Param_462", "Type_Event_Param_463", "Type_Event_Param_464", "Type_Event_Param_465", "Type_Event_Param_466", "Type_Event_Param_467", "Type_Event_Param_468", "Type_Event_Param_469", "Type_Event_Param_470", "Type_Event_Param_471", "Type_Event_Param_472", "Type_Event_Param_473", "Type_Event_Param_474", "Type_Event_Param_475", "Type_Event_Param_476", "Type_Event_Param_477", "Type_Event_Param_478", "Type_Event_Param_479", "Type_Event_Param_480", "Type_Event_Param_481", "Type_Event_Param_482", "Type_Event_Param_483", "Type_Event_Param_484", "Type_Event_Param_485", "Type_Event_Param_486", "Type_Event_Param_487", "Type_Event_Param_488", "Type_Event_Param_489", "Type_Event_Param_490", "Type_Event_Param_491", "Type_Event_Param_492", "Type_Event_Param_493", "Type_Event_Param_494", "Type_Event_Param_495", "Type_Event_Param_496", "Type_Event_Param_497", "Type_Event_Param_498", "Type_Event_Param_499", "Type_Event_Param_500", "Type_Event_Param_501", "Type_Event_Param_502", "Type_Event_Param_503", "Type_Event_Param_504", "Type_Event_Param_505", "Type_Event_Param_506", "Type_Event_Param_507", "Type_Event_Param_508", "Type_Event_Param_509", "Type_Event_Param_510", "Type_Event_Param_511", "Type_v1 = 512", "Level_v1 = 513", "AutoClearEvents = 514", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_AssociationCommandConfiguration { enum _enumerated { MaxCommandLength = 0, CommandsAreValues = 1, CommandsAreConfigurable = 2, NumFreeCommands = 3, MaxCommands = 4 }; _enumerated _value; ValueID_Index_AssociationCommandConfiguration(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 5; static const int* _values() { static const int values[] = { (ignore_assign)MaxCommandLength = 0, (ignore_assign)CommandsAreValues = 1, (ignore_assign)CommandsAreConfigurable = 2, (ignore_assign)NumFreeCommands = 3, (ignore_assign)MaxCommands = 4, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "MaxCommandLength = 0", "CommandsAreValues = 1", "CommandsAreConfigurable = 2", "NumFreeCommands = 3", "MaxCommands = 4", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + + + +struct ValueID_Index_BarrierOperator { enum _enumerated { Command = 0, Label = 1, SupportedSignals = 2, Audible = 3, Visual = 4 }; _enumerated _value; ValueID_Index_BarrierOperator(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 5; static const int* _values() { static const int values[] = { (ignore_assign)Command = 0, (ignore_assign)Label = 1, (ignore_assign)SupportedSignals = 2, (ignore_assign)Audible = 3, (ignore_assign)Visual = 4, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Command = 0", "Label = 1", "SupportedSignals = 2", "Audible = 3", "Visual = 4", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + + + +struct ValueID_Index_Basic { enum _enumerated { Set = 0 }; _enumerated _value; ValueID_Index_Basic(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Set = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Set = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_BasicWindowCovering { enum _enumerated { Open = 0, Close = 1 }; _enumerated _value; ValueID_Index_BasicWindowCovering(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 2; static const int* _values() { static const int values[] = { (ignore_assign)Open = 0, (ignore_assign)Close = 1, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Open = 0", "Close = 1", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + +struct ValueID_Index_Battery { enum _enumerated { Level = 0 }; _enumerated _value; ValueID_Index_Battery(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Level = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Level = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_CentralScene { enum _enumerated { Scene_1 = 1, Scene_2, Scene_3, Scene_4, Scene_5, Scene_6, Scene_7, Scene_8, Scene_9, Scene_10, Scene_11, Scene_12, Scene_13, Scene_14, Scene_15, Scene_16, Scene_17, Scene_18, Scene_19, Scene_20, Scene_21, Scene_22, Scene_23, Scene_24, Scene_25, Scene_26, Scene_27, Scene_28, Scene_29, Scene_30, Scene_31, Scene_32, Scene_33, Scene_34, Scene_35, Scene_36, Scene_37, Scene_38, Scene_39, Scene_40, Scene_41, Scene_42, Scene_43, Scene_44, Scene_45, Scene_46, Scene_47, Scene_48, Scene_49, Scene_50, Scene_51, Scene_52, Scene_53, Scene_54, Scene_55, Scene_56, Scene_57, Scene_58, Scene_59, Scene_60, Scene_61, Scene_62, Scene_63, Scene_64, Scene_65, Scene_66, Scene_67, Scene_68, Scene_69, Scene_70, Scene_71, Scene_72, Scene_73, Scene_74, Scene_75, Scene_76, Scene_77, Scene_78, Scene_79, Scene_80, Scene_81, Scene_82, Scene_83, Scene_84, Scene_85, Scene_86, Scene_87, Scene_88, Scene_89, Scene_90, Scene_91, Scene_92, Scene_93, Scene_94, Scene_95, Scene_96, Scene_97, Scene_98, Scene_99, Scene_100, Scene_101, Scene_102, Scene_103, Scene_104, Scene_105, Scene_106, Scene_107, Scene_108, Scene_109, Scene_110, Scene_111, Scene_112, Scene_113, Scene_114, Scene_115, Scene_116, Scene_117, Scene_118, Scene_119, Scene_120, Scene_121, Scene_122, Scene_123, Scene_124, Scene_125, Scene_126, Scene_127, Scene_128, Scene_129, Scene_130, Scene_131, Scene_132, Scene_133, Scene_134, Scene_135, Scene_136, Scene_137, Scene_138, Scene_139, Scene_140, Scene_141, Scene_142, Scene_143, Scene_144, Scene_145, Scene_146, Scene_147, Scene_148, Scene_149, Scene_150, Scene_151, Scene_152, Scene_153, Scene_154, Scene_155, Scene_156, Scene_157, Scene_158, Scene_159, Scene_160, Scene_161, Scene_162, Scene_163, Scene_164, Scene_165, Scene_166, Scene_167, Scene_168, Scene_169, Scene_170, Scene_171, Scene_172, Scene_173, Scene_174, Scene_175, Scene_176, Scene_177, Scene_178, Scene_179, Scene_180, Scene_181, Scene_182, Scene_183, Scene_184, Scene_185, Scene_186, Scene_187, Scene_188, Scene_189, Scene_190, Scene_191, Scene_192, Scene_193, Scene_194, Scene_195, Scene_196, Scene_197, Scene_198, Scene_199, Scene_200, Scene_201, Scene_202, Scene_203, Scene_204, Scene_205, Scene_206, Scene_207, Scene_208, Scene_209, Scene_210, Scene_211, Scene_212, Scene_213, Scene_214, Scene_215, Scene_216, Scene_217, Scene_218, Scene_219, Scene_220, Scene_221, Scene_222, Scene_223, Scene_224, Scene_225, Scene_226, Scene_227, Scene_228, Scene_229, Scene_230, Scene_231, Scene_232, Scene_233, Scene_234, Scene_235, Scene_236, Scene_237, Scene_238, Scene_239, Scene_240, Scene_241, Scene_242, Scene_243, Scene_244, Scene_245, Scene_246, Scene_247, Scene_248, Scene_249, Scene_250, Scene_251, Scene_252, Scene_253, Scene_254, Scene_255, SceneCount = 256, ClearSceneTimeout = 257 }; _enumerated _value; ValueID_Index_CentralScene(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 257; static const int* _values() { static const int values[] = { (ignore_assign)Scene_1 = 1, (ignore_assign)Scene_2, (ignore_assign)Scene_3, (ignore_assign)Scene_4, (ignore_assign)Scene_5, (ignore_assign)Scene_6, (ignore_assign)Scene_7, (ignore_assign)Scene_8, (ignore_assign)Scene_9, (ignore_assign)Scene_10, (ignore_assign)Scene_11, (ignore_assign)Scene_12, (ignore_assign)Scene_13, (ignore_assign)Scene_14, (ignore_assign)Scene_15, (ignore_assign)Scene_16, (ignore_assign)Scene_17, (ignore_assign)Scene_18, (ignore_assign)Scene_19, (ignore_assign)Scene_20, (ignore_assign)Scene_21, (ignore_assign)Scene_22, (ignore_assign)Scene_23, (ignore_assign)Scene_24, (ignore_assign)Scene_25, (ignore_assign)Scene_26, (ignore_assign)Scene_27, (ignore_assign)Scene_28, (ignore_assign)Scene_29, (ignore_assign)Scene_30, (ignore_assign)Scene_31, (ignore_assign)Scene_32, (ignore_assign)Scene_33, (ignore_assign)Scene_34, (ignore_assign)Scene_35, (ignore_assign)Scene_36, (ignore_assign)Scene_37, (ignore_assign)Scene_38, (ignore_assign)Scene_39, (ignore_assign)Scene_40, (ignore_assign)Scene_41, (ignore_assign)Scene_42, (ignore_assign)Scene_43, (ignore_assign)Scene_44, (ignore_assign)Scene_45, (ignore_assign)Scene_46, (ignore_assign)Scene_47, (ignore_assign)Scene_48, (ignore_assign)Scene_49, (ignore_assign)Scene_50, (ignore_assign)Scene_51, (ignore_assign)Scene_52, (ignore_assign)Scene_53, (ignore_assign)Scene_54, (ignore_assign)Scene_55, (ignore_assign)Scene_56, (ignore_assign)Scene_57, (ignore_assign)Scene_58, (ignore_assign)Scene_59, (ignore_assign)Scene_60, (ignore_assign)Scene_61, (ignore_assign)Scene_62, (ignore_assign)Scene_63, (ignore_assign)Scene_64, (ignore_assign)Scene_65, (ignore_assign)Scene_66, (ignore_assign)Scene_67, (ignore_assign)Scene_68, (ignore_assign)Scene_69, (ignore_assign)Scene_70, (ignore_assign)Scene_71, (ignore_assign)Scene_72, (ignore_assign)Scene_73, (ignore_assign)Scene_74, (ignore_assign)Scene_75, (ignore_assign)Scene_76, (ignore_assign)Scene_77, (ignore_assign)Scene_78, (ignore_assign)Scene_79, (ignore_assign)Scene_80, (ignore_assign)Scene_81, (ignore_assign)Scene_82, (ignore_assign)Scene_83, (ignore_assign)Scene_84, (ignore_assign)Scene_85, (ignore_assign)Scene_86, (ignore_assign)Scene_87, (ignore_assign)Scene_88, (ignore_assign)Scene_89, (ignore_assign)Scene_90, (ignore_assign)Scene_91, (ignore_assign)Scene_92, (ignore_assign)Scene_93, (ignore_assign)Scene_94, (ignore_assign)Scene_95, (ignore_assign)Scene_96, (ignore_assign)Scene_97, (ignore_assign)Scene_98, (ignore_assign)Scene_99, (ignore_assign)Scene_100, (ignore_assign)Scene_101, (ignore_assign)Scene_102, (ignore_assign)Scene_103, (ignore_assign)Scene_104, (ignore_assign)Scene_105, (ignore_assign)Scene_106, (ignore_assign)Scene_107, (ignore_assign)Scene_108, (ignore_assign)Scene_109, (ignore_assign)Scene_110, (ignore_assign)Scene_111, (ignore_assign)Scene_112, (ignore_assign)Scene_113, (ignore_assign)Scene_114, (ignore_assign)Scene_115, (ignore_assign)Scene_116, (ignore_assign)Scene_117, (ignore_assign)Scene_118, (ignore_assign)Scene_119, (ignore_assign)Scene_120, (ignore_assign)Scene_121, (ignore_assign)Scene_122, (ignore_assign)Scene_123, (ignore_assign)Scene_124, (ignore_assign)Scene_125, (ignore_assign)Scene_126, (ignore_assign)Scene_127, (ignore_assign)Scene_128, (ignore_assign)Scene_129, (ignore_assign)Scene_130, (ignore_assign)Scene_131, (ignore_assign)Scene_132, (ignore_assign)Scene_133, (ignore_assign)Scene_134, (ignore_assign)Scene_135, (ignore_assign)Scene_136, (ignore_assign)Scene_137, (ignore_assign)Scene_138, (ignore_assign)Scene_139, (ignore_assign)Scene_140, (ignore_assign)Scene_141, (ignore_assign)Scene_142, (ignore_assign)Scene_143, (ignore_assign)Scene_144, (ignore_assign)Scene_145, (ignore_assign)Scene_146, (ignore_assign)Scene_147, (ignore_assign)Scene_148, (ignore_assign)Scene_149, (ignore_assign)Scene_150, (ignore_assign)Scene_151, (ignore_assign)Scene_152, (ignore_assign)Scene_153, (ignore_assign)Scene_154, (ignore_assign)Scene_155, (ignore_assign)Scene_156, (ignore_assign)Scene_157, (ignore_assign)Scene_158, (ignore_assign)Scene_159, (ignore_assign)Scene_160, (ignore_assign)Scene_161, (ignore_assign)Scene_162, (ignore_assign)Scene_163, (ignore_assign)Scene_164, (ignore_assign)Scene_165, (ignore_assign)Scene_166, (ignore_assign)Scene_167, (ignore_assign)Scene_168, (ignore_assign)Scene_169, (ignore_assign)Scene_170, (ignore_assign)Scene_171, (ignore_assign)Scene_172, (ignore_assign)Scene_173, (ignore_assign)Scene_174, (ignore_assign)Scene_175, (ignore_assign)Scene_176, (ignore_assign)Scene_177, (ignore_assign)Scene_178, (ignore_assign)Scene_179, (ignore_assign)Scene_180, (ignore_assign)Scene_181, (ignore_assign)Scene_182, (ignore_assign)Scene_183, (ignore_assign)Scene_184, (ignore_assign)Scene_185, (ignore_assign)Scene_186, (ignore_assign)Scene_187, (ignore_assign)Scene_188, (ignore_assign)Scene_189, (ignore_assign)Scene_190, (ignore_assign)Scene_191, (ignore_assign)Scene_192, (ignore_assign)Scene_193, (ignore_assign)Scene_194, (ignore_assign)Scene_195, (ignore_assign)Scene_196, (ignore_assign)Scene_197, (ignore_assign)Scene_198, (ignore_assign)Scene_199, (ignore_assign)Scene_200, (ignore_assign)Scene_201, (ignore_assign)Scene_202, (ignore_assign)Scene_203, (ignore_assign)Scene_204, (ignore_assign)Scene_205, (ignore_assign)Scene_206, (ignore_assign)Scene_207, (ignore_assign)Scene_208, (ignore_assign)Scene_209, (ignore_assign)Scene_210, (ignore_assign)Scene_211, (ignore_assign)Scene_212, (ignore_assign)Scene_213, (ignore_assign)Scene_214, (ignore_assign)Scene_215, (ignore_assign)Scene_216, (ignore_assign)Scene_217, (ignore_assign)Scene_218, (ignore_assign)Scene_219, (ignore_assign)Scene_220, (ignore_assign)Scene_221, (ignore_assign)Scene_222, (ignore_assign)Scene_223, (ignore_assign)Scene_224, (ignore_assign)Scene_225, (ignore_assign)Scene_226, (ignore_assign)Scene_227, (ignore_assign)Scene_228, (ignore_assign)Scene_229, (ignore_assign)Scene_230, (ignore_assign)Scene_231, (ignore_assign)Scene_232, (ignore_assign)Scene_233, (ignore_assign)Scene_234, (ignore_assign)Scene_235, (ignore_assign)Scene_236, (ignore_assign)Scene_237, (ignore_assign)Scene_238, (ignore_assign)Scene_239, (ignore_assign)Scene_240, (ignore_assign)Scene_241, (ignore_assign)Scene_242, (ignore_assign)Scene_243, (ignore_assign)Scene_244, (ignore_assign)Scene_245, (ignore_assign)Scene_246, (ignore_assign)Scene_247, (ignore_assign)Scene_248, (ignore_assign)Scene_249, (ignore_assign)Scene_250, (ignore_assign)Scene_251, (ignore_assign)Scene_252, (ignore_assign)Scene_253, (ignore_assign)Scene_254, (ignore_assign)Scene_255, (ignore_assign)SceneCount = 256, (ignore_assign)ClearSceneTimeout = 257, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Scene_1 = 1", "Scene_2", "Scene_3", "Scene_4", "Scene_5", "Scene_6", "Scene_7", "Scene_8", "Scene_9", "Scene_10", "Scene_11", "Scene_12", "Scene_13", "Scene_14", "Scene_15", "Scene_16", "Scene_17", "Scene_18", "Scene_19", "Scene_20", "Scene_21", "Scene_22", "Scene_23", "Scene_24", "Scene_25", "Scene_26", "Scene_27", "Scene_28", "Scene_29", "Scene_30", "Scene_31", "Scene_32", "Scene_33", "Scene_34", "Scene_35", "Scene_36", "Scene_37", "Scene_38", "Scene_39", "Scene_40", "Scene_41", "Scene_42", "Scene_43", "Scene_44", "Scene_45", "Scene_46", "Scene_47", "Scene_48", "Scene_49", "Scene_50", "Scene_51", "Scene_52", "Scene_53", "Scene_54", "Scene_55", "Scene_56", "Scene_57", "Scene_58", "Scene_59", "Scene_60", "Scene_61", "Scene_62", "Scene_63", "Scene_64", "Scene_65", "Scene_66", "Scene_67", "Scene_68", "Scene_69", "Scene_70", "Scene_71", "Scene_72", "Scene_73", "Scene_74", "Scene_75", "Scene_76", "Scene_77", "Scene_78", "Scene_79", "Scene_80", "Scene_81", "Scene_82", "Scene_83", "Scene_84", "Scene_85", "Scene_86", "Scene_87", "Scene_88", "Scene_89", "Scene_90", "Scene_91", "Scene_92", "Scene_93", "Scene_94", "Scene_95", "Scene_96", "Scene_97", "Scene_98", "Scene_99", "Scene_100", "Scene_101", "Scene_102", "Scene_103", "Scene_104", "Scene_105", "Scene_106", "Scene_107", "Scene_108", "Scene_109", "Scene_110", "Scene_111", "Scene_112", "Scene_113", "Scene_114", "Scene_115", "Scene_116", "Scene_117", "Scene_118", "Scene_119", "Scene_120", "Scene_121", "Scene_122", "Scene_123", "Scene_124", "Scene_125", "Scene_126", "Scene_127", "Scene_128", "Scene_129", "Scene_130", "Scene_131", "Scene_132", "Scene_133", "Scene_134", "Scene_135", "Scene_136", "Scene_137", "Scene_138", "Scene_139", "Scene_140", "Scene_141", "Scene_142", "Scene_143", "Scene_144", "Scene_145", "Scene_146", "Scene_147", "Scene_148", "Scene_149", "Scene_150", "Scene_151", "Scene_152", "Scene_153", "Scene_154", "Scene_155", "Scene_156", "Scene_157", "Scene_158", "Scene_159", "Scene_160", "Scene_161", "Scene_162", "Scene_163", "Scene_164", "Scene_165", "Scene_166", "Scene_167", "Scene_168", "Scene_169", "Scene_170", "Scene_171", "Scene_172", "Scene_173", "Scene_174", "Scene_175", "Scene_176", "Scene_177", "Scene_178", "Scene_179", "Scene_180", "Scene_181", "Scene_182", "Scene_183", "Scene_184", "Scene_185", "Scene_186", "Scene_187", "Scene_188", "Scene_189", "Scene_190", "Scene_191", "Scene_192", "Scene_193", "Scene_194", "Scene_195", "Scene_196", "Scene_197", "Scene_198", "Scene_199", "Scene_200", "Scene_201", "Scene_202", "Scene_203", "Scene_204", "Scene_205", "Scene_206", "Scene_207", "Scene_208", "Scene_209", "Scene_210", "Scene_211", "Scene_212", "Scene_213", "Scene_214", "Scene_215", "Scene_216", "Scene_217", "Scene_218", "Scene_219", "Scene_220", "Scene_221", "Scene_222", "Scene_223", "Scene_224", "Scene_225", "Scene_226", "Scene_227", "Scene_228", "Scene_229", "Scene_230", "Scene_231", "Scene_232", "Scene_233", "Scene_234", "Scene_235", "Scene_236", "Scene_237", "Scene_238", "Scene_239", "Scene_240", "Scene_241", "Scene_242", "Scene_243", "Scene_244", "Scene_245", "Scene_246", "Scene_247", "Scene_248", "Scene_249", "Scene_250", "Scene_251", "Scene_252", "Scene_253", "Scene_254", "Scene_255", "SceneCount = 256", "ClearSceneTimeout = 257", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_ClimateControlSchedule { enum _enumerated { DOW_Monday = 1, DOW_Tuesday = 2, DOW_Wednesday = 3, DOW_Thursday = 4, DOW_Friday = 5, DOW_Saturday = 6, DOW_Sunday = 7, OverrideState = 8, OverrideSetback = 9 }; _enumerated _value; ValueID_Index_ClimateControlSchedule(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 9; static const int* _values() { static const int values[] = { (ignore_assign)DOW_Monday = 1, (ignore_assign)DOW_Tuesday = 2, (ignore_assign)DOW_Wednesday = 3, (ignore_assign)DOW_Thursday = 4, (ignore_assign)DOW_Friday = 5, (ignore_assign)DOW_Saturday = 6, (ignore_assign)DOW_Sunday = 7, (ignore_assign)OverrideState = 8, (ignore_assign)OverrideSetback = 9, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "DOW_Monday = 1", "DOW_Tuesday = 2", "DOW_Wednesday = 3", "DOW_Thursday = 4", "DOW_Friday = 5", "DOW_Saturday = 6", "DOW_Sunday = 7", "OverrideState = 8", "OverrideSetback = 9", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_Clock { enum _enumerated { Day = 0, Hour = 1, Minute = 2 }; _enumerated _value; ValueID_Index_Clock(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 3; static const int* _values() { static const int values[] = { (ignore_assign)Day = 0, (ignore_assign)Hour = 1, (ignore_assign)Minute = 2, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Day = 0", "Hour = 1", "Minute = 2", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + +struct ValueID_Index_Color { enum _enumerated { Color = 0, Index = 1, Channels_Capabilities = 2, Duration = 4 }; _enumerated _value; ValueID_Index_Color(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 4; static const int* _values() { static const int values[] = { (ignore_assign)Color = 0, (ignore_assign)Index = 1, (ignore_assign)Channels_Capabilities = 2, (ignore_assign)Duration = 4, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Color = 0", "Index = 1", "Channels_Capabilities = 2", "Duration = 4", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + + +struct ValueID_Index_Configuration { enum _enumerated { Parameter_1 = 1, Parameter_2, Parameter_3, Parameter_4, Parameter_5, Parameter_6, Parameter_7, Parameter_8, Parameter_9, Parameter_10, Parameter_11, Parameter_12, Parameter_13, Parameter_14, Parameter_15, Parameter_16, Parameter_17, Parameter_18, Parameter_19, Parameter_20, Parameter_21, Parameter_22, Parameter_23, Parameter_24, Parameter_25, Parameter_26, Parameter_27, Parameter_28, Parameter_29, Parameter_30, Parameter_31, Parameter_32, Parameter_33, Parameter_34, Parameter_35, Parameter_36, Parameter_37, Parameter_38, Parameter_39, Parameter_40, Parameter_41, Parameter_42, Parameter_43, Parameter_44, Parameter_45, Parameter_46, Parameter_47, Parameter_48, Parameter_49, Parameter_50, Parameter_51, Parameter_52, Parameter_53, Parameter_54, Parameter_55, Parameter_56, Parameter_57, Parameter_58, Parameter_59, Parameter_60, Parameter_61, Parameter_62, Parameter_63, Parameter_64, Parameter_65, Parameter_66, Parameter_67, Parameter_68, Parameter_69, Parameter_70, Parameter_71, Parameter_72, Parameter_73, Parameter_74, Parameter_75, Parameter_76, Parameter_77, Parameter_78, Parameter_79, Parameter_80, Parameter_81, Parameter_82, Parameter_83, Parameter_84, Parameter_85, Parameter_86, Parameter_87, Parameter_88, Parameter_89, Parameter_90, Parameter_91, Parameter_92, Parameter_93, Parameter_94, Parameter_95, Parameter_96, Parameter_97, Parameter_98, Parameter_99, Parameter_100, Parameter_101, Parameter_102, Parameter_103, Parameter_104, Parameter_105, Parameter_106, Parameter_107, Parameter_108, Parameter_109, Parameter_110, Parameter_111, Parameter_112, Parameter_113, Parameter_114, Parameter_115, Parameter_116, Parameter_117, Parameter_118, Parameter_119, Parameter_120, Parameter_121, Parameter_122, Parameter_123, Parameter_124, Parameter_125, Parameter_126, Parameter_127, Parameter_128, Parameter_129, Parameter_130, Parameter_131, Parameter_132, Parameter_133, Parameter_134, Parameter_135, Parameter_136, Parameter_137, Parameter_138, Parameter_139, Parameter_140, Parameter_141, Parameter_142, Parameter_143, Parameter_144, Parameter_145, Parameter_146, Parameter_147, Parameter_148, Parameter_149, Parameter_150, Parameter_151, Parameter_152, Parameter_153, Parameter_154, Parameter_155, Parameter_156, Parameter_157, Parameter_158, Parameter_159, Parameter_160, Parameter_161, Parameter_162, Parameter_163, Parameter_164, Parameter_165, Parameter_166, Parameter_167, Parameter_168, Parameter_169, Parameter_170, Parameter_171, Parameter_172, Parameter_173, Parameter_174, Parameter_175, Parameter_176, Parameter_177, Parameter_178, Parameter_179, Parameter_180, Parameter_181, Parameter_182, Parameter_183, Parameter_184, Parameter_185, Parameter_186, Parameter_187, Parameter_188, Parameter_189, Parameter_190, Parameter_191, Parameter_192, Parameter_193, Parameter_194, Parameter_195, Parameter_196, Parameter_197, Parameter_198, Parameter_199, Parameter_200, Parameter_201, Parameter_202, Parameter_203, Parameter_204, Parameter_205, Parameter_206, Parameter_207, Parameter_208, Parameter_209, Parameter_210, Parameter_211, Parameter_212, Parameter_213, Parameter_214, Parameter_215, Parameter_216, Parameter_217, Parameter_218, Parameter_219, Parameter_220, Parameter_221, Parameter_222, Parameter_223, Parameter_224, Parameter_225, Parameter_226, Parameter_227, Parameter_228, Parameter_229, Parameter_230, Parameter_231, Parameter_232, Parameter_233, Parameter_234, Parameter_235, Parameter_236, Parameter_237, Parameter_238, Parameter_239, Parameter_240, Parameter_241, Parameter_242, Parameter_243, Parameter_244, Parameter_245, Parameter_246, Parameter_247, Parameter_248, Parameter_249, Parameter_250, Parameter_251, Parameter_252, Parameter_253, Parameter_254, Parameter_255 }; _enumerated _value; ValueID_Index_Configuration(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 255; static const int* _values() { static const int values[] = { (ignore_assign)Parameter_1 = 1, (ignore_assign)Parameter_2, (ignore_assign)Parameter_3, (ignore_assign)Parameter_4, (ignore_assign)Parameter_5, (ignore_assign)Parameter_6, (ignore_assign)Parameter_7, (ignore_assign)Parameter_8, (ignore_assign)Parameter_9, (ignore_assign)Parameter_10, (ignore_assign)Parameter_11, (ignore_assign)Parameter_12, (ignore_assign)Parameter_13, (ignore_assign)Parameter_14, (ignore_assign)Parameter_15, (ignore_assign)Parameter_16, (ignore_assign)Parameter_17, (ignore_assign)Parameter_18, (ignore_assign)Parameter_19, (ignore_assign)Parameter_20, (ignore_assign)Parameter_21, (ignore_assign)Parameter_22, (ignore_assign)Parameter_23, (ignore_assign)Parameter_24, (ignore_assign)Parameter_25, (ignore_assign)Parameter_26, (ignore_assign)Parameter_27, (ignore_assign)Parameter_28, (ignore_assign)Parameter_29, (ignore_assign)Parameter_30, (ignore_assign)Parameter_31, (ignore_assign)Parameter_32, (ignore_assign)Parameter_33, (ignore_assign)Parameter_34, (ignore_assign)Parameter_35, (ignore_assign)Parameter_36, (ignore_assign)Parameter_37, (ignore_assign)Parameter_38, (ignore_assign)Parameter_39, (ignore_assign)Parameter_40, (ignore_assign)Parameter_41, (ignore_assign)Parameter_42, (ignore_assign)Parameter_43, (ignore_assign)Parameter_44, (ignore_assign)Parameter_45, (ignore_assign)Parameter_46, (ignore_assign)Parameter_47, (ignore_assign)Parameter_48, (ignore_assign)Parameter_49, (ignore_assign)Parameter_50, (ignore_assign)Parameter_51, (ignore_assign)Parameter_52, (ignore_assign)Parameter_53, (ignore_assign)Parameter_54, (ignore_assign)Parameter_55, (ignore_assign)Parameter_56, (ignore_assign)Parameter_57, (ignore_assign)Parameter_58, (ignore_assign)Parameter_59, (ignore_assign)Parameter_60, (ignore_assign)Parameter_61, (ignore_assign)Parameter_62, (ignore_assign)Parameter_63, (ignore_assign)Parameter_64, (ignore_assign)Parameter_65, (ignore_assign)Parameter_66, (ignore_assign)Parameter_67, (ignore_assign)Parameter_68, (ignore_assign)Parameter_69, (ignore_assign)Parameter_70, (ignore_assign)Parameter_71, (ignore_assign)Parameter_72, (ignore_assign)Parameter_73, (ignore_assign)Parameter_74, (ignore_assign)Parameter_75, (ignore_assign)Parameter_76, (ignore_assign)Parameter_77, (ignore_assign)Parameter_78, (ignore_assign)Parameter_79, (ignore_assign)Parameter_80, (ignore_assign)Parameter_81, (ignore_assign)Parameter_82, (ignore_assign)Parameter_83, (ignore_assign)Parameter_84, (ignore_assign)Parameter_85, (ignore_assign)Parameter_86, (ignore_assign)Parameter_87, (ignore_assign)Parameter_88, (ignore_assign)Parameter_89, (ignore_assign)Parameter_90, (ignore_assign)Parameter_91, (ignore_assign)Parameter_92, (ignore_assign)Parameter_93, (ignore_assign)Parameter_94, (ignore_assign)Parameter_95, (ignore_assign)Parameter_96, (ignore_assign)Parameter_97, (ignore_assign)Parameter_98, (ignore_assign)Parameter_99, (ignore_assign)Parameter_100, (ignore_assign)Parameter_101, (ignore_assign)Parameter_102, (ignore_assign)Parameter_103, (ignore_assign)Parameter_104, (ignore_assign)Parameter_105, (ignore_assign)Parameter_106, (ignore_assign)Parameter_107, (ignore_assign)Parameter_108, (ignore_assign)Parameter_109, (ignore_assign)Parameter_110, (ignore_assign)Parameter_111, (ignore_assign)Parameter_112, (ignore_assign)Parameter_113, (ignore_assign)Parameter_114, (ignore_assign)Parameter_115, (ignore_assign)Parameter_116, (ignore_assign)Parameter_117, (ignore_assign)Parameter_118, (ignore_assign)Parameter_119, (ignore_assign)Parameter_120, (ignore_assign)Parameter_121, (ignore_assign)Parameter_122, (ignore_assign)Parameter_123, (ignore_assign)Parameter_124, (ignore_assign)Parameter_125, (ignore_assign)Parameter_126, (ignore_assign)Parameter_127, (ignore_assign)Parameter_128, (ignore_assign)Parameter_129, (ignore_assign)Parameter_130, (ignore_assign)Parameter_131, (ignore_assign)Parameter_132, (ignore_assign)Parameter_133, (ignore_assign)Parameter_134, (ignore_assign)Parameter_135, (ignore_assign)Parameter_136, (ignore_assign)Parameter_137, (ignore_assign)Parameter_138, (ignore_assign)Parameter_139, (ignore_assign)Parameter_140, (ignore_assign)Parameter_141, (ignore_assign)Parameter_142, (ignore_assign)Parameter_143, (ignore_assign)Parameter_144, (ignore_assign)Parameter_145, (ignore_assign)Parameter_146, (ignore_assign)Parameter_147, (ignore_assign)Parameter_148, (ignore_assign)Parameter_149, (ignore_assign)Parameter_150, (ignore_assign)Parameter_151, (ignore_assign)Parameter_152, (ignore_assign)Parameter_153, (ignore_assign)Parameter_154, (ignore_assign)Parameter_155, (ignore_assign)Parameter_156, (ignore_assign)Parameter_157, (ignore_assign)Parameter_158, (ignore_assign)Parameter_159, (ignore_assign)Parameter_160, (ignore_assign)Parameter_161, (ignore_assign)Parameter_162, (ignore_assign)Parameter_163, (ignore_assign)Parameter_164, (ignore_assign)Parameter_165, (ignore_assign)Parameter_166, (ignore_assign)Parameter_167, (ignore_assign)Parameter_168, (ignore_assign)Parameter_169, (ignore_assign)Parameter_170, (ignore_assign)Parameter_171, (ignore_assign)Parameter_172, (ignore_assign)Parameter_173, (ignore_assign)Parameter_174, (ignore_assign)Parameter_175, (ignore_assign)Parameter_176, (ignore_assign)Parameter_177, (ignore_assign)Parameter_178, (ignore_assign)Parameter_179, (ignore_assign)Parameter_180, (ignore_assign)Parameter_181, (ignore_assign)Parameter_182, (ignore_assign)Parameter_183, (ignore_assign)Parameter_184, (ignore_assign)Parameter_185, (ignore_assign)Parameter_186, (ignore_assign)Parameter_187, (ignore_assign)Parameter_188, (ignore_assign)Parameter_189, (ignore_assign)Parameter_190, (ignore_assign)Parameter_191, (ignore_assign)Parameter_192, (ignore_assign)Parameter_193, (ignore_assign)Parameter_194, (ignore_assign)Parameter_195, (ignore_assign)Parameter_196, (ignore_assign)Parameter_197, (ignore_assign)Parameter_198, (ignore_assign)Parameter_199, (ignore_assign)Parameter_200, (ignore_assign)Parameter_201, (ignore_assign)Parameter_202, (ignore_assign)Parameter_203, (ignore_assign)Parameter_204, (ignore_assign)Parameter_205, (ignore_assign)Parameter_206, (ignore_assign)Parameter_207, (ignore_assign)Parameter_208, (ignore_assign)Parameter_209, (ignore_assign)Parameter_210, (ignore_assign)Parameter_211, (ignore_assign)Parameter_212, (ignore_assign)Parameter_213, (ignore_assign)Parameter_214, (ignore_assign)Parameter_215, (ignore_assign)Parameter_216, (ignore_assign)Parameter_217, (ignore_assign)Parameter_218, (ignore_assign)Parameter_219, (ignore_assign)Parameter_220, (ignore_assign)Parameter_221, (ignore_assign)Parameter_222, (ignore_assign)Parameter_223, (ignore_assign)Parameter_224, (ignore_assign)Parameter_225, (ignore_assign)Parameter_226, (ignore_assign)Parameter_227, (ignore_assign)Parameter_228, (ignore_assign)Parameter_229, (ignore_assign)Parameter_230, (ignore_assign)Parameter_231, (ignore_assign)Parameter_232, (ignore_assign)Parameter_233, (ignore_assign)Parameter_234, (ignore_assign)Parameter_235, (ignore_assign)Parameter_236, (ignore_assign)Parameter_237, (ignore_assign)Parameter_238, (ignore_assign)Parameter_239, (ignore_assign)Parameter_240, (ignore_assign)Parameter_241, (ignore_assign)Parameter_242, (ignore_assign)Parameter_243, (ignore_assign)Parameter_244, (ignore_assign)Parameter_245, (ignore_assign)Parameter_246, (ignore_assign)Parameter_247, (ignore_assign)Parameter_248, (ignore_assign)Parameter_249, (ignore_assign)Parameter_250, (ignore_assign)Parameter_251, (ignore_assign)Parameter_252, (ignore_assign)Parameter_253, (ignore_assign)Parameter_254, (ignore_assign)Parameter_255, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Parameter_1 = 1", "Parameter_2", "Parameter_3", "Parameter_4", "Parameter_5", "Parameter_6", "Parameter_7", "Parameter_8", "Parameter_9", "Parameter_10", "Parameter_11", "Parameter_12", "Parameter_13", "Parameter_14", "Parameter_15", "Parameter_16", "Parameter_17", "Parameter_18", "Parameter_19", "Parameter_20", "Parameter_21", "Parameter_22", "Parameter_23", "Parameter_24", "Parameter_25", "Parameter_26", "Parameter_27", "Parameter_28", "Parameter_29", "Parameter_30", "Parameter_31", "Parameter_32", "Parameter_33", "Parameter_34", "Parameter_35", "Parameter_36", "Parameter_37", "Parameter_38", "Parameter_39", "Parameter_40", "Parameter_41", "Parameter_42", "Parameter_43", "Parameter_44", "Parameter_45", "Parameter_46", "Parameter_47", "Parameter_48", "Parameter_49", "Parameter_50", "Parameter_51", "Parameter_52", "Parameter_53", "Parameter_54", "Parameter_55", "Parameter_56", "Parameter_57", "Parameter_58", "Parameter_59", "Parameter_60", "Parameter_61", "Parameter_62", "Parameter_63", "Parameter_64", "Parameter_65", "Parameter_66", "Parameter_67", "Parameter_68", "Parameter_69", "Parameter_70", "Parameter_71", "Parameter_72", "Parameter_73", "Parameter_74", "Parameter_75", "Parameter_76", "Parameter_77", "Parameter_78", "Parameter_79", "Parameter_80", "Parameter_81", "Parameter_82", "Parameter_83", "Parameter_84", "Parameter_85", "Parameter_86", "Parameter_87", "Parameter_88", "Parameter_89", "Parameter_90", "Parameter_91", "Parameter_92", "Parameter_93", "Parameter_94", "Parameter_95", "Parameter_96", "Parameter_97", "Parameter_98", "Parameter_99", "Parameter_100", "Parameter_101", "Parameter_102", "Parameter_103", "Parameter_104", "Parameter_105", "Parameter_106", "Parameter_107", "Parameter_108", "Parameter_109", "Parameter_110", "Parameter_111", "Parameter_112", "Parameter_113", "Parameter_114", "Parameter_115", "Parameter_116", "Parameter_117", "Parameter_118", "Parameter_119", "Parameter_120", "Parameter_121", "Parameter_122", "Parameter_123", "Parameter_124", "Parameter_125", "Parameter_126", "Parameter_127", "Parameter_128", "Parameter_129", "Parameter_130", "Parameter_131", "Parameter_132", "Parameter_133", "Parameter_134", "Parameter_135", "Parameter_136", "Parameter_137", "Parameter_138", "Parameter_139", "Parameter_140", "Parameter_141", "Parameter_142", "Parameter_143", "Parameter_144", "Parameter_145", "Parameter_146", "Parameter_147", "Parameter_148", "Parameter_149", "Parameter_150", "Parameter_151", "Parameter_152", "Parameter_153", "Parameter_154", "Parameter_155", "Parameter_156", "Parameter_157", "Parameter_158", "Parameter_159", "Parameter_160", "Parameter_161", "Parameter_162", "Parameter_163", "Parameter_164", "Parameter_165", "Parameter_166", "Parameter_167", "Parameter_168", "Parameter_169", "Parameter_170", "Parameter_171", "Parameter_172", "Parameter_173", "Parameter_174", "Parameter_175", "Parameter_176", "Parameter_177", "Parameter_178", "Parameter_179", "Parameter_180", "Parameter_181", "Parameter_182", "Parameter_183", "Parameter_184", "Parameter_185", "Parameter_186", "Parameter_187", "Parameter_188", "Parameter_189", "Parameter_190", "Parameter_191", "Parameter_192", "Parameter_193", "Parameter_194", "Parameter_195", "Parameter_196", "Parameter_197", "Parameter_198", "Parameter_199", "Parameter_200", "Parameter_201", "Parameter_202", "Parameter_203", "Parameter_204", "Parameter_205", "Parameter_206", "Parameter_207", "Parameter_208", "Parameter_209", "Parameter_210", "Parameter_211", "Parameter_212", "Parameter_213", "Parameter_214", "Parameter_215", "Parameter_216", "Parameter_217", "Parameter_218", "Parameter_219", "Parameter_220", "Parameter_221", "Parameter_222", "Parameter_223", "Parameter_224", "Parameter_225", "Parameter_226", "Parameter_227", "Parameter_228", "Parameter_229", "Parameter_230", "Parameter_231", "Parameter_232", "Parameter_233", "Parameter_234", "Parameter_235", "Parameter_236", "Parameter_237", "Parameter_238", "Parameter_239", "Parameter_240", "Parameter_241", "Parameter_242", "Parameter_243", "Parameter_244", "Parameter_245", "Parameter_246", "Parameter_247", "Parameter_248", "Parameter_249", "Parameter_250", "Parameter_251", "Parameter_252", "Parameter_253", "Parameter_254", "Parameter_255", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_ControllerReplication { enum _enumerated { NodeId = 0, Function = 1, Replicate = 2 }; _enumerated _value; ValueID_Index_ControllerReplication(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 3; static const int* _values() { static const int values[] = { (ignore_assign)NodeId = 0, (ignore_assign)Function = 1, (ignore_assign)Replicate = 2, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "NodeId = 0", "Function = 1", "Replicate = 2", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + +struct ValueID_Index_DoorLock { enum _enumerated { Lock = 0, Lock_Mode = 1, System_Config_Mode = 2, System_Config_Minutes = 3, System_Config_Seconds = 4, System_Config_OutsideHandles = 5, System_Config_InsideHandles = 6 }; _enumerated _value; ValueID_Index_DoorLock(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 7; static const int* _values() { static const int values[] = { (ignore_assign)Lock = 0, (ignore_assign)Lock_Mode = 1, (ignore_assign)System_Config_Mode = 2, (ignore_assign)System_Config_Minutes = 3, (ignore_assign)System_Config_Seconds = 4, (ignore_assign)System_Config_OutsideHandles = 5, (ignore_assign)System_Config_InsideHandles = 6, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Lock = 0", "Lock_Mode = 1", "System_Config_Mode = 2", "System_Config_Minutes = 3", "System_Config_Seconds = 4", "System_Config_OutsideHandles = 5", "System_Config_InsideHandles = 6", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_DoorLockLogging { enum _enumerated { System_Config_MaxRecords = 0, GetRecordNo = 1, LogRecord = 2 }; _enumerated _value; ValueID_Index_DoorLockLogging(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 3; static const int* _values() { static const int values[] = { (ignore_assign)System_Config_MaxRecords = 0, (ignore_assign)GetRecordNo = 1, (ignore_assign)LogRecord = 2, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "System_Config_MaxRecords = 0", "GetRecordNo = 1", "LogRecord = 2", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + +struct ValueID_Index_EnergyProduction { enum _enumerated { Instant = 0, Total = 1, Today = 2, Time = 3 }; _enumerated _value; ValueID_Index_EnergyProduction(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 4; static const int* _values() { static const int values[] = { (ignore_assign)Instant = 0, (ignore_assign)Total = 1, (ignore_assign)Today = 2, (ignore_assign)Time = 3, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Instant = 0", "Total = 1", "Today = 2", "Time = 3", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + + +struct ValueID_Index_Indicator { enum _enumerated { Indicator = 0 }; _enumerated _value; ValueID_Index_Indicator(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Indicator = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Indicator = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_Language { enum _enumerated { Language = 0, Country = 1 }; _enumerated _value; ValueID_Index_Language(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 2; static const int* _values() { static const int values[] = { (ignore_assign)Language = 0, (ignore_assign)Country = 1, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Language = 0", "Country = 1", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + +struct ValueID_Index_Lock { enum _enumerated { Locked = 0 }; _enumerated _value; ValueID_Index_Lock(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Locked = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Locked = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_ManufacturerProprietary { enum _enumerated { FibaroVenetianBlinds_Blinds = 0, FibaroVenetianBlinds_Tilt = 1 }; _enumerated _value; ValueID_Index_ManufacturerProprietary(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 2; static const int* _values() { static const int values[] = { (ignore_assign)FibaroVenetianBlinds_Blinds = 0, (ignore_assign)FibaroVenetianBlinds_Tilt = 1, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "FibaroVenetianBlinds_Blinds = 0", "FibaroVenetianBlinds_Tilt = 1", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + +struct ValueID_Index_ManufacturerSpecific { enum _enumerated { LoadedConfig = 0, LocalConfig = 1, LatestConfig = 2, DeviceID = 3, SerialNumber = 4 }; _enumerated _value; ValueID_Index_ManufacturerSpecific(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 5; static const int* _values() { static const int values[] = { (ignore_assign)LoadedConfig = 0, (ignore_assign)LocalConfig = 1, (ignore_assign)LatestConfig = 2, (ignore_assign)DeviceID = 3, (ignore_assign)SerialNumber = 4, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "LoadedConfig = 0", "LocalConfig = 1", "LatestConfig = 2", "DeviceID = 3", "SerialNumber = 4", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + + + +struct ValueID_Index_Meter { enum _enumerated { Meter_1 = 0, Meter_2, Meter_3, Meter_4, Meter_5, Meter_6, Meter_7, Meter_8, Meter_9, Meter_10, Meter_11, Meter_12, Meter_13, Meter_14, Meter_15, Meter_16, Meter_17, Meter_18, Meter_19, Meter_20, Meter_21, Meter_22, Meter_23, Meter_24, Meter_25, Meter_26, Meter_27, Meter_28, Meter_29, Meter_30, Meter_31, Meter_32, Exporting = 32, Reset = 33 }; _enumerated _value; ValueID_Index_Meter(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 34; static const int* _values() { static const int values[] = { (ignore_assign)Meter_1 = 0, (ignore_assign)Meter_2, (ignore_assign)Meter_3, (ignore_assign)Meter_4, (ignore_assign)Meter_5, (ignore_assign)Meter_6, (ignore_assign)Meter_7, (ignore_assign)Meter_8, (ignore_assign)Meter_9, (ignore_assign)Meter_10, (ignore_assign)Meter_11, (ignore_assign)Meter_12, (ignore_assign)Meter_13, (ignore_assign)Meter_14, (ignore_assign)Meter_15, (ignore_assign)Meter_16, (ignore_assign)Meter_17, (ignore_assign)Meter_18, (ignore_assign)Meter_19, (ignore_assign)Meter_20, (ignore_assign)Meter_21, (ignore_assign)Meter_22, (ignore_assign)Meter_23, (ignore_assign)Meter_24, (ignore_assign)Meter_25, (ignore_assign)Meter_26, (ignore_assign)Meter_27, (ignore_assign)Meter_28, (ignore_assign)Meter_29, (ignore_assign)Meter_30, (ignore_assign)Meter_31, (ignore_assign)Meter_32, (ignore_assign)Exporting = 32, (ignore_assign)Reset = 33, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Meter_1 = 0", "Meter_2", "Meter_3", "Meter_4", "Meter_5", "Meter_6", "Meter_7", "Meter_8", "Meter_9", "Meter_10", "Meter_11", "Meter_12", "Meter_13", "Meter_14", "Meter_15", "Meter_16", "Meter_17", "Meter_18", "Meter_19", "Meter_20", "Meter_21", "Meter_22", "Meter_23", "Meter_24", "Meter_25", "Meter_26", "Meter_27", "Meter_28", "Meter_29", "Meter_30", "Meter_31", "Meter_32", "Exporting = 32", "Reset = 33", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_MeterPulse { enum _enumerated { Count = 0 }; _enumerated _value; ValueID_Index_MeterPulse(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Count = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Count = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_PowerLevel { enum _enumerated { Powerlevel = 0, Timeout = 1, Set = 2, TestNode = 3, TestPowerlevel = 4, TestFrames = 5, Test = 6, Report = 7, TestStatus = 8, TestAckFrames = 9 }; _enumerated _value; ValueID_Index_PowerLevel(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 10; static const int* _values() { static const int values[] = { (ignore_assign)Powerlevel = 0, (ignore_assign)Timeout = 1, (ignore_assign)Set = 2, (ignore_assign)TestNode = 3, (ignore_assign)TestPowerlevel = 4, (ignore_assign)TestFrames = 5, (ignore_assign)Test = 6, (ignore_assign)Report = 7, (ignore_assign)TestStatus = 8, (ignore_assign)TestAckFrames = 9, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Powerlevel = 0", "Timeout = 1", "Set = 2", "TestNode = 3", "TestPowerlevel = 4", "TestFrames = 5", "Test = 6", "Report = 7", "TestStatus = 8", "TestAckFrames = 9", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_Protection { enum _enumerated { Protection = 0 }; _enumerated _value; ValueID_Index_Protection(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Protection = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Protection = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_SceneActivation { enum _enumerated { SceneID = 0, Duration = 1 }; _enumerated _value; ValueID_Index_SceneActivation(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 2; static const int* _values() { static const int values[] = { (ignore_assign)SceneID = 0, (ignore_assign)Duration = 1, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "SceneID = 0", "Duration = 1", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + +struct ValueID_Index_Security { enum _enumerated { Secured = 0 }; _enumerated _value; ValueID_Index_Security(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Secured = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Secured = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_SensorAlarm { enum _enumerated { Sensor_1, Sensor_2, Sensor_3, Sensor_4, Sensor_5, Sensor_6, Sensor_7, Sensor_8, Sensor_9, Sensor_10, Sensor_11, Sensor_12, Sensor_13, Sensor_14, Sensor_15, Sensor_16, Sensor_17, Sensor_18, Sensor_19, Sensor_20, Sensor_21, Sensor_22, Sensor_23, Sensor_24, Sensor_25, Sensor_26, Sensor_27, Sensor_28, Sensor_29, Sensor_30, Sensor_31, Sensor_32, Sensor_33, Sensor_34, Sensor_35, Sensor_36, Sensor_37, Sensor_38, Sensor_39, Sensor_40, Sensor_41, Sensor_42, Sensor_43, Sensor_44, Sensor_45, Sensor_46, Sensor_47, Sensor_48, Sensor_49, Sensor_50, Sensor_51, Sensor_52, Sensor_53, Sensor_54, Sensor_55, Sensor_56, Sensor_57, Sensor_58, Sensor_59, Sensor_60, Sensor_61, Sensor_62, Sensor_63, Sensor_64, Sensor_65, Sensor_66, Sensor_67, Sensor_68, Sensor_69, Sensor_70, Sensor_71, Sensor_72, Sensor_73, Sensor_74, Sensor_75, Sensor_76, Sensor_77, Sensor_78, Sensor_79, Sensor_80, Sensor_81, Sensor_82, Sensor_83, Sensor_84, Sensor_85, Sensor_86, Sensor_87, Sensor_88, Sensor_89, Sensor_90, Sensor_91, Sensor_92, Sensor_93, Sensor_94, Sensor_95, Sensor_96, Sensor_97, Sensor_98, Sensor_99, Sensor_100, Sensor_101, Sensor_102, Sensor_103, Sensor_104, Sensor_105, Sensor_106, Sensor_107, Sensor_108, Sensor_109, Sensor_110, Sensor_111, Sensor_112, Sensor_113, Sensor_114, Sensor_115, Sensor_116, Sensor_117, Sensor_118, Sensor_119, Sensor_120, Sensor_121, Sensor_122, Sensor_123, Sensor_124, Sensor_125, Sensor_126, Sensor_127, Sensor_128, Sensor_129, Sensor_130, Sensor_131, Sensor_132, Sensor_133, Sensor_134, Sensor_135, Sensor_136, Sensor_137, Sensor_138, Sensor_139, Sensor_140, Sensor_141, Sensor_142, Sensor_143, Sensor_144, Sensor_145, Sensor_146, Sensor_147, Sensor_148, Sensor_149, Sensor_150, Sensor_151, Sensor_152, Sensor_153, Sensor_154, Sensor_155, Sensor_156, Sensor_157, Sensor_158, Sensor_159, Sensor_160, Sensor_161, Sensor_162, Sensor_163, Sensor_164, Sensor_165, Sensor_166, Sensor_167, Sensor_168, Sensor_169, Sensor_170, Sensor_171, Sensor_172, Sensor_173, Sensor_174, Sensor_175, Sensor_176, Sensor_177, Sensor_178, Sensor_179, Sensor_180, Sensor_181, Sensor_182, Sensor_183, Sensor_184, Sensor_185, Sensor_186, Sensor_187, Sensor_188, Sensor_189, Sensor_190, Sensor_191, Sensor_192, Sensor_193, Sensor_194, Sensor_195, Sensor_196, Sensor_197, Sensor_198, Sensor_199, Sensor_200, Sensor_201, Sensor_202, Sensor_203, Sensor_204, Sensor_205, Sensor_206, Sensor_207, Sensor_208, Sensor_209, Sensor_210, Sensor_211, Sensor_212, Sensor_213, Sensor_214, Sensor_215, Sensor_216, Sensor_217, Sensor_218, Sensor_219, Sensor_220, Sensor_221, Sensor_222, Sensor_223, Sensor_224, Sensor_225, Sensor_226, Sensor_227, Sensor_228, Sensor_229, Sensor_230, Sensor_231, Sensor_232, Sensor_233, Sensor_234, Sensor_235, Sensor_236, Sensor_237, Sensor_238, Sensor_239, Sensor_240, Sensor_241, Sensor_242, Sensor_243, Sensor_244, Sensor_245, Sensor_246, Sensor_247, Sensor_248, Sensor_249, Sensor_250, Sensor_251, Sensor_252, Sensor_253, Sensor_254, Sensor_255 }; _enumerated _value; ValueID_Index_SensorAlarm(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 255; static const int* _values() { static const int values[] = { (ignore_assign)Sensor_1, (ignore_assign)Sensor_2, (ignore_assign)Sensor_3, (ignore_assign)Sensor_4, (ignore_assign)Sensor_5, (ignore_assign)Sensor_6, (ignore_assign)Sensor_7, (ignore_assign)Sensor_8, (ignore_assign)Sensor_9, (ignore_assign)Sensor_10, (ignore_assign)Sensor_11, (ignore_assign)Sensor_12, (ignore_assign)Sensor_13, (ignore_assign)Sensor_14, (ignore_assign)Sensor_15, (ignore_assign)Sensor_16, (ignore_assign)Sensor_17, (ignore_assign)Sensor_18, (ignore_assign)Sensor_19, (ignore_assign)Sensor_20, (ignore_assign)Sensor_21, (ignore_assign)Sensor_22, (ignore_assign)Sensor_23, (ignore_assign)Sensor_24, (ignore_assign)Sensor_25, (ignore_assign)Sensor_26, (ignore_assign)Sensor_27, (ignore_assign)Sensor_28, (ignore_assign)Sensor_29, (ignore_assign)Sensor_30, (ignore_assign)Sensor_31, (ignore_assign)Sensor_32, (ignore_assign)Sensor_33, (ignore_assign)Sensor_34, (ignore_assign)Sensor_35, (ignore_assign)Sensor_36, (ignore_assign)Sensor_37, (ignore_assign)Sensor_38, (ignore_assign)Sensor_39, (ignore_assign)Sensor_40, (ignore_assign)Sensor_41, (ignore_assign)Sensor_42, (ignore_assign)Sensor_43, (ignore_assign)Sensor_44, (ignore_assign)Sensor_45, (ignore_assign)Sensor_46, (ignore_assign)Sensor_47, (ignore_assign)Sensor_48, (ignore_assign)Sensor_49, (ignore_assign)Sensor_50, (ignore_assign)Sensor_51, (ignore_assign)Sensor_52, (ignore_assign)Sensor_53, (ignore_assign)Sensor_54, (ignore_assign)Sensor_55, (ignore_assign)Sensor_56, (ignore_assign)Sensor_57, (ignore_assign)Sensor_58, (ignore_assign)Sensor_59, (ignore_assign)Sensor_60, (ignore_assign)Sensor_61, (ignore_assign)Sensor_62, (ignore_assign)Sensor_63, (ignore_assign)Sensor_64, (ignore_assign)Sensor_65, (ignore_assign)Sensor_66, (ignore_assign)Sensor_67, (ignore_assign)Sensor_68, (ignore_assign)Sensor_69, (ignore_assign)Sensor_70, (ignore_assign)Sensor_71, (ignore_assign)Sensor_72, (ignore_assign)Sensor_73, (ignore_assign)Sensor_74, (ignore_assign)Sensor_75, (ignore_assign)Sensor_76, (ignore_assign)Sensor_77, (ignore_assign)Sensor_78, (ignore_assign)Sensor_79, (ignore_assign)Sensor_80, (ignore_assign)Sensor_81, (ignore_assign)Sensor_82, (ignore_assign)Sensor_83, (ignore_assign)Sensor_84, (ignore_assign)Sensor_85, (ignore_assign)Sensor_86, (ignore_assign)Sensor_87, (ignore_assign)Sensor_88, (ignore_assign)Sensor_89, (ignore_assign)Sensor_90, (ignore_assign)Sensor_91, (ignore_assign)Sensor_92, (ignore_assign)Sensor_93, (ignore_assign)Sensor_94, (ignore_assign)Sensor_95, (ignore_assign)Sensor_96, (ignore_assign)Sensor_97, (ignore_assign)Sensor_98, (ignore_assign)Sensor_99, (ignore_assign)Sensor_100, (ignore_assign)Sensor_101, (ignore_assign)Sensor_102, (ignore_assign)Sensor_103, (ignore_assign)Sensor_104, (ignore_assign)Sensor_105, (ignore_assign)Sensor_106, (ignore_assign)Sensor_107, (ignore_assign)Sensor_108, (ignore_assign)Sensor_109, (ignore_assign)Sensor_110, (ignore_assign)Sensor_111, (ignore_assign)Sensor_112, (ignore_assign)Sensor_113, (ignore_assign)Sensor_114, (ignore_assign)Sensor_115, (ignore_assign)Sensor_116, (ignore_assign)Sensor_117, (ignore_assign)Sensor_118, (ignore_assign)Sensor_119, (ignore_assign)Sensor_120, (ignore_assign)Sensor_121, (ignore_assign)Sensor_122, (ignore_assign)Sensor_123, (ignore_assign)Sensor_124, (ignore_assign)Sensor_125, (ignore_assign)Sensor_126, (ignore_assign)Sensor_127, (ignore_assign)Sensor_128, (ignore_assign)Sensor_129, (ignore_assign)Sensor_130, (ignore_assign)Sensor_131, (ignore_assign)Sensor_132, (ignore_assign)Sensor_133, (ignore_assign)Sensor_134, (ignore_assign)Sensor_135, (ignore_assign)Sensor_136, (ignore_assign)Sensor_137, (ignore_assign)Sensor_138, (ignore_assign)Sensor_139, (ignore_assign)Sensor_140, (ignore_assign)Sensor_141, (ignore_assign)Sensor_142, (ignore_assign)Sensor_143, (ignore_assign)Sensor_144, (ignore_assign)Sensor_145, (ignore_assign)Sensor_146, (ignore_assign)Sensor_147, (ignore_assign)Sensor_148, (ignore_assign)Sensor_149, (ignore_assign)Sensor_150, (ignore_assign)Sensor_151, (ignore_assign)Sensor_152, (ignore_assign)Sensor_153, (ignore_assign)Sensor_154, (ignore_assign)Sensor_155, (ignore_assign)Sensor_156, (ignore_assign)Sensor_157, (ignore_assign)Sensor_158, (ignore_assign)Sensor_159, (ignore_assign)Sensor_160, (ignore_assign)Sensor_161, (ignore_assign)Sensor_162, (ignore_assign)Sensor_163, (ignore_assign)Sensor_164, (ignore_assign)Sensor_165, (ignore_assign)Sensor_166, (ignore_assign)Sensor_167, (ignore_assign)Sensor_168, (ignore_assign)Sensor_169, (ignore_assign)Sensor_170, (ignore_assign)Sensor_171, (ignore_assign)Sensor_172, (ignore_assign)Sensor_173, (ignore_assign)Sensor_174, (ignore_assign)Sensor_175, (ignore_assign)Sensor_176, (ignore_assign)Sensor_177, (ignore_assign)Sensor_178, (ignore_assign)Sensor_179, (ignore_assign)Sensor_180, (ignore_assign)Sensor_181, (ignore_assign)Sensor_182, (ignore_assign)Sensor_183, (ignore_assign)Sensor_184, (ignore_assign)Sensor_185, (ignore_assign)Sensor_186, (ignore_assign)Sensor_187, (ignore_assign)Sensor_188, (ignore_assign)Sensor_189, (ignore_assign)Sensor_190, (ignore_assign)Sensor_191, (ignore_assign)Sensor_192, (ignore_assign)Sensor_193, (ignore_assign)Sensor_194, (ignore_assign)Sensor_195, (ignore_assign)Sensor_196, (ignore_assign)Sensor_197, (ignore_assign)Sensor_198, (ignore_assign)Sensor_199, (ignore_assign)Sensor_200, (ignore_assign)Sensor_201, (ignore_assign)Sensor_202, (ignore_assign)Sensor_203, (ignore_assign)Sensor_204, (ignore_assign)Sensor_205, (ignore_assign)Sensor_206, (ignore_assign)Sensor_207, (ignore_assign)Sensor_208, (ignore_assign)Sensor_209, (ignore_assign)Sensor_210, (ignore_assign)Sensor_211, (ignore_assign)Sensor_212, (ignore_assign)Sensor_213, (ignore_assign)Sensor_214, (ignore_assign)Sensor_215, (ignore_assign)Sensor_216, (ignore_assign)Sensor_217, (ignore_assign)Sensor_218, (ignore_assign)Sensor_219, (ignore_assign)Sensor_220, (ignore_assign)Sensor_221, (ignore_assign)Sensor_222, (ignore_assign)Sensor_223, (ignore_assign)Sensor_224, (ignore_assign)Sensor_225, (ignore_assign)Sensor_226, (ignore_assign)Sensor_227, (ignore_assign)Sensor_228, (ignore_assign)Sensor_229, (ignore_assign)Sensor_230, (ignore_assign)Sensor_231, (ignore_assign)Sensor_232, (ignore_assign)Sensor_233, (ignore_assign)Sensor_234, (ignore_assign)Sensor_235, (ignore_assign)Sensor_236, (ignore_assign)Sensor_237, (ignore_assign)Sensor_238, (ignore_assign)Sensor_239, (ignore_assign)Sensor_240, (ignore_assign)Sensor_241, (ignore_assign)Sensor_242, (ignore_assign)Sensor_243, (ignore_assign)Sensor_244, (ignore_assign)Sensor_245, (ignore_assign)Sensor_246, (ignore_assign)Sensor_247, (ignore_assign)Sensor_248, (ignore_assign)Sensor_249, (ignore_assign)Sensor_250, (ignore_assign)Sensor_251, (ignore_assign)Sensor_252, (ignore_assign)Sensor_253, (ignore_assign)Sensor_254, (ignore_assign)Sensor_255, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Sensor_1", "Sensor_2", "Sensor_3", "Sensor_4", "Sensor_5", "Sensor_6", "Sensor_7", "Sensor_8", "Sensor_9", "Sensor_10", "Sensor_11", "Sensor_12", "Sensor_13", "Sensor_14", "Sensor_15", "Sensor_16", "Sensor_17", "Sensor_18", "Sensor_19", "Sensor_20", "Sensor_21", "Sensor_22", "Sensor_23", "Sensor_24", "Sensor_25", "Sensor_26", "Sensor_27", "Sensor_28", "Sensor_29", "Sensor_30", "Sensor_31", "Sensor_32", "Sensor_33", "Sensor_34", "Sensor_35", "Sensor_36", "Sensor_37", "Sensor_38", "Sensor_39", "Sensor_40", "Sensor_41", "Sensor_42", "Sensor_43", "Sensor_44", "Sensor_45", "Sensor_46", "Sensor_47", "Sensor_48", "Sensor_49", "Sensor_50", "Sensor_51", "Sensor_52", "Sensor_53", "Sensor_54", "Sensor_55", "Sensor_56", "Sensor_57", "Sensor_58", "Sensor_59", "Sensor_60", "Sensor_61", "Sensor_62", "Sensor_63", "Sensor_64", "Sensor_65", "Sensor_66", "Sensor_67", "Sensor_68", "Sensor_69", "Sensor_70", "Sensor_71", "Sensor_72", "Sensor_73", "Sensor_74", "Sensor_75", "Sensor_76", "Sensor_77", "Sensor_78", "Sensor_79", "Sensor_80", "Sensor_81", "Sensor_82", "Sensor_83", "Sensor_84", "Sensor_85", "Sensor_86", "Sensor_87", "Sensor_88", "Sensor_89", "Sensor_90", "Sensor_91", "Sensor_92", "Sensor_93", "Sensor_94", "Sensor_95", "Sensor_96", "Sensor_97", "Sensor_98", "Sensor_99", "Sensor_100", "Sensor_101", "Sensor_102", "Sensor_103", "Sensor_104", "Sensor_105", "Sensor_106", "Sensor_107", "Sensor_108", "Sensor_109", "Sensor_110", "Sensor_111", "Sensor_112", "Sensor_113", "Sensor_114", "Sensor_115", "Sensor_116", "Sensor_117", "Sensor_118", "Sensor_119", "Sensor_120", "Sensor_121", "Sensor_122", "Sensor_123", "Sensor_124", "Sensor_125", "Sensor_126", "Sensor_127", "Sensor_128", "Sensor_129", "Sensor_130", "Sensor_131", "Sensor_132", "Sensor_133", "Sensor_134", "Sensor_135", "Sensor_136", "Sensor_137", "Sensor_138", "Sensor_139", "Sensor_140", "Sensor_141", "Sensor_142", "Sensor_143", "Sensor_144", "Sensor_145", "Sensor_146", "Sensor_147", "Sensor_148", "Sensor_149", "Sensor_150", "Sensor_151", "Sensor_152", "Sensor_153", "Sensor_154", "Sensor_155", "Sensor_156", "Sensor_157", "Sensor_158", "Sensor_159", "Sensor_160", "Sensor_161", "Sensor_162", "Sensor_163", "Sensor_164", "Sensor_165", "Sensor_166", "Sensor_167", "Sensor_168", "Sensor_169", "Sensor_170", "Sensor_171", "Sensor_172", "Sensor_173", "Sensor_174", "Sensor_175", "Sensor_176", "Sensor_177", "Sensor_178", "Sensor_179", "Sensor_180", "Sensor_181", "Sensor_182", "Sensor_183", "Sensor_184", "Sensor_185", "Sensor_186", "Sensor_187", "Sensor_188", "Sensor_189", "Sensor_190", "Sensor_191", "Sensor_192", "Sensor_193", "Sensor_194", "Sensor_195", "Sensor_196", "Sensor_197", "Sensor_198", "Sensor_199", "Sensor_200", "Sensor_201", "Sensor_202", "Sensor_203", "Sensor_204", "Sensor_205", "Sensor_206", "Sensor_207", "Sensor_208", "Sensor_209", "Sensor_210", "Sensor_211", "Sensor_212", "Sensor_213", "Sensor_214", "Sensor_215", "Sensor_216", "Sensor_217", "Sensor_218", "Sensor_219", "Sensor_220", "Sensor_221", "Sensor_222", "Sensor_223", "Sensor_224", "Sensor_225", "Sensor_226", "Sensor_227", "Sensor_228", "Sensor_229", "Sensor_230", "Sensor_231", "Sensor_232", "Sensor_233", "Sensor_234", "Sensor_235", "Sensor_236", "Sensor_237", "Sensor_238", "Sensor_239", "Sensor_240", "Sensor_241", "Sensor_242", "Sensor_243", "Sensor_244", "Sensor_245", "Sensor_246", "Sensor_247", "Sensor_248", "Sensor_249", "Sensor_250", "Sensor_251", "Sensor_252", "Sensor_253", "Sensor_254", "Sensor_255", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_SensorBinary { enum _enumerated { Sensor_1, Sensor_2, Sensor_3, Sensor_4, Sensor_5, Sensor_6, Sensor_7, Sensor_8, Sensor_9, Sensor_10, Sensor_11, Sensor_12, Sensor_13, Sensor_14, Sensor_15, Sensor_16, Sensor_17, Sensor_18, Sensor_19, Sensor_20, Sensor_21, Sensor_22, Sensor_23, Sensor_24, Sensor_25, Sensor_26, Sensor_27, Sensor_28, Sensor_29, Sensor_30, Sensor_31, Sensor_32, Sensor_33, Sensor_34, Sensor_35, Sensor_36, Sensor_37, Sensor_38, Sensor_39, Sensor_40, Sensor_41, Sensor_42, Sensor_43, Sensor_44, Sensor_45, Sensor_46, Sensor_47, Sensor_48, Sensor_49, Sensor_50, Sensor_51, Sensor_52, Sensor_53, Sensor_54, Sensor_55, Sensor_56, Sensor_57, Sensor_58, Sensor_59, Sensor_60, Sensor_61, Sensor_62, Sensor_63, Sensor_64, Sensor_65, Sensor_66, Sensor_67, Sensor_68, Sensor_69, Sensor_70, Sensor_71, Sensor_72, Sensor_73, Sensor_74, Sensor_75, Sensor_76, Sensor_77, Sensor_78, Sensor_79, Sensor_80, Sensor_81, Sensor_82, Sensor_83, Sensor_84, Sensor_85, Sensor_86, Sensor_87, Sensor_88, Sensor_89, Sensor_90, Sensor_91, Sensor_92, Sensor_93, Sensor_94, Sensor_95, Sensor_96, Sensor_97, Sensor_98, Sensor_99, Sensor_100, Sensor_101, Sensor_102, Sensor_103, Sensor_104, Sensor_105, Sensor_106, Sensor_107, Sensor_108, Sensor_109, Sensor_110, Sensor_111, Sensor_112, Sensor_113, Sensor_114, Sensor_115, Sensor_116, Sensor_117, Sensor_118, Sensor_119, Sensor_120, Sensor_121, Sensor_122, Sensor_123, Sensor_124, Sensor_125, Sensor_126, Sensor_127, Sensor_128, Sensor_129, Sensor_130, Sensor_131, Sensor_132, Sensor_133, Sensor_134, Sensor_135, Sensor_136, Sensor_137, Sensor_138, Sensor_139, Sensor_140, Sensor_141, Sensor_142, Sensor_143, Sensor_144, Sensor_145, Sensor_146, Sensor_147, Sensor_148, Sensor_149, Sensor_150, Sensor_151, Sensor_152, Sensor_153, Sensor_154, Sensor_155, Sensor_156, Sensor_157, Sensor_158, Sensor_159, Sensor_160, Sensor_161, Sensor_162, Sensor_163, Sensor_164, Sensor_165, Sensor_166, Sensor_167, Sensor_168, Sensor_169, Sensor_170, Sensor_171, Sensor_172, Sensor_173, Sensor_174, Sensor_175, Sensor_176, Sensor_177, Sensor_178, Sensor_179, Sensor_180, Sensor_181, Sensor_182, Sensor_183, Sensor_184, Sensor_185, Sensor_186, Sensor_187, Sensor_188, Sensor_189, Sensor_190, Sensor_191, Sensor_192, Sensor_193, Sensor_194, Sensor_195, Sensor_196, Sensor_197, Sensor_198, Sensor_199, Sensor_200, Sensor_201, Sensor_202, Sensor_203, Sensor_204, Sensor_205, Sensor_206, Sensor_207, Sensor_208, Sensor_209, Sensor_210, Sensor_211, Sensor_212, Sensor_213, Sensor_214, Sensor_215, Sensor_216, Sensor_217, Sensor_218, Sensor_219, Sensor_220, Sensor_221, Sensor_222, Sensor_223, Sensor_224, Sensor_225, Sensor_226, Sensor_227, Sensor_228, Sensor_229, Sensor_230, Sensor_231, Sensor_232, Sensor_233, Sensor_234, Sensor_235, Sensor_236, Sensor_237, Sensor_238, Sensor_239, Sensor_240, Sensor_241, Sensor_242, Sensor_243, Sensor_244, Sensor_245, Sensor_246, Sensor_247, Sensor_248, Sensor_249, Sensor_250, Sensor_251, Sensor_252, Sensor_253, Sensor_254, Sensor_255 }; _enumerated _value; ValueID_Index_SensorBinary(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 255; static const int* _values() { static const int values[] = { (ignore_assign)Sensor_1, (ignore_assign)Sensor_2, (ignore_assign)Sensor_3, (ignore_assign)Sensor_4, (ignore_assign)Sensor_5, (ignore_assign)Sensor_6, (ignore_assign)Sensor_7, (ignore_assign)Sensor_8, (ignore_assign)Sensor_9, (ignore_assign)Sensor_10, (ignore_assign)Sensor_11, (ignore_assign)Sensor_12, (ignore_assign)Sensor_13, (ignore_assign)Sensor_14, (ignore_assign)Sensor_15, (ignore_assign)Sensor_16, (ignore_assign)Sensor_17, (ignore_assign)Sensor_18, (ignore_assign)Sensor_19, (ignore_assign)Sensor_20, (ignore_assign)Sensor_21, (ignore_assign)Sensor_22, (ignore_assign)Sensor_23, (ignore_assign)Sensor_24, (ignore_assign)Sensor_25, (ignore_assign)Sensor_26, (ignore_assign)Sensor_27, (ignore_assign)Sensor_28, (ignore_assign)Sensor_29, (ignore_assign)Sensor_30, (ignore_assign)Sensor_31, (ignore_assign)Sensor_32, (ignore_assign)Sensor_33, (ignore_assign)Sensor_34, (ignore_assign)Sensor_35, (ignore_assign)Sensor_36, (ignore_assign)Sensor_37, (ignore_assign)Sensor_38, (ignore_assign)Sensor_39, (ignore_assign)Sensor_40, (ignore_assign)Sensor_41, (ignore_assign)Sensor_42, (ignore_assign)Sensor_43, (ignore_assign)Sensor_44, (ignore_assign)Sensor_45, (ignore_assign)Sensor_46, (ignore_assign)Sensor_47, (ignore_assign)Sensor_48, (ignore_assign)Sensor_49, (ignore_assign)Sensor_50, (ignore_assign)Sensor_51, (ignore_assign)Sensor_52, (ignore_assign)Sensor_53, (ignore_assign)Sensor_54, (ignore_assign)Sensor_55, (ignore_assign)Sensor_56, (ignore_assign)Sensor_57, (ignore_assign)Sensor_58, (ignore_assign)Sensor_59, (ignore_assign)Sensor_60, (ignore_assign)Sensor_61, (ignore_assign)Sensor_62, (ignore_assign)Sensor_63, (ignore_assign)Sensor_64, (ignore_assign)Sensor_65, (ignore_assign)Sensor_66, (ignore_assign)Sensor_67, (ignore_assign)Sensor_68, (ignore_assign)Sensor_69, (ignore_assign)Sensor_70, (ignore_assign)Sensor_71, (ignore_assign)Sensor_72, (ignore_assign)Sensor_73, (ignore_assign)Sensor_74, (ignore_assign)Sensor_75, (ignore_assign)Sensor_76, (ignore_assign)Sensor_77, (ignore_assign)Sensor_78, (ignore_assign)Sensor_79, (ignore_assign)Sensor_80, (ignore_assign)Sensor_81, (ignore_assign)Sensor_82, (ignore_assign)Sensor_83, (ignore_assign)Sensor_84, (ignore_assign)Sensor_85, (ignore_assign)Sensor_86, (ignore_assign)Sensor_87, (ignore_assign)Sensor_88, (ignore_assign)Sensor_89, (ignore_assign)Sensor_90, (ignore_assign)Sensor_91, (ignore_assign)Sensor_92, (ignore_assign)Sensor_93, (ignore_assign)Sensor_94, (ignore_assign)Sensor_95, (ignore_assign)Sensor_96, (ignore_assign)Sensor_97, (ignore_assign)Sensor_98, (ignore_assign)Sensor_99, (ignore_assign)Sensor_100, (ignore_assign)Sensor_101, (ignore_assign)Sensor_102, (ignore_assign)Sensor_103, (ignore_assign)Sensor_104, (ignore_assign)Sensor_105, (ignore_assign)Sensor_106, (ignore_assign)Sensor_107, (ignore_assign)Sensor_108, (ignore_assign)Sensor_109, (ignore_assign)Sensor_110, (ignore_assign)Sensor_111, (ignore_assign)Sensor_112, (ignore_assign)Sensor_113, (ignore_assign)Sensor_114, (ignore_assign)Sensor_115, (ignore_assign)Sensor_116, (ignore_assign)Sensor_117, (ignore_assign)Sensor_118, (ignore_assign)Sensor_119, (ignore_assign)Sensor_120, (ignore_assign)Sensor_121, (ignore_assign)Sensor_122, (ignore_assign)Sensor_123, (ignore_assign)Sensor_124, (ignore_assign)Sensor_125, (ignore_assign)Sensor_126, (ignore_assign)Sensor_127, (ignore_assign)Sensor_128, (ignore_assign)Sensor_129, (ignore_assign)Sensor_130, (ignore_assign)Sensor_131, (ignore_assign)Sensor_132, (ignore_assign)Sensor_133, (ignore_assign)Sensor_134, (ignore_assign)Sensor_135, (ignore_assign)Sensor_136, (ignore_assign)Sensor_137, (ignore_assign)Sensor_138, (ignore_assign)Sensor_139, (ignore_assign)Sensor_140, (ignore_assign)Sensor_141, (ignore_assign)Sensor_142, (ignore_assign)Sensor_143, (ignore_assign)Sensor_144, (ignore_assign)Sensor_145, (ignore_assign)Sensor_146, (ignore_assign)Sensor_147, (ignore_assign)Sensor_148, (ignore_assign)Sensor_149, (ignore_assign)Sensor_150, (ignore_assign)Sensor_151, (ignore_assign)Sensor_152, (ignore_assign)Sensor_153, (ignore_assign)Sensor_154, (ignore_assign)Sensor_155, (ignore_assign)Sensor_156, (ignore_assign)Sensor_157, (ignore_assign)Sensor_158, (ignore_assign)Sensor_159, (ignore_assign)Sensor_160, (ignore_assign)Sensor_161, (ignore_assign)Sensor_162, (ignore_assign)Sensor_163, (ignore_assign)Sensor_164, (ignore_assign)Sensor_165, (ignore_assign)Sensor_166, (ignore_assign)Sensor_167, (ignore_assign)Sensor_168, (ignore_assign)Sensor_169, (ignore_assign)Sensor_170, (ignore_assign)Sensor_171, (ignore_assign)Sensor_172, (ignore_assign)Sensor_173, (ignore_assign)Sensor_174, (ignore_assign)Sensor_175, (ignore_assign)Sensor_176, (ignore_assign)Sensor_177, (ignore_assign)Sensor_178, (ignore_assign)Sensor_179, (ignore_assign)Sensor_180, (ignore_assign)Sensor_181, (ignore_assign)Sensor_182, (ignore_assign)Sensor_183, (ignore_assign)Sensor_184, (ignore_assign)Sensor_185, (ignore_assign)Sensor_186, (ignore_assign)Sensor_187, (ignore_assign)Sensor_188, (ignore_assign)Sensor_189, (ignore_assign)Sensor_190, (ignore_assign)Sensor_191, (ignore_assign)Sensor_192, (ignore_assign)Sensor_193, (ignore_assign)Sensor_194, (ignore_assign)Sensor_195, (ignore_assign)Sensor_196, (ignore_assign)Sensor_197, (ignore_assign)Sensor_198, (ignore_assign)Sensor_199, (ignore_assign)Sensor_200, (ignore_assign)Sensor_201, (ignore_assign)Sensor_202, (ignore_assign)Sensor_203, (ignore_assign)Sensor_204, (ignore_assign)Sensor_205, (ignore_assign)Sensor_206, (ignore_assign)Sensor_207, (ignore_assign)Sensor_208, (ignore_assign)Sensor_209, (ignore_assign)Sensor_210, (ignore_assign)Sensor_211, (ignore_assign)Sensor_212, (ignore_assign)Sensor_213, (ignore_assign)Sensor_214, (ignore_assign)Sensor_215, (ignore_assign)Sensor_216, (ignore_assign)Sensor_217, (ignore_assign)Sensor_218, (ignore_assign)Sensor_219, (ignore_assign)Sensor_220, (ignore_assign)Sensor_221, (ignore_assign)Sensor_222, (ignore_assign)Sensor_223, (ignore_assign)Sensor_224, (ignore_assign)Sensor_225, (ignore_assign)Sensor_226, (ignore_assign)Sensor_227, (ignore_assign)Sensor_228, (ignore_assign)Sensor_229, (ignore_assign)Sensor_230, (ignore_assign)Sensor_231, (ignore_assign)Sensor_232, (ignore_assign)Sensor_233, (ignore_assign)Sensor_234, (ignore_assign)Sensor_235, (ignore_assign)Sensor_236, (ignore_assign)Sensor_237, (ignore_assign)Sensor_238, (ignore_assign)Sensor_239, (ignore_assign)Sensor_240, (ignore_assign)Sensor_241, (ignore_assign)Sensor_242, (ignore_assign)Sensor_243, (ignore_assign)Sensor_244, (ignore_assign)Sensor_245, (ignore_assign)Sensor_246, (ignore_assign)Sensor_247, (ignore_assign)Sensor_248, (ignore_assign)Sensor_249, (ignore_assign)Sensor_250, (ignore_assign)Sensor_251, (ignore_assign)Sensor_252, (ignore_assign)Sensor_253, (ignore_assign)Sensor_254, (ignore_assign)Sensor_255, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Sensor_1", "Sensor_2", "Sensor_3", "Sensor_4", "Sensor_5", "Sensor_6", "Sensor_7", "Sensor_8", "Sensor_9", "Sensor_10", "Sensor_11", "Sensor_12", "Sensor_13", "Sensor_14", "Sensor_15", "Sensor_16", "Sensor_17", "Sensor_18", "Sensor_19", "Sensor_20", "Sensor_21", "Sensor_22", "Sensor_23", "Sensor_24", "Sensor_25", "Sensor_26", "Sensor_27", "Sensor_28", "Sensor_29", "Sensor_30", "Sensor_31", "Sensor_32", "Sensor_33", "Sensor_34", "Sensor_35", "Sensor_36", "Sensor_37", "Sensor_38", "Sensor_39", "Sensor_40", "Sensor_41", "Sensor_42", "Sensor_43", "Sensor_44", "Sensor_45", "Sensor_46", "Sensor_47", "Sensor_48", "Sensor_49", "Sensor_50", "Sensor_51", "Sensor_52", "Sensor_53", "Sensor_54", "Sensor_55", "Sensor_56", "Sensor_57", "Sensor_58", "Sensor_59", "Sensor_60", "Sensor_61", "Sensor_62", "Sensor_63", "Sensor_64", "Sensor_65", "Sensor_66", "Sensor_67", "Sensor_68", "Sensor_69", "Sensor_70", "Sensor_71", "Sensor_72", "Sensor_73", "Sensor_74", "Sensor_75", "Sensor_76", "Sensor_77", "Sensor_78", "Sensor_79", "Sensor_80", "Sensor_81", "Sensor_82", "Sensor_83", "Sensor_84", "Sensor_85", "Sensor_86", "Sensor_87", "Sensor_88", "Sensor_89", "Sensor_90", "Sensor_91", "Sensor_92", "Sensor_93", "Sensor_94", "Sensor_95", "Sensor_96", "Sensor_97", "Sensor_98", "Sensor_99", "Sensor_100", "Sensor_101", "Sensor_102", "Sensor_103", "Sensor_104", "Sensor_105", "Sensor_106", "Sensor_107", "Sensor_108", "Sensor_109", "Sensor_110", "Sensor_111", "Sensor_112", "Sensor_113", "Sensor_114", "Sensor_115", "Sensor_116", "Sensor_117", "Sensor_118", "Sensor_119", "Sensor_120", "Sensor_121", "Sensor_122", "Sensor_123", "Sensor_124", "Sensor_125", "Sensor_126", "Sensor_127", "Sensor_128", "Sensor_129", "Sensor_130", "Sensor_131", "Sensor_132", "Sensor_133", "Sensor_134", "Sensor_135", "Sensor_136", "Sensor_137", "Sensor_138", "Sensor_139", "Sensor_140", "Sensor_141", "Sensor_142", "Sensor_143", "Sensor_144", "Sensor_145", "Sensor_146", "Sensor_147", "Sensor_148", "Sensor_149", "Sensor_150", "Sensor_151", "Sensor_152", "Sensor_153", "Sensor_154", "Sensor_155", "Sensor_156", "Sensor_157", "Sensor_158", "Sensor_159", "Sensor_160", "Sensor_161", "Sensor_162", "Sensor_163", "Sensor_164", "Sensor_165", "Sensor_166", "Sensor_167", "Sensor_168", "Sensor_169", "Sensor_170", "Sensor_171", "Sensor_172", "Sensor_173", "Sensor_174", "Sensor_175", "Sensor_176", "Sensor_177", "Sensor_178", "Sensor_179", "Sensor_180", "Sensor_181", "Sensor_182", "Sensor_183", "Sensor_184", "Sensor_185", "Sensor_186", "Sensor_187", "Sensor_188", "Sensor_189", "Sensor_190", "Sensor_191", "Sensor_192", "Sensor_193", "Sensor_194", "Sensor_195", "Sensor_196", "Sensor_197", "Sensor_198", "Sensor_199", "Sensor_200", "Sensor_201", "Sensor_202", "Sensor_203", "Sensor_204", "Sensor_205", "Sensor_206", "Sensor_207", "Sensor_208", "Sensor_209", "Sensor_210", "Sensor_211", "Sensor_212", "Sensor_213", "Sensor_214", "Sensor_215", "Sensor_216", "Sensor_217", "Sensor_218", "Sensor_219", "Sensor_220", "Sensor_221", "Sensor_222", "Sensor_223", "Sensor_224", "Sensor_225", "Sensor_226", "Sensor_227", "Sensor_228", "Sensor_229", "Sensor_230", "Sensor_231", "Sensor_232", "Sensor_233", "Sensor_234", "Sensor_235", "Sensor_236", "Sensor_237", "Sensor_238", "Sensor_239", "Sensor_240", "Sensor_241", "Sensor_242", "Sensor_243", "Sensor_244", "Sensor_245", "Sensor_246", "Sensor_247", "Sensor_248", "Sensor_249", "Sensor_250", "Sensor_251", "Sensor_252", "Sensor_253", "Sensor_254", "Sensor_255", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_SensorMultiLevel { enum _enumerated { Temperature = 1, General, Luminance, Power, RelativeHumidity, Velocity, Direction, AtmosphericPressure, BarometricPressure, SolarRadiation, DewPoint, RainRate, TideLevel, Weight, Voltage, Current, CO2, AirFlow, TankCapacity, Distance, AnglePosition, Rotation, WaterTemperature, SoilTemperature, SeismicIntensity, SeismicMagnitude, Ultraviolet, ElectricalResistivity, ElectricalConductivity, Loudness, Moisture, Frequency, Time, TargetTemperature, PM25, CH2O, RadonConcentration, CH4Density, VOC, CO, SoilHumidity, SoilReactivity, SoilSalinity, HeartRate, BloodPressure, MuscleMass, FatMass, BoneMass, TBW, BMR, BMI, AccelerationX, AccelerationY, AccelerationZ, SmokeDensity, WaterFlow, WaterPressure, RFSignalStrength, PM10, RespiratoryRate, RelativeModulationLevel, BoilerWaterTemperature, DHWTemperature, OutsideTemperature, ExhaustTemperature, WaterChlorineLevel, WaterAcidity, WaterOxidation }; _enumerated _value; ValueID_Index_SensorMultiLevel(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 68; static const int* _values() { static const int values[] = { (ignore_assign)Temperature = 1, (ignore_assign)General, (ignore_assign)Luminance, (ignore_assign)Power, (ignore_assign)RelativeHumidity, (ignore_assign)Velocity, (ignore_assign)Direction, (ignore_assign)AtmosphericPressure, (ignore_assign)BarometricPressure, (ignore_assign)SolarRadiation, (ignore_assign)DewPoint, (ignore_assign)RainRate, (ignore_assign)TideLevel, (ignore_assign)Weight, (ignore_assign)Voltage, (ignore_assign)Current, (ignore_assign)CO2, (ignore_assign)AirFlow, (ignore_assign)TankCapacity, (ignore_assign)Distance, (ignore_assign)AnglePosition, (ignore_assign)Rotation, (ignore_assign)WaterTemperature, (ignore_assign)SoilTemperature, (ignore_assign)SeismicIntensity, (ignore_assign)SeismicMagnitude, (ignore_assign)Ultraviolet, (ignore_assign)ElectricalResistivity, (ignore_assign)ElectricalConductivity, (ignore_assign)Loudness, (ignore_assign)Moisture, (ignore_assign)Frequency, (ignore_assign)Time, (ignore_assign)TargetTemperature, (ignore_assign)PM25, (ignore_assign)CH2O, (ignore_assign)RadonConcentration, (ignore_assign)CH4Density, (ignore_assign)VOC, (ignore_assign)CO, (ignore_assign)SoilHumidity, (ignore_assign)SoilReactivity, (ignore_assign)SoilSalinity, (ignore_assign)HeartRate, (ignore_assign)BloodPressure, (ignore_assign)MuscleMass, (ignore_assign)FatMass, (ignore_assign)BoneMass, (ignore_assign)TBW, (ignore_assign)BMR, (ignore_assign)BMI, (ignore_assign)AccelerationX, (ignore_assign)AccelerationY, (ignore_assign)AccelerationZ, (ignore_assign)SmokeDensity, (ignore_assign)WaterFlow, (ignore_assign)WaterPressure, (ignore_assign)RFSignalStrength, (ignore_assign)PM10, (ignore_assign)RespiratoryRate, (ignore_assign)RelativeModulationLevel, (ignore_assign)BoilerWaterTemperature, (ignore_assign)DHWTemperature, (ignore_assign)OutsideTemperature, (ignore_assign)ExhaustTemperature, (ignore_assign)WaterChlorineLevel, (ignore_assign)WaterAcidity, (ignore_assign)WaterOxidation, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Temperature = 1", "General", "Luminance", "Power", "RelativeHumidity", "Velocity", "Direction", "AtmosphericPressure", "BarometricPressure", "SolarRadiation", "DewPoint", "RainRate", "TideLevel", "Weight", "Voltage", "Current", "CO2", "AirFlow", "TankCapacity", "Distance", "AnglePosition", "Rotation", "WaterTemperature", "SoilTemperature", "SeismicIntensity", "SeismicMagnitude", "Ultraviolet", "ElectricalResistivity", "ElectricalConductivity", "Loudness", "Moisture", "Frequency", "Time", "TargetTemperature", "PM25", "CH2O", "RadonConcentration", "CH4Density", "VOC", "CO", "SoilHumidity", "SoilReactivity", "SoilSalinity", "HeartRate", "BloodPressure", "MuscleMass", "FatMass", "BoneMass", "TBW", "BMR", "BMI", "AccelerationX", "AccelerationY", "AccelerationZ", "SmokeDensity", "WaterFlow", "WaterPressure", "RFSignalStrength", "PM10", "RespiratoryRate", "RelativeModulationLevel", "BoilerWaterTemperature", "DHWTemperature", "OutsideTemperature", "ExhaustTemperature", "WaterChlorineLevel", "WaterAcidity", "WaterOxidation", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_SimpleAV { enum _enumerated { Command = 0 }; _enumerated _value; ValueID_Index_SimpleAV(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Command = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Command = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_SoundSwitch { enum _enumerated { Tone_Count = 0, Tones = 1, Volume = 2, Default_Tone = 3 }; _enumerated _value; ValueID_Index_SoundSwitch(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 4; static const int* _values() { static const int values[] = { (ignore_assign)Tone_Count = 0, (ignore_assign)Tones = 1, (ignore_assign)Volume = 2, (ignore_assign)Default_Tone = 3, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Tone_Count = 0", "Tones = 1", "Volume = 2", "Default_Tone = 3", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + + +struct ValueID_Index_SwitchAll { enum _enumerated { SwitchAll = 0 }; _enumerated _value; ValueID_Index_SwitchAll(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)SwitchAll = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "SwitchAll = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_SwitchBinary { enum _enumerated { Level = 0, TargetState = 1, Duration = 2 }; _enumerated _value; ValueID_Index_SwitchBinary(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 3; static const int* _values() { static const int values[] = { (ignore_assign)Level = 0, (ignore_assign)TargetState = 1, (ignore_assign)Duration = 2, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Level = 0", "TargetState = 1", "Duration = 2", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + +struct ValueID_Index_SwitchMultiLevel { enum _enumerated { Level = 0, Bright = 1, Dim = 2, IgnoreStartLevel = 3, StartLevel = 4, Duration = 5, Step = 6, Inc = 7, Dec = 8, TargetValue = 9 }; _enumerated _value; ValueID_Index_SwitchMultiLevel(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 10; static const int* _values() { static const int values[] = { (ignore_assign)Level = 0, (ignore_assign)Bright = 1, (ignore_assign)Dim = 2, (ignore_assign)IgnoreStartLevel = 3, (ignore_assign)StartLevel = 4, (ignore_assign)Duration = 5, (ignore_assign)Step = 6, (ignore_assign)Inc = 7, (ignore_assign)Dec = 8, (ignore_assign)TargetValue = 9, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Level = 0", "Bright = 1", "Dim = 2", "IgnoreStartLevel = 3", "StartLevel = 4", "Duration = 5", "Step = 6", "Inc = 7", "Dec = 8", "TargetValue = 9", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_SwitchToggleBinary { enum _enumerated { ToggleSwitch = 0 }; _enumerated _value; ValueID_Index_SwitchToggleBinary(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)ToggleSwitch = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "ToggleSwitch = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_SwitchToggleMultilevel { enum _enumerated { Level = 0 }; _enumerated _value; ValueID_Index_SwitchToggleMultilevel(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Level = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Level = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_ThermostatFanMode { enum _enumerated { FanMode = 0 }; _enumerated _value; ValueID_Index_ThermostatFanMode(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)FanMode = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "FanMode = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_ThermostatFanState { enum _enumerated { FanState = 0 }; _enumerated _value; ValueID_Index_ThermostatFanState(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)FanState = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "FanState = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_ThermostatMode { enum _enumerated { Mode = 0 }; _enumerated _value; ValueID_Index_ThermostatMode(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Mode = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Mode = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_ThermostatOperatingState { enum _enumerated { OperatingState = 0 }; _enumerated _value; ValueID_Index_ThermostatOperatingState(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)OperatingState = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "OperatingState = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + +struct ValueID_Index_ThermostatSetpoint { enum _enumerated { Unused_0 = 0, Heating, Cooling, Unused_3, Unused_4, Unused_5, Unused_6, Furnace, DryAir, MoistAir, AutoChangeover, HeatingEcon, CoolingEcon, AwayHeating, CoolingHeating, Unused_0_Minimum = 100, Heating_Minimum, Cooling_Minimum, Unused_3_Minimum, Unused_4_Minimum, Unused_5_Minimum, Unused_6_Minimum, Furnace_Minimum, DryAir_Minimum, MoistAir_Minimum, AutoChangeOver_Minimum, Heating_Econ_Minimum, Cooling_Econ_Minimum, Away_Heating_Minimum, Cooling_Heating_Minimum, Unused_0_Maximum = 200, Heating_Maximum, Cooling_Maximum, Unused_3_Maximum, Unused_4_Maximum, Unused_5_Maximum, Unused_6_Maximum, Furnace_Maximum, DryAir_Maximum, MoistAir_Maximum, AutoChangeOver_Maximum, Heating_Econ_Maximum, Cooling_Econ_Maximum, Away_Heating_Maximum, Cooling_Heating_Maximum }; _enumerated _value; ValueID_Index_ThermostatSetpoint(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 45; static const int* _values() { static const int values[] = { (ignore_assign)Unused_0 = 0, (ignore_assign)Heating, (ignore_assign)Cooling, (ignore_assign)Unused_3, (ignore_assign)Unused_4, (ignore_assign)Unused_5, (ignore_assign)Unused_6, (ignore_assign)Furnace, (ignore_assign)DryAir, (ignore_assign)MoistAir, (ignore_assign)AutoChangeover, (ignore_assign)HeatingEcon, (ignore_assign)CoolingEcon, (ignore_assign)AwayHeating, (ignore_assign)CoolingHeating, (ignore_assign)Unused_0_Minimum = 100, (ignore_assign)Heating_Minimum, (ignore_assign)Cooling_Minimum, (ignore_assign)Unused_3_Minimum, (ignore_assign)Unused_4_Minimum, (ignore_assign)Unused_5_Minimum, (ignore_assign)Unused_6_Minimum, (ignore_assign)Furnace_Minimum, (ignore_assign)DryAir_Minimum, (ignore_assign)MoistAir_Minimum, (ignore_assign)AutoChangeOver_Minimum, (ignore_assign)Heating_Econ_Minimum, (ignore_assign)Cooling_Econ_Minimum, (ignore_assign)Away_Heating_Minimum, (ignore_assign)Cooling_Heating_Minimum, (ignore_assign)Unused_0_Maximum = 200, (ignore_assign)Heating_Maximum, (ignore_assign)Cooling_Maximum, (ignore_assign)Unused_3_Maximum, (ignore_assign)Unused_4_Maximum, (ignore_assign)Unused_5_Maximum, (ignore_assign)Unused_6_Maximum, (ignore_assign)Furnace_Maximum, (ignore_assign)DryAir_Maximum, (ignore_assign)MoistAir_Maximum, (ignore_assign)AutoChangeOver_Maximum, (ignore_assign)Heating_Econ_Maximum, (ignore_assign)Cooling_Econ_Maximum, (ignore_assign)Away_Heating_Maximum, (ignore_assign)Cooling_Heating_Maximum, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Unused_0 = 0", "Heating", "Cooling", "Unused_3", "Unused_4", "Unused_5", "Unused_6", "Furnace", "DryAir", "MoistAir", "AutoChangeover", "HeatingEcon", "CoolingEcon", "AwayHeating", "CoolingHeating", "Unused_0_Minimum = 100", "Heating_Minimum", "Cooling_Minimum", "Unused_3_Minimum", "Unused_4_Minimum", "Unused_5_Minimum", "Unused_6_Minimum", "Furnace_Minimum", "DryAir_Minimum", "MoistAir_Minimum", "AutoChangeOver_Minimum", "Heating_Econ_Minimum", "Cooling_Econ_Minimum", "Away_Heating_Minimum", "Cooling_Heating_Minimum", "Unused_0_Maximum = 200", "Heating_Maximum", "Cooling_Maximum", "Unused_3_Maximum", "Unused_4_Maximum", "Unused_5_Maximum", "Unused_6_Maximum", "Furnace_Maximum", "DryAir_Maximum", "MoistAir_Maximum", "AutoChangeOver_Maximum", "Heating_Econ_Maximum", "Cooling_Econ_Maximum", "Away_Heating_Maximum", "Cooling_Heating_Maximum", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_TimeParameters { enum _enumerated { Date = 0, Time = 1, Set = 2, Refresh = 3 }; _enumerated _value; ValueID_Index_TimeParameters(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 4; static const int* _values() { static const int values[] = { (ignore_assign)Date = 0, (ignore_assign)Time = 1, (ignore_assign)Set = 2, (ignore_assign)Refresh = 3, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Date = 0", "Time = 1", "Set = 2", "Refresh = 3", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + + +struct ValueID_Index_UserCode { enum _enumerated { Enrollment_Code = 0, Code_1, Code_2, Code_3, Code_4, Code_5, Code_6, Code_7, Code_8, Code_9, Code_10, Code_11, Code_12, Code_13, Code_14, Code_15, Code_16, Code_17, Code_18, Code_19, Code_20, Code_21, Code_22, Code_23, Code_24, Code_25, Code_26, Code_27, Code_28, Code_29, Code_30, Code_31, Code_32, Code_33, Code_34, Code_35, Code_36, Code_37, Code_38, Code_39, Code_40, Code_41, Code_42, Code_43, Code_44, Code_45, Code_46, Code_47, Code_48, Code_49, Code_50, Code_51, Code_52, Code_53, Code_54, Code_55, Code_56, Code_57, Code_58, Code_59, Code_60, Code_61, Code_62, Code_63, Code_64, Code_65, Code_66, Code_67, Code_68, Code_69, Code_70, Code_71, Code_72, Code_73, Code_74, Code_75, Code_76, Code_77, Code_78, Code_79, Code_80, Code_81, Code_82, Code_83, Code_84, Code_85, Code_86, Code_87, Code_88, Code_89, Code_90, Code_91, Code_92, Code_93, Code_94, Code_95, Code_96, Code_97, Code_98, Code_99, Code_100, Code_101, Code_102, Code_103, Code_104, Code_105, Code_106, Code_107, Code_108, Code_109, Code_110, Code_111, Code_112, Code_113, Code_114, Code_115, Code_116, Code_117, Code_118, Code_119, Code_120, Code_121, Code_122, Code_123, Code_124, Code_125, Code_126, Code_127, Code_128, Code_129, Code_130, Code_131, Code_132, Code_133, Code_134, Code_135, Code_136, Code_137, Code_138, Code_139, Code_140, Code_141, Code_142, Code_143, Code_144, Code_145, Code_146, Code_147, Code_148, Code_149, Code_150, Code_151, Code_152, Code_153, Code_154, Code_155, Code_156, Code_157, Code_158, Code_159, Code_160, Code_161, Code_162, Code_163, Code_164, Code_165, Code_166, Code_167, Code_168, Code_169, Code_170, Code_171, Code_172, Code_173, Code_174, Code_175, Code_176, Code_177, Code_178, Code_179, Code_180, Code_181, Code_182, Code_183, Code_184, Code_185, Code_186, Code_187, Code_188, Code_189, Code_190, Code_191, Code_192, Code_193, Code_194, Code_195, Code_196, Code_197, Code_198, Code_199, Code_200, Code_201, Code_202, Code_203, Code_204, Code_205, Code_206, Code_207, Code_208, Code_209, Code_210, Code_211, Code_212, Code_213, Code_214, Code_215, Code_216, Code_217, Code_218, Code_219, Code_220, Code_221, Code_222, Code_223, Code_224, Code_225, Code_226, Code_227, Code_228, Code_229, Code_230, Code_231, Code_232, Code_233, Code_234, Code_235, Code_236, Code_237, Code_238, Code_239, Code_240, Code_241, Code_242, Code_243, Code_244, Code_245, Code_246, Code_247, Code_248, Code_249, Code_250, Code_251, Code_252, Code_253, Refresh = 255, RemoveCode = 256, Count = 257, RawValue = 258, RawValueIndex = 259 }; _enumerated _value; ValueID_Index_UserCode(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 259; static const int* _values() { static const int values[] = { (ignore_assign)Enrollment_Code = 0, (ignore_assign)Code_1, (ignore_assign)Code_2, (ignore_assign)Code_3, (ignore_assign)Code_4, (ignore_assign)Code_5, (ignore_assign)Code_6, (ignore_assign)Code_7, (ignore_assign)Code_8, (ignore_assign)Code_9, (ignore_assign)Code_10, (ignore_assign)Code_11, (ignore_assign)Code_12, (ignore_assign)Code_13, (ignore_assign)Code_14, (ignore_assign)Code_15, (ignore_assign)Code_16, (ignore_assign)Code_17, (ignore_assign)Code_18, (ignore_assign)Code_19, (ignore_assign)Code_20, (ignore_assign)Code_21, (ignore_assign)Code_22, (ignore_assign)Code_23, (ignore_assign)Code_24, (ignore_assign)Code_25, (ignore_assign)Code_26, (ignore_assign)Code_27, (ignore_assign)Code_28, (ignore_assign)Code_29, (ignore_assign)Code_30, (ignore_assign)Code_31, (ignore_assign)Code_32, (ignore_assign)Code_33, (ignore_assign)Code_34, (ignore_assign)Code_35, (ignore_assign)Code_36, (ignore_assign)Code_37, (ignore_assign)Code_38, (ignore_assign)Code_39, (ignore_assign)Code_40, (ignore_assign)Code_41, (ignore_assign)Code_42, (ignore_assign)Code_43, (ignore_assign)Code_44, (ignore_assign)Code_45, (ignore_assign)Code_46, (ignore_assign)Code_47, (ignore_assign)Code_48, (ignore_assign)Code_49, (ignore_assign)Code_50, (ignore_assign)Code_51, (ignore_assign)Code_52, (ignore_assign)Code_53, (ignore_assign)Code_54, (ignore_assign)Code_55, (ignore_assign)Code_56, (ignore_assign)Code_57, (ignore_assign)Code_58, (ignore_assign)Code_59, (ignore_assign)Code_60, (ignore_assign)Code_61, (ignore_assign)Code_62, (ignore_assign)Code_63, (ignore_assign)Code_64, (ignore_assign)Code_65, (ignore_assign)Code_66, (ignore_assign)Code_67, (ignore_assign)Code_68, (ignore_assign)Code_69, (ignore_assign)Code_70, (ignore_assign)Code_71, (ignore_assign)Code_72, (ignore_assign)Code_73, (ignore_assign)Code_74, (ignore_assign)Code_75, (ignore_assign)Code_76, (ignore_assign)Code_77, (ignore_assign)Code_78, (ignore_assign)Code_79, (ignore_assign)Code_80, (ignore_assign)Code_81, (ignore_assign)Code_82, (ignore_assign)Code_83, (ignore_assign)Code_84, (ignore_assign)Code_85, (ignore_assign)Code_86, (ignore_assign)Code_87, (ignore_assign)Code_88, (ignore_assign)Code_89, (ignore_assign)Code_90, (ignore_assign)Code_91, (ignore_assign)Code_92, (ignore_assign)Code_93, (ignore_assign)Code_94, (ignore_assign)Code_95, (ignore_assign)Code_96, (ignore_assign)Code_97, (ignore_assign)Code_98, (ignore_assign)Code_99, (ignore_assign)Code_100, (ignore_assign)Code_101, (ignore_assign)Code_102, (ignore_assign)Code_103, (ignore_assign)Code_104, (ignore_assign)Code_105, (ignore_assign)Code_106, (ignore_assign)Code_107, (ignore_assign)Code_108, (ignore_assign)Code_109, (ignore_assign)Code_110, (ignore_assign)Code_111, (ignore_assign)Code_112, (ignore_assign)Code_113, (ignore_assign)Code_114, (ignore_assign)Code_115, (ignore_assign)Code_116, (ignore_assign)Code_117, (ignore_assign)Code_118, (ignore_assign)Code_119, (ignore_assign)Code_120, (ignore_assign)Code_121, (ignore_assign)Code_122, (ignore_assign)Code_123, (ignore_assign)Code_124, (ignore_assign)Code_125, (ignore_assign)Code_126, (ignore_assign)Code_127, (ignore_assign)Code_128, (ignore_assign)Code_129, (ignore_assign)Code_130, (ignore_assign)Code_131, (ignore_assign)Code_132, (ignore_assign)Code_133, (ignore_assign)Code_134, (ignore_assign)Code_135, (ignore_assign)Code_136, (ignore_assign)Code_137, (ignore_assign)Code_138, (ignore_assign)Code_139, (ignore_assign)Code_140, (ignore_assign)Code_141, (ignore_assign)Code_142, (ignore_assign)Code_143, (ignore_assign)Code_144, (ignore_assign)Code_145, (ignore_assign)Code_146, (ignore_assign)Code_147, (ignore_assign)Code_148, (ignore_assign)Code_149, (ignore_assign)Code_150, (ignore_assign)Code_151, (ignore_assign)Code_152, (ignore_assign)Code_153, (ignore_assign)Code_154, (ignore_assign)Code_155, (ignore_assign)Code_156, (ignore_assign)Code_157, (ignore_assign)Code_158, (ignore_assign)Code_159, (ignore_assign)Code_160, (ignore_assign)Code_161, (ignore_assign)Code_162, (ignore_assign)Code_163, (ignore_assign)Code_164, (ignore_assign)Code_165, (ignore_assign)Code_166, (ignore_assign)Code_167, (ignore_assign)Code_168, (ignore_assign)Code_169, (ignore_assign)Code_170, (ignore_assign)Code_171, (ignore_assign)Code_172, (ignore_assign)Code_173, (ignore_assign)Code_174, (ignore_assign)Code_175, (ignore_assign)Code_176, (ignore_assign)Code_177, (ignore_assign)Code_178, (ignore_assign)Code_179, (ignore_assign)Code_180, (ignore_assign)Code_181, (ignore_assign)Code_182, (ignore_assign)Code_183, (ignore_assign)Code_184, (ignore_assign)Code_185, (ignore_assign)Code_186, (ignore_assign)Code_187, (ignore_assign)Code_188, (ignore_assign)Code_189, (ignore_assign)Code_190, (ignore_assign)Code_191, (ignore_assign)Code_192, (ignore_assign)Code_193, (ignore_assign)Code_194, (ignore_assign)Code_195, (ignore_assign)Code_196, (ignore_assign)Code_197, (ignore_assign)Code_198, (ignore_assign)Code_199, (ignore_assign)Code_200, (ignore_assign)Code_201, (ignore_assign)Code_202, (ignore_assign)Code_203, (ignore_assign)Code_204, (ignore_assign)Code_205, (ignore_assign)Code_206, (ignore_assign)Code_207, (ignore_assign)Code_208, (ignore_assign)Code_209, (ignore_assign)Code_210, (ignore_assign)Code_211, (ignore_assign)Code_212, (ignore_assign)Code_213, (ignore_assign)Code_214, (ignore_assign)Code_215, (ignore_assign)Code_216, (ignore_assign)Code_217, (ignore_assign)Code_218, (ignore_assign)Code_219, (ignore_assign)Code_220, (ignore_assign)Code_221, (ignore_assign)Code_222, (ignore_assign)Code_223, (ignore_assign)Code_224, (ignore_assign)Code_225, (ignore_assign)Code_226, (ignore_assign)Code_227, (ignore_assign)Code_228, (ignore_assign)Code_229, (ignore_assign)Code_230, (ignore_assign)Code_231, (ignore_assign)Code_232, (ignore_assign)Code_233, (ignore_assign)Code_234, (ignore_assign)Code_235, (ignore_assign)Code_236, (ignore_assign)Code_237, (ignore_assign)Code_238, (ignore_assign)Code_239, (ignore_assign)Code_240, (ignore_assign)Code_241, (ignore_assign)Code_242, (ignore_assign)Code_243, (ignore_assign)Code_244, (ignore_assign)Code_245, (ignore_assign)Code_246, (ignore_assign)Code_247, (ignore_assign)Code_248, (ignore_assign)Code_249, (ignore_assign)Code_250, (ignore_assign)Code_251, (ignore_assign)Code_252, (ignore_assign)Code_253, (ignore_assign)Refresh = 255, (ignore_assign)RemoveCode = 256, (ignore_assign)Count = 257, (ignore_assign)RawValue = 258, (ignore_assign)RawValueIndex = 259, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Enrollment_Code = 0", "Code_1", "Code_2", "Code_3", "Code_4", "Code_5", "Code_6", "Code_7", "Code_8", "Code_9", "Code_10", "Code_11", "Code_12", "Code_13", "Code_14", "Code_15", "Code_16", "Code_17", "Code_18", "Code_19", "Code_20", "Code_21", "Code_22", "Code_23", "Code_24", "Code_25", "Code_26", "Code_27", "Code_28", "Code_29", "Code_30", "Code_31", "Code_32", "Code_33", "Code_34", "Code_35", "Code_36", "Code_37", "Code_38", "Code_39", "Code_40", "Code_41", "Code_42", "Code_43", "Code_44", "Code_45", "Code_46", "Code_47", "Code_48", "Code_49", "Code_50", "Code_51", "Code_52", "Code_53", "Code_54", "Code_55", "Code_56", "Code_57", "Code_58", "Code_59", "Code_60", "Code_61", "Code_62", "Code_63", "Code_64", "Code_65", "Code_66", "Code_67", "Code_68", "Code_69", "Code_70", "Code_71", "Code_72", "Code_73", "Code_74", "Code_75", "Code_76", "Code_77", "Code_78", "Code_79", "Code_80", "Code_81", "Code_82", "Code_83", "Code_84", "Code_85", "Code_86", "Code_87", "Code_88", "Code_89", "Code_90", "Code_91", "Code_92", "Code_93", "Code_94", "Code_95", "Code_96", "Code_97", "Code_98", "Code_99", "Code_100", "Code_101", "Code_102", "Code_103", "Code_104", "Code_105", "Code_106", "Code_107", "Code_108", "Code_109", "Code_110", "Code_111", "Code_112", "Code_113", "Code_114", "Code_115", "Code_116", "Code_117", "Code_118", "Code_119", "Code_120", "Code_121", "Code_122", "Code_123", "Code_124", "Code_125", "Code_126", "Code_127", "Code_128", "Code_129", "Code_130", "Code_131", "Code_132", "Code_133", "Code_134", "Code_135", "Code_136", "Code_137", "Code_138", "Code_139", "Code_140", "Code_141", "Code_142", "Code_143", "Code_144", "Code_145", "Code_146", "Code_147", "Code_148", "Code_149", "Code_150", "Code_151", "Code_152", "Code_153", "Code_154", "Code_155", "Code_156", "Code_157", "Code_158", "Code_159", "Code_160", "Code_161", "Code_162", "Code_163", "Code_164", "Code_165", "Code_166", "Code_167", "Code_168", "Code_169", "Code_170", "Code_171", "Code_172", "Code_173", "Code_174", "Code_175", "Code_176", "Code_177", "Code_178", "Code_179", "Code_180", "Code_181", "Code_182", "Code_183", "Code_184", "Code_185", "Code_186", "Code_187", "Code_188", "Code_189", "Code_190", "Code_191", "Code_192", "Code_193", "Code_194", "Code_195", "Code_196", "Code_197", "Code_198", "Code_199", "Code_200", "Code_201", "Code_202", "Code_203", "Code_204", "Code_205", "Code_206", "Code_207", "Code_208", "Code_209", "Code_210", "Code_211", "Code_212", "Code_213", "Code_214", "Code_215", "Code_216", "Code_217", "Code_218", "Code_219", "Code_220", "Code_221", "Code_222", "Code_223", "Code_224", "Code_225", "Code_226", "Code_227", "Code_228", "Code_229", "Code_230", "Code_231", "Code_232", "Code_233", "Code_234", "Code_235", "Code_236", "Code_237", "Code_238", "Code_239", "Code_240", "Code_241", "Code_242", "Code_243", "Code_244", "Code_245", "Code_246", "Code_247", "Code_248", "Code_249", "Code_250", "Code_251", "Code_252", "Code_253", "Refresh = 255", "RemoveCode = 256", "Count = 257", "RawValue = 258", "RawValueIndex = 259", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_Version { enum _enumerated { Library = 0, Protocol = 1, Application = 2 }; _enumerated _value; ValueID_Index_Version(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 3; static const int* _values() { static const int values[] = { (ignore_assign)Library = 0, (ignore_assign)Protocol = 1, (ignore_assign)Application = 2, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Library = 0", "Protocol = 1", "Application = 2", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + +struct ValueID_Index_WakeUp { enum _enumerated { Interval = 0, Min_Interval = 1, Max_Interval = 2, Default_Interval = 3, Interval_Step = 4 }; _enumerated _value; ValueID_Index_WakeUp(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 5; static const int* _values() { static const int values[] = { (ignore_assign)Interval = 0, (ignore_assign)Min_Interval = 1, (ignore_assign)Max_Interval = 2, (ignore_assign)Default_Interval = 3, (ignore_assign)Interval_Step = 4, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Interval = 0", "Min_Interval = 1", "Max_Interval = 2", "Default_Interval = 3", "Interval_Step = 4", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + + + + + +struct ValueID_Index_ZWavePlusInfo { enum _enumerated { Version = 0, InstallerIcon = 1, UserIcon = 2 }; _enumerated _value; ValueID_Index_ZWavePlusInfo(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 3; static const int* _values() { static const int values[] = { (ignore_assign)Version = 0, (ignore_assign)InstallerIcon = 1, (ignore_assign)UserIcon = 2, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Version = 0", "InstallerIcon = 1", "UserIcon = 2", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; diff --git a/cpp/src/command_classes/Meter.cpp b/cpp/src/command_classes/Meter.cpp index 48cf8a2c..17177ee4 100644 --- a/cpp/src/command_classes/Meter.cpp +++ b/cpp/src/command_classes/Meter.cpp @@ -422,7 +422,7 @@ bool Meter::HandleReport } } - if( ValueDecimal* value = static_cast( GetValue( _instance, ValueID_Index_Meter::Start ) ) ) + if( ValueDecimal* value = static_cast( GetValue( _instance, ValueID_Index_Meter::Meter_1 ) ) ) { Log::Write( LogLevel_Info, GetNodeId(), "Received Meter report from node %d: %s=%s%s", GetNodeId(), label.c_str(), valueStr.c_str(), units.c_str() ); value->SetLabel( label ); @@ -549,6 +549,6 @@ void Meter::CreateVars { if( Node* node = GetNodeUnsafe() ) { - node->CreateValueDecimal( ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_Meter::Start, "Unknown", "", true, false, "0.0", 0 ); + node->CreateValueDecimal( ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_Meter::Meter_1, "Unknown", "", true, false, "0.0", 0 ); } } diff --git a/cpp/src/command_classes/SensorBinary.cpp b/cpp/src/command_classes/SensorBinary.cpp index f3975180..8f8a66f5 100644 --- a/cpp/src/command_classes/SensorBinary.cpp +++ b/cpp/src/command_classes/SensorBinary.cpp @@ -182,7 +182,7 @@ bool SensorBinary::HandleMsg { Log::Write( LogLevel_Info, GetNodeId(), "Received SensorBinary report: State=%s", _data[1] ? "On" : "Off" ); - if( ValueBool* value = static_cast( GetValue( _instance, ValueID_Index_SensorBinary::Sensor ) ) ) + if( ValueBool* value = static_cast( GetValue( _instance, ValueID_Index_SensorBinary::Sensor_1 ) ) ) { value->OnValueRefreshed( _data[1] != 0 ); value->Release(); @@ -238,6 +238,6 @@ void SensorBinary::CreateVars { if( Node* node = GetNodeUnsafe() ) { - node->CreateValueBool( ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_SensorBinary::Sensor, "Sensor", "", true, false, false, 0 ); + node->CreateValueBool( ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_SensorBinary::Sensor_1, "Sensor", "", true, false, false, 0 ); } } diff --git a/cpp/src/command_classes/SensorMultilevel.cpp b/cpp/src/command_classes/SensorMultilevel.cpp index de21ac92..4d3354e7 100644 --- a/cpp/src/command_classes/SensorMultilevel.cpp +++ b/cpp/src/command_classes/SensorMultilevel.cpp @@ -46,78 +46,7 @@ enum SensorMultilevelCmd SensorMultilevelCmd_Report = 0x05 }; -enum SensorType -{ - SensorType_Temperature = 1, - SensorType_General, /* deprecated by v11 */ - SensorType_Luminance, - SensorType_Power, - SensorType_RelativeHumidity, - SensorType_Velocity, - SensorType_Direction, - SensorType_AtmosphericPressure, - SensorType_BarometricPressure, - SensorType_SolarRadiation, - SensorType_DewPoint, - SensorType_RainRate, - SensorType_TideLevel, - SensorType_Weight, - SensorType_Voltage, - SensorType_Current, - SensorType_CO2, - SensorType_AirFlow, - SensorType_TankCapacity, - SensorType_Distance, - SensorType_AnglePosition, - SensorType_Rotation, - SensorType_WaterTemperature, - SensorType_SoilTemperature, - SensorType_SeismicIntensity, - SensorType_SeismicMagnitude, - SensorType_Ultraviolet, - SensorType_ElectricalResistivity, - SensorType_ElectricalConductivity, - SensorType_Loudness, - SensorType_Moisture, - SensorType_Frequency, - SensorType_Time, - SensorType_TargetTemperature, - SensorType_PM25, - SensorType_CH2O, - SensorType_RadonConcentration, - SensorType_CH4Density, - SensorType_VOC, - SensorType_CO, - SensorType_SoilHumidity, - SensorType_SoilReactivity, - SensorType_SoilSalinity, - SensorType_HeartRate, - SensorType_BloodPressure, - SensorType_MuscleMass, - SensorType_FatMass, - SensorType_BoneMass, - SensorType_TBW, - SensorType_BMR, - SensorType_BMI, - SensorType_AccelerationX, - SensorType_AccelerationY, - SensorType_AccelerationZ, - SensorType_SmokeDensity, - SensorType_WaterFlow, - SensorType_WaterPressure, - SensorType_RFSignalStrength, - SensorType_PM10, - SensorType_RespiratoryRate, - SensorType_RelativeModulationLevel, - SensorType_BoilerWaterTemperature, - SensorType_DHWTemperature, - SensorType_OutsideTemperature, - SensorType_ExhaustTemperature, - SensorType_WaterChlorineLevel, - SensorType_WaterAcidity, - SensorType_WaterOxidation, - SensorType_MaxType -}; +#define MaxSensorTypes (ValueID_Index_SensorMultiLevel::WaterOxidation +1) static char const* c_sensorTypeNames[] = { @@ -310,7 +239,7 @@ bool SensorMultilevel::RequestValue } else { - for( uint8 i = 1; i < SensorType_MaxType; i++ ) + for( uint8 i = 1; i < MaxSensorTypes; i++ ) { Value* value = GetValue( _instance, i ); if( value != NULL ) @@ -358,7 +287,7 @@ bool SensorMultilevel::HandleMsg if( msg != "" ) msg += ", "; uint8 index = ( ( i - 1 ) * 8 ) + j + 1; - if (index >= SensorType_MaxType) /* max size for c_sensorTypeNames */ + if (index >= MaxSensorTypes) /* max size for c_sensorTypeNames */ { Log::Write (LogLevel_Warning, GetNodeId(), "SensorType Value was greater than range. Dropping"); continue; @@ -388,25 +317,25 @@ bool SensorMultilevel::HandleMsg char const* units = ""; switch( sensorType ) { - case SensorType_Temperature: units = scale ? "F" : "C"; break; - case SensorType_General: units = scale ? "" : "%"; break; - case SensorType_Luminance: units = scale ? "lux" : "%"; break; - case SensorType_Power: units = scale ? "BTU/h" : "W"; break; - case SensorType_RelativeHumidity: units = scale ? "" : "%"; break; - case SensorType_Velocity: units = scale ? "mph" : "m/s"; break; - case SensorType_Direction: units = ""; break; - case SensorType_AtmosphericPressure: units = scale ? "inHg" : "kPa"; break; - case SensorType_BarometricPressure: units = scale ? "inHg" : "kPa"; break; - case SensorType_SolarRadiation: units = "W/m2"; break; - case SensorType_DewPoint: units = scale ? "F" : "C"; break; - case SensorType_RainRate: units = scale ? "in/h" : "mm/h"; break; - case SensorType_TideLevel: units = scale ? "ft" : "m"; break; - case SensorType_Weight: units = scale ? "lb" : "kg"; break; - case SensorType_Voltage: units = scale ? "mV" : "V"; break; - case SensorType_Current: units = scale ? "mA" : "A"; break; - case SensorType_CO2: units = "ppm"; break; - case SensorType_AirFlow: units = scale ? "cfm" : "m3/h"; break; - case SensorType_TankCapacity: { + case ValueID_Index_SensorMultiLevel::Temperature: units = scale ? "F" : "C"; break; + case ValueID_Index_SensorMultiLevel::General: units = scale ? "" : "%"; break; + case ValueID_Index_SensorMultiLevel::Luminance: units = scale ? "lux" : "%"; break; + case ValueID_Index_SensorMultiLevel::Power: units = scale ? "BTU/h" : "W"; break; + case ValueID_Index_SensorMultiLevel::RelativeHumidity: units = scale ? "" : "%"; break; + case ValueID_Index_SensorMultiLevel::Velocity: units = scale ? "mph" : "m/s"; break; + case ValueID_Index_SensorMultiLevel::Direction: units = ""; break; + case ValueID_Index_SensorMultiLevel::AtmosphericPressure: units = scale ? "inHg" : "kPa"; break; + case ValueID_Index_SensorMultiLevel::BarometricPressure: units = scale ? "inHg" : "kPa"; break; + case ValueID_Index_SensorMultiLevel::SolarRadiation: units = "W/m2"; break; + case ValueID_Index_SensorMultiLevel::DewPoint: units = scale ? "F" : "C"; break; + case ValueID_Index_SensorMultiLevel::RainRate: units = scale ? "in/h" : "mm/h"; break; + case ValueID_Index_SensorMultiLevel::TideLevel: units = scale ? "ft" : "m"; break; + case ValueID_Index_SensorMultiLevel::Weight: units = scale ? "lb" : "kg"; break; + case ValueID_Index_SensorMultiLevel::Voltage: units = scale ? "mV" : "V"; break; + case ValueID_Index_SensorMultiLevel::Current: units = scale ? "mA" : "A"; break; + case ValueID_Index_SensorMultiLevel::CO2: units = "ppm"; break; + case ValueID_Index_SensorMultiLevel::AirFlow: units = scale ? "cfm" : "m3/h"; break; + case ValueID_Index_SensorMultiLevel::TankCapacity: { if (scale > 2) /* size of c_tankCapcityUnits minus invalid */ { Log::Write (LogLevel_Warning, GetNodeId(), "Scale Value for c_tankCapcityUnits was greater than range. Setting to empty"); @@ -418,7 +347,7 @@ bool SensorMultilevel::HandleMsg } } break; - case SensorType_Distance: { + case ValueID_Index_SensorMultiLevel::Distance: { if (scale > 2) /* size of c_distanceUnits minus invalid */ { Log::Write (LogLevel_Warning, GetNodeId(), "Scale Value for c_distanceUnits was greater than range. Setting to empty"); @@ -430,7 +359,7 @@ bool SensorMultilevel::HandleMsg } } break; - case SensorType_AnglePosition: { + case ValueID_Index_SensorMultiLevel::AnglePosition: { if (scale > 2) /* size of c_anglePositionUnits minus invalid */ { Log::Write (LogLevel_Warning, GetNodeId(), "Scale Value for c_anglePositionUnits was greater than range. Setting to empty"); @@ -442,10 +371,10 @@ bool SensorMultilevel::HandleMsg } } break; - case SensorType_Rotation: units = scale ? "hz" : "rpm"; break; - case SensorType_WaterTemperature: units = scale ? "F" : "C"; break; - case SensorType_SoilTemperature: units = scale ? "F" : "C"; break; - case SensorType_SeismicIntensity: { + case ValueID_Index_SensorMultiLevel::Rotation: units = scale ? "hz" : "rpm"; break; + case ValueID_Index_SensorMultiLevel::WaterTemperature: units = scale ? "F" : "C"; break; + case ValueID_Index_SensorMultiLevel::SoilTemperature: units = scale ? "F" : "C"; break; + case ValueID_Index_SensorMultiLevel::SeismicIntensity: { if (scale > 3) /* size of c_seismicIntensityUnits minus invalid */ { Log::Write (LogLevel_Warning, GetNodeId(), "Scale Value for c_seismicIntensityUnits was greater than range. Setting to empty"); @@ -457,7 +386,7 @@ bool SensorMultilevel::HandleMsg } } break; - case SensorType_SeismicMagnitude: { + case ValueID_Index_SensorMultiLevel::SeismicMagnitude: { if (scale > 3) /* size of c_seismicMagnitudeUnits minus invalid */ { Log::Write (LogLevel_Warning, GetNodeId(), "Scale Value for c_seismicMagnitudeUnits was greater than range. Setting to empty"); @@ -469,11 +398,11 @@ bool SensorMultilevel::HandleMsg } } break; - case SensorType_Ultraviolet: units = ""; break; - case SensorType_ElectricalResistivity: units = "ohm"; break; - case SensorType_ElectricalConductivity: units = "siemens/m"; break; - case SensorType_Loudness: units = scale ? "dBA" : "db"; break; - case SensorType_Moisture: { + case ValueID_Index_SensorMultiLevel::Ultraviolet: units = ""; break; + case ValueID_Index_SensorMultiLevel::ElectricalResistivity: units = "ohm"; break; + case ValueID_Index_SensorMultiLevel::ElectricalConductivity: units = "siemens/m"; break; + case ValueID_Index_SensorMultiLevel::Loudness: units = scale ? "dBA" : "db"; break; + case ValueID_Index_SensorMultiLevel::Moisture: { if (scale > 3) /* size of c_moistureUnits minus invalid */ { Log::Write (LogLevel_Warning, GetNodeId(), "Scale Value for c_moistureUnits was greater than range. Setting to empty"); @@ -485,43 +414,43 @@ bool SensorMultilevel::HandleMsg } } break; - case SensorType_Frequency: units = scale ? "kHz" : "Hz"; break; - case SensorType_Time: units = "s"; break; - case SensorType_TargetTemperature: units = scale ? "F" : "C"; break; - case SensorType_PM25: units = scale ? "ug/m3" : "mol/m3"; break; - case SensorType_CH2O: units = "mol/m3"; break; - case SensorType_RadonConcentration: units = scale ? "pCi/l" : "bq/m3"; break; - case SensorType_CH4Density: units = "mol/m3"; break; - case SensorType_VOC: units = scale ? "ppm" : "mol/m3"; break; - case SensorType_CO: units = scale ? "ppm" : "mol/m3"; break; - case SensorType_SoilHumidity: units = "%"; break; - case SensorType_SoilReactivity: units = "pH"; break; - case SensorType_SoilSalinity: units = "mol/m3"; break; - case SensorType_HeartRate: units = "bpm"; break; - case SensorType_BloodPressure: units = scale ? "mmHg (Diastollic)" : "mmHg (Systollic)"; break; - case SensorType_MuscleMass: units = "kg"; break; - case SensorType_FatMass: units = "kg"; break; - case SensorType_BoneMass: units = "kg"; break; - case SensorType_TBW: units = "kg"; break; - case SensorType_BMR: units = "J"; break; - case SensorType_BMI: units = ""; break; - case SensorType_AccelerationX: units = "m/s2"; break; - case SensorType_AccelerationY: units = "m/s2"; break; - case SensorType_AccelerationZ: units = "m/s2"; break; - case SensorType_SmokeDensity: units = "%"; break; - case SensorType_WaterFlow: units = "l/h"; break; - case SensorType_WaterPressure: units = "kPa"; break; - case SensorType_RFSignalStrength: units = scale ? "dBm" : "% (RSSI)"; break; - case SensorType_PM10: units = scale ? "ug/m3" : "mol/m3"; break; - case SensorType_RespiratoryRate: units = "bpm"; break; - case SensorType_RelativeModulationLevel: units = "%"; break; - case SensorType_BoilerWaterTemperature: units = "C"; break; - case SensorType_DHWTemperature: units = "C"; break; - case SensorType_OutsideTemperature: units = "C"; break; - case SensorType_ExhaustTemperature: units = "C"; break; - case SensorType_WaterChlorineLevel: units = "mg/l"; break; - case SensorType_WaterAcidity: units = "pH"; break; - case SensorType_WaterOxidation: units = "mV"; break; + case ValueID_Index_SensorMultiLevel::Frequency: units = scale ? "kHz" : "Hz"; break; + case ValueID_Index_SensorMultiLevel::Time: units = "s"; break; + case ValueID_Index_SensorMultiLevel::TargetTemperature: units = scale ? "F" : "C"; break; + case ValueID_Index_SensorMultiLevel::PM25: units = scale ? "ug/m3" : "mol/m3"; break; + case ValueID_Index_SensorMultiLevel::CH2O: units = "mol/m3"; break; + case ValueID_Index_SensorMultiLevel::RadonConcentration: units = scale ? "pCi/l" : "bq/m3"; break; + case ValueID_Index_SensorMultiLevel::CH4Density: units = "mol/m3"; break; + case ValueID_Index_SensorMultiLevel::VOC: units = scale ? "ppm" : "mol/m3"; break; + case ValueID_Index_SensorMultiLevel::CO: units = scale ? "ppm" : "mol/m3"; break; + case ValueID_Index_SensorMultiLevel::SoilHumidity: units = "%"; break; + case ValueID_Index_SensorMultiLevel::SoilReactivity: units = "pH"; break; + case ValueID_Index_SensorMultiLevel::SoilSalinity: units = "mol/m3"; break; + case ValueID_Index_SensorMultiLevel::HeartRate: units = "bpm"; break; + case ValueID_Index_SensorMultiLevel::BloodPressure: units = scale ? "mmHg (Diastollic)" : "mmHg (Systollic)"; break; + case ValueID_Index_SensorMultiLevel::MuscleMass: units = "kg"; break; + case ValueID_Index_SensorMultiLevel::FatMass: units = "kg"; break; + case ValueID_Index_SensorMultiLevel::BoneMass: units = "kg"; break; + case ValueID_Index_SensorMultiLevel::TBW: units = "kg"; break; + case ValueID_Index_SensorMultiLevel::BMR: units = "J"; break; + case ValueID_Index_SensorMultiLevel::BMI: units = ""; break; + case ValueID_Index_SensorMultiLevel::AccelerationX: units = "m/s2"; break; + case ValueID_Index_SensorMultiLevel::AccelerationY: units = "m/s2"; break; + case ValueID_Index_SensorMultiLevel::AccelerationZ: units = "m/s2"; break; + case ValueID_Index_SensorMultiLevel::SmokeDensity: units = "%"; break; + case ValueID_Index_SensorMultiLevel::WaterFlow: units = "l/h"; break; + case ValueID_Index_SensorMultiLevel::WaterPressure: units = "kPa"; break; + case ValueID_Index_SensorMultiLevel::RFSignalStrength: units = scale ? "dBm" : "% (RSSI)"; break; + case ValueID_Index_SensorMultiLevel::PM10: units = scale ? "ug/m3" : "mol/m3"; break; + case ValueID_Index_SensorMultiLevel::RespiratoryRate: units = "bpm"; break; + case ValueID_Index_SensorMultiLevel::RelativeModulationLevel: units = "%"; break; + case ValueID_Index_SensorMultiLevel::BoilerWaterTemperature: units = "C"; break; + case ValueID_Index_SensorMultiLevel::DHWTemperature: units = "C"; break; + case ValueID_Index_SensorMultiLevel::OutsideTemperature: units = "C"; break; + case ValueID_Index_SensorMultiLevel::ExhaustTemperature: units = "C"; break; + case ValueID_Index_SensorMultiLevel::WaterChlorineLevel: units = "mg/l"; break; + case ValueID_Index_SensorMultiLevel::WaterAcidity: units = "pH"; break; + case ValueID_Index_SensorMultiLevel::WaterOxidation: units = "mV"; break; default: { Log::Write (LogLevel_Warning, GetNodeId(), "sensorType Value was greater than range. Dropping"); return false; diff --git a/cpp/src/command_classes/ThermostatSetpoint.cpp b/cpp/src/command_classes/ThermostatSetpoint.cpp index dfb80970..d5e1dec7 100644 --- a/cpp/src/command_classes/ThermostatSetpoint.cpp +++ b/cpp/src/command_classes/ThermostatSetpoint.cpp @@ -50,29 +50,7 @@ enum ThermostatSetpointCmd ThermostatSetpointCmd_CapabilitiesReport = 0x0A }; -enum -{ - ThermostatSetpoint_Unused0 = 0, - ThermostatSetpoint_Heating1, - ThermostatSetpoint_Cooling1, - ThermostatSetpoint_Unused3, - ThermostatSetpoint_Unused4, - ThermostatSetpoint_Unused5, - ThermostatSetpoint_Unused6, - ThermostatSetpoint_Furnace, - ThermostatSetpoint_DryAir, - ThermostatSetpoint_MoistAir, - ThermostatSetpoint_AutoChangeover, - ThermostatSetpoint_HeatingEcon, - ThermostatSetpoint_CoolingEcon, - ThermostatSetpoint_AwayHeating, - ThermostatSetpoint_CoolingHeating, - ThermostatSetpoint_Count, - - ThermostatSetpoint_Minimum = 100, - ThermostatSetpoint_Maximum = 200 -}; - +#define ThermostatSetpoint_Count (ValueID_Index_ThermostatSetpoint::CoolingHeating + 1) static char const* c_setpointName[] = { @@ -302,8 +280,8 @@ bool ThermostatSetpoint::HandleMsg { string setpointName = c_setpointName[index]; - node->CreateValueDecimal( ValueID::ValueGenre_User, GetCommandClassId(), _instance, ThermostatSetpoint_Minimum + index, setpointName + "_minimum", "C", false, false, minValue, 0 ); - node->CreateValueDecimal( ValueID::ValueGenre_User, GetCommandClassId(), _instance, ThermostatSetpoint_Maximum + index, setpointName + "_maximum", "C", false, false, maxValue, 0 ); + node->CreateValueDecimal( ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_ThermostatSetpoint::Unused_0_Minimum + index, setpointName + "_minimum", "C", false, false, minValue, 0 ); + node->CreateValueDecimal( ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_ThermostatSetpoint::Unused_0_Maximum + index, setpointName + "_maximum", "C", false, false, maxValue, 0 ); Log::Write( LogLevel_Info, GetNodeId(), " Added setpoint: %s", setpointName.c_str() ); } diff --git a/cpp/src/platform/HidController.cpp b/cpp/src/platform/HidController.cpp index 93fe50c4..3f7ba2ce 100644 --- a/cpp/src/platform/HidController.cpp +++ b/cpp/src/platform/HidController.cpp @@ -25,7 +25,6 @@ // //----------------------------------------------------------------------------- -#ifdef USE_HID #include "Msg.h" #include "platform/Thread.h" @@ -33,8 +32,9 @@ #include "platform/Log.h" #include "platform/TimeStamp.h" #include "platform/HidController.h" -#include "hidapi.h" +#ifdef USE_HID +#include "hidapi.h" #define CHECK_HIDAPI_RESULT(RESULT, ERRORLABEL) if (RESULT < 0) goto ERRORLABEL #define PACKET_BUFFER_LENGTH 256 diff --git a/cpp/src/platform/HidController.h b/cpp/src/platform/HidController.h index 4e6de288..80d81b01 100644 --- a/cpp/src/platform/HidController.h +++ b/cpp/src/platform/HidController.h @@ -33,6 +33,8 @@ #include "platform/Controller.h" +#ifdef USE_HID + struct hid_device_; typedef struct hid_device_ hid_device; @@ -151,5 +153,7 @@ namespace OpenZWave } // namespace OpenZWave +#endif + #endif //_HidController_H diff --git a/cpp/src/value_classes/ValueID.h b/cpp/src/value_classes/ValueID.h index be26e743..c6a1fc31 100644 --- a/cpp/src/value_classes/ValueID.h +++ b/cpp/src/value_classes/ValueID.h @@ -30,8 +30,9 @@ #include #include -#include "Defs.h" + #include "ValueIDIndexes.h" +#include "Defs.h" class TiXmlElement; diff --git a/dist/openzwave.spec b/dist/openzwave.spec index 8249f58a..4890f5bd 100644 --- a/dist/openzwave.spec +++ b/dist/openzwave.spec @@ -3,7 +3,7 @@ %endif Name: openzwave -Version: 1.6.163 +Version: 1.6.201 Release: 1.0%{?dist} Summary: Sample Executables for OpenZWave URL: http://www.openzwave.net @@ -134,7 +134,7 @@ getent group zwave >/dev/null || groupadd -f -r zwave %changelog -* Wed May 08 2019 Justin Hammond - 1.6.163 +* Wed May 08 2019 Justin Hammond - 1.6.201 - Update to new release of OpenZwave - 1.6 * Fri Feb 01 2019 Fedora Release Engineering - 1.5.0-0.20180624git1e36dcc.0