Sync with 5.4.2
[deliverable/titan.core.git] / core / Array.cc
CommitLineData
970ed795 1///////////////////////////////////////////////////////////////////////////////
3abe9331 2// Copyright (c) 2000-2015 Ericsson Telecom AB
970ed795
EL
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
10unsigned 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
24unsigned 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
32unsigned 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
46unsigned 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
56unsigned 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
70unsigned 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.033498 seconds and 5 git commands to generate.