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
82435879
Commit
82435879
authored
Jan 29, 2015
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix message builder
parent
89115514
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
16 additions
and
13 deletions
+16
-13
libcaf_core/caf/message_builder.hpp
libcaf_core/caf/message_builder.hpp
+3
-1
libcaf_core/src/message_builder.cpp
libcaf_core/src/message_builder.cpp
+13
-12
No files found.
libcaf_core/caf/message_builder.hpp
View file @
82435879
...
@@ -125,7 +125,9 @@ class message_builder {
...
@@ -125,7 +125,9 @@ class message_builder {
template
<
class
T
>
template
<
class
T
>
message_builder
&
message_builder
&
append_impl
(
typename
detail
::
implicit_conversions
<
T
>::
type
what
)
{
append_impl
(
typename
unbox_message_element
<
typename
detail
::
implicit_conversions
<
T
>::
type
>::
type
what
)
{
using
type
=
decltype
(
what
);
using
type
=
decltype
(
what
);
auto
uti
=
uniform_typeid
<
type
>
();
auto
uti
=
uniform_typeid
<
type
>
();
auto
uval
=
uti
->
create
();
auto
uval
=
uti
->
create
();
...
...
libcaf_core/src/message_builder.cpp
View file @
82435879
...
@@ -31,24 +31,19 @@ class message_builder::dynamic_msg_data : public detail::message_data {
...
@@ -31,24 +31,19 @@ class message_builder::dynamic_msg_data : public detail::message_data {
using
message_data
::
const_iterator
;
using
message_data
::
const_iterator
;
dynamic_msg_data
()
:
m_type_token
(
0xFFFFFFFF
)
{
dynamic_msg_data
()
{
// nop
// nop
}
}
dynamic_msg_data
(
const
dynamic_msg_data
&
other
)
dynamic_msg_data
(
const
dynamic_msg_data
&
other
)
{
:
m_type_token
(
other
.
m_type_token
)
{
for
(
auto
&
d
:
other
.
m_elements
)
{
for
(
auto
&
d
:
other
.
m_elements
)
{
m_elements
.
push_back
(
d
->
copy
());
m_elements
.
push_back
(
d
->
copy
());
}
}
}
}
dynamic_msg_data
(
std
::
vector
<
uniform_value
>&&
data
)
dynamic_msg_data
(
std
::
vector
<
uniform_value
>&&
data
)
:
m_elements
(
std
::
move
(
data
)),
:
m_elements
(
std
::
move
(
data
))
{
m_type_token
(
0xFFFFFFFF
)
{
// nop
for
(
auto
&
e
:
m_elements
)
{
m_type_token
<<=
6
;
m_type_token
|=
e
->
ti
->
type_nr
();
}
}
}
~
dynamic_msg_data
();
~
dynamic_msg_data
();
...
@@ -75,7 +70,10 @@ class message_builder::dynamic_msg_data : public detail::message_data {
...
@@ -75,7 +70,10 @@ class message_builder::dynamic_msg_data : public detail::message_data {
const
std
::
type_info
*
rtti
)
const
override
{
const
std
::
type_info
*
rtti
)
const
override
{
CAF_REQUIRE
(
typenr
!=
0
||
rtti
!=
nullptr
);
CAF_REQUIRE
(
typenr
!=
0
||
rtti
!=
nullptr
);
auto
uti
=
m_elements
[
pos
]
->
ti
;
auto
uti
=
m_elements
[
pos
]
->
ti
;
return
uti
->
type_nr
()
==
typenr
||
uti
->
equal_to
(
*
rtti
);
if
(
uti
->
type_nr
()
!=
typenr
)
{
return
false
;
}
return
typenr
!=
0
||
uti
->
equal_to
(
*
rtti
);
}
}
const
char
*
uniform_name_at
(
size_t
pos
)
const
override
{
const
char
*
uniform_name_at
(
size_t
pos
)
const
override
{
...
@@ -87,11 +85,14 @@ class message_builder::dynamic_msg_data : public detail::message_data {
...
@@ -87,11 +85,14 @@ class message_builder::dynamic_msg_data : public detail::message_data {
}
}
uint32_t
type_token
()
const
override
{
uint32_t
type_token
()
const
override
{
return
m_type_token
;
uint32_t
result
=
0xFFFFFFFF
;
for
(
auto
&
e
:
m_elements
)
{
result
=
(
result
<<
6
)
|
e
->
ti
->
type_nr
();
}
return
result
;
}
}
std
::
vector
<
uniform_value
>
m_elements
;
std
::
vector
<
uniform_value
>
m_elements
;
uint32_t
m_type_token
;
};
};
message_builder
::
dynamic_msg_data
::~
dynamic_msg_data
()
{
message_builder
::
dynamic_msg_data
::~
dynamic_msg_data
()
{
...
...
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