1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.section;
18
19 import org.orekit.files.ccsds.utils.FileFormat;
20 import org.orekit.files.ccsds.utils.lexical.ParseToken;
21 import org.orekit.files.ccsds.utils.lexical.TokenType;
22 import org.orekit.files.ccsds.utils.parsing.AbstractConstituentParser;
23
24
25
26
27
28 public enum KvnStructureKey {
29
30
31 META((token, parser) -> {
32 if (token.getType() == TokenType.START) {
33 return parser.prepareMetadata();
34 } else if (token.getType() == TokenType.STOP) {
35 return parser.finalizeMetadata();
36 }
37 return false;
38 }),
39
40
41 DATA((token, parser) -> {
42 if (token.getType() == TokenType.START) {
43 return parser.prepareData();
44 } else if (token.getType() == TokenType.STOP) {
45 return parser.finalizeData();
46 }
47 return false;
48 });
49
50
51 private final transient TokenProcessor processor;
52
53
54
55
56 KvnStructureKey(final TokenProcessor processor) {
57 this.processor = processor;
58 }
59
60
61
62
63
64
65 public boolean process(final ParseToken token, final AbstractConstituentParser<?, ?, ?> parser) {
66 return processor.process(token, parser);
67 }
68
69
70 interface TokenProcessor {
71
72
73
74
75
76 boolean process(ParseToken token, AbstractConstituentParser<?, ?, ?> parser);
77 }
78
79 }