Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
Actor Framework
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
Actor Framework
Commits
22541dc5
Commit
22541dc5
authored
Sep 05, 2011
by
neverlord
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
util::duration type info
parent
00525dd1
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
0 deletions
+46
-0
src/uniform_type_info.cpp
src/uniform_type_info.cpp
+46
-0
No files found.
src/uniform_type_info.cpp
View file @
22541dc5
...
...
@@ -22,6 +22,7 @@
#include "cppa/intrusive_ptr.hpp"
#include "cppa/uniform_type_info.hpp"
#include "cppa/util/duration.hpp"
#include "cppa/util/void_type.hpp"
#include "cppa/util/enable_if.hpp"
#include "cppa/util/disable_if.hpp"
...
...
@@ -516,6 +517,50 @@ class atom_value_tinfo : public util::abstract_uniform_type_info<atom_value>
};
class
duration_tinfo
:
public
util
::
abstract_uniform_type_info
<
util
::
duration
>
{
virtual
void
serialize
(
const
void
*
instance
,
serializer
*
sink
)
const
{
auto
val
=
reinterpret_cast
<
const
util
::
duration
*>
(
instance
);
sink
->
begin_object
(
name
());
sink
->
write_value
(
static_cast
<
std
::
uint32_t
>
(
val
->
unit
));
sink
->
write_value
(
val
->
count
);
sink
->
end_object
();
}
virtual
void
deserialize
(
void
*
instance
,
deserializer
*
source
)
const
{
auto
val
=
reinterpret_cast
<
util
::
duration
*>
(
instance
);
auto
tname
=
source
->
seek_object
();
if
(
tname
!=
name
())
throw
42
;
source
->
begin_object
(
tname
);
auto
unit_val
=
source
->
read_value
(
pt_uint32
);
auto
count_val
=
source
->
read_value
(
pt_uint32
);
source
->
end_object
();
switch
(
get
<
std
::
uint32_t
>
(
unit_val
))
{
case
1
:
val
->
unit
=
util
::
time_unit
::
seconds
;
break
;
case
1000
:
val
->
unit
=
util
::
time_unit
::
milliseconds
;
break
;
case
1000000
:
val
->
unit
=
util
::
time_unit
::
microseconds
;
break
;
default:
val
->
unit
=
util
::
time_unit
::
none
;
break
;
}
val
->
count
=
get
<
std
::
uint32_t
>
(
count_val
);
}
};
const
std
::
map
<
int
,
std
::
pair
<
string_set
,
string_set
>>&
int_names
();
template
<
typename
T
>
...
...
@@ -594,6 +639,7 @@ class uniform_type_info_map
insert
<
std
::
string
>
();
insert
<
std
::
u16string
>
();
insert
<
std
::
u32string
>
();
insert
(
new
duration_tinfo
,
{
raw_name
<
util
::
duration
>
()
});
insert
(
new
any_tuple_tinfo
,
{
raw_name
<
any_tuple
>
()
});
insert
(
new
actor_ptr_tinfo
,
{
raw_name
<
actor_ptr
>
()
});
insert
(
new
group_ptr_tinfo
,
{
raw_name
<
actor_ptr
>
()
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment