Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • T titan.core
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
    • Locked files
  • Issues 112
    • Issues 112
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • Eclipse ProjectsEclipse Projects
  • Eclipse Titan
  • titan.core
  • Issues
  • #546
Closed
Open
Issue created May 17, 2021 by Adam Knapp@aknappqwtMaintainer

Logging objects in Titan/TTCN-3

Sziasztok,

Belefutottam egy problemaba (lasd cim), amely a mellekelt archivumot, illetve a Queue.tcQueueLog-ot futtatva valik lathatova: (bocs, h nem gyomlaltam ki a nem szigoruan idetartozo reszeket)

testcase tcQueueLog() runs on GeneralComp {
     var UniversalCharstring uc0, uc1, uc2;
     var object v_obj;
     
  log("Create empty queue");
        var TitanQueue q := TitanQueue.create();
        log(q)
        log(q.toString());
        
        uc0 :=UniversalCharstring.create("FirstElement")
        q.add(uc0);
        uc1 :=UniversalCharstring.create("SecondElement")
        q.add(uc1);
        uc2 :=UniversalCharstring.create("ThirdElement")
        q.add(uc2);

    
    
  var  QueueForwardIterator iterator := q.iterator() => QueueForwardIterator;
    
   while(iterator.hasNext()  ){
      v_obj := iterator.next() => object; 
      log ("------>",v_obj)
      //log(iterator);  //!!!!!!  
    }
        
        
          log(q.toString());           
        log(q);   //  !!!!!!!      
         
 }

A konstruktor meghivasa utan letrehozott queue tipusu objektumot a Titan igy logolja ki /* log(q) */

08:43:36.504041 Queue.ttcn:229 TitanQueue: { Queue: { Collection: { Storable: { } } }, head := null, tail := null }

Nehany elem hozzaadasa utan viszont a log(q) lefagyasztja a Titan-t.

Hasonlokeppen az iterator logolasa is fagyast eredmenyez.

Az objektumon beluli pointer tipusu mezok kozvetlenul nem erhetok el, mivel nem lehetnek publikusak (gondolok itt a head-re es tail-re:

  type class TitanQueue extends Queue {
        private var Node head;
        private var Node tail;

        create() {
            head := null;
            tail := null;
        }
:
:
)

De barmikor lehet olyan publikus method-ot irni, amivel kiolvashatok,

Pl.

module TTCN3Queue {

import from TTCN3_standard_collections all;
import from StorableModule all;
import from OODataStructuresCommon all;

    type class QueueForwardIterator extends Iterator {  
    //from head to tail
   
        var Node nextNode;

        create(in Node listHead) {
            nextNode := listHead;
        }

        //public function @abstract hasNext() return boolean;
        public function hasNext() return boolean {
            return nextNode != null;
        }

        //public function @abstract next() return object;
        public function next() return object {
            var object toReturn := nextNode.getData();
            nextNode := nextNode.getNext();
            return toReturn;
        }
       
         public function nextN() return Node {
            var Node toReturn := nextNode;
            nextNode := nextNode.getNext();
            return toReturn;
        }      
       
       
    }

Es akkor a kiiratas szinten fagyassal vegzodik: Queue.ttcn

      while(iterator.hasNext()  ){
      v_obj := iterator.next() => object;
      log ("------>",v_obj);
     
      v_node := iterator.nextN() => Node;
      log ("+++++++>",v_node);
    }

Ket gondot latok alapvetoen:

  • A Titannak semmilyen korulmenyek kozott nem szabad lefagynia
  • Masreszt a szabvany semmilyen tampontot nem ad arra nezvest , h hogyan kell es lehet objektumokat logolni

Mint ahogy pl. Pythonban egy print ezt eredmenyezi: _main_.Valami object at 0x7ff6a218d2210

Vagy Java-ban ezt: Objektum@512ddf17

(bar az is hasznos lehetne, ha igyekeznenk az objektum valos tartalmat megjeleniteni).

Mindenesetre a masodik az egy szabvanyositasi kerdes; udvos lenne , ha a tool-ok egysegesen jelenitenek meg az objetumokat.

Gyuri, Kristof, mit gondoltok errol?

Udv

Assignee
Assign to
Time tracking

Copyright © Eclipse Foundation, Inc. All Rights Reserved.     Privacy Policy | Terms of Use | Copyright Agent