/**
 * THIS FILE IS GENERATED. DO NOT MODIFY.
 *
 * SOURCE PROTO: src/test/common/enums.proto
 * 
 */

/*
 *
 *    Copyright (c) 2016-2017 Nest Labs, Inc.
 *    All rights reserved.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

#ifndef _SRC_TEST_COMMON_ENUMS_H
#define _SRC_TEST_COMMON_ENUMS_H

// We want and assume the default managed namespace is Current and that is, explicitly, the managed namespace this code desires.
#include <Weave/Profiles/data-management/TraitData.h>

namespace Nest {
namespace Test {
namespace Common {

    enum CommonEnumA {
        COMMON_ENUM_A_VALUE_1 = 1,
        COMMON_ENUM_A_VALUE_2 = 2,
        COMMON_ENUM_A_VALUE_3 = 3
    };

} // Common
} // Test
} // Nest
#endif /* _SRC_TEST_COMMON_ENUMS_H */

