Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
Znav
nextObjective-C Mapping for Identifiers
prevClient-Side Slice-to-Objective-C Mapping

Because Objective-C does not support namespaces, a Slice module maps to a prefix for the identifiers defined inside the modules. By default, the prefix is the same as the name of the module:

Wiki Markup
{zcode:slice}
module example
{
    enum Color { Red, Green, Blue };
};
{zcode}

With this definition, the Slice identifier Color maps to the Objective-C identifier exampleColor.

For nested modules, by default, the module identifiers are concatenated. For example, consider the following Slice definition:

Wiki Markup
{zcode:slice}
module outer {
    module inner {
        enum Color { Red, Green, Blue };
    };
};
{zcode}

With this definition, the Slice identifier Color becomes outerinnerColor in Objective-C.

You can use a metadata directive to change the default mapping to a different prefix. For example:

Wiki Markup
{zcode:slice}
["objc:prefix:OUT"]
module outer {
    enum Vehicle { Car, Truck, Bicycle };

    module inner {
        enum Color { Red, Green, Blue };
    };
};
{zcode}

With this definition, Vehicle maps to OUTVehicle. However, Color still maps to outerinnerColor, that is, the metadata directive applies only to types defined in the outer module, but not to types that are defined in nested modules. If you want to assign a prefix for types in the nested module, you must use a separate metadata directive, for example:

Wiki Markup
{zcode:slice}
["objc:prefix:OUT"]
module outer {
    enum Vehicle { Car, Truck, Bicycle };

    ["objc:prefix:IN"]
    module inner {
        enum Color { Red, Green, Blue };
    };
};
{zcode}

With this definition, Vehicle maps to OUTVehicle, and Color maps to INColor.

For the remainder of the examples in this chapter, we assume that Slice definitions are enclosed by a module Example that is annotated with the metadata directive ["objc:prefix:EX"].

Ztop
See Also
Zret
Znav
nextObjective-C Mapping for Identifiers
prevClient-Side Slice-to-Objective-C Mapping