Rules and Standards |
CAA V5 Authorized API Identification, Usage, Deprecation, and StabilityUnderstanding CAA Authorized API mechanisms and tags |
Technical Article |
AbstractThis article gives you rules regarding CAA Authorized API qualifiers and usage. |
V5 configurations and products may include Authorized APIs that can be used to create client applications. The APIs authorized by a configuration or a product are located in the PublicInterfaces directories of one or several frameworks of the configuration or the product. Additional APIs may be found in these directories, for example:
#include
statement standpointClient applications can use only CAA Authorized APIs tagged using CAA Authorized API qualifiers. These qualifiers help to distinguish them from the others supplied only for build purpose. In addition, some Authorized APIs, such as classes or interfaces, may be only partially authorized. For example, a class may authorize only a subset of its methods. As a CAA developer, to know what you can use, you can either:
Remember that what is NOT documented in the CAA Encyclopedia is a DS Internal Resource and CANNOT be used in a client application.
Java APIs do not include CAA Authorized API qualifiers. Only documented Java APIs are authorized and can be used.
[Top]
These qualifiers are located at the top of the file and enclosed in a /**
*/
#ifndef CATTopologicalBlend_H #define CATTopologicalBlend_H // COPYRIGHT DASSAULT SYSTEMES 1999 /** * @CAA2Level L1 * @CAA2Usage U1 */ |
The meaning of these qualifiers is:
@CAA2Level L1 |
Marks the header as an Authorized API |
@CAA2Usage U1 |
Defines the header intended usage. Valid values range from U0 to U6 |
Value | Meaning | Aim | Comment |
---|---|---|---|
L0 | Authorized API |
|
|
L1 | Authorized API | Provides Customers, Business Partners, and Adopters with reliable APIs to use to develop applications |
|
The usage of a header file depends on its intended use in the client application.
Value |
Usage Meaning |
U0 | Usage not yet specified. Reserved for L0 Authorized APIs. Nevertheless, L0 Authorized APIs can have a specified usage ranging from U1 to U6. |
U1 | Concrete class: use as is only. C++ usage The common usage is to either instantiate the class or retrieve an existing pointer to an instance of that class, and call its methods. |
U2 | Concrete class: may be derived. C++ usage The common usage is to create a new class that derives from this class, possibly reimplement some of its methods, and add new methods. Then it can be used in the client application. |
U3 | Interface: cannot be re-implemented, use as is only. C++ and IDL
usage The common usage is to retrieve a pointer to this interface onto a CAA component that implements it, and call its methods. |
U4 | Interface: can be re-implemented with a DS adapter. C++ usage The common usage is to implement this interface onto a client component, usually in an C++ extension class, by deriving the DS adapter, that is, the class provided by DS to be derived for this purpose. This class has a U2 usage, and provides the interface method implementations. Only a subset of the interface methods needs to be implemented, the remainder being implemented by the DS adapter. Usually, only the methods to implement are documented. U4 usage is followed by the adapter to use. For example, the CATIEdit interface must be implemented by a class that derives from the adapter CATExtIEdit: /** * @CAA2Level L1 * @CAA2Usage U4 CATExtIEdit */ |
U5 | Interface: must be totally re-implemented. C++ usage The common usage is to implement all the interface methods onto a client component. |
U6 | Interface: must be derived. C++ usage The common usage is to create an interface that derives from this interface without adding new methods, and to implement the derived interface. This is for example the case of a workbench or add-in exposed interface. |
[Top]
When a CAA Authorized API becomes obsolete, it is deprecated. Although this should be exceptional, the number of the CAA Authorized API makes it happen more frequently than wished. The deprecation process runs as follows:
[Top]
Client application compatibility depends on CAA Authorized API stability between SPs and releases.
CAA Authorized APIs are checked in a such a way that:
Run time compatible possible modifications between two successive SPs:
Build time compatible possible modifications between two successive releases:
[Top]
When scanning the header files, you may find two CAA tags in the comments located above any entity, such as class, interface, enum, typedef, #define or macro, or structure declaration, or global function or method prototype, that locally resets for that entity the CAA Authorized API qualifiers set for the header file. These two tags are:
Tag |
Meaning |
@nodoc | Do not use This depicts a DS Internal Resource. Its usage is prohibited. |
@deprecated | Do not use any longer This means that the API was authorized, but will be removed. See CAA Authorized API Deprecation. The tag syntax is as follows: /** * @deprecated V5R11 CATBaseUnknown * ... V5R11 means that the Authorized API is deprecated starting from V5R11, and that the replacing API is CATBaseUnknown. Its usage is prohibited starting with V5R13. |
[Top]
The CAA Authorized APIs are supplied by configuration and products:
To determine which CAA Authorized API are required by your application, go to the CAA Internet site. Register if you have not done it already, and go to the Developer's C++ & Java home page. Click CONFIGURATION CONTENTS in the left frame, and select a V5 release, a media, and a configuration or a product to know which frameworks it supplies.
[Top]
The RADE tools process differently the CAA Authorized APIs, CAA Deprecated APIs, and DS Internal Resources.
Domain | Build | Documentation | Unauthorized Symbols | Stability Checking |
---|---|---|---|---|
Behavior | No warning is generated, except if the API is deprecated. | Authorized APIs appear in the CAA V5 Encyclopedia. | Authorized APIs are not stored within the "Unauthorized symbols" database. | A build time stability is insured between releases, except
if the Authorized API was deprecated two releases before.
A runtime stability is insured between SPs or the same release: no change is allowed within a release. |
[Top]
Domain | Build | Documentation | Unauthorized Symbols | Stability Checking |
---|---|---|---|---|
Behavior | No warning is generated, except if the API is deprecated. | Deprecated APIs appear in the CAA V5 Encyclopedia as deprecated, and show up their replacing Authorized API. | Deprecated APIs are not stored within the "Unauthorized symbols" database. | A build time stability is insured between releases, except
if the Authorized API was deprecated two releases before.
A runtime stability is insured between SPs or the same release: no change is allowed within a release. |
[Top]
The DS Internal Resources usage is prohibited.
Domain | Build | Documentation | Unauthorized Symbols | Stability Checking |
---|---|---|---|---|
Behavior |
|
DS Internal Resources do not appear in the CAA Encyclopedia. | DS Internal Resources are stored within the "Unauthorized symbols" database. | No stability check is insured. |
[Top]
Version: 1.0 [Jan 2000] | Document created |
Version: 1.1 [Nov 2000] | L0, L2, U6, U7 notions added. |
Version: 1.2 [Dec 2000] | U8 notion added. |
Version: 1.3 [Aug 2002] | L2, U7, U8 notions removed. |
Version: 1.4 [Feb 2003] | Deprecation, stability notions, additional tags, and required APIs added |
Version: 1.5 [Feb 2004] | Authorized APIs and DS Internal Resources added |
[Top] |
Copyright © 1994-2003, Dassault Systèmes. All rights reserved.