WPILibC++  2019.1.1-beta-2-17-g6f0c185
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
HAL_Value.h
1 /*----------------------------------------------------------------------------*/
2 /* Copyright (c) 2017-2018 FIRST. All Rights Reserved. */
3 /* Open Source Software - may be modified and shared by FRC teams. The code */
4 /* must be accompanied by the FIRST BSD license file in the root directory of */
5 /* the project. */
6 /*----------------------------------------------------------------------------*/
7 
8 #pragma once
9 
10 #ifndef __FRC_ROBORIO__
11 
12 #include "hal/Types.h"
13 
15 enum HAL_Type {
16  HAL_UNASSIGNED = 0,
17  HAL_BOOLEAN = 0x01,
18  HAL_DOUBLE = 0x02,
19  HAL_ENUM = 0x16,
20  HAL_INT = 0x32,
21  HAL_LONG = 0x64,
22 };
23 
25 struct HAL_Value {
26  union {
27  HAL_Bool v_boolean;
28  int32_t v_enum;
29  int32_t v_int;
30  int64_t v_long;
31  double v_double;
32  } data;
33  enum HAL_Type type;
34 };
35 
36 inline HAL_Value MakeBoolean(HAL_Bool v) {
37  HAL_Value value;
38  value.type = HAL_BOOLEAN;
39  value.data.v_boolean = v;
40  return value;
41 }
42 
43 inline HAL_Value MakeEnum(int v) {
44  HAL_Value value;
45  value.type = HAL_ENUM;
46  value.data.v_enum = v;
47  return value;
48 }
49 
50 inline HAL_Value MakeInt(int v) {
51  HAL_Value value;
52  value.type = HAL_INT;
53  value.data.v_int = v;
54  return value;
55 }
56 
57 inline HAL_Value MakeLong(int64_t v) {
58  HAL_Value value;
59  value.type = HAL_LONG;
60  value.data.v_long = v;
61  return value;
62 }
63 
64 inline HAL_Value MakeDouble(double v) {
65  HAL_Value value;
66  value.type = HAL_DOUBLE;
67  value.data.v_double = v;
68  return value;
69 }
70 
71 #endif
HAL Entry Value.
Definition: HAL_Value.h:25