Giter Club home page Giter Club logo

idlproc's Introduction

IDLproc

Usage

idlproc language [options] [--] infile [outfile]

language specifies the consumer to use and must be given as first argument. Supported: Pascal.

infile is the first input file.

outfile may be given as a file or directory name. If not given, the current directory is assumed. Giving a file name is only valid if -D was not used.

Options

  • -D --dependencies Follow dependencies via #include directives

IDL Dialect

IDL2pas uses a restricted version of MIDL with some features added from XPIDL.

Base Types

The following data types are considered "predefined" and guaranteed to have representations in all consumers. Const-, Reference- or Pointer-ness that is caused by direction modifiers (see Methods below) are not part of the type itself, but instead are generated by the consumer. Interface types are always considered to be passed as instance pointers. Note that this is in contrast to MIDL.

Type Name(s) C++ Equivalent ObjFPC Equivalent
Boolean bool Boolean
UInt8 unsigned char Byte
UInt16 unsigned short Word
UInt32 unsigned long DWORD
UInt64 unsigned long long QWORD
Int8 char Smallint
Int16 short Shortint
Int32 long Integer
Int64 long long Int64
Pointer void * Pointer
PtrInt size_t PtrInt
PtrUInt usize_t PtrUInt
CString char * (default system codepage) PAnsiChar
CUTF8String char * (encoded as UTF8) PUtf8Char
CWString wchar_t * (arbitrary encoding) PUnicodeChar
IID REFIID TGUID

Non-Declarative

  • #include "file.idl" Read data from file.idl next, return to next line in current file afterwards. Relative paths to the current file are allowed. May occur anywhere a token would be allowed, but must end on a line end.

  • Language-specific extensions:

    %{[lang]
    (language-specific code here)
    %}
    

    Emit code verbatim. Optionally give lang on first line to only emit for a specific language consumer. May only occur as top-level declaration.

Declarations

Declarations may optioanlly be wrapped in a MSIDL-Typelib-library definition, but this is not required.

Many Declarations accept Attributes specified before them, they are not spelled in syntax examples here for brevity. Relevant Attributes are given in the Declaration descriptions below.

  • Interface

    interface Name
    {
      [Declarations]
    };

    Attributes:

    • forward: Marks forward declaration, full declaration follows later.
    • uuid(IID): Interface GUID, required unless forward is set. Contents:
    • Method
    • Property
  • Module

    module Name
    {
      [Declarations]
    };

    Attributes:

    • dllname("filename.dll"): DLL (or SO) to import functions from Contents:
    • Constant
    • Method (will be translated as static imports)
  • Alias

    typedef TypeSpec Name; /* See "Array types" below */

    Attributes:

  • Enum

    typedef enum
    {
      EnumItem,
      EnumItem = Number
    } Name;

    Attributes:

    • enumsize(number): byte size of the enum, used to enforce packing
  • Struct

    typedef struct
    {
      TypeSpec Name; /* See "Array types" below */
    } Name;

    Attributes: Contents:

    • Field, see above
  • Method

    TypeSpec Name ( [ Parameter [, Parameter] ]);
    Parameter:
        [Attribute] [in|out|inout] TypeSpec Name /* See "Array types" below */

    Attributes for Parameters:

    • const: compiler hint that the parameter will not be modified. Note that this is different from the const that may be part of the TypeSpec proper.

    Parameters are by default passed by value. The [const] attribute does not change that, it only allows optimized checking for the consuming compiler. The direction modifiers allow changing this:

    without [const] with [const]
    nothing COM standard const
    in COM standard constref
    out by reference, input value is never used (invalid)
    inout by reference (invalid)
  • Property

    [readonly] attribute TypeSpec Name;

    Implies 2 Methods: TypeSpec GetName() and SetName(TypeSpec newval) (in order). Setter is only generated if readonly prefix is not given.

  • Array Types

    TypeSpec Name; /* No Array */
    TypeSpec Name[5]; /* Array with 5 elements, index 0..4 */
    TypeSpec Name[]; /* Dynamic Array (definition as pointer type is preferred for portability) */
    TypeSpec Name[5][4]; /* array[0..4] of array[0..3] of TypeSpec */
  • Callback

    typedef callback TypeSpec Name ( [ Parameter [, Parameter] ]);

    Function pointer commonly used for callbacks. Identical to Method decalaration, see above for full description. Note that in constrast to C(++), the pointer is implied and not attached to Name.

  • Const

    const TypeSpec Name = Value;

    Attributes for Parameters:

    • static_cast: Hint that the literal Value is not directly compatible to TypeSpec and may need an explicite type cast.

Refereces

idlproc's People

Contributors

martok avatar

Watchers

 avatar  avatar

Forkers

bravesoftdz

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.