Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
tnl-dev
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
TNL
tnl-dev
Commits
8a659de4
There was an error fetching the commit references. Please try again later.
Commit
8a659de4
authored
6 years ago
by
Tomáš Oberhuber
Browse files
Options
Downloads
Patches
Plain Diff
Fixed getType to work with enum types by conversion to underlying type.
parent
b60071b2
No related branches found
No related tags found
1 merge request
!26
Lbm
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/TNL/param-types.h
+54
-50
54 additions, 50 deletions
src/TNL/param-types.h
with
54 additions
and
50 deletions
src/TNL/param-types.h
+
54
−
50
View file @
8a659de4
...
...
@@ -11,28 +11,76 @@
#pragma once
#include
<vector>
#include
<type_traits>
#include
<TNL/Experimental/Arithmetics/Real.h>
#include
<TNL/String.h>
namespace
TNL
{
template
<
typename
T
>
String
getType
();
namespace
__getType_impl
{
template
<
typename
T
>
template
<
typename
T
,
bool
isEnum
=
std
::
is_enum
<
T
>
::
value
>
struct
getTypeHelper
{
static
String
get
()
{
return
T
::
getType
();
}
};
template
<
>
struct
getTypeHelper
<
void
,
false
>
{
static
String
get
()
{
return
String
(
"void"
);
};
};
template
<
>
struct
getTypeHelper
<
bool
,
false
>
{
static
String
get
()
{
return
String
(
"bool"
);
};
};
template
<
>
struct
getTypeHelper
<
char
,
false
>
{
static
String
get
()
{
return
String
(
"char"
);
};
};
template
<
>
struct
getTypeHelper
<
short
int
,
false
>
{
static
String
get
()
{
return
String
(
"short int"
);
};
};
template
<
>
struct
getTypeHelper
<
int
,
false
>
{
static
String
get
()
{
return
String
(
"int"
);
};
};
template
<
>
struct
getTypeHelper
<
long
int
,
false
>
{
static
String
get
()
{
return
String
(
"long int"
);
};
};
template
<
>
struct
getTypeHelper
<
unsigned
char
,
false
>
{
static
String
get
()
{
return
String
(
"unsigned char"
);
};
};
template
<
>
struct
getTypeHelper
<
unsigned
short
,
false
>
{
static
String
get
()
{
return
String
(
"unsigned short"
);
};
};
template
<
>
struct
getTypeHelper
<
unsigned
int
,
false
>
{
static
String
get
()
{
return
String
(
"unsigned int"
);
};
};
template
<
>
struct
getTypeHelper
<
unsigned
long
,
false
>
{
static
String
get
()
{
return
String
(
"unsigned long"
);
};
};
template
<
>
struct
getTypeHelper
<
signed
char
,
false
>
{
static
String
get
()
{
return
String
(
"signed char"
);
};
};
template
<
>
struct
getTypeHelper
<
float
,
false
>
{
static
String
get
()
{
return
String
(
"float"
);
};
};
template
<
>
struct
getTypeHelper
<
double
,
false
>
{
static
String
get
()
{
return
String
(
"double"
);
};
};
template
<
>
struct
getTypeHelper
<
long
double
,
false
>
{
static
String
get
()
{
return
String
(
"long double"
);
};
};
template
<
>
struct
getTypeHelper
<
tnlFloat
,
false
>
{
static
String
get
()
{
return
String
(
"tnlFloat"
);
};
};
template
<
>
struct
getTypeHelper
<
tnlDouble
,
false
>
{
static
String
get
()
{
return
String
(
"tnlDouble"
);
};
};
// const specializations
template
<
>
struct
getTypeHelper
<
const
void
,
false
>
{
static
String
get
()
{
return
String
(
"const void"
);
};
};
template
<
>
struct
getTypeHelper
<
const
bool
,
false
>
{
static
String
get
()
{
return
String
(
"const bool"
);
};
};
template
<
>
struct
getTypeHelper
<
const
char
,
false
>
{
static
String
get
()
{
return
String
(
"const char"
);
};
};
template
<
>
struct
getTypeHelper
<
const
short
int
,
false
>
{
static
String
get
()
{
return
String
(
"const short int"
);
};
};
template
<
>
struct
getTypeHelper
<
const
int
,
false
>
{
static
String
get
()
{
return
String
(
"const int"
);
};
};
template
<
>
struct
getTypeHelper
<
const
long
int
,
false
>
{
static
String
get
()
{
return
String
(
"const long int"
);
};
};
template
<
>
struct
getTypeHelper
<
const
unsigned
char
,
false
>
{
static
String
get
()
{
return
String
(
"const unsigned char"
);
};
};
template
<
>
struct
getTypeHelper
<
const
unsigned
short
,
false
>
{
static
String
get
()
{
return
String
(
"const unsigned short"
);
};
};
template
<
>
struct
getTypeHelper
<
const
unsigned
int
,
false
>
{
static
String
get
()
{
return
String
(
"const unsigned int"
);
};
};
template
<
>
struct
getTypeHelper
<
const
unsigned
long
,
false
>
{
static
String
get
()
{
return
String
(
"const unsigned long"
);
};
};
template
<
>
struct
getTypeHelper
<
const
signed
char
,
false
>
{
static
String
get
()
{
return
String
(
"const signed char"
);
};
};
template
<
>
struct
getTypeHelper
<
const
float
,
false
>
{
static
String
get
()
{
return
String
(
"const float"
);
};
};
template
<
>
struct
getTypeHelper
<
const
double
,
false
>
{
static
String
get
()
{
return
String
(
"const double"
);
};
};
template
<
>
struct
getTypeHelper
<
const
long
double
,
false
>
{
static
String
get
()
{
return
String
(
"const long double"
);
};
};
template
<
>
struct
getTypeHelper
<
const
tnlFloat
,
false
>
{
static
String
get
()
{
return
String
(
"const tnlFloat"
);
};
};
template
<
>
struct
getTypeHelper
<
const
tnlDouble
,
false
>
{
static
String
get
()
{
return
String
(
"const tnlDouble"
);
};
};
template
<
typename
T
>
struct
getTypeHelper
<
T
,
true
>
{
static
String
get
()
{
return
getTypeHelper
<
typename
std
::
underlying_type
<
T
>::
type
,
false
>::
get
();
};
};
// wrappers for STL containers
template
<
typename
T
>
struct
getTypeHelper
<
std
::
vector
<
T
>
>
struct
getTypeHelper
<
std
::
vector
<
T
>
,
false
>
{
static
String
get
()
{
return
String
(
"std::vector< "
)
+
TNL
::
getType
<
T
>
()
+
" >"
;
}
static
String
get
()
{
return
String
(
"std::vector< "
)
+
getType
Helper
<
T
>::
get
()
+
" >"
;
}
};
}
// namespace __getType_impl
...
...
@@ -40,48 +88,4 @@ struct getTypeHelper< std::vector< T > >
template
<
typename
T
>
String
getType
()
{
return
__getType_impl
::
getTypeHelper
<
T
>::
get
();
}
// non-const specializations
template
<
>
inline
String
getType
<
void
>
()
{
return
String
(
"void"
);
}
template
<
>
inline
String
getType
<
bool
>
()
{
return
String
(
"bool"
);
}
template
<
>
inline
String
getType
<
char
>
()
{
return
String
(
"char"
);
}
template
<
>
inline
String
getType
<
short
int
>
()
{
return
String
(
"short int"
);
}
template
<
>
inline
String
getType
<
int
>
()
{
return
String
(
"int"
);
}
template
<
>
inline
String
getType
<
long
int
>
()
{
return
String
(
"long int"
);
}
template
<
>
inline
String
getType
<
unsigned
char
>
()
{
return
String
(
"unsigned char"
);
}
template
<
>
inline
String
getType
<
unsigned
short
>
()
{
return
String
(
"unsigned short"
);
}
template
<
>
inline
String
getType
<
unsigned
int
>
()
{
return
String
(
"unsigned int"
);
}
template
<
>
inline
String
getType
<
unsigned
long
>
()
{
return
String
(
"unsigned long"
);
}
template
<
>
inline
String
getType
<
signed
char
>
()
{
return
String
(
"signed char"
);
}
template
<
>
inline
String
getType
<
float
>
()
{
return
String
(
"float"
);
}
template
<
>
inline
String
getType
<
double
>
()
{
return
String
(
"double"
);
}
template
<
>
inline
String
getType
<
long
double
>
()
{
return
String
(
"long double"
);
}
template
<
>
inline
String
getType
<
tnlFloat
>
()
{
return
String
(
"tnlFloat"
);
}
template
<
>
inline
String
getType
<
tnlDouble
>
()
{
return
String
(
"tnlDouble"
);
}
// const specializations
template
<
>
inline
String
getType
<
const
void
>
()
{
return
String
(
"const void"
);
}
template
<
>
inline
String
getType
<
const
bool
>
()
{
return
String
(
"const bool"
);
}
template
<
>
inline
String
getType
<
const
char
>
()
{
return
String
(
"const char"
);
}
template
<
>
inline
String
getType
<
const
short
int
>
()
{
return
String
(
"const short int"
);
}
template
<
>
inline
String
getType
<
const
int
>
()
{
return
String
(
"const int"
);
}
template
<
>
inline
String
getType
<
const
long
int
>
()
{
return
String
(
"const long int"
);
}
template
<
>
inline
String
getType
<
const
unsigned
char
>
()
{
return
String
(
"const unsigned char"
);
}
template
<
>
inline
String
getType
<
const
unsigned
short
>
()
{
return
String
(
"const unsigned short"
);
}
template
<
>
inline
String
getType
<
const
unsigned
int
>
()
{
return
String
(
"const unsigned int"
);
}
template
<
>
inline
String
getType
<
const
unsigned
long
>
()
{
return
String
(
"const unsigned long"
);
}
template
<
>
inline
String
getType
<
const
signed
char
>
()
{
return
String
(
"const signed char"
);
}
template
<
>
inline
String
getType
<
const
float
>
()
{
return
String
(
"const float"
);
}
template
<
>
inline
String
getType
<
const
double
>
()
{
return
String
(
"const double"
);
}
template
<
>
inline
String
getType
<
const
long
double
>
()
{
return
String
(
"const long double"
);
}
template
<
>
inline
String
getType
<
const
tnlFloat
>
()
{
return
String
(
"const tnlFloat"
);
}
template
<
>
inline
String
getType
<
const
tnlDouble
>
()
{
return
String
(
"const tnlDouble"
);
}
}
// namespace TNL
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment