amino
1.0-beta2
Lightweight Robot Utility Library
amino.h
Go to the documentation of this file.
1
/* -*- mode: C; c-basic-offset: 4; -*- */
2
/* ex: set shiftwidth=4 tabstop=4 expandtab: */
3
/*
4
* Copyright (c) 2010-2011, Georgia Tech Research Corporation
5
* All rights reserved.
6
*
7
* Author(s): Neil T. Dantam <ntd@gatech.edu>
8
* Georgia Tech Humanoid Robotics Lab
9
* Under Direction of Prof. Mike Stilman <mstilman@cc.gatech.edu>
10
*
11
*
12
* This file is provided under the following "BSD-style" License:
13
*
14
*
15
* Redistribution and use in source and binary forms, with or
16
* without modification, are permitted provided that the following
17
* conditions are met:
18
*
19
* * Redistributions of source code must retain the above copyright
20
* notice, this list of conditions and the following disclaimer.
21
*
22
* * Redistributions in binary form must reproduce the above
23
* copyright notice, this list of conditions and the following
24
* disclaimer in the documentation and/or other materials provided
25
* with the distribution.
26
*
27
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
28
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
29
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
30
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
32
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
35
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
36
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
38
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
39
* POSSIBILITY OF SUCH DAMAGE.
40
*
41
*/
42
43
#ifndef AMINO_H
44
#define AMINO_H
45
57
// include everything we'll typically need
58
#ifdef __cplusplus
59
#include <cstdlib>
60
#include <cstring>
61
#include <cmath>
62
#include <cstdio>
63
#include <cassert>
64
#include <ctime>
65
#include <stdint.h>
66
#include <iostream>
67
#include <vector>
68
#include <map>
69
#include <queue>
70
#include <stack>
71
#include <string>
72
#else
73
#include <assert.h>
74
#include <stdlib.h>
75
#include <stdint.h>
76
#include <string.h>
77
#include <stdio.h>
78
#include <
math.h
>
79
#include <errno.h>
80
#include <stdarg.h>
81
#endif
//__cplusplus
82
83
#include "amino/cblas_order.h"
84
85
86
#include <
time.h
>
87
88
// for C symbols
89
#ifdef __cplusplus
90
#define AA_API extern "C"
91
#define AA_EXTERN extern "C"
92
#define AA_RESTRICT
93
#else
95
#define AA_API
97
#define AA_EXTERN extern
99
#define AA_RESTRICT restrict
100
#endif
//__cplusplus
101
103
#define AA_DEPRECATED __attribute__ ((deprecated))
104
105
106
#if __has_attribute(__fallthrough__)
108
#define AA_FALLTHROUGH __attribute__((__fallthrough__))
109
#else
111
#define AA_FALLTHROUGH do {} while (0)
/* fallthrough */
112
#endif
113
114
116
#define AA_IBILLION 1000000000
118
#define AA_IMILLION 1000000
119
121
#define AA_QUOTE(X) (#X)
122
124
#define AA_ENUM_SYM_CASE( res, sym ) case sym: (res) = #sym; break;
125
127
#define AA_SWAP(a,b) \
128
{ \
129
const __typeof__(a) aa_$_tmpa = (a); \
130
const __typeof__(b) aa_$_tmpb = (b); \
131
(a) = aa_$_tmpb; \
132
(b) = aa_$_tmpa; \
133
}
134
135
136
// include our own headers
137
#include "
amino/mem.h
"
138
#include "
amino/math.h
"
139
#include "
amino/la.h
"
140
#include "
amino/tf.h
"
141
#include "amino/lapack.h"
142
#include "amino/clapack.h"
143
#include "
amino/time.h
"
144
#include "
amino/debug.h
"
145
#include "
amino/plot.h
"
146
#include "amino/kin.h"
147
#include "amino/type.h"
148
#include "
amino/endconv.h
"
149
#include "amino/unit.h"
150
#include "
amino/validate.h
"
151
#include "amino/io.h"
152
#include "
amino/cv.h
"
153
#include "amino/const.h"
154
#include "
amino/heap.h
"
155
156
157
#endif
//AMINO_H
cv.h
debug.h
endconv.h
Routines to convert numbers to different endian formats.
heap.h
Simple Heap / Heapsort.
la.h
Linear algebra routines.
math.h
Numerical routines.
mem.h
Memory Management.
plot.h
tf.h
Include this file for low-level operations for SE(3) orientations and transformations.
time.h
validate.h
Validation of data.