### Navigation

- index
- next |
- previous |
- OpenSplice MATLAB Guide »

# 5. MATLAB without IDL

It is possible, but not recommended, to directly create MATLAB classes that represent DDS topics. This approach allows you to quickly start using Vortex DDS, but it has a number of disadvantages:

- without IDL, you cannot reliably define the topic in other language bindings.
- not all IDL types are available.

## 5.1. Creating a MATLAB Topic class

To create a Topic Class without IDL, create a MATLAB class that inherits from Vortex.AbstractType. The class will be interpreted as an IDL struct. Class properties will be interpreted as IDL struct fields. Finally, the class must define a static method getKey which returns a comma separated list of key fields for the topic.

The following shows a simple MATLAB class, ShapeType:

    classdef ShapeType < Vortex.AbstractType
        properties
            color     char  % IDL: string color;
            x         int32 % IDL: long x;
            y         int32 % IDL: long y;
            shapesize int32 % IDL: long shapesize;
        end

        methods (Static)
            function keys = getKey
                keys = 'color';
            end
        end
    end

The topic class defines four fields, and identifies the `color` field as the topic key.

You would use the topic class in the same way as one generated by IDLPP. The following example shows the creation of a DDS topic object from a topic class:

    % define a Vortex DDS topic called 'Circle'
    circleTopic = Vortex.Topic('Circle', ?ShapeType);

With the circleTopic variable, you can then create appropriate Vortex DDS readers and writers.

## 5.2. Mapping of MATLAB types to IDL types

When using an IDL-less Topic class, the Vortex DDS API for MATLAB makes maps property types to IDL types as follows:

MATLAB Type | IDL Type
--- | ---
logical | boolean
int8 | char
uint8 | octet
int16 | short
uint16 | unsigned short
int32 | long
uint32 | unsigned long
int64 | long long
uint64 | unsigned long long
single | float
double | double
char | string
class | equivalent IDL struct
enum class | equivalent IDL enum
not type | double

## 5.3. Creating arrays

When defining a topic class, you can make a field map to an IDL array by initializing it to an array of the appropriate dimensions. The MATLAB API for Vortex DDS recognizes arrays of most types as identifying IDL arrays. The one exception is that arrays of MATLAB `char` are still interpreted as an IDL string.

The following example shows an topic class that defines arrays:

    classdef ArrayTopic < Vortex.AbstractType
        properties
            x = zeros([1 4])        %IDL: double x[4];
            y int32 = zeros([3 4])  %IDL: long y[3][4];
        end
        methods (Static)
            function keys = getKey
                keys = ''; %No Key
            end
        end
    end

## 5.4. Unsupported Types

When creating topics with out IDL, you must accept the following restrictions:

- IDL sequences cannot be defined.
- arrays of IDL strings cannot be defined.
- bounded IDL strings cannot be defined.

### Navigation

- index
- next |
- previous |
- OpenSplice MATLAB Guide »