Check-in [3c2e02bd45]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Build of micca 1.1.7 for Linux. Preparing for new release.
Timelines: family | ancestors | descendants | both | micca-develop
Files: files | file ages | folders
SHA1: 3c2e02bd4558af5137d88e643be0ebd2181da9f9
User & Date: andrewm 2019-12-18 16:35:49
Context
2019-12-18
16:52
Build of micca 1.1.7 for windows. Preparing for release. check-in: 66f5ff583c user: andrewm tags: micca-develop
16:35
Build of micca 1.1.7 for Linux. Preparing for new release. check-in: 3c2e02bd45 user: andrewm tags: micca-develop
2019-12-15
17:29
Corrected a problem in micca with the embedded command, findRelatedWhere. The previous implementation failed to account for singular relationships and assumed there was always an iterative loop. Added test cases to demonstrate the fix. Preparing for new micca release. check-in: 07d00e9b7c user: andrewm tags: micca-develop
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to micca/code/c/mellor-balcer/bookstore.c.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
....
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998

4999
5000
5001
5002
5003
5004
5005
....
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025

5026
5027
5028
5029
5030
5031
5032

/*
 * ----------------------------------------------------------------------
 * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
 * Created by: /home/andrewm/working/mrtools-micca/micca/code/starpack/x86_64-linux-tcl8.6/micca/lib/application/micca_main.tcl simplebookstore.micca sbs_population.micca
 * Created on: Thu Mar 21 11:06:50 PDT 2019
 * This is micca version 1.1.5
 * ----------------------------------------------------------------------
 */

#include "micca_rt.h"
#include "micca_rt_internal.h"
#include "bookstore.h"

................................................................................
    for (MRT_LinkRef *t__T2 = mrtLinkRefBegin(&self->R24__BACK) ; t__T2 != mrtLinkRefEnd(&self->R24__BACK) ;) {
        struct Shipment *t__T3 = (struct Shipment *)((uintptr_t)t__T2 - offsetof(struct Shipment, R24__BLINKS)) ;
        t__T2 = t__T2->next ;
        struct Shipment *t__T1 ;
        t__T1 = t__T3 ;
        readyShipment = t__T1 ;
        if (readyShipment->waitingToBePacked) {
            break ;
        } else {
            readyShipment = NULL ;
        }
    }

    return readyShipment ;
}
static struct ShippingClerk *
Warehouse_findFreeShippingClerk(
    struct Warehouse *const self)
// <%my findRelatedWhere freeClerk {freeClerk->awaitingAssignment} ~R25 {~R27 ShippingClerk}%>
// return freeClerk ;
................................................................................
        t__T2 = t__T2->next ;
        struct ShippingClerk *t__T4 = t__T3->R27 ; // ~R27 ShippingClerk
        if (t__T4->base__INST.classDesc == &bookstore__CLASSES[33]) {
            struct ShippingClerk *t__T1 ;
            t__T1 = t__T4 ;
            freeClerk = t__T1 ;
            if (freeClerk->awaitingAssignment) {
                break ;
            } else {
                freeClerk = NULL ;
            }
        }
    }

    return freeClerk ;
}
static MRT_DelayTime
ShippingClerk_randomdelay(void)
// // random number 1 - 10 in tenths of a second
// MRT_DelayTime delay = (MRT_DelayTime)((rand() % 10 + 1) * 100) ;
// MRT_DEBUG("delay = %" PRIu32 "\n", delay) ;





|
|







 







|




>







 







|





>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
....
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
....
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034

/*
 * ----------------------------------------------------------------------
 * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
 * Created by: /home/andrewm/working/mrtools-micca/micca/code/starpack/x86_64-linux-tcl8.6/micca/lib/application/micca_main.tcl simplebookstore.micca sbs_population.micca
 * Created on: Wed Dec 18 16:26:35 PST 2019
 * This is micca version 1.1.7
 * ----------------------------------------------------------------------
 */

#include "micca_rt.h"
#include "micca_rt_internal.h"
#include "bookstore.h"

................................................................................
    for (MRT_LinkRef *t__T2 = mrtLinkRefBegin(&self->R24__BACK) ; t__T2 != mrtLinkRefEnd(&self->R24__BACK) ;) {
        struct Shipment *t__T3 = (struct Shipment *)((uintptr_t)t__T2 - offsetof(struct Shipment, R24__BLINKS)) ;
        t__T2 = t__T2->next ;
        struct Shipment *t__T1 ;
        t__T1 = t__T3 ;
        readyShipment = t__T1 ;
        if (readyShipment->waitingToBePacked) {
            goto l__L1 ;
        } else {
            readyShipment = NULL ;
        }
    }
    l__L1: ;
    return readyShipment ;
}
static struct ShippingClerk *
Warehouse_findFreeShippingClerk(
    struct Warehouse *const self)
// <%my findRelatedWhere freeClerk {freeClerk->awaitingAssignment} ~R25 {~R27 ShippingClerk}%>
// return freeClerk ;
................................................................................
        t__T2 = t__T2->next ;
        struct ShippingClerk *t__T4 = t__T3->R27 ; // ~R27 ShippingClerk
        if (t__T4->base__INST.classDesc == &bookstore__CLASSES[33]) {
            struct ShippingClerk *t__T1 ;
            t__T1 = t__T4 ;
            freeClerk = t__T1 ;
            if (freeClerk->awaitingAssignment) {
                goto l__L1 ;
            } else {
                freeClerk = NULL ;
            }
        }
    }
    l__L1: ;
    return freeClerk ;
}
static MRT_DelayTime
ShippingClerk_randomdelay(void)
// // random number 1 - 10 in tenths of a second
// MRT_DelayTime delay = (MRT_DelayTime)((rand() % 10 + 1) * 100) ;
// MRT_DEBUG("delay = %" PRIu32 "\n", delay) ;

Changes to micca/code/c/mellor-balcer/bookstore.h.

1
2
3
4
5
6
7
8
9
10
11
12
13
14

/*
 * ----------------------------------------------------------------------
 * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
 * Created by: /home/andrewm/working/mrtools-micca/micca/code/starpack/x86_64-linux-tcl8.6/micca/lib/application/micca_main.tcl simplebookstore.micca sbs_population.micca
 * Created on: Thu Mar 21 11:06:50 PDT 2019
 * This is micca version 1.1.5
 * ----------------------------------------------------------------------
 */

#ifndef BOOKSTORE_H_
#define BOOKSTORE_H_
/*
 * Domain Interface Contents





|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14

/*
 * ----------------------------------------------------------------------
 * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
 * Created by: /home/andrewm/working/mrtools-micca/micca/code/starpack/x86_64-linux-tcl8.6/micca/lib/application/micca_main.tcl simplebookstore.micca sbs_population.micca
 * Created on: Wed Dec 18 16:26:34 PST 2019
 * This is micca version 1.1.7
 * ----------------------------------------------------------------------
 */

#ifndef BOOKSTORE_H_
#define BOOKSTORE_H_
/*
 * Domain Interface Contents

Changes to micca/code/c/mellor-balcer/bookstore.log.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
**** Scenario 1: begin
---- creating a shopping cart
2019-03-21T11:06:53.219.406: Creation: ?.? - startCart -> ShoppingCart ==> 0
2019-03-21T11:06:53.219.430: Transition: ?.? - startCart -> ShoppingCart.0: @ ==> NewOrder
2019-03-21T11:06:53.219.438: Transition: ShoppingCart.0 - addSelection -> ShoppingCart.0: NewOrder ==> AddingSelectiontoOrder
---- changing quantity to 0
2019-03-21T11:06:53.219.459: Transition: ?.? - changeQuantity -> ProductSelection.0: NewSelection ==> ChangingQuantity
2019-03-21T11:06:53.219.465: Transition: ProductSelection.0 - removeSelection -> ProductSelection.0: ChangingQuantity ==> RemovingSelection
2019-03-21T11:06:53.219.471: Transition: ProductSelection.0 - cancel -> ShoppingCart.0: AddingSelectiontoOrder ==> CancelingEntireOrder
**** Scenario 1: end
**** Scenario 2: begin
---- creating a new cart
2019-03-21T11:06:53.219.488: Creation: ?.? - startCart -> ShoppingCart ==> 1
2019-03-21T11:06:53.219.493: Transition: ?.? - startCart -> ShoppingCart.1: @ ==> NewOrder
2019-03-21T11:06:53.219.498: Transition: ShoppingCart.1 - addSelection -> ShoppingCart.1: NewOrder ==> AddingSelectiontoOrder
---- change quantity to 2 books
2019-03-21T11:06:53.219.510: Transition: ?.? - changeQuantity -> ProductSelection.1: NewSelection ==> ChangingQuantity
---- adding music to the shopping cart
2019-03-21T11:06:53.219.518: Transition: ?.? - addSelection -> ShoppingCart.1: AddingSelectiontoOrder ==> AddingSelectiontoOrder
---- checking out
2019-03-21T11:06:53.219.547: Transition: ?.? - checkOut -> ShoppingCart.1: AddingSelectiontoOrder ==> EstablishingCustomerandVerifyingPayment
2019-03-21T11:06:53.219.558: Creation: ShoppingCart.1 - checkOut -> Order ==> 0
2019-03-21T11:06:53.219.563: Transition: ShoppingCart.1 - checkOut -> Order.0: @ ==> EstablishingCustomerandVerifyingPayment
2019-03-21T11:06:53.219.569: Transition: Order.0 - submitCharge -> Order.0: EstablishingCustomerandVerifyingPayment ==> SubmittingCharge
2019-03-21T11:06:53.219.575: Creation: Order.0 - makeCharge -> CreditCardCharge ==> 0
2019-03-21T11:06:53.219.579: Transition: Order.0 - makeCharge -> CreditCardCharge.0: @ ==> RequestingChargeApproval
---- payment approval
2019-03-21T11:06:53.318.735: Transition: ?.? - chargeProcessed -> CreditCardCharge.0: RequestingChargeApproval ==> ProcessingCompleted
2019-03-21T11:06:53.318.825: Transition: CreditCardCharge.0 - paymentApproved -> Order.0: SubmittingCharge ==> BeingPackedandShipped
2019-03-21T11:06:53.318.858: Creation: Order.0 - requestShipment -> Shipment ==> 0
2019-03-21T11:06:53.318.873: Transition: Order.0 - requestShipment -> Shipment.0: @ ==> PreparingShipment
2019-03-21T11:06:53.318.896: Transition: Shipment.0 - shipmentReadyToPack -> Warehouse.acme: WaitingforaShipment ==> WaitingforaFreeClerk
2019-03-21T11:06:53.318.914: Transition: Warehouse.acme - clerkFree -> Warehouse.acme: WaitingforaFreeClerk ==> AssigningClerktoShipment
2019-03-21T11:06:53.318.930: Transition: Warehouse.acme - clerkAssignedToShipment -> Warehouse.acme: AssigningClerktoShipment ==> WaitingforaShipment
2019-03-21T11:06:53.318.943: Transition: Warehouse.acme - clerkAssigned -> ShippingClerk.fs: WaitingforaJob ==> SelectingBooks
**** Scenario 2: end
**** Scenario 3: begin
---- packing order
2019-03-21T11:06:53.719.115: Transition: ShippingClerk.fs - booksSelected -> ShippingClerk.fs: SelectingBooks ==> PackingBox
2019-03-21T11:06:54.419.347: Transition: ShippingClerk.fs - boxPacked -> ShippingClerk.fs: PackingBox ==> SealingBox
2019-03-21T11:06:55.219.580: Transition: ShippingClerk.fs - boxSealed -> ShippingClerk.fs: SealingBox ==> AttachingShippingLabel
2019-03-21T11:06:55.819.759: Transition: ShippingClerk.fs - shippingLabelAttached -> ShippingClerk.fs: AttachingShippingLabel ==> DeliveringBoxtoLoadingDock
2019-03-21T11:06:56.219.972: Transition: ShippingClerk.fs - boxAtLoadingDoc -> ShippingClerk.fs: DeliveringBoxtoLoadingDock ==> CompletingJob
2019-03-21T11:06:56.220.080: Transition: ShippingClerk.fs - packed -> Shipment.0: PreparingShipment ==> PackedandAwaitingTrackingNumber
2019-03-21T11:06:56.220.123: Transition: ShippingClerk.fs - clerkFree -> Warehouse.acme: WaitingforaShipment ==> IG
**** Scenario 3: end
**** Scenario 4: begin
---- delivering shipment
2019-03-21T11:06:56.220.200: Transition: ?.? - trackingNumberAssigned -> Shipment.0: PackedandAwaitingTrackingNumber ==> NumberAssigned
2019-03-21T11:06:56.419.261: Transition: ?.? - pickedUp -> Shipment.0: NumberAssigned ==> InTransittoCustomer
2019-03-21T11:06:57.220.322: Transition: ?.? - deliveryConfirmed -> Shipment.0: InTransittoCustomer ==> Delivered
2019-03-21T11:06:57.220.394: Transition: Shipment.0 - orderDelivered -> Order.0: BeingPackedandShipped ==> DeliveredtoCustomer
**** Scenario 4: end


|
|
|

|
|
|



|
|
|

|

|

|
|
|
|
|
|

|
|
|
|
|
|
|
|



|
|
|
|
|
|
|



|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
**** Scenario 1: begin
---- creating a shopping cart
2019-12-18T16:26:37.752.713: Creation: ?.? - startCart -> ShoppingCart ==> 0
2019-12-18T16:26:37.752.743: Transition: ?.? - startCart -> ShoppingCart.0: @ ==> NewOrder
2019-12-18T16:26:37.752.751: Transition: ShoppingCart.0 - addSelection -> ShoppingCart.0: NewOrder ==> AddingSelectiontoOrder
---- changing quantity to 0
2019-12-18T16:26:37.752.776: Transition: ?.? - changeQuantity -> ProductSelection.0: NewSelection ==> ChangingQuantity
2019-12-18T16:26:37.752.782: Transition: ProductSelection.0 - removeSelection -> ProductSelection.0: ChangingQuantity ==> RemovingSelection
2019-12-18T16:26:37.752.789: Transition: ProductSelection.0 - cancel -> ShoppingCart.0: AddingSelectiontoOrder ==> CancelingEntireOrder
**** Scenario 1: end
**** Scenario 2: begin
---- creating a new cart
2019-12-18T16:26:37.752.811: Creation: ?.? - startCart -> ShoppingCart ==> 1
2019-12-18T16:26:37.752.816: Transition: ?.? - startCart -> ShoppingCart.1: @ ==> NewOrder
2019-12-18T16:26:37.752.822: Transition: ShoppingCart.1 - addSelection -> ShoppingCart.1: NewOrder ==> AddingSelectiontoOrder
---- change quantity to 2 books
2019-12-18T16:26:37.752.837: Transition: ?.? - changeQuantity -> ProductSelection.1: NewSelection ==> ChangingQuantity
---- adding music to the shopping cart
2019-12-18T16:26:37.752.862: Transition: ?.? - addSelection -> ShoppingCart.1: AddingSelectiontoOrder ==> AddingSelectiontoOrder
---- checking out
2019-12-18T16:26:37.752.896: Transition: ?.? - checkOut -> ShoppingCart.1: AddingSelectiontoOrder ==> EstablishingCustomerandVerifyingPayment
2019-12-18T16:26:37.752.906: Creation: ShoppingCart.1 - checkOut -> Order ==> 0
2019-12-18T16:26:37.752.911: Transition: ShoppingCart.1 - checkOut -> Order.0: @ ==> EstablishingCustomerandVerifyingPayment
2019-12-18T16:26:37.752.918: Transition: Order.0 - submitCharge -> Order.0: EstablishingCustomerandVerifyingPayment ==> SubmittingCharge
2019-12-18T16:26:37.752.925: Creation: Order.0 - makeCharge -> CreditCardCharge ==> 0
2019-12-18T16:26:37.752.930: Transition: Order.0 - makeCharge -> CreditCardCharge.0: @ ==> RequestingChargeApproval
---- payment approval
2019-12-18T16:26:37.852.038: Transition: ?.? - chargeProcessed -> CreditCardCharge.0: RequestingChargeApproval ==> ProcessingCompleted
2019-12-18T16:26:37.852.117: Transition: CreditCardCharge.0 - paymentApproved -> Order.0: SubmittingCharge ==> BeingPackedandShipped
2019-12-18T16:26:37.852.155: Creation: Order.0 - requestShipment -> Shipment ==> 0
2019-12-18T16:26:37.852.171: Transition: Order.0 - requestShipment -> Shipment.0: @ ==> PreparingShipment
2019-12-18T16:26:37.852.199: Transition: Shipment.0 - shipmentReadyToPack -> Warehouse.acme: WaitingforaShipment ==> WaitingforaFreeClerk
2019-12-18T16:26:37.852.218: Transition: Warehouse.acme - clerkFree -> Warehouse.acme: WaitingforaFreeClerk ==> AssigningClerktoShipment
2019-12-18T16:26:37.852.237: Transition: Warehouse.acme - clerkAssignedToShipment -> Warehouse.acme: AssigningClerktoShipment ==> WaitingforaShipment
2019-12-18T16:26:37.852.255: Transition: Warehouse.acme - clerkAssigned -> ShippingClerk.fs: WaitingforaJob ==> SelectingBooks
**** Scenario 2: end
**** Scenario 3: begin
---- packing order
2019-12-18T16:26:38.252.330: Transition: ShippingClerk.fs - booksSelected -> ShippingClerk.fs: SelectingBooks ==> PackingBox
2019-12-18T16:26:38.952.494: Transition: ShippingClerk.fs - boxPacked -> ShippingClerk.fs: PackingBox ==> SealingBox
2019-12-18T16:26:39.752.693: Transition: ShippingClerk.fs - boxSealed -> ShippingClerk.fs: SealingBox ==> AttachingShippingLabel
2019-12-18T16:26:40.352.807: Transition: ShippingClerk.fs - shippingLabelAttached -> ShippingClerk.fs: AttachingShippingLabel ==> DeliveringBoxtoLoadingDock
2019-12-18T16:26:40.752.987: Transition: ShippingClerk.fs - boxAtLoadingDoc -> ShippingClerk.fs: DeliveringBoxtoLoadingDock ==> CompletingJob
2019-12-18T16:26:40.753.059: Transition: ShippingClerk.fs - packed -> Shipment.0: PreparingShipment ==> PackedandAwaitingTrackingNumber
2019-12-18T16:26:40.753.110: Transition: ShippingClerk.fs - clerkFree -> Warehouse.acme: WaitingforaShipment ==> IG
**** Scenario 3: end
**** Scenario 4: begin
---- delivering shipment
2019-12-18T16:26:40.753.189: Transition: ?.? - trackingNumberAssigned -> Shipment.0: PackedandAwaitingTrackingNumber ==> NumberAssigned
2019-12-18T16:26:40.952.191: Transition: ?.? - pickedUp -> Shipment.0: NumberAssigned ==> InTransittoCustomer
2019-12-18T16:26:41.753.249: Transition: ?.? - deliveryConfirmed -> Shipment.0: InTransittoCustomer ==> Delivered
2019-12-18T16:26:41.753.308: Transition: Shipment.0 - orderDelivered -> Order.0: BeingPackedandShipped ==> DeliveredtoCustomer
**** Scenario 4: end

Changes to micca/code/c/mellor-balcer/simplebookstore-docinfo.xml.

119
120
121
122
123
124
125








126
    <revnumber>1.3</revnumber>
    <date>March 21, 2019</date>
    <authorinitials>GAM</authorinitials>
    <revremark>
        Built with micca 1.1.5.
    </revremark>
  </revision>








</revhistory>







>
>
>
>
>
>
>
>

119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
    <revnumber>1.3</revnumber>
    <date>March 21, 2019</date>
    <authorinitials>GAM</authorinitials>
    <revremark>
        Built with micca 1.1.5.
    </revremark>
  </revision>
  <revision>
    <revnumber>1.3</revnumber>
    <date>March 21, 2019</date>
    <authorinitials>GAM</authorinitials>
    <revremark>
        Built with micca 1.1.7.
    </revremark>
  </revision>
</revhistory>

Changes to micca/code/c/mellor-balcer/simplebookstore.pdf.

cannot compute difference between binary files

Changes to micca/code/starpack/macosx10.5-x86_64/micca.tpj.

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
###
##
#

App/Code               {}
App/Package            {}
App/PostCode           {}
Metadata               {as::origin http://www.activestate.com/activetcl subject {tclkit basekit starkit starpack deployment} copyright {(c) 2014 ActiveState Software Inc.} author {{ActiveState Software Inc.}} description {A single file tcl interpreter for the execution of starkits, also a prefix file usable by Tcl Dev Kit's TclApp for the creation of starpacks.} tdk-licensed-to {George Mangogna <amangogna@mindspring.com> (Commercial license, serial number S2346083DA)} name tclapp-out as::build::date 2014-11-19 license {{ActiveTcl Community License v2.1} http://www.activestate.com/activetcl/license-agreement} platform macosx10.5-i386-x86_64 version 1.1.6 summary {Single File Tcl Executable}}
OSX/Info.plist         {}
Path                   {Relativeto /Users/andrewm/develop/mrtools-micca/micca/code/tcl}
Path                   {File /Users/andrewm/develop/mrtools-micca/micca/code/tcl/micca.tcl}
Path                   {File /Users/andrewm/develop/mrtools-micca/micca/code/tcl/typename/typeparser.tcl}
Path                   {File /Users/andrewm/develop/mrtools-micca/micca/code/tcl/micca_main.tcl}
Path                   Startup
Path                   {Relativeto /Users/andrewm/develop/mrtools-micca/micca/code/c}







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
###
##
#

App/Code               {}
App/Package            {}
App/PostCode           {}
Metadata               {as::origin http://www.activestate.com/activetcl subject {tclkit basekit starkit starpack deployment} copyright {(c) 2014 ActiveState Software Inc.} author {{ActiveState Software Inc.}} description {A single file tcl interpreter for the execution of starkits, also a prefix file usable by Tcl Dev Kit's TclApp for the creation of starpacks.} tdk-licensed-to {George Mangogna <amangogna@mindspring.com> (Commercial license, serial number S2346083DA)} name tclapp-out as::build::date 2014-11-19 license {{ActiveTcl Community License v2.1} http://www.activestate.com/activetcl/license-agreement} platform macosx10.5-i386-x86_64 version 1.1.7 summary {Single File Tcl Executable}}
OSX/Info.plist         {}
Path                   {Relativeto /Users/andrewm/develop/mrtools-micca/micca/code/tcl}
Path                   {File /Users/andrewm/develop/mrtools-micca/micca/code/tcl/micca.tcl}
Path                   {File /Users/andrewm/develop/mrtools-micca/micca/code/tcl/typename/typeparser.tcl}
Path                   {File /Users/andrewm/develop/mrtools-micca/micca/code/tcl/micca_main.tcl}
Path                   Startup
Path                   {Relativeto /Users/andrewm/develop/mrtools-micca/micca/code/c}

Changes to micca/code/starpack/win32-x86_64/micca.tpj.

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
###
##
#

App/Code               {}
App/Package            {}
App/PostCode           {}
Metadata               {subject {tclkit basekit starkit starpack deployment} as::origin http://www.activestate.com/activetcl copyright {(c) 2015 ActiveState Software Inc.} author {ActiveState Software Inc.} description {A single file tcl interpreter for the execution of starkits, also a prefix file usable by Tcl Dev Kit's TclApp for the creation of starpacks.} tdk-licensed-to {George Mangogna <amangogna@modelrealization.com> (Commercial license, serial number S2346083DA)} name tclapp-out as::build::date 2015-06-05 license {ActiveTcl Community License} platform win32-x86_64 summary {Single File Tcl Executable} version 1.1.6}
OSX/Info.plist         {}
Path                   {Relativeto C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c}
Path                   {File C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c/posix/micca_rt_internal.h}
Path                   {File C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c/posix/micca_rt.c}
Path                   {File C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c/posix/micca_rt.h}
Path                   {File C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c/arm-7m/efm32gg/micca_rt_internal.h}
Path                   {File C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c/arm-7m/efm32gg/micca_rt.c}







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
###
##
#

App/Code               {}
App/Package            {}
App/PostCode           {}
Metadata               {subject {tclkit basekit starkit starpack deployment} as::origin http://www.activestate.com/activetcl copyright {(c) 2015 ActiveState Software Inc.} author {ActiveState Software Inc.} description {A single file tcl interpreter for the execution of starkits, also a prefix file usable by Tcl Dev Kit's TclApp for the creation of starpacks.} tdk-licensed-to {George Mangogna <amangogna@modelrealization.com> (Commercial license, serial number S2346083DA)} name tclapp-out as::build::date 2015-06-05 license {ActiveTcl Community License} platform win32-x86_64 summary {Single File Tcl Executable} version 1.1.7}
OSX/Info.plist         {}
Path                   {Relativeto C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c}
Path                   {File C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c/posix/micca_rt_internal.h}
Path                   {File C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c/posix/micca_rt.c}
Path                   {File C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c/posix/micca_rt.h}
Path                   {File C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c/arm-7m/efm32gg/micca_rt_internal.h}
Path                   {File C:/Users/andrewm/Working/modelrealization/mrtools-micca/micca/code/c/arm-7m/efm32gg/micca_rt.c}

Changes to micca/code/starpack/x86_64-linux-tcl8.6/micca.

cannot compute difference between binary files

Changes to micca/code/starpack/x86_64-linux-tcl8.6/micca.tpj.

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
###
##
#

App/Code               {}
App/Package            {}
App/PostCode           {}
Metadata               {name micca platform tcl version 1.1.6 tdk-licensed-to {George Mangogna <amangogna@modelrealization.com> (Commercial license, serial number S2346083DA)}}
OSX/Info.plist         {}
Path                   {Relativeto /home/andrewm/working/mrtools-micca/micca/code/tcl}
Path                   {File /home/andrewm/working/mrtools-micca/micca/code/tcl/micca.tcl}
Path                   {File /home/andrewm/working/mrtools-micca/micca/code/tcl/typename/typeparser.tcl}
Path                   {File /home/andrewm/working/mrtools-micca/micca/code/tcl/micca_main.tcl}
Path                   Startup
Path                   {Relativeto /home/andrewm/working/mrtools-micca/micca/code/c}







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
###
##
#

App/Code               {}
App/Package            {}
App/PostCode           {}
Metadata               {name micca platform tcl version 1.1.7 tdk-licensed-to {George Mangogna <amangogna@modelrealization.com> (Commercial license, serial number S2346083DA)}}
OSX/Info.plist         {}
Path                   {Relativeto /home/andrewm/working/mrtools-micca/micca/code/tcl}
Path                   {File /home/andrewm/working/mrtools-micca/micca/code/tcl/micca.tcl}
Path                   {File /home/andrewm/working/mrtools-micca/micca/code/tcl/typename/typeparser.tcl}
Path                   {File /home/andrewm/working/mrtools-micca/micca/code/tcl/micca_main.tcl}
Path                   Startup
Path                   {Relativeto /home/andrewm/working/mrtools-micca/micca/code/c}

Changes to micca/doc/howto/processing.txt.

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130


131
132
133
134
135
136
137
138
139
140

141
142
143
144
145
146
147
...
175
176
177
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192
193
194
195
196
197
198
...
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
...
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
signal to a class instance.
It is possible to translate the activity by writing the ``C'' code that invokes
`mrt_SignalEvent()` directly, and that would cause the signal to be generated.

The difficulty of coding directly against the run-time library interfaces is:

* There is a large cognitive burden to understand the details of the
    run-time API and supply the correct argument values.
* Direct coding against the run-time API strongly couples the model
    translation to the run-time interface.
    Future changes to the run-time that might be required to correct errors or
    extend its functionality could break a translation.

The `micca` solution to this is to provide an _embeddable_ command language
that generates the code needed for model level actions.


One significant advantage of the embedded commands is that `micca` has
access to the platform specific model when the code generation happens.
Consequently,
error diagnosis is much improved.
If you attempt to signal an event to a class instance and that class
does not accept such an event,
`micca` is able to diagnose that condition and issue an appropriate error
message.
This helps detect errors earlier in the process rather than
relying on the ``C'' compiler.


=== `Micca` embedded command language

An activity in a `micca` translation, _e.g._ a state activity,
appears as ordinary ``C'' code with other commands embedded into the code.
The commands are embedded by surrounding them with the `<%` and `%>`
characters.
................................................................................
    so do not place semicolons in the output.
    The reference documentation for the embedded command language states
    which behavior each command has, but you will quickly know
    the difference by the intent of each embedded command.
* During the code generation, the embedded command is removed from the input
    and the semantically equivalent ``C'' code is placed in the output at the
    same location.
* Since it is unknown how many ``C'' statements a command may generate,
    all statements should be treated as _compound_ statements and surrounded
    by curly braces (as we did in the `if` test of the previous example).


==== Generated code

Most people who perform a model translation using `micca` initially
are curious about the contents of the generated ``C'' code.
It usually takes some experience to trust the tooling and examining the
code can garner that trust.
In the end,
everything must end up as ``C'' code and we should be able to read
that code.
What follows is a sample showing a state activity and its generated code.

First, we show the `micca` source.
This is a state activity, so it would be part of a state model.
................................................................................
* There may be only one outstanding delayed signal for any given event
  between any sending / receiving pair of instances (which might be the same
  instance).
  This is the same as saying that delayed events are identified by
  the name of the event, the sending instance and the receiving instance.
  This is a rule of the XUML execution semantics.
* The unit of time is milliseconds, so there is no way to have really
  high frequency signal delays.
* The delay time is the *minimum* time before the signal will be delivered.
  Software execution can introduce small additional delays or jitter.
* Delivery of any delayed signal starts a new
  <<thread-of-control,_thread of control_>>.
* It is acceptable to have a delay time of zero.  This means the event is
  queued immediately and,
  when it is dispatched,
................................................................................
    }
}
----

This approach can be tedious if there are even a modest number
of subtype classes and we insist upon covering all the possible subclasses.
To help this situation,
`micca` provides an embeddeded command called, `classify`,
that outwardly appears similar to a `switch` statement on the subclass type.

----
<%R22 classify product prodtype     %>
<%  subclass Book_Product           %>
    // Here, prodtype is a reference to a Book_Product instance
    // Do something with protype appropriate for a Book_Product







|







>
>









|
>







 







|
|
|
>



|
|

|







 







|







 







|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
...
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
...
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
...
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
signal to a class instance.
It is possible to translate the activity by writing the ``C'' code that invokes
`mrt_SignalEvent()` directly, and that would cause the signal to be generated.

The difficulty of coding directly against the run-time library interfaces is:

* There is a large cognitive burden to understand the details of the
    run-time API and to supply the correct argument values.
* Direct coding against the run-time API strongly couples the model
    translation to the run-time interface.
    Future changes to the run-time that might be required to correct errors or
    extend its functionality could break a translation.

The `micca` solution to this is to provide an _embeddable_ command language
that generates the code needed for model level actions.
You can think of the embedded commands as automatic bridge generation,
bridging model level actions to ``C'' code to implement the action.
One significant advantage of the embedded commands is that `micca` has
access to the platform specific model when the code generation happens.
Consequently,
error diagnosis is much improved.
If you attempt to signal an event to a class instance and that class
does not accept such an event,
`micca` is able to diagnose that condition and issue an appropriate error
message.
This helps detect errors earlier in the process rather than
relying on the ``C'' compiler which cannot give as precise an error
message as the embedded command.

=== `Micca` embedded command language

An activity in a `micca` translation, _e.g._ a state activity,
appears as ordinary ``C'' code with other commands embedded into the code.
The commands are embedded by surrounding them with the `<%` and `%>`
characters.
................................................................................
    so do not place semicolons in the output.
    The reference documentation for the embedded command language states
    which behavior each command has, but you will quickly know
    the difference by the intent of each embedded command.
* During the code generation, the embedded command is removed from the input
    and the semantically equivalent ``C'' code is placed in the output at the
    same location.
* Since it is unknown how many ``C'' statements an embedded
    command may generate, all statements should be treated as _compound_
    statements and surrounded by curly braces (as we did in the `if` test of
    the previous example).

==== Generated code

Most people who perform a model translation using `micca` are
curious, initially, about the contents of the generated ``C'' code.
It usually takes some experience to trust the tooling and examining the
code can build that trust.
In the end,
everything must end up as ``C'' code and we should be able to read
that code.
What follows is a sample showing a state activity and its generated code.

First, we show the `micca` source.
This is a state activity, so it would be part of a state model.
................................................................................
* There may be only one outstanding delayed signal for any given event
  between any sending / receiving pair of instances (which might be the same
  instance).
  This is the same as saying that delayed events are identified by
  the name of the event, the sending instance and the receiving instance.
  This is a rule of the XUML execution semantics.
* The unit of time is milliseconds, so there is no way to have really
  short signal delays.
* The delay time is the *minimum* time before the signal will be delivered.
  Software execution can introduce small additional delays or jitter.
* Delivery of any delayed signal starts a new
  <<thread-of-control,_thread of control_>>.
* It is acceptable to have a delay time of zero.  This means the event is
  queued immediately and,
  when it is dispatched,
................................................................................
    }
}
----

This approach can be tedious if there are even a modest number
of subtype classes and we insist upon covering all the possible subclasses.
To help this situation,
`micca` provides an embedded command called, `classify`,
that outwardly appears similar to a `switch` statement on the subclass type.

----
<%R22 classify product prodtype     %>
<%  subclass Book_Product           %>
    // Here, prodtype is a reference to a Book_Product instance
    // Do something with protype appropriate for a Book_Product

Changes to micca/src/wmctrl-trace.txt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2019-06-16T16:27:44.062.552: Transition: ?.? - Start -> WashingMachine.wm1: Stopped ==> FillingToWash
2019-06-16T16:27:44.062.644: Transition: WashingMachine.wm1 - Fill -> ClothesTub.ct1: Empty ==> Filling
2019-06-16T16:27:47.062.839: Transition: ?.? - TubFull -> ClothesTub.ct1: Filling ==> Full
2019-06-16T16:27:47.062.925: Transition: ClothesTub.ct1 - Full -> WashingMachine.wm1: FillingToWash ==> Washing
2019-06-16T16:27:47.062.972: Transition: WashingMachine.wm1 - Agitate -> ClothesTub.ct1: Full ==> Agitating
2019-06-16T16:28:02.063.131: Transition: WashingMachine.wm1 - Done -> WashingMachine.wm1: Washing ==> DrainingWash
2019-06-16T16:28:02.063.268: Transition: WashingMachine.wm1 - Drain -> ClothesTub.ct1: Agitating ==> Emptying
2019-06-16T16:28:05.063.484: Transition: ?.? - TubEmpty -> ClothesTub.ct1: Emptying ==> Empty
2019-06-16T16:28:05.063.570: Transition: ClothesTub.ct1 - Empty -> WashingMachine.wm1: DrainingWash ==> FillingToRinse
2019-06-16T16:28:05.063.603: Transition: WashingMachine.wm1 - Fill -> ClothesTub.ct1: Empty ==> Filling
2019-06-16T16:28:08.063.803: Transition: ?.? - TubFull -> ClothesTub.ct1: Filling ==> Full
2019-06-16T16:28:08.063.883: Transition: ClothesTub.ct1 - Full -> WashingMachine.wm1: FillingToRinse ==> Rinsing
2019-06-16T16:28:08.063.923: Transition: WashingMachine.wm1 - Agitate -> ClothesTub.ct1: Full ==> Agitating
2019-06-16T16:28:18.064.092: Transition: WashingMachine.wm1 - Done -> WashingMachine.wm1: Rinsing ==> DrainingRinse
2019-06-16T16:28:18.064.165: Transition: WashingMachine.wm1 - Drain -> ClothesTub.ct1: Agitating ==> Emptying
2019-06-16T16:28:21.064.387: Transition: ?.? - TubEmpty -> ClothesTub.ct1: Emptying ==> Empty
2019-06-16T16:28:21.064.474: Transition: ClothesTub.ct1 - Empty -> WashingMachine.wm1: DrainingRinse ==> Spinning
2019-06-16T16:28:21.064.516: Transition: WashingMachine.wm1 - Spin -> ClothesTub.ct1: Empty ==> Spinning
2019-06-16T16:28:36.064.652: Transition: WashingMachine.wm1 - Done -> WashingMachine.wm1: Spinning ==> Stopped
2019-06-16T16:28:36.064.816: Transition: WashingMachine.wm1 - Stop -> ClothesTub.ct1: Spinning ==> StoppingSpin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2019-12-18T16:32:12.865.581: Transition: ?.? - Start -> WashingMachine.wm1: Stopped ==> FillingToWash
2019-12-18T16:32:12.865.655: Transition: WashingMachine.wm1 - Fill -> ClothesTub.ct1: Empty ==> Filling
2019-12-18T16:32:15.865.792: Transition: ?.? - TubFull -> ClothesTub.ct1: Filling ==> Full
2019-12-18T16:32:15.865.878: Transition: ClothesTub.ct1 - Full -> WashingMachine.wm1: FillingToWash ==> Washing
2019-12-18T16:32:15.865.928: Transition: WashingMachine.wm1 - Agitate -> ClothesTub.ct1: Full ==> Agitating
2019-12-18T16:32:30.866.045: Transition: WashingMachine.wm1 - Done -> WashingMachine.wm1: Washing ==> DrainingWash
2019-12-18T16:32:30.866.100: Transition: WashingMachine.wm1 - Drain -> ClothesTub.ct1: Agitating ==> Emptying
2019-12-18T16:32:33.866.226: Transition: ?.? - TubEmpty -> ClothesTub.ct1: Emptying ==> Empty
2019-12-18T16:32:33.866.287: Transition: ClothesTub.ct1 - Empty -> WashingMachine.wm1: DrainingWash ==> FillingToRinse
2019-12-18T16:32:33.866.308: Transition: WashingMachine.wm1 - Fill -> ClothesTub.ct1: Empty ==> Filling
2019-12-18T16:32:36.866.423: Transition: ?.? - TubFull -> ClothesTub.ct1: Filling ==> Full
2019-12-18T16:32:36.866.483: Transition: ClothesTub.ct1 - Full -> WashingMachine.wm1: FillingToRinse ==> Rinsing
2019-12-18T16:32:36.866.508: Transition: WashingMachine.wm1 - Agitate -> ClothesTub.ct1: Full ==> Agitating
2019-12-18T16:32:46.866.612: Transition: WashingMachine.wm1 - Done -> WashingMachine.wm1: Rinsing ==> DrainingRinse
2019-12-18T16:32:46.866.676: Transition: WashingMachine.wm1 - Drain -> ClothesTub.ct1: Agitating ==> Emptying
2019-12-18T16:32:49.866.765: Transition: ?.? - TubEmpty -> ClothesTub.ct1: Emptying ==> Empty
2019-12-18T16:32:49.866.834: Transition: ClothesTub.ct1 - Empty -> WashingMachine.wm1: DrainingRinse ==> Spinning
2019-12-18T16:32:49.866.862: Transition: WashingMachine.wm1 - Spin -> ClothesTub.ct1: Empty ==> Spinning
2019-12-18T16:33:04.866.965: Transition: WashingMachine.wm1 - Done -> WashingMachine.wm1: Spinning ==> Stopped
2019-12-18T16:33:04.867.024: Transition: WashingMachine.wm1 - Stop -> ClothesTub.ct1: Spinning ==> StoppingSpin