• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eclipse-aascw / aas-core-codegen / 35753678083
89%

Build:
DEFAULT BRANCH: main
Ran 22 Sep 2026 04:27PM UTC
Jobs 3
Files 288
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Sep 2026 04:22PM UTC coverage: 87.176% (+0.005%) from 87.171%
35753678083

push

github

web-flow
Compose the C++ XML de-serialization (#745)

C++ is the last backend to have its XML read side decomposed, after C#
(#686), Go (#688), Java (#690), Python (#694) and TypeScript (#698). #673
factored out the framing of an *element*; this factors out the framing of
the property *loop*, which every ``<Cls>FromSequence`` re-emitted in full.

**A property** loses its duplicate check and its ``std::tie``, and names
only itself and what reads it.

    // before
    case properties::OfExtension::kSemanticId: {
      if (the_semantic_id.has_value()) {
        error = DuplicatePropertyError(name);
        break;
      }

      std::tie(
        the_semantic_id,
        error
      ) = ReferenceFromSequence<
        types::IReference
      >(reader);
      break;
    }

    // after
    case properties::OfExtension::kSemanticId:
      return ReadInto(
        the_semantic_id,
        ReferenceFromSequence<
          types::IReference
        >(reader)
      );

**The loop** around it becomes one call. It could be lifted out at all only
because the framing now returns the error alone, instead of
``NoInstanceAndDeserializationError<std::shared_ptr<T> >``, and so no longer
needs ``T``.

    // before, ~220 lines in each of the 38 ``<Cls>FromSequence``
    while (true) {
      error = SkipWhitespace(reader);
      if (error.has_value()) { ...6 lines... }
      if (reader.node().kind() == xml_common::NodeKind::Stop) {
        break;
      } else if (reader.node().kind() != xml_common::NodeKind::Start) {
        ...10 lines naming IExtension...
      }
      const std::string name(...);
      reader.Read();
      auto it = properties::kMapOfExtension.find(name);
      if (it == properties::kMapOfExtension.end()) { ...12 lines... }
      switch (it->second) { ... }
      ...~60 lines of prepending and stop-element handling...
    }

    // after
    common::optional<DeserializationError> error(
      ReadProperties<
        properties::kPropertyCountOfExtension
      >... (continued)

47 of 48 new or added lines in 1 file covered. (97.92%)

36966 of 42404 relevant lines covered (87.18%)

2.62 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
94.2
0.04% aas_core_codegen/cpp/lib/_generate_xmlization.py
Jobs
ID Job ID Ran Files Coverage
1 3.10 - 35753678083.1 22 Sep 2026 04:30PM UTC 288
87.18
GitHub Action Run
2 3.11 - 35753678083.2 22 Sep 2026 04:30PM UTC 288
87.18
GitHub Action Run
3 3.12 - 35753678083.3 22 Sep 2026 04:30PM UTC 288
87.18
GitHub Action Run
Source Files on build 35753678083
  • Tree
  • List 288
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 8ff6cd56 on github
  • Prev Build on main (#35669899220)
  • Next Build on main (#35778356506)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc