CortoScript: Describe data and/or interfaces for systems that require Semantic interoperability.Apache Thrift: from Apache, originally developed by Facebook.
Software systems based on IDLs include Sun's ONC RPC, The Open Group's Distributed Computing Environment, IBM's System Object Model, the Object Management Group's CORBA (which implements OMG IDL, an IDL based on DCE/RPC) and Data Distribution Service, Mozilla's XPCOM, Microsoft's Microsoft RPC (which evolved into COM and DCOM), Facebook's Thrift and WSDL for Web services. IDLs offer a bridge between the two different systems. In these cases the machines at either end of the link may be using different operating systems and computer languages. IDLs are commonly used in remote procedure call software. IDLs describe an interface in a language-independent way, enabling communication between software components that do not share one language, for example, between those written in C++ and those written in Java.
Note: In applying Rule 3, remember that not all of the associated functions make sense for all of the types.This article does not cite any sources. Of course, the home package of the reader is, as for all such function names, the package OP. The writer uses the standard (setf name) convention familiar to Lisp users. The reader has the same name as the named slot. It takes keyword initialization arguments whose names are the names of the named members of that type these initialize the given members.Įach named slot defines two functions: a reader and a writer. The constructor function corresponding to a type is identical to the (fully scoped) name of the type. For example, the named slots of a struct, union, or exception are its members the named slots of an interface are its attributes.įor each IDL type, there is an associated constructor function that creates a value of that type and there are accessors for each member. We can think of each of these types, informally, as denoting entities with named slots.
IDL defines many kinds of types: unions, structs, interfaces, and exceptions. Rule 3: Lisp functions corresponding to IDL types Here is an IDL example: module AĪnd in generated Lisp: (defpackage :example) (defun unbounded_data_p (sequence) (and (typep sequence 'sequence) (every #'(lambda(elt) (typep elt 'corba:long))))) (deftype example:unbounded_data() '(satisfies unbounded_data-p)) Let x be an object of type example:seq (param_is_valid x '(-2 3)) > T (param_is_valid x #(-200 33)) >T We will sometimes elide the quotation marks in describing the names of IDL (and other entities) when no confusion is likely to result.
We say that the outer IDL entity encloses the inner one. An IDL entity can be declared at the top-level or nested inside some other IDL entity.
Our specification is not formally rigorous, but we have tried to illustrate enough points with examples so that situations likely to arise in practice can be handled.īy "the IDL name of an IDL entity", we mean the string that is the simple name of that entity. Notation for naming can be confusing, so some care is needed.