Titan Core Initial Contribution
[deliverable/titan.core.git] / core / Array.cc
1 ///////////////////////////////////////////////////////////////////////////////
2 // Copyright (c) 2000-2014 Ericsson Telecom AB
3 // All rights reserved. This program and the accompanying materials
4 // are made available under the terms of the Eclipse Public License v1.0
5 // which accompanies this distribution, and is available at
6 // http://www.eclipse.org/legal/epl-v10.html
7 ///////////////////////////////////////////////////////////////////////////////
8 #include "Array.hh"
9
10 unsigned int get_timer_array_index(int index_value, unsigned int array_size,
11 int index_offset)
12 {
13 if (index_value < index_offset) TTCN_error("Index underflow when accessing "
14 "an element of a timer array. The index value should be between %d and %d "
15 "instead of %d.", index_offset, index_offset + array_size - 1, index_value);
16 unsigned int ret_val = index_value - index_offset;
17 if (ret_val >= array_size)
18 TTCN_error("Index overflow when accessing an element of a timer array. "
19 "The index value should be between %d and %d instead of %d.", index_offset,
20 index_offset + array_size - 1, index_value);
21 return ret_val;
22 }
23
24 unsigned int get_timer_array_index(const INTEGER& index_value,
25 unsigned int array_size, int index_offset)
26 {
27 if (!index_value.is_bound()) TTCN_error("Accessing an element of a timer "
28 "array using an unbound index.");
29 return get_timer_array_index((int)index_value, array_size, index_offset);
30 }
31
32 unsigned int get_port_array_index(int index_value, unsigned int array_size,
33 int index_offset)
34 {
35 if (index_value < index_offset) TTCN_error("Index underflow when accessing "
36 "an element of a port array. The index value should be between %d and %d "
37 "instead of %d.", index_offset, index_offset + array_size - 1, index_value);
38 unsigned int ret_val = index_value - index_offset;
39 if (ret_val >= array_size)
40 TTCN_error("Index overflow when accessing an element of a port array. "
41 "The index value should be between %d and %d instead of %d.", index_offset,
42 index_offset + array_size - 1, index_value);
43 return ret_val;
44 }
45
46 unsigned int get_port_array_index(const INTEGER& index_value,
47 unsigned int array_size, int index_offset)
48 {
49 if (!index_value.is_bound()) TTCN_error("Accessing an element of a port "
50 "array using an unbound index.");
51 return get_timer_array_index((int)index_value, array_size, index_offset);
52 }
53
54 ////////////////////////////////////////////////////////////////////////////////
55
56 unsigned int get_array_index(int index_value, unsigned int array_size,
57 int index_offset)
58 {
59 if (index_value < index_offset) TTCN_error("Index underflow when accessing "
60 "an element of an array. The index value should be between %d and %d "
61 "instead of %d.", index_offset, index_offset + array_size - 1, index_value);
62 unsigned int ret_val = index_value - index_offset;
63 if (ret_val >= array_size)
64 TTCN_error("Index overflow when accessing an element of an array. "
65 "The index value should be between %d and %d instead of %d.", index_offset,
66 index_offset + array_size - 1, index_value);
67 return ret_val;
68 }
69
70 unsigned int get_array_index(const INTEGER& index_value,
71 unsigned int array_size, int index_offset)
72 {
73 if (!index_value.is_bound()) TTCN_error("Accessing an element of an "
74 "array using an unbound index.");
75 return get_array_index((int)index_value, array_size, index_offset);
76 }
This page took 0.052333 seconds and 6 git commands to generate.