Server
API Reference Guide
Product Documentation:

Rogue Wave Server
Documentation Home
List of all members | Static Public Member Functions
IlsDynModelInterpreter Class Reference

This class allows you to declare a dynamic model in a Rogue Wave Server application. More...

#include <ilserver/dynmoditp.h>

Static Public Member Functions

static IlsBoolean DeclAttribute (const IlsString &typeNm, const IlsString &attrNm, const IlsString &attrType, const IlsString &defValue=IlsString::Null, IlsBoolean staticScope=IlsFalse, IlsBoolean check=IlsFalse)
 Use this static member function to declare a dynamic attribute for the dynamic class typeNm. More...
 
static IlsBoolean DeclDerived (const IlsString &typeNm, const IlsString &attrNm, const IlsString &attrType)
 Use this static member function to declare a dynamic derived attribute for the dynamic class typeNm. More...
 
static IlsBoolean DeclEntry (const IlsString &typeNm, const IlsString &attrNm, const IlsString &attrType, const IlsString &defValue=IlsString::Null, IlsBoolean check=IlsFalse)
 Use this static member function to declare a dynamic entry attribute for the dynamic class typeNm. More...
 
static IlsBoolean DeclFun (const IlsString &typeNm, const IlsString &cbNm, const IlsString &resType, IlsString *params=0, int nbParam=0, IlsRTFunctionPtr cb=0)
 Use this static member function to declare a dynamic member function for the dynamic class typeNm. More...
 
static IlsBoolean DeclIdentifier (const IlsString &typeNm, const IlsString &attributeNm)
 This static member function can be used to declare the attributeNm attribute of the dynamic type typeNm as the identifier attribute. More...
 
static IlsBoolean DeclInvRelation (const IlsString &typeNm, const IlsString &invRelNm, const IlsString &originNm, const IlsString &relNm, IlsRTTypes::RelationKind k)
 Use this static member function to declare an inverse dynamic relation to the direct relation relNm registered for the type originNm, in the dynamic class typeNm. More...
 
static void DeclParentType (const IlsString &typeNm, const IlsString &rtParentType)
 This static member function can be used to declare an inheritance relationship between two types. More...
 
static IlsBoolean DeclRelation (const IlsString &typeNm, const IlsString &relationNm, const IlsString &targetNm, IlsRTTypes::RelationKind k, IlsBoolean mandatory=IlsFalse, IlsBoolean check=IlsFalse)
 Use this static member function to declare a dynamic relation for the dynamic class typeNm. More...
 
static IlsBoolean DeclScriptFun (const IlsString &typeNm, const IlsString &cbNm, const IlsString &resType, IlsString *params=0, int nbParam=0, const IlsString &scriptCode=IlsString::Null)
 Use this static member function to declare a dynamic method for the dynamic class typeNm. More...
 
static IlsBoolean DeclType (const IlsString &typeNm)
 Use this static member function to declare a dynamic class named typeNm to the runtime interpreter. More...
 
static IlsDynObjectGetDynamicObject (IlsViewed &)
 This static member function downcasts the viewed object to a dynamic object if its type has been registered as a dynamic type.
 
static void SetRelationImpl (const IlsString &typeNm, const IlsString &relNm, const IlsString &impl)
 This static member function declares an implementation for the dynamic relation relNm declared on the type typeNm. More...
 
static void UseDictionary (const IlsString &typeNm, IlsBoolean)
 This static member function declares a dynamic dictionary for the dynamic type typeNm. More...
 

Detailed Description

This class allows you to declare a dynamic model in a Rogue Wave Server application.

Library: dynmvsvr

Its role is similar to that of the class IlsModelInterpreter, although dynamic types do not have a C++ implementation. Instances of such types are dynamic objects whose structure is built at runtime. Note that dynamic types, as well as their attributes, relations and member functions, are declared to the server model interpreter via the standard classes IlsObjectType, IlsAttributeDef, IlsRelationDef and IlsFunctionDef.

All the declaration functions described below return IlsFalse if the dynamic element cannot be declared or has already been declared to the server model interpreter, or IlsTrue otherwise.

Usually, the member functions of this class are called transparently from the XMI parser which loads the dynamic model to the server. You can call any of them before your dynamic server is initialized but not after the dynamic views and script files have been loaded.

See also
IlsAttributeDef, IlsDynObject, IlsFunctionDef, IlsModelInterpreter, IlsObjectType, IlsRelationDef.

Member Function Documentation

◆ DeclAttribute()

static IlsBoolean IlsDynModelInterpreter::DeclAttribute ( const IlsString typeNm,
const IlsString attrNm,
const IlsString attrType,
const IlsString defValue = IlsString::Null,
IlsBoolean  staticScope = IlsFalse,
IlsBoolean  check = IlsFalse 
)
static

Use this static member function to declare a dynamic attribute for the dynamic class typeNm.

This attribute is implemented as a standard IlsMvValue object. It is not reactive, which means that when the attribute value is changed, the subscribed views will not be notified.

The defValue argument is the default value of the dynamic attribute. It gets converted from the string to the actual type.

If the staticScope argument is set to IlsTrue, the attribute will be considered a static attribute of the dynamic type.

◆ DeclDerived()

static IlsBoolean IlsDynModelInterpreter::DeclDerived ( const IlsString typeNm,
const IlsString attrNm,
const IlsString attrType 
)
static

Use this static member function to declare a dynamic derived attribute for the dynamic class typeNm.

To reevaluate this attribute, Rogue Wave Server will look up for a method in this class, or in a base class whose name is: <attrNm>_evaluate().

See section Dynamic Member Functions in Chapter Dynamic Modeling Services of the Rogue Wave Server User's Guide.

◆ DeclEntry()

static IlsBoolean IlsDynModelInterpreter::DeclEntry ( const IlsString typeNm,
const IlsString attrNm,
const IlsString attrType,
const IlsString defValue = IlsString::Null,
IlsBoolean  check = IlsFalse 
)
static

Use this static member function to declare a dynamic entry attribute for the dynamic class typeNm.

The attrType parameter is the type name of the attribute. It can be a standard type or a user-defined type. The defValue argument is the default value of the dynamic attribute. It gets converted from the string to the actual type.

◆ DeclFun()

static IlsBoolean IlsDynModelInterpreter::DeclFun ( const IlsString typeNm,
const IlsString cbNm,
const IlsString resType,
IlsString params = 0,
int  nbParam = 0,
IlsRTFunctionPtr  cb = 0 
)
static

Use this static member function to declare a dynamic member function for the dynamic class typeNm.

You can supply a C++ implementation of type IlsRTFunction as the last argument to this method. If you do not, Rogue Wave Server will look for a corresponding Rogue Wave Views Script function.

◆ DeclIdentifier()

static IlsBoolean IlsDynModelInterpreter::DeclIdentifier ( const IlsString typeNm,
const IlsString attributeNm 
)
static

This static member function can be used to declare the attributeNm attribute of the dynamic type typeNm as the identifier attribute.

The attribute type must be a string. When an identifier is declared for a type, instances of this type must comply with the rules set out for IlsEntity object (see the macro ILS_ENTITY_DECL()). The virtual member function IlsDynObject::setKeyIdentifier() will be called just after dynamic objects have been created. If you choose to create such objects from a Rogue Wave Views Script script, you must provide an identifier as the argument.

◆ DeclInvRelation()

static IlsBoolean IlsDynModelInterpreter::DeclInvRelation ( const IlsString typeNm,
const IlsString invRelNm,
const IlsString originNm,
const IlsString relNm,
IlsRTTypes::RelationKind  k 
)
static

Use this static member function to declare an inverse dynamic relation to the direct relation relNm registered for the type originNm, in the dynamic class typeNm.

The k paremeter is the type of the relation. Possible values for k are ILS_INVERTED_1 or ILS_INVERTED_N.

The type originNm and the direct relation relNm must also be declared to the runtime interpreter.

◆ DeclParentType()

static void IlsDynModelInterpreter::DeclParentType ( const IlsString typeNm,
const IlsString rtParentType 
)
static

This static member function can be used to declare an inheritance relationship between two types.

The typeNm parameter must be the name of a dynamic type and the rtParentType parameter can be the name of either a dynamic or a static type. The parent type must have been declared to the runtime interpreter.

◆ DeclRelation()

static IlsBoolean IlsDynModelInterpreter::DeclRelation ( const IlsString typeNm,
const IlsString relationNm,
const IlsString targetNm,
IlsRTTypes::RelationKind  k,
IlsBoolean  mandatory = IlsFalse,
IlsBoolean  check = IlsFalse 
)
static

Use this static member function to declare a dynamic relation for the dynamic class typeNm.

The targetTypeNm parameter is the target of this relation. It can be either a dynamic or a static type.

The k parameter is the type of the relation. Possible values for k are ILS_OWNS_1, ILS_OWNS_N, ILS_USES_1 or ILS_USES_N.

The mandatory parameter indicates whether this unary relation is mandatory or not. (The parameter is not relevant for n-ary relations).

◆ DeclScriptFun()

static IlsBoolean IlsDynModelInterpreter::DeclScriptFun ( const IlsString typeNm,
const IlsString cbNm,
const IlsString resType,
IlsString params = 0,
int  nbParam = 0,
const IlsString scriptCode = IlsString::Null 
)
static

Use this static member function to declare a dynamic method for the dynamic class typeNm.

You can supply a Rogue Wave Views Script implementation using the scriptCode argument. The Script implementation will be interpreted by the Rogue Wave Server Script Manager.

◆ DeclType()

static IlsBoolean IlsDynModelInterpreter::DeclType ( const IlsString typeNm)
static

Use this static member function to declare a dynamic class named typeNm to the runtime interpreter.

If a static type exists with this name, the dynamic type is not declared.

◆ SetRelationImpl()

static void IlsDynModelInterpreter::SetRelationImpl ( const IlsString typeNm,
const IlsString relNm,
const IlsString impl 
)
static

This static member function declares an implementation for the dynamic relation relNm declared on the type typeNm.

Correct values for the impl argument are "pointer" for unary relations, and "set" "sortedlist" or "list" for n-ary relations.

◆ UseDictionary()

static void IlsDynModelInterpreter::UseDictionary ( const IlsString typeNm,
IlsBoolean   
)
static

This static member function declares a dynamic dictionary for the dynamic type typeNm.

A dictionary must be declared on any type that has defined an identifier attribute.