Codegen for SET OF inline size constraints
authorKim Grasman <kim.grasman@gmail.com>
Sun, 11 Sep 2016 10:14:57 +0000 (12:14 +0200)
committerKim Grasman <kim.grasman@gmail.com>
Sun, 11 Sep 2016 10:14:57 +0000 (12:14 +0200)
Sparked by the earlier report for SEQUENCE OF by @aholtzma.

asn1ate/pyasn1gen.py
testdata/size_constraint.asn

index f7d9a3664319579588dd2ab9c1fe610ced68927d..ff20eb1159a4266f4af5ddc8a44bd90c5b263b25 100644 (file)
@@ -446,7 +446,11 @@ class Pyasn1Backend(object):
         return expr
 
     def inline_setof_type(self, t):
-        return 'univ.SetOf(componentType=%s)' % self.generate_expr(t.type_decl)
+        expr = 'univ.SetOf(componentType=%s)' % self.generate_expr(t.type_decl)
+        if t.size_constraint:
+            expr += '.subtype(subtypeSpec=%s)' % \
+                    self.build_constraint_expr(t.size_constraint)
+        return expr
 
     def build_object_identifier_value(self, t):
         objid_components = []
index 648de031c9019d4b9055d430e93b477533ea277a..1c9d2796f99645ebb79324ef327d6b9648be9405 100644 (file)
@@ -14,6 +14,10 @@ BEGIN
   -- TypeWithConstraint syntax for SET OF and SEQUENCE OF
   SizedSetOf ::= SET SIZE(1..100) OF INTEGER
   SizedSetOfWithParens ::= SET (SIZE(1..100)) OF INTEGER
+  S0 ::= SEQUENCE
+  {
+    inlineSizedSetOf SET SIZE(0..10) OF INTEGER
+  }
 
   SizedSequenceOf ::= SEQUENCE SIZE(1..100) OF INTEGER
   SizedSequenceOfWithParens ::= SEQUENCE (SIZE(1..100)) OF INTEGER