A TTCN-3 programozási nyelv

Függvények és paraméterezés

Ahogy sok más nyelv , a TTCN-3 is lehetőséget biztosít a saját funkcionalitások függvényekbe való rendezésére. A függvények alapelve tehát megegyezik szinte minden más programozási nyelvével, abban viszont egyediek, hogy megszorításokat tehetünk a komponensek típusaira amin futni fognak.

A függvények definíciója tehát:

function <függvényazonosító> ([formális paraméterlista]) [runs on <komponens típus>] [returns <típus>] { <lokális definíciók és utasítások> }

Az ADA-ból már jól ismert in out illetve inout kulcsszavakkal határozhatjuk meg a függvényparaméterek átadásának típusát (érték szerinti az in, referencia szerinti az inout illetve out).

function MyFunc(in integer MyInteger)return integer{} function MyCommunicator() runs on MyCompType { PCO1.send(5); }

Lehetőség van továbbá függvényreferenciák létrehozására is, ekkor a kapcsolatot a refers, a függvényhívást pedig az apply eljárás segítségével valósíthatjuk meg.

type function MyFuncType() runs on MyCompType; var MyFunctionType myFunc := null; myFunc := refers(MyFunc); myFunc.apply(5);

Léteznek speciális, beépített függvények melyek bármikor a rendelkezésünkre állnak:

Paraméterezés

A TTCN3 nyelvben paraméterezhetőek a modulok, a template-ek, a függvények, az altsep-ek valamint a testcase-ek. Paraméterként használhatóak: értékek, template-ek, timer-ek és portok.

Engedélyezett paramétertipusok:
1.es táblázat: Engedélyezett paramétertipusok
KulcsszóEngedélyezett paramétertipusEngedélyezett paraméterezési formaEngedélyezett paramétertípusok
moduleértékstatikus, futás elejénösszes alap típus, összes felhasználó által definiált típus, address típus
templateérték és templatedinamikus, futásidőbenösszes alap típus, összes felhasználó által definiált típus, address típus, template típus
functionérték, template, port és timerdinamikus, futásidőbennösszes alap típus, összes felhasználó által definiált típus, address, component, port, default, template, timer típus
alstepérték, template, port és timerdinamikus, futásidőbenösszes alap típus, összes felhasználó által definiált típus, address, component, port, default, template, timer típus
testcaseérték, template, port és timerdinamikus, futásidőbenösszes alap típus, összes felhasználó által definiált típus, address típus, template típus

Formális paraméterek

Paraméterezett templatek, függvények, alstep-ek és testcase-ek formális paramétereit formális paraméter listában adhatjuk meg. A modulok formális paramétereit a modul paraméter definíciós részében adjuk meg (modulepar). A formális paraméterek in, out, inout paraméterek lehetnek, amennyiben ezt nem adjuk meg explicit módon, akkor in paraméter lesz. Az in típusú paramétereknek lehet alapértelmezett értékük, melyet abban az esetben használunk, ha nem adunk át aktuális paramétert. Az out típusúak ugyan olvashatóak a parametizált objektumon belül, de mégse lehet aktuális paraméterként átadni. Adott objektumon belül olvasás előtt, írni kell.

Érték típusú formális paraméterek

Az összes alap típus, az összes felhasználó által létrehozott típus, az address típus, a component típus, és a default átadható értékparaméterként. Érték típusú formális paraméterek ugyanúgy használhatóak, mint pl az értékek a kifejezésekben. Modulok esetében az érték szerinti paraméterezés engedélyezett, viszont modulparaméterek esetében a futtatás indítása előtt ismerni kell ezek értékét, futás közben nem módosithatóak, ugymond statikus paraméterezés. Érték szerint paraméterezés használható továbbá template-ek, testcase-ek, alstep-ek, és függvények esetében. Ezek esetében a paraméterezés dinamikus, azaz futásidőben kell megadni a paraméterek értékét. Néhány nyelvi elem esetében nem engedélyezett a paraméterezés. Ilyenek a const, var, timer, control, record of, set of, enumerated, port, component, altípusok definíciója, group és import. A templatek, és a defaultként aktivált alstepek esetében csak in típusú formális paraméter adható meg. A runs on-ban megadott komponens elemei nem lehetnek alapértelmezett értékei az in tipusú paramétereknek.Component típusu formális paraméter esetén a következő alapértelmezett értékek engedélyezettek: null, mtc, self vagy system. Default típusú formális paraméter alapértelmezett értéke csak null lehet.

Template típusú formális paraméterek

A template típusú paramétereket arra használjuk, hogy parametizált objektumoknak templateket adjunk át. Template-ek, függvények, alstep-ek, és testcase-ek esetében használhatunk template típusú formális paramétert. A template kulcsszó használatával jelezhetjük, hogy template típusú paramétert vár az adott objektum. A templatek, a defaultként aktivált alstepek és komponens viselkedéseként indított függvények esetében csak in típusú formális paraméter adható meg.

Timer típusú formális paraméterek

Függvényeket, és alstep-eket lehet timer típusú paraméterrel paraméterezni. A timer típusú paraméternek inout típusúnak kell lennie. A paraméterként átadott timer állapota átadáskor nem változik meg. Pl ha az átadás pillanatában fut, átadás után is running státuszban marad, nem lesz implicit módon leállitva. A timer kulcsszóval jelöljük, hogy timer tipusú paraméterről van szó.

Port típusú formális paraméterek

Függvényeknek és altsepeknek lehet port típusú formális paramétere. A paraméterként átadott portok ugyanúgy használhatóak, mint bármely más port, nem kell őket külön a runs on klózban megadott komponensben deklarálni őket. A paraméterként átadott portokra, ugyanúgy mint a timerekre érvényes a státusz megőrzése, azaz a paraméter átadás során nem változik a státuszuk. Pl egy elindított port továbbra is fog küldeni/fogadni üzeneteket, nem lesz implicit módon leállítva, tehát a parametizált objektumon belül továbbra is küldhetünk/fogadhatunk az adott porton. A port típusú formális paramétereknek szintén inout típusúnak kell lenni.

Aktuális paraméterek

Parametizált objektumoknak érték, template, timer és port típusú aktuális paramétereket adhatunk át. Aktuális paramétereket átadhatunk a formális paraméterek listájával megegyező sorrendű listában, avagy értékadás operátorral, explicit módon a formális paraméterek neveinek felhasználásával. Lista formátumű megadás esetén az aktuális paraméterlistának meg kell egyezni a formális paraméterlistával. Minden alapértelmezett érték néküli formális paraméterhez rendelni kell egy aktuális paramétert. Alapértelmezett értékkel rendelkező formális paraméter kihagyható a listában, ennek jelölése „-”. Alapértelmezett értékekkel rendelkező formális paraméterek esetében az aktuális paraméter elhagyható, amennyiben nem követi olyan formális paraméter a listában, amelynek nincs alapértelmezett értéke. A két fajta megadási módszer nem keverhető, vagy listát használunk vagy explicit értékadást. Az aktuális paraméter típusúnak meg kell egyezni a formális paraméter típusával.