Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Anders Blomdell
LabComm
Commits
417a77f2
Commit
417a77f2
authored
May 23, 2015
by
Anders Blomdell
Browse files
Made sample_ref a distinct (opaque) type in C
parent
9d24c494
Changes
12
Hide whitespace changes
Inline
Side-by-side
compiler/2014/C_CodeGen.jrag
View file @
417a77f2
...
...
@@ -311,7 +311,7 @@ aspect C_Type {
case LABCOMM_DOUBLE: { env.print("double"); } break;
case LABCOMM_STRING: { env.print("char*"); } break;
case LABCOMM_SAMPLE: {
env.print("const struct labcomm2014_s
ignatu
re *");
env.print("const struct labcomm2014_s
ample_
re
f
*");
} break;
}
env.print(" " + name);
...
...
@@ -528,7 +528,7 @@ aspect C_Decoder {
env.print(env.qualid + " = ");
switch (getToken()) {
case LABCOMM_SAMPLE: {
env.println("r->decoder->index_to_s
ignatu
re(" +
env.println("r->decoder->index_to_s
ample_
re
f
(" +
"r->decoder, labcomm2014_read_int(r));");
} break;
default: {
...
...
@@ -1062,7 +1062,7 @@ aspect C_Encoder {
switch (getToken()) {
case LABCOMM_SAMPLE: {
env.println("labcomm2014_write_int(w, " +
"w->encoder->s
ignatu
re_to_index(w->encoder, " +
"w->encoder->s
ample_
re
f
_to_index(w->encoder, " +
env.qualid + "));");
} break;
default: {
...
...
examples/user_types/example_decoder.c
View file @
417a77f2
...
...
@@ -13,7 +13,7 @@ static void handle_test_doavoid(test_doavoid *v,void *context) {
}
static
void
handle_test_intAndRef
(
test_intAndRef
*
v
,
void
*
context
)
{
printf
(
"Got intAndRef. (%d : %
s
)
\n
"
,
v
->
x
,
v
->
reference
->
name
);
printf
(
"Got intAndRef. (%d : %
p
)
\n
"
,
v
->
x
,
v
->
reference
);
}
static
void
handle_test_twoInts
(
test_twoInts
*
v
,
void
*
context
)
{
...
...
lib/c/2014/labcomm2014.h
View file @
417a77f2
...
...
@@ -112,7 +112,7 @@ int labcomm2014_decoder_ioctl(struct labcomm2014_decoder *decoder,
uint32_t
ioctl_action
,
...);
const
struct
labcomm2014_s
ignatu
re
*
labcomm2014_decoder_get_
ref_signatu
re
(
const
struct
labcomm2014_s
ample_
re
f
*
labcomm2014_decoder_get_
sample_
re
f
(
struct
labcomm2014_decoder
*
decoder
,
const
struct
labcomm2014_signature
*
signature
);
...
...
@@ -137,7 +137,7 @@ int labcomm2014_encoder_ioctl(struct labcomm2014_encoder *encoder,
uint32_t
ioctl_action
,
...);
const
struct
labcomm2014_s
ignatu
re
*
labcomm2014_encoder_get_sample_ref
(
const
struct
labcomm2014_s
ample_
re
f
*
labcomm2014_encoder_get_sample_ref
(
struct
labcomm2014_encoder
*
encoder
,
const
struct
labcomm2014_signature
*
signature
);
...
...
lib/c/2014/labcomm2014_decoder.c
View file @
417a77f2
...
...
@@ -619,7 +619,7 @@ out:
return
local_index
;
}
static
const
struct
labcomm2014_s
ignatu
re
*
do_index_to_s
ignatu
re
(
static
const
struct
labcomm2014_s
ample_
re
f
*
do_index_to_s
ample_
re
f
(
struct
labcomm2014_decoder
*
d
,
int
index
)
{
const
struct
labcomm2014_signature
*
result
=
0
;
...
...
@@ -635,14 +635,14 @@ static const struct labcomm2014_signature *do_index_to_signature(
local_index
,
0
);
}
labcomm2014_scheduler_data_unlock
(
d
->
scheduler
);
return
result
;
return
labcomm2014_signature_to_sample_ref
(
result
)
;
}
static
const
struct
labcomm2014_s
ignatu
re
*
do_
get_ref_signature
(
static
const
struct
labcomm2014_s
ample_
re
f
*
do_
ref_get
(
struct
labcomm2014_decoder
*
d
,
const
struct
labcomm2014_signature
*
signature
)
{
return
signature
;
return
(
const
struct
labcomm2014_sample_ref
*
)
signature
;
}
static
void
do_free
(
struct
labcomm2014_decoder
*
d
)
...
...
@@ -693,8 +693,8 @@ struct labcomm2014_decoder *labcomm2014_decoder_new(
result
->
decoder
.
ref_register
=
do_ref_register
;
result
->
decoder
.
sample_register
=
do_register_sample
;
result
->
decoder
.
ioctl
=
do_ioctl
;
result
->
decoder
.
index_to_s
ignatu
re
=
do_index_to_s
ignatu
re
;
result
->
decoder
.
get_ref_signature
=
do_get_ref_signature
;
result
->
decoder
.
index_to_s
ample_
re
f
=
do_index_to_s
ample_
re
f
;
result
->
decoder
.
ref_get
=
do_ref_get
;
LABCOMM_SIGNATURE_ARRAY_INIT
(
result
->
local
,
struct
sample_entry
);
LABCOMM_SIGNATURE_ARRAY_INIT
(
result
->
remote_to_local
,
int
);
LABCOMM_SIGNATURE_ARRAY_INIT
(
result
->
local_ref
,
...
...
@@ -705,10 +705,10 @@ struct labcomm2014_decoder *labcomm2014_decoder_new(
}
const
struct
labcomm2014_s
ignatu
re
*
labcomm2014_decoder_get_
ref_signatu
re
(
const
struct
labcomm2014_s
ample_
re
f
*
labcomm2014_decoder_get_
sample_
re
f
(
struct
labcomm2014_decoder
*
decoder
,
const
struct
labcomm2014_signature
*
signature
)
{
return
decoder
->
get_ref_signature
(
decoder
,
signature
);
return
decoder
->
ref_get
(
decoder
,
signature
);
}
lib/c/2014/labcomm2014_encoder.c
View file @
417a77f2
...
...
@@ -194,14 +194,16 @@ static int do_ioctl(
return
result
;
}
static
int
do_signature_to_index
(
struct
labcomm2014_encoder
*
e
,
const
struct
labcomm2014_signature
*
signature
)
static
int
do_sample_ref_to_index
(
struct
labcomm2014_encoder
*
e
,
const
struct
labcomm2014_sample_ref
*
sample_ref
)
{
/* writer_lock should be held at this point */
struct
encoder
*
ie
=
e
->
context
;
int
index
=
0
;
if
(
signature
!=
NULL
)
{
index
=
labcomm2014_get_local_index
(
signature
);
if
(
sample_ref
!=
NULL
)
{
index
=
labcomm2014_get_local_index
(
(
struct
labcomm2014_signature
*
)
sample_ref
);
if
(
!
LABCOMM_SIGNATURE_ARRAY_GET
(
ie
->
sample_ref
,
int
,
index
,
0
))
{
index
=
0
;
}
...
...
@@ -345,11 +347,11 @@ out:
#endif
}
static
const
struct
labcomm2014_s
ignatu
re
*
do_ref_get
(
static
const
struct
labcomm2014_s
ample_
re
f
*
do_ref_get
(
struct
labcomm2014_encoder
*
e
,
const
struct
labcomm2014_signature
*
signature
)
{
return
signature
;
return
(
const
struct
labcomm2014_sample_ref
*
)
signature
;
}
void
labcomm2014_encoder_free
(
struct
labcomm2014_encoder
*
e
)
...
...
@@ -400,7 +402,7 @@ static struct labcomm2014_encoder *internal_encoder_new(
result
->
encoder
.
ref_register
=
do_ref_register
;
result
->
encoder
.
encode
=
do_encode
;
result
->
encoder
.
ioctl
=
do_ioctl
;
result
->
encoder
.
s
ignatu
re_to_index
=
do_s
ignatu
re_to_index
;
result
->
encoder
.
s
ample_
re
f
_to_index
=
do_s
ample_
re
f
_to_index
;
result
->
encoder
.
ref_get
=
do_ref_get
;
LABCOMM_SIGNATURE_ARRAY_INIT
(
result
->
registered
,
int
);
LABCOMM_SIGNATURE_ARRAY_INIT
(
result
->
sample_ref
,
int
);
...
...
@@ -432,7 +434,7 @@ struct labcomm2014_encoder *labcomm2014_encoder_new(
}
const
struct
labcomm2014_s
ignatu
re
*
labcomm2014_encoder_get_sample_ref
(
const
struct
labcomm2014_s
ample_
re
f
*
labcomm2014_encoder_get_sample_ref
(
struct
labcomm2014_encoder
*
encoder
,
const
struct
labcomm2014_signature
*
signature
)
{
...
...
lib/c/2014/labcomm2014_private.h
View file @
417a77f2
...
...
@@ -93,6 +93,25 @@ struct labcomm2014_memory {
void
*
context
;
};
/*
* sample_ref/signature helpers
*/
static
const
inline
struct
labcomm2014_signature
*
labcomm2014_sample_ref_to_signature
(
const
struct
labcomm2014_sample_ref
*
sample_ref
)
{
return
(
struct
labcomm2014_signature
*
)
sample_ref
;
}
static
const
inline
struct
labcomm2014_sample_ref
*
labcomm2014_signature_to_sample_ref
(
const
struct
labcomm2014_signature
*
signature
)
{
return
(
struct
labcomm2014_sample_ref
*
)
signature
;
}
/*
* Semi private decoder declarations
*/
...
...
@@ -211,9 +230,9 @@ struct labcomm2014_decoder {
int
(
*
ioctl
)(
struct
labcomm2014_decoder
*
d
,
const
struct
labcomm2014_signature
*
s
,
uint32_t
ioctl_action
,
va_list
args
);
const
struct
labcomm2014_s
ignatu
re
*
(
*
index_to_s
ignatu
re
)(
const
struct
labcomm2014_s
ample_
re
f
*
(
*
index_to_s
ample_
re
f
)(
struct
labcomm2014_decoder
*
decoder
,
int
index
);
const
struct
labcomm2014_s
ignatu
re
*
(
*
get_ref_signature
)(
const
struct
labcomm2014_s
ample_
re
f
*
(
*
ref_get
)(
struct
labcomm2014_decoder
*
d
,
const
struct
labcomm2014_signature
*
signature
);
};
...
...
@@ -247,7 +266,7 @@ struct labcomm2014_decoder {
if (r->error < 0) { \
return 0; \
} \
} \
}
>
\
((unsigned char*)(&result))[i] = r->data[r->pos]; \
r->pos++; \
} \
...
...
@@ -392,9 +411,9 @@ struct labcomm2014_encoder {
int
(
*
ioctl
)(
struct
labcomm2014_encoder
*
e
,
const
struct
labcomm2014_signature
*
signature
,
uint32_t
ioctl_action
,
va_list
args
);
int
(
*
s
ignatu
re_to_index
)(
struct
labcomm2014_encoder
*
e
,
const
struct
labcomm2014_s
ignatu
re
*
s
ignature
);
const
struct
labcomm2014_s
ignatu
re
*
(
*
ref_get
)(
int
(
*
s
ample_
re
f
_to_index
)(
struct
labcomm2014_encoder
*
e
,
const
struct
labcomm2014_s
ample_
re
f
*
s
);
const
struct
labcomm2014_s
ample_
re
f
*
(
*
ref_get
)(
struct
labcomm2014_encoder
*
e
,
const
struct
labcomm2014_signature
*
signature
);
};
...
...
lib/c/2014/labcomm2014_renaming_decoder.c
View file @
417a77f2
...
...
@@ -147,15 +147,15 @@ static int do_ioctl(struct labcomm2014_decoder *d,
ioctl_action
,
args
);
}
static
const
struct
labcomm2014_s
ignatu
re
*
do_index_to_s
ignatu
re
(
static
const
struct
labcomm2014_s
ample_
re
f
*
do_index_to_s
ample_
re
f
(
struct
labcomm2014_decoder
*
d
,
int
index
)
{
struct
decoder
*
id
=
d
->
context
;
return
id
->
next
->
index_to_s
ignatu
re
(
id
->
next
,
index
);
return
id
->
next
->
index_to_s
ample_
re
f
(
id
->
next
,
index
);
}
static
const
struct
labcomm2014_s
ignatu
re
*
do_
get_ref_signature
(
static
const
struct
labcomm2014_s
ample_
re
f
*
do_
ref_get
(
struct
labcomm2014_decoder
*
d
,
const
struct
labcomm2014_signature
*
signature
)
{
...
...
@@ -164,9 +164,9 @@ static const struct labcomm2014_signature *do_get_ref_signature(
renamed
=
get_renamed
(
d
,
signature
);
if
(
renamed
==
NULL
)
{
return
id
->
next
->
get_ref_signature
(
id
->
next
,
signature
);
return
id
->
next
->
ref_get
(
id
->
next
,
signature
);
}
else
{
return
id
->
next
->
get_ref_signature
(
id
->
next
,
renamed
);
return
id
->
next
->
ref_get
(
id
->
next
,
renamed
);
}
}
...
...
@@ -210,8 +210,8 @@ struct labcomm2014_decoder *labcomm2014_renaming_decoder_new(
result
->
decoder
.
sample_register
=
do_sample_register
;
result
->
decoder
.
ref_register
=
do_ref_register
;
result
->
decoder
.
ioctl
=
do_ioctl
;
result
->
decoder
.
index_to_s
ignatu
re
=
do_index_to_s
ignatu
re
;
result
->
decoder
.
get_ref_signature
=
do_get_ref_signature
;
result
->
decoder
.
index_to_s
ample_
re
f
=
do_index_to_s
ample_
re
f
;
result
->
decoder
.
ref_get
=
do_ref_get
;
result
->
next
=
d
;
result
->
rename
=
rename
;
result
->
context
=
context
;
...
...
lib/c/2014/labcomm2014_renaming_encoder.c
View file @
417a77f2
...
...
@@ -171,15 +171,16 @@ static int do_ioctl(struct labcomm2014_encoder *e,
ioctl_action
,
args
);
}
static
int
do_signature_to_index
(
struct
labcomm2014_encoder
*
e
,
const
struct
labcomm2014_signature
*
signature
)
static
int
do_sample_ref_to_index
(
struct
labcomm2014_encoder
*
e
,
const
struct
labcomm2014_sample_ref
*
sample_ref
)
{
struct
encoder
*
ie
=
e
->
context
;
return
ie
->
next
->
s
ignatu
re_to_index
(
ie
->
next
,
get_renamed
(
e
,
signatu
re
)
);
return
ie
->
next
->
s
ample_
re
f
_to_index
(
ie
->
next
,
sample_
re
f
);
}
static
const
struct
labcomm2014_s
ignatu
re
*
do_ref_get
(
static
const
struct
labcomm2014_s
ample_
re
f
*
do_ref_get
(
struct
labcomm2014_encoder
*
e
,
const
struct
labcomm2014_signature
*
signature
)
{
...
...
@@ -236,7 +237,7 @@ struct labcomm2014_encoder *labcomm2014_renaming_encoder_new(
result
->
encoder
.
ref_register
=
do_ref_register
;
result
->
encoder
.
encode
=
do_encode
;
result
->
encoder
.
ioctl
=
do_ioctl
;
result
->
encoder
.
s
ignatu
re_to_index
=
do_s
ignatu
re_to_index
;
result
->
encoder
.
s
ample_
re
f
_to_index
=
do_s
ample_
re
f
_to_index
;
result
->
encoder
.
ref_get
=
do_ref_get
;
result
->
next
=
e
;
result
->
rename
=
rename
;
...
...
lib/c/2014/labcomm2014_type_signature.h
View file @
417a77f2
...
...
@@ -46,6 +46,8 @@ struct labcomm2014_signature_data {
};
#endif
struct
labcomm2014_sample_ref
;
struct
labcomm2014_signature
{
char
*
name
;
int
(
*
encoded_size
)(
void
*
);
/* void* refers to sample_data */
...
...
lib/c/2014/test/test_labcomm_copy.c
View file @
417a77f2
...
...
@@ -166,10 +166,14 @@ int main(int argc, char **argv)
labcomm2014_encoder_sample_ref_register
(
encoder
,
labcomm2014_signature_generated_encoding_UnusedD
);
labcomm2014_encoder_sample_ref_register
(
encoder
,
labcomm2014_signature_generated_encoding_R
);
r
.
a
[
0
]
=
labcomm2014_signature_generated_encoding_V
;
r
.
a
[
1
]
=
labcomm2014_signature_generated_encoding_UnusedE
;
r
.
a
[
2
]
=
labcomm2014_signature_generated_encoding_UnusedD
;
r
.
a
[
3
]
=
labcomm2014_signature_generated_encoding_R
;
r
.
a
[
0
]
=
labcomm2014_encoder_get_sample_ref
(
encoder
,
labcomm2014_signature_generated_encoding_V
);
r
.
a
[
1
]
=
labcomm2014_encoder_get_sample_ref
(
encoder
,
labcomm2014_signature_generated_encoding_UnusedE
);
r
.
a
[
2
]
=
labcomm2014_encoder_get_sample_ref
(
encoder
,
labcomm2014_signature_generated_encoding_UnusedD
);
r
.
a
[
3
]
=
labcomm2014_encoder_get_sample_ref
(
encoder
,
labcomm2014_signature_generated_encoding_R
);
labcomm2014_encode_generated_encoding_R
(
encoder
,
&
r
);
labcomm2014_encoder_free
(
encoder
);
...
...
lib/c/2014/test/test_labcomm_generated_encoding.c
View file @
417a77f2
...
...
@@ -266,10 +266,14 @@ int main(void)
EXPECT
({
VARIABLE
(
20
),
0x01
,
1
});
labcomm2014_encoder_ioctl
(
encoder
,
IOCTL_WRITER_RESET
);
R
.
a
[
0
]
=
labcomm2014_signature_generated_encoding_V
;
R
.
a
[
1
]
=
labcomm2014_signature_generated_encoding_B
;
R
.
a
[
2
]
=
labcomm2014_signature_generated_encoding_UnusedE
;
R
.
a
[
3
]
=
labcomm2014_signature_generated_encoding_R
;
R
.
a
[
0
]
=
labcomm2014_encoder_get_sample_ref
(
encoder
,
labcomm2014_signature_generated_encoding_V
);
R
.
a
[
1
]
=
labcomm2014_encoder_get_sample_ref
(
encoder
,
labcomm2014_signature_generated_encoding_B
);
R
.
a
[
2
]
=
labcomm2014_encoder_get_sample_ref
(
encoder
,
labcomm2014_signature_generated_encoding_UnusedE
);
R
.
a
[
3
]
=
labcomm2014_encoder_get_sample_ref
(
encoder
,
labcomm2014_signature_generated_encoding_R
);
labcomm2014_encode_generated_encoding_R
(
encoder
,
&
R
);
EXPECT
({
VARIABLE
(
4
),
0x10
,
0x00
,
0x00
,
0x00
,
VARIABLE
(
5
),
0x00
,
0x00
,
0x00
,
VARIABLE
(
6
),
...
...
lib/c/2014/test/test_labcomm_renaming_decoder.c
0 → 100644
View file @
417a77f2
#include
<stdlib.h>
#include
<stdio.h>
#include
<sys/types.h>
#include
<sys/stat.h>
#include
<unistd.h>
#include
<fcntl.h>
#include
<assert.h>
#include
<err.h>
#include
"labcomm2014.h"
#include
"labcomm2014_private.h"
#include
"labcomm2014_default_error_handler.h"
#include
"labcomm2014_default_memory.h"
#include
"labcomm2014_default_scheduler.h"
#include
"labcomm2014_fd_writer.h"
#include
"labcomm2014_fd_reader.h"
#include
"labcomm2014_renaming.h"
#include
"labcomm2014_renaming_encoder.h"
#include
"labcomm2014_renaming_decoder.h"
#include
"test/gen/generated_encoding.h"
#define DATA_FILE "renaming_test.dat"
static
void
handle_r
(
generated_encoding_R
*
v
,
void
*
context
)
{
labcomm2014_copy_generated_encoding_R
(
labcomm2014_default_memory
,
context
,
v
);
}
int
main
(
int
argc
,
char
**
argv
)
{
struct
labcomm2014_encoder
*
encoder
,
*
prefix_encoder
,
*
suffix_encoder
;
struct
labcomm2014_decoder
*
decoder
,
*
prefix_decoder
,
*
suffix_decoder
;
int
fd
;
generated_encoding_R
r
;
generated_encoding_R
cache_r
,
prefix_cache_r
,
suffix_cache_r
;
fd
=
open
(
DATA_FILE
,
O_RDWR
|
O_CREAT
|
O_TRUNC
,
0644
);
if
(
fd
==
-
1
)
{
err
(
1
,
"open()"
);
}
encoder
=
labcomm2014_encoder_new
(
labcomm2014_fd_writer_new
(
labcomm2014_default_memory
,
fd
,
0
),
labcomm2014_default_error_handler
,
labcomm2014_default_memory
,
labcomm2014_default_scheduler
);
prefix_encoder
=
labcomm2014_renaming_encoder_new
(
encoder
,
labcomm2014_renaming_prefix
,
"p."
);
suffix_encoder
=
labcomm2014_renaming_encoder_new
(
prefix_encoder
,
labcomm2014_renaming_suffix
,
".s"
);
labcomm2014_encoder_register_generated_encoding_R
(
encoder
);
labcomm2014_encoder_register_generated_encoding_R
(
prefix_encoder
);
labcomm2014_encoder_register_generated_encoding_R
(
suffix_encoder
);
labcomm2014_encoder_sample_ref_register
(
encoder
,
labcomm2014_signature_generated_encoding_R
);
labcomm2014_encoder_sample_ref_register
(
prefix_encoder
,
labcomm2014_signature_generated_encoding_R
);
labcomm2014_encoder_sample_ref_register
(
suffix_encoder
,
labcomm2014_signature_generated_encoding_R
);
r
.
a
[
0
]
=
labcomm2014_encoder_get_sample_ref
(
encoder
,
labcomm2014_signature_generated_encoding_R
);
r
.
a
[
1
]
=
labcomm2014_encoder_get_sample_ref
(
prefix_encoder
,
labcomm2014_signature_generated_encoding_R
);
r
.
a
[
2
]
=
labcomm2014_encoder_get_sample_ref
(
suffix_encoder
,
labcomm2014_signature_generated_encoding_R
);
r
.
a
[
3
]
=
labcomm2014_encoder_get_sample_ref
(
encoder
,
labcomm2014_signature_generated_encoding_R
);
labcomm2014_encode_generated_encoding_R
(
encoder
,
&
r
);
r
.
a
[
3
]
=
labcomm2014_encoder_get_sample_ref
(
prefix_encoder
,
labcomm2014_signature_generated_encoding_R
);
labcomm2014_encode_generated_encoding_R
(
prefix_encoder
,
&
r
);
r
.
a
[
3
]
=
labcomm2014_encoder_get_sample_ref
(
suffix_encoder
,
labcomm2014_signature_generated_encoding_R
);
labcomm2014_encode_generated_encoding_R
(
suffix_encoder
,
&
r
);
labcomm2014_encoder_free
(
suffix_encoder
);
labcomm2014_encoder_free
(
prefix_encoder
);
labcomm2014_encoder_free
(
encoder
);
encoder
=
NULL
;
lseek
(
fd
,
0
,
SEEK_SET
);
decoder
=
labcomm2014_decoder_new
(
labcomm2014_fd_reader_new
(
labcomm2014_default_memory
,
fd
,
0
),
labcomm2014_default_error_handler
,
labcomm2014_default_memory
,
labcomm2014_default_scheduler
);
prefix_decoder
=
labcomm2014_renaming_decoder_new
(
decoder
,
labcomm2014_renaming_prefix
,
"p."
);
suffix_decoder
=
labcomm2014_renaming_decoder_new
(
prefix_decoder
,
labcomm2014_renaming_suffix
,
".s"
);
labcomm2014_decoder_register_generated_encoding_R
(
decoder
,
handle_r
,
&
cache_r
);
labcomm2014_decoder_register_generated_encoding_R
(
prefix_decoder
,
handle_r
,
&
prefix_cache_r
);
labcomm2014_decoder_register_generated_encoding_R
(
suffix_decoder
,
handle_r
,
&
suffix_cache_r
);
labcomm2014_decoder_sample_ref_register
(
decoder
,
labcomm2014_signature_generated_encoding_R
);
labcomm2014_decoder_sample_ref_register
(
prefix_decoder
,
labcomm2014_signature_generated_encoding_R
);
labcomm2014_decoder_sample_ref_register
(
suffix_decoder
,
labcomm2014_signature_generated_encoding_R
);
while
(
labcomm2014_decoder_decode_one
(
decoder
)
>
0
)
;
fprintf
(
stderr
,
"cache_r:
\n
"
);
fprintf
(
stderr
,
"%p %p %p %p
\n
"
,
cache_r
.
a
[
0
],
cache_r
.
a
[
1
],
cache_r
.
a
[
2
],
cache_r
.
a
[
3
]);
fprintf
(
stderr
,
"prefix_cache_r:
\n
"
);
fprintf
(
stderr
,
"%p %p %p %p
\n
"
,
prefix_cache_r
.
a
[
0
],
prefix_cache_r
.
a
[
1
],
prefix_cache_r
.
a
[
2
],
prefix_cache_r
.
a
[
3
]);
fprintf
(
stderr
,
"suffix_cache_r:
\n
"
);
fprintf
(
stderr
,
"%p %p %p %p
\n
"
,
suffix_cache_r
.
a
[
0
],
suffix_cache_r
.
a
[
1
],
suffix_cache_r
.
a
[
2
],
suffix_cache_r
.
a
[
3
]);
assert
(
cache_r
.
a
[
0
]
==
labcomm2014_decoder_get_sample_ref
(
decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
cache_r
.
a
[
1
]
==
labcomm2014_decoder_get_sample_ref
(
prefix_decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
cache_r
.
a
[
2
]
==
labcomm2014_decoder_get_sample_ref
(
suffix_decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
cache_r
.
a
[
3
]
==
labcomm2014_decoder_get_sample_ref
(
decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
prefix_cache_r
.
a
[
0
]
==
labcomm2014_decoder_get_sample_ref
(
decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
prefix_cache_r
.
a
[
1
]
==
labcomm2014_decoder_get_sample_ref
(
prefix_decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
prefix_cache_r
.
a
[
2
]
==
labcomm2014_decoder_get_sample_ref
(
suffix_decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
prefix_cache_r
.
a
[
3
]
==
labcomm2014_decoder_get_sample_ref
(
prefix_decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
suffix_cache_r
.
a
[
0
]
==
labcomm2014_decoder_get_sample_ref
(
decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
suffix_cache_r
.
a
[
1
]
==
labcomm2014_decoder_get_sample_ref
(
prefix_decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
suffix_cache_r
.
a
[
2
]
==
labcomm2014_decoder_get_sample_ref
(
suffix_decoder
,
labcomm2014_signature_generated_encoding_R
));
assert
(
suffix_cache_r
.
a
[
3
]
==
labcomm2014_decoder_get_sample_ref
(
suffix_decoder
,
labcomm2014_signature_generated_encoding_R
));
labcomm2014_decoder_free
(
decoder
);
close
(
fd
);
unlink
(
DATA_FILE
);
}
Write
Preview
Supports
Markdown
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