1313** Active
1414
1515#+begin: clocktable :maxlevel 3 :scope subtree :indent nil :emphasize nil :scope file :narrow 75 :formula %
16- #+CAPTION: Clock summary at [2020-11-01 Sun 16:36 ]
16+ #+CAPTION: Clock summary at [2020-11-02 Mon 08:29 ]
1717| <75> | | | | |
1818| Headline | Time | | | % |
1919|-------------------------------------------------------------+---------+-------+-------+-------|
@@ -205,7 +205,8 @@ Time spent creating the demo and presentation.
205205***** Create an identification model
206206***** Rename injection to codec
207207***** The logical-physical space
208- *** STARTED Sprint and product backlog grooming :story:
208+ *** COMPLETED Sprint and product backlog grooming :story:
209+ CLOSED: [2020-11-02 Mon 08:29]
209210 :LOGBOOK:
210211 CLOCK: [2020-11-01 Sun 16:34]--[2020-11-01 Sun 16:36] => 0:02
211212 CLOCK: [2020-10-23 Fri 09:41]--[2020-10-23 Fri 10:31] => 0:50
@@ -597,7 +598,8 @@ final location:
597598- =aspect_properties=: c++ and c#. Features are still located in TS
598599 specific namespaces.
599600
600- *** STARTED Issues with emacs :story:
601+ *** COMPLETED Issues with emacs :story:
602+ CLOSED: [2020-11-02 Mon 08:29]
601603 :LOGBOOK:
602604 CLOCK: [2020-10-02 Fri 14:51]--[2020-10-02 Fri 16:00] => 1:09
603605 :END:
@@ -607,7 +609,8 @@ Time spent troubleshooting emacs issues.
607609- problems loading very long lines in log file. Tried using [[https://www.emacswiki.org/emacs/SoLong][so-long]]
608610 and fundamental, but still could not solve the problem.
609611
610- *** STARTED Rename =name= to =codec= name :story:
612+ *** POSTPONED Rename =name= to =codec= name :story:
613+ CLOSED: [2020-11-02 Mon 08:29]
611614 :LOGBOOK:
612615 CLOCK: [2020-09-24 Thu 20:38]--[2020-09-24 Thu 20:58] => 0:20
613616 :END:
@@ -618,277 +621,6 @@ Notes:
618621
619622- variability is also using the name class.
620623
621- *** Move c++ helper related classes to logical model :story:
622-
623- Classes to move:
624-
625- - =helper_descriptor=
626-
627- *** Move default constructor work from resolver :story:
628-
629- At present we are populating the default constructor for the bundle in
630- the resolver:
631-
632- #+begin_src c++
633- void resolver::resolve_feature_template_bundles(const indices& idx,
634- entities::model& m) {
635- for (auto& pair : m.variability_elements().feature_template_bundles()) {
636- auto& fb(*pair.second);
637- for (auto& ft : fb.feature_templates()) {
638- resolve_name_tree(m, idx, fb.name(), ft.parsed_type());
639- if (ft.parsed_type().is_current_simple_type())
640- fb.requires_manual_default_constructor(true);
641- }
642- }
643- }
644- #+end_src
645-
646- This is very confusing because one would assume the resolver just
647- resolves. We need to move this logic to =technical_space_properties=.
648-
649- *** Create a technical space specific property for default functions :story:
650-
651- In assistant we have:
652-
653- #+begin_src c++
654- bool assistant::supports_defaulted_functions() const {
655- return !is_cpp_standard_98();
656- }
657-
658- bool assistant::supports_move_operator() const {
659- return !is_cpp_standard_98();
660- }
661- #+end_src
662-
663- This should really be in =technical_space_properties=. Check to see if
664- we missed any.
665-
666- *** Default constructor incorrectly generated in C++ 98 :story:
667-
668- We have this logic in =technical_space_properties_transform=:
669-
670- #+begin_src c++
671- /*
672- * In C++ 98 we must always create a default constructor because
673- * we cannot make use of the defaulted functions.
674- */
675- if (is_cpp_standard_98 || src_tsp.requires_manual_default_constructor())
676- dest_tsp.requires_manual_default_constructor(true);
677- #+end_src
678-
679- This is actually incorrect: we can use default constructors in C++ 98,
680- as long as there are no other constructors. The problem is we are
681- relying on the default constructor in test data generator so if we fix
682- this with an =&&= instead of an =||= we break that code. We need to
683- figure out what the correct implement is.
684-
685- *** Detect absence of configuration in bundles :story:
686-
687- It would be nice if when we call =make_static_configuration= it would
688- populate some flag stating whether none of the config was
689- populated. The specific use case is that we may want to detect absence
690- of all elements and do something in that case (for example, missing
691- streaming properties).
692-
693- *** Refactor streaming properties processing :story:
694-
695- At present we copied across the logic from =text.cpp= where the
696- streaming properties are stored as a class and the final processing
697- happens in assistant. However, when we get rid of helpers, we could do
698- all the processing in the streaming processing transform and store it
699- in attributes.
700-
701- *** Add method to check if string is valid enum :story:
702-
703- We have a method to convert a string to an enum, but sometimes we just
704- want to know if its valid without converting. We should have a method
705- that just returns true or false, or throws, if the string is not a
706- valid enum.
707-
708- *** Consider renaming =text= to =logical_physical= :story:
709-
710- This is really the right name for the model; the text processing part
711- are the transforms that are done on the model.
712-
713- Notes:
714-
715- - rename =logical_physical_region= to just =region=.
716-
717- *** Create a de-normalised representation of archetype properties :story:
718-
719- At present we have a two-step process: we first read the global
720- configuration for a model, create the corresponding properties
721- (e.g. backend, facet, archetype properties) and then we post-process
722- these to create the =denormalised_archetype_properties=. However, we
723- never really need to think about the individual properties because
724- they are always used in the context of an artefact, which means we
725- care about the de-normalised archetype properties only. Therefore we
726- should:
727-
728- - have a =archetype_properties= that is composed of all other
729- properties;
730- - change the =meta_model_properties_transform= to create internal
731- indices of properties as a first step for the final property
732- generation but do not expose these containers.
733-
734- Notes:
735-
736- - we can't remove the top-level containers just yet because they are
737- used within the formatables namespace. However, these appear to be
738- legacy use cases, so we should be able to do so when we get rid of
739- this namespace.
740-
741- *** Validate no two artefacts have the same ID :story:
742-
743- At present it is possible to generate two artefacts with the same path
744- (which is the physical ID) and then have them overwrite each
745- other. This causes diffs that are very difficult to get to the bottom
746- of. It would be better to fail with a validation that detects
747- duplicates.
748-
749- *** Fix name of configuration tracing file :story:
750-
751- This name looks incorrect:
752-
753- : 00000-configuration--initial_input.json
754-
755- *** Move C# locator into physical model :story:
756-
757- As per C++ model.
758-
759- *** Move directive group generation to physical model :story:
760-
761- - handle header guards as well.
762- - consider renaming this to relative paths.
763- - consider the role of parts in the directive groups.
764-
765- *** Move inclusion into physical model :story:
766-
767- - try to use artefacts to store dependencies.
768-
769- *** Move assorted c++ and c# properties into meta-model properties :story:
770-
771- List of properties to move:
772-
773- - =aspect_properties=
774- - =test_data_properties=
775- - =streaming_properties=
776- - =cpp_standards=
777- - =build_files_expander=: requires updating logical model with the
778- properties, and then creating transforms.
779- - =assistant_properties=
780- - =attribute_properties=
781-
782- Create a transform to read these properties or add it to the existing
783- meta-model properties transform.
784-
785- *** Move helpers to text and physical models :story:
786-
787- - move helper properties to text model.
788- - move helpers as text transforms to text model. Refactor them to use
789- the new text model transform interface.
790-
791- *** Remove formatables namespace :story:
792-
793- When all types have been moved, we can delete the formatables types
794- and namespace.
795-
796- *** Move all text transforms in c++ and c# models into text model :story:
797-
798- - rename namespaces to fit the hierarchy of LPS.
799-
800- *** Analysis on org-mode outstanding work :story:
801-
802- Notes:
803-
804- - map dogen types to a org-mode tag. The tags must replace =::= with
805- an underscore, e.g. =masd_enumeration= for
806- =masd::enumeration=. Mapping is done by detecting stereotype in the
807- stereotype list and removing it from there. Non-tagged headlines
808- default to documentation (see below).
809- - any non-tagged section will be treated as documentation. On
810- generation it will be suitably converted into the language's format
811- for documentation (e.g. doxygen, C# docs etc). We need meta-model
812- elements for these such as "section", etc. Annoyingly, this also
813- means converting expressions such as =some text=. This will be
814- trickier.
815- - in an ideal world we would also have entities such as paragraphs and
816- the like, to ensure we can reformat the text as required. For
817- example, the 80 column limitation we have in the input may not be
818- suitable for the end format (this is the case with markdown).
819- - we are using qualified names, e.g. =entities::attribute=. These need
820- to be removed. We need to move the graphing logic into =codec=. See
821- story for this.
822- - All models should have a unique ID for each element. The ID should
823- be based on GUIDs where possible, though there are some difficulties
824- for cases like Dia. We could create a "fixed" function that
825- generates GUIDs from dia IDs. For example:
826-
827- : <dia:childnode parent="O64"/>
828-
829- We could take the id =O64= and normalise it to say 4 digits: =6400=
830- (noticed we removed the =O= as its not valid in hex); and then use a
831- well-defined GUID prefix:
832-
833- : 3dddc237-3771-45be-82c9-937c5cef
834-
835- Then we can append the normalised Dia ID to the prefix. This would
836- ensure we always generate the same GUIDs on conversion from Dia. If
837- the GUIds change within Dia, then they will also change in the
838- conversion. This ID is then used as the codec ID. Note that its the
839- responsibility of the decoder to assign "child node IDs". For JSON
840- this must already be populated. For Dia its the =childnode=
841- field. For org-mode, we need to infer it from the structure of the
842- file. In org-mode we just need to use the =:CUSTOM_ID:= attribute:
843-
844- : :CUSTOM_ID: 7c38f8ef-0c8c-4f17-a7da-7ed7d5eedeff
845-
846- - qualified names are computed as a transform via the graph in codec
847- model.
848-
849- Links:
850-
851- - [[https://writequit.org/articles/emacs-org-mode-generate-ids.html][Emacs Org-mode: Use good header ids!]]
852-
853- *** Analysis of MDE papers to read :story:
854-
855- Links:
856-
857- - [[https://ulir.ul.ie/bitstream/handle/10344/2126/2007_Botterweck.pdf;jsessionid=AC6FF39BA414E6065602C7851860C43D?sequence=2][Model-Driven Derivation of Product Architectures]]
858- - [[https://madoc.bib.uni-mannheim.de/993/1/abwl_02_05.pdf][A Taxonomy of Metamodel Hierarchies]]
859-
860- *** Nightly nursing and other spikes :story:
861-
862- Time spent troubleshooting environmental problems.
863-
864- *** Rename =org_mode= model :story:
865-
866- Seems like a better name is needed for this model. Perhaps =orgmode=?
867- Or just =org=? Just don't like =org_mode=.
868-
869- *** Rename "model-to-X" to TLAs :story:
870-
871- Given that model-to-text (M2T) and text-to-model (T2M) - to a lesser
872- extent - are well known TLAs in MDE we should make use of these in
873- class names. The names we have at present are very long. The
874- additional size is not providing any benefits.
875-
876- *** Order of headers is hard-coded :story:
877-
878- In inclusion expander, we have hacked the sorting:
879-
880- : // FIXME: hacks for headers that must be last
881- : const bool lhs_is_gregorian(
882- : lhs.find_first_of(boost_serialization_gregorian) != npos);
883- : const bool rhs_is_gregorian(
884- : rhs.find_first_of(boost_serialization_gregorian) != npos);
885- : if (lhs_is_gregorian && !rhs_is_gregorian)
886- : return true;
887-
888- This could be handled via meta-data, supplying some kind of flag (sort
889- last?). We should try to generate the code in the "natural order" and
890- see if the code compiles with latest boost.
891-
892624** Deprecated
893625
894626*** CANCELLED Add primitives to the archetypes model :story:
0 commit comments