Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
taste-model-checker
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
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
TASTE
taste-model-checker
Commits
40c02b44
Commit
40c02b44
authored
Nov 30, 2019
by
Maxime Perrotin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
work on sequence iterators
parent
59f28dba
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
31 additions
and
43 deletions
+31
-43
asn1-iterators/stg/ada_iterators-iterators-adb.stg
asn1-iterators/stg/ada_iterators-iterators-adb.stg
+0
-2
asn1-iterators/stg/ada_iterators-iterators-ads.stg
asn1-iterators/stg/ada_iterators-iterators-ads.stg
+1
-2
asn1-iterators/test/asn1_iterators-myseq.adb
asn1-iterators/test/asn1_iterators-myseq.adb
+23
-32
asn1-iterators/test/asn1_iterators-myseq.ads
asn1-iterators/test/asn1_iterators-myseq.ads
+7
-7
No files found.
asn1-iterators/stg/ada_iterators-iterators-adb.stg
View file @
40c02b44
...
...
@@ -147,7 +147,6 @@ ChoiceChild(sName, sCName, nLine, nPos, sChildContent, sNamePresent ) ::= <<
ChoiceType
(
arrsChildren
)
::=
<<
--
$
arrsChildren
;
separator
=
",
\n
"
$
}
>>
...
...
@@ -159,7 +158,6 @@ SequenceChild(sName, sCName, bOptional, sDefVal, nLine, nPos, sChildContent ) ::
/*
Full
sequence
(
record
)
type
*/
SequenceType
(
arrsChildren
)
::=
<<
--
$
arrsChildren
;
separator
=
",
\n
"
$
}
>>
...
...
asn1-iterators/stg/ada_iterators-iterators-ads.stg
View file @
40c02b44
...
...
@@ -170,8 +170,7 @@ SequenceChild(sName, sCName, bOptional, sDefVal, nLine, nPos, sChildContent ) ::
/* Full sequence (record) type */
SequenceType(arrsChildren) ::= <<
-- $arrsChildren;separator="
,\
n
"$
}
Sequence;
>>
...
...
asn1-iterators/test/asn1_iterators-myseq.adb
View file @
40c02b44
...
...
@@ -9,7 +9,7 @@ package body ASN1_Iterators.MySeq is
end
;
function
Has_Element_MySeq
(
Ptr
:
Cursor
)
return
Boolean
is
(
P
.
Has_Element
(
P
.
Ptr
(
Ptr
.
FirstI
t
)));
(
P
_a
.
Has_Element
(
P_a
.
Ptr
(
Ptr
.
a_i
t
)));
function
Iterate
(
Self
:
ASN1_MySeq
)
return
ASN1_MySeq
'
Class
is
--Iterators_MySeq.Forward_Iterator'Class is
...
...
@@ -20,46 +20,37 @@ package body ASN1_Iterators.MySeq is
end
;
function
First
(
Item
:
ASN1_MySeq
)
return
Cursor
is
Ptr_Elem
:
P
.
Iterator_Ptr
:=
P
.
Ptr
(
Item
.
Ptr
.
FirstIt
);
function
First
(
Item
:
ASN1_MySeq_It
)
return
Cursor
is
Cursor_a
:
P_a
.
Iterator_Ptr
:=
P_a
.
Ptr
(
Item
.
Ptr
.
a_it
);
Cursor_b
:
P_b
.
Iterator_Ptr
:=
P_b
.
Ptr
(
Item
.
Ptr
.
b_it
);
begin
-- Initialize the iterator (Compute first value)
Item
.
Ptr
.
FirstIt
:=
P
.
Iterator
(
Item
.
Ptr
.
FirstVal
.
Iterate
);
Ptr_Elem
:=
P
.
First
(
Item
.
Ptr
.
FirstIt
);
Item
.
Ptr
.
Value
.
Data
(
1
)
:=
P
.
Elem_Value
(
Item
.
Ptr
.
FirstVal
,
Ptr_elem
);
if
Item
.
Ptr
.
Length
>
1
then
Item
.
Ptr
.
Value
.
Data
(
2
..
Item
.
Ptr
.
Length
)
:=
Item
.
Ptr
.
RestIt
.
Ptr
.
Value
.
Data
(
1
..
Item
.
Ptr
.
RestIt
.
Ptr
.
Length
);
end
if
;
Item
.
Ptr
.
a_it
:=
P_a
.
Iterator
(
Item
.
Ptr
.
a_val
.
Iterate
);
Item
.
Ptr
.
b_it
:=
P_b
.
Iterator
(
Item
.
Ptr
.
b_val
.
Iterate
);
Cursor_a
:=
P_a
.
First
(
Item
.
Ptr
.
a_it
);
Cursor_b
:=
P_b
.
First
(
Item
.
Ptr
.
b_it
);
Item
.
Ptr
.
Value
.
a
:=
P_a
.
Elem_Value
(
Item
.
Ptr
.
a_val
,
Cursor_a
);
Item
.
Ptr
.
Value
.
b
:=
P_b
.
Elem_Value
(
Item
.
Ptr
.
b_val
,
Cursor_b
);
return
Item
.
Ptr
;
end
;
function
Next
(
Item
:
ASN1_MySeq
;
function
Next
(
Item
:
ASN1_MySeq
_It
;
Ptr
:
Cursor
)
return
Cursor
is
pragma
Unreferenced
(
Item
);
Ptr_elem
:
P
.
Iterator_Ptr
:=
P
.
Ptr
(
Ptr
.
FirstIt
);
Ptr_elem_a
:
P_a
.
Iterator_Ptr
:=
P_a
.
Ptr
(
Ptr
.
a_it
);
-- ? (checkme)
Ptr_elem_b
:
P_b
.
Iterator_Ptr
:=
P_b
.
Ptr
(
Ptr
.
b_it
);
-- ?
begin
if
Ptr
.
Length
>
1
then
Ptr
.
RestIt
.
Ptr
:=
Ptr
.
RestIt
.
Next
(
Ptr
.
RestIt
.
Ptr
);
if
Has_Element_MySeq
(
Ptr
.
RestIt
.
Ptr
)
then
Ptr
.
Value
.
Data
(
2
..
Ptr
.
Length
)
:=
Ptr
.
RestIt
.
Ptr
.
Value
.
Data
(
1
..
Ptr
.
RestIt
.
Ptr
.
Value
.
Length
);
else
Ptr
.
RestIt
.
Ptr
:=
Ptr
.
RestIt
.
First
;
-- Exhausted "rest": iterate on the first item
Ptr_elem
:=
P
.
Next
(
Ptr
.
FirstIt
,
Ptr_elem
);
if
P
.
Has_Element
(
Ptr_elem
)
then
Ptr
.
Value
.
Data
(
1
)
:=
P
.
Elem_Value
(
Ptr
.
FirstVal
,
Ptr_elem
);
Ptr
.
Value
.
Data
(
2
..
Ptr
.
Length
)
:=
Ptr
.
RestIt
.
Ptr
.
Value
.
Data
(
1
..
Ptr
.
RestIt
.
Ptr
.
Length
);
end
if
;
end
if
;
-- Exhaust b first, then a...
Ptr
.
b_it
.
Ptr
:=
Ptr
.
b_it
.
Next
(
Ptr
.
b_it
.
Ptr
);
if
Has_Element_MyEnum
(
Ptr
.
b_it
.
Ptr
)
then
Ptr
.
Value
.
b
:=
Ptr
.
b_it
.
Ptr
.
Value
.
b
;
else
-- Size is 0 or 1
Ptr_elem
:=
P
.
Next
(
Ptr
.
FirstIt
,
Ptr_elem
);
if
P
.
Has_Element
(
Ptr_elem
)
then
Ptr
.
Value
.
Data
(
1
)
:=
P
.
Elem_Value
(
Ptr
.
FirstVal
,
Ptr_elem
);
-- Exhausted b: reset it, and iterate a by one element
Ptr
.
b_it
.
Ptr
:=
Ptr
.
b_it
.
First
;
Ptr_elem_a
:=
P_a
.
Next
(
Ptr
.
a_it
,
Ptr_elem_a
);
if
P_a
.
Has_Element
(
Ptr_elem_a
)
then
Ptr
.
Value
.
a
:=
P_a
.
Elem_Value
(
Ptr
.
a_val
,
Ptr_elem_a
);
Ptr
.
Value
.
b
:=
P_b
.
Elem_Value
(
Ptr
.
b_val
,
Ptr_elem_b
);
end
if
;
end
if
;
return
Ptr
;
...
...
asn1-iterators/test/asn1_iterators-myseq.ads
View file @
40c02b44
...
...
@@ -12,18 +12,18 @@ with TASTE_DataView;
package
ASN1_Iterators
.
MySeq
is
package
a_Pkg
renames
MyInteger
.
Pkg
;
package
b_Pkg
renames
MyEnum_Pkg
;
package
P_a
renames
MyInteger
.
Pkg
.
It
;
package
P_b
renames
MyEnum
.
Pkg
.
It
;
type
ASN1_MySeq_Ptr
;
type
ASN1_MySeq_It
;
type
ASN1_MySeq
is
new
Controlled
with
record
a_val
:
a_Pkg
.
It
.
Basic_ASN1_Iterator
;
a_it
:
a_Pkg
.
It
.
Iterator
;
b_val
:
b_Pkg
.
It
.
Basic_ASN1_Iterator
;
b_i
:
B_Pkg
.
It
.
Iterator
;
a_val
:
P_a
.
Basic_ASN1_Iterator
;
a_it
:
P_a
.
Iterator
;
b_val
:
P_b
.
Basic_ASN1_Iterator
;
b_i
:
P_b
.
Iterator
;
Value
:
asn1SccMySeq
;
-- First value
-- FirstVal : P.Basic_ASN1_Iterator;
...
...
@@ -52,7 +52,7 @@ package ASN1_Iterators.MySeq is
Ptr
:
Cursor
)
return
Cursor
;
function
Iterate
(
self
:
ASN1_MySeq
)
return
ASN1_MySeq_It
'
Class
;
-- Iterators_SeqOf.Forward_Iterator'Class;
return
ASN1_MySeq_It
'
Class
;
function
Element_MySeq_Value
(
Self
:
ASN1_MySeq
;
Ptr
:
Cursor
)
...
...
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