diff --git a/ASN1-Model.package/ASN1AdaptiveTypeObject.class/instance/addedByDefault..st b/ASN1-Model.package/ASN1AdaptiveTypeObject.class/instance/addedByDefault..st new file mode 100644 index 00000000..34268121 --- /dev/null +++ b/ASN1-Model.package/ASN1AdaptiveTypeObject.class/instance/addedByDefault..st @@ -0,0 +1,4 @@ +accessing +addedByDefault: aKey + addedByDefault ifNil: [ addedByDefault := OrderedCollection new ]. + addedByDefault add: aKey \ No newline at end of file diff --git a/ASN1-Model.package/ASN1AdaptiveTypeObject.class/instance/wasAddedByDefault..st b/ASN1-Model.package/ASN1AdaptiveTypeObject.class/instance/wasAddedByDefault..st new file mode 100644 index 00000000..d5262f5e --- /dev/null +++ b/ASN1-Model.package/ASN1AdaptiveTypeObject.class/instance/wasAddedByDefault..st @@ -0,0 +1,4 @@ +as yet unclassified +wasAddedByDefault: aKey + addedByDefault ifNil: [ ^ false ]. + ^ addedByDefault includes: aKey \ No newline at end of file diff --git a/ASN1-Model.package/ASN1AdaptiveTypeObject.class/properties.json b/ASN1-Model.package/ASN1AdaptiveTypeObject.class/properties.json index 73564c0b..79e94b86 100644 --- a/ASN1-Model.package/ASN1AdaptiveTypeObject.class/properties.json +++ b/ASN1-Model.package/ASN1AdaptiveTypeObject.class/properties.json @@ -7,7 +7,8 @@ "classvars" : [ ], "instvars" : [ "map", - "selfExpanding" + "selfExpanding", + "addedByDefault" ], "name" : "ASN1AdaptiveTypeObject", "type" : "normal" diff --git a/ASN1-Model.package/ASN1BasicObject.class/instance/isAsn1.st b/ASN1-Model.package/ASN1BasicObject.class/instance/isAsn1.st index b6294ea6..47520f9c 100644 --- a/ASN1-Model.package/ASN1BasicObject.class/instance/isAsn1.st +++ b/ASN1-Model.package/ASN1BasicObject.class/instance/isAsn1.st @@ -1,3 +1,3 @@ -*asn1-model +as yet unclassified isAsn1 ^ true \ No newline at end of file diff --git a/ASN1-Model.package/ASN1BasicObject.class/instance/isAsn1Object.st b/ASN1-Model.package/ASN1BasicObject.class/instance/isAsn1Object.st index b3e14152..2967c353 100644 --- a/ASN1-Model.package/ASN1BasicObject.class/instance/isAsn1Object.st +++ b/ASN1-Model.package/ASN1BasicObject.class/instance/isAsn1Object.st @@ -1,3 +1,3 @@ -*asn1-model +as yet unclassified isAsn1Object ^ false \ No newline at end of file diff --git a/ASN1-Model.package/ASN1ObjectType.class/instance/isAsn1Object.st b/ASN1-Model.package/ASN1ObjectType.class/instance/isAsn1Object.st index 0b795e86..9de28264 100644 --- a/ASN1-Model.package/ASN1ObjectType.class/instance/isAsn1Object.st +++ b/ASN1-Model.package/ASN1ObjectType.class/instance/isAsn1Object.st @@ -1,3 +1,3 @@ -*asn1-model +as yet unclassified isAsn1Object ^ true \ No newline at end of file diff --git a/ASN1-Model.package/monticello.meta/categories.st b/ASN1-Model.package/monticello.meta/categories.st index 8ad30781..b684b54b 100644 --- a/ASN1-Model.package/monticello.meta/categories.st +++ b/ASN1-Model.package/monticello.meta/categories.st @@ -1,3 +1 @@ -SystemOrganization addCategory: #'ASN1-Model'! -SystemOrganization addCategory: #'ASN1-Model-Exception'! -SystemOrganization addCategory: #'ASN1-Model-Visitor'! +self packageOrganizer ensurePackage: #'ASN1-Model' withTags: #(#Exception #Visitor)! diff --git a/ASN1-Tool.package/ASN1ReadVisitor.class/instance/visitCollection..st b/ASN1-Tool.package/ASN1ReadVisitor.class/instance/visitCollection..st index f7d41cf0..d51f313b 100644 --- a/ASN1-Tool.package/ASN1ReadVisitor.class/instance/visitCollection..st +++ b/ASN1-Tool.package/ASN1ReadVisitor.class/instance/visitCollection..st @@ -33,7 +33,8 @@ visitCollection: aCollection "write the default value in the result" element value defaultValue isAsn1 ifTrue: [ value baseValueAt: element key put: element value defaultValue ] - ifFalse: [ value at: element key put: element value defaultValue ] ]. + ifFalse: [ value at: element key put: element value defaultValue ]. + value addedByDefault: element key ]. elementStream next ] ifFalse: [ isExtended ifTrue: [ (aCollection hasElementWithTag: content tag) ifFalse: [ diff --git a/ASN1-Tool.package/ASN1WriteVisitor.class/instance/initialize.st b/ASN1-Tool.package/ASN1WriteVisitor.class/instance/initialize.st new file mode 100644 index 00000000..5e92d404 --- /dev/null +++ b/ASN1-Tool.package/ASN1WriteVisitor.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialization +initialize + super initialize. + skipAddedDefaults := true \ No newline at end of file diff --git a/ASN1-Tool.package/ASN1WriteVisitor.class/instance/skipAddedDefaults.st b/ASN1-Tool.package/ASN1WriteVisitor.class/instance/skipAddedDefaults.st new file mode 100644 index 00000000..1bcc26ce --- /dev/null +++ b/ASN1-Tool.package/ASN1WriteVisitor.class/instance/skipAddedDefaults.st @@ -0,0 +1,3 @@ +accessing +skipAddedDefaults + skipAddedDefaults := true \ No newline at end of file diff --git a/ASN1-Tool.package/ASN1WriteVisitor.class/instance/visitSequenceType..st b/ASN1-Tool.package/ASN1WriteVisitor.class/instance/visitSequenceType..st index f908492b..a6ef9afb 100644 --- a/ASN1-Tool.package/ASN1WriteVisitor.class/instance/visitSequenceType..st +++ b/ASN1-Tool.package/ASN1WriteVisitor.class/instance/visitSequenceType..st @@ -7,16 +7,17 @@ visitSequenceType: aSequence object := currentValue "basicValue". aSequence elements associations do: [ :each | (each value class = ASN1Extension) ifFalse: [ - (object includesKey: each key) - ifTrue: [ - self - push: (object privAt: each key) - during: [ encoded elements add: (self visit: (aSequence elementAt: each key)) ]] - ifFalse: [ - each value isOptional - ifTrue: [ each value hasDefaultValue ifTrue: [ - self - push: each value defaultValue - during: [ encoded elements add: (self visit: (aSequence elementAt: each key) value) ] ] ] - ifFalse: [ self mandatoryElementNotFound ] ] ] ]. + (skipAddedDefaults and: [ object wasAddedByDefault: each key ]) ifFalse: [ + (object includesKey: each key) + ifTrue: [ + self + push: (object privAt: each key) + during: [ encoded elements add: (self visit: (aSequence elementAt: each key)) ]] + ifFalse: [ + each value isOptional + ifTrue: [ each value hasDefaultValue ifTrue: [ + self + push: each value defaultValue + during: [ encoded elements add: (self visit: (aSequence elementAt: each key) defaultValue type ) ] ] ] + ifFalse: [ self mandatoryElementNotFound ] ] ] ] ]. ^ encoded \ No newline at end of file diff --git a/ASN1-Tool.package/ASN1WriteVisitor.class/properties.json b/ASN1-Tool.package/ASN1WriteVisitor.class/properties.json index 6c62540d..6648c17d 100644 --- a/ASN1-Tool.package/ASN1WriteVisitor.class/properties.json +++ b/ASN1-Tool.package/ASN1WriteVisitor.class/properties.json @@ -6,7 +6,8 @@ "pools" : [ ], "classvars" : [ ], "instvars" : [ - "currentValue" + "currentValue", + "skipAddedDefaults" ], "name" : "ASN1WriteVisitor", "type" : "normal" diff --git a/ASN1-Tool.package/monticello.meta/categories.st b/ASN1-Tool.package/monticello.meta/categories.st index 4ae1ee2b..b9c399a9 100644 --- a/ASN1-Tool.package/monticello.meta/categories.st +++ b/ASN1-Tool.package/monticello.meta/categories.st @@ -1,3 +1 @@ -SystemOrganization addCategory: #'ASN1-Tool'! -SystemOrganization addCategory: 'ASN1-Tool-Exception'! -SystemOrganization addCategory: 'ASN1-Tool-Visitor'! +self packageOrganizer ensurePackage: #'ASN1-Tool' withTags: #(#Exception #Visitor)!