Introduction to the OS/2 API Documentation: Difference between revisions
mNo edit summary |
red desert removal |
||
Line 2: | Line 2: | ||
== Introduction == | == Introduction == | ||
OS/2 | The OS/2 API is not available for public domain. A range of OS/2 products includes API documentation. Latest OS/2 Toolkit is part of Convenience Packages and eComStation. | ||
Anyway, OS/2 Toolkit documentation contains errors, not all API documented etc. Lot of parts just not included. eComStation comes with newer interfaces, but they not described in any eComStation official documentation. | |||
not all API documented etc. Lot of parts just not included. eComStation comes with | |||
newer interfaces, but they not described in any eComStation official documentation. | |||
In 1996 The OS/2 API project was started. But [http://www.edm2.com/os2api/Various/Copyright.html copyright] issues not allowed to extend project after maintainers lost interest in it. | In 1996 The OS/2 API project was started. But [http://www.edm2.com/os2api/Various/Copyright.html copyright] issues not allowed to extend project after maintainers lost interest in it. | ||
Line 16: | Line 14: | ||
== API entry definition == | == API entry definition == | ||
Each API entry must be described and documented in common and standard representation form. Here is example of API function definition as used in the project ({this is comment}): | Each API entry must be described and documented in common and standard representation form. Here is example of API function definition as used in the project ({this is comment}): | ||
=== DosBeep {function name}=== | === DosBeep {function name}=== | ||
; DosBeep(frequency, duration) : {function definition. No types described here} | ;DosBeep(frequency, duration) : {function definition. No types described here} | ||
Generates the specified frequency on the computer's speaker. {general function description} | Generates the specified frequency on the computer's speaker. {general function description} | ||
==== Parameters ==== | ==== Parameters ==== | ||
; frequency - [[ | ; frequency - [[ULONG]] - input : {parameter description with type and stream direction} | ||
Frequency as Hertz with valid values from 37 through 32767. {parameter description} | Frequency as Hertz with valid values from 37 through 32767. {parameter description} | ||
; duration - [[ | ; duration - [[ULONG]] - input : | ||
Length of the sound in milliseconds. | Length of the sound in milliseconds. | ||
Line 34: | Line 30: | ||
==== Returns ==== | ==== Returns ==== | ||
NO_ERROR {list of return codes} | |||
ERROR_INVALID_FREQUENCY | |||
==== Module ==== | ==== Module ==== | ||
Line 47: | Line 43: | ||
==== Calling convention ==== | ==== Calling convention ==== | ||
[[Cdecl32]] {Calling convertion of function. Possible values are | [[Cdecl32]] {Calling convertion of function. Possible values are: Cdecl32, Cdecl16, Pascal32 & Pascal16} | ||
==== Example Code ==== | ==== Example Code ==== | ||
Line 61: | Line 57: | ||
==== OS Version Introduced ==== | ==== OS Version Introduced ==== | ||
OS/2 2.1 | OS/2 2.1 | ||
== Messages definition == | == Messages definition == | ||
Messages also can be interpreted as API entry. Usually you call API function | Messages also can be interpreted as API entry. Usually you call API function | ||
[[ | [[WinSendMsg]] and receive the result. Each message has some specific parameters | ||
and return codes. So, message also must be represented in some form. | and return codes. So, message also must be represented in some form. | ||
== [[SOM]] Interface definition == | == [[SOM]] Interface definition == | ||
SOM interfaces defined via [[the SOM Interface Definition Language]]. Module name not known all the time, so no module information. Calling convention is always [[Cdecl32]]. | SOM interfaces defined via [[the SOM Interface Definition Language]]. Module name not known all the time, so no module information. Calling convention is always [[Cdecl32]]. | ||
=== Interface === | === Interface === | ||
interface WPShadow : [[ | interface WPShadow : [[WPAbstract]] | ||
{ | { | ||
[[ | [[WPObject]] wpQueryShadowedObject]](in [[BOOL]] fLock); | ||
[[BOOL]] | [[BOOL]] wpSetShadowTitle (in [[PSZ]] pszNewTitle); | ||
[[BOOL]] | [[BOOL]] wpSetLinkToObject (in [[WPObject]] FromObject); | ||
#ifdef __SOMIDL__ | #ifdef __SOMIDL__ | ||
Line 96: | Line 85: | ||
minorversion = 2; | minorversion = 2; | ||
filestem = wpshadow; | filestem = wpshadow; | ||
metaclass = | metaclass = M_WPShadow; | ||
callstyle = | callstyle = oidl; | ||
dllname = "pmwp.dll"; | dllname = "pmwp.dll"; | ||
[[wpQueryTitle]]: override; | |||
wpSetup: override; | |||
wpSaveState: override; | |||
wpRestoreState: override; | |||
wpQueryStyle: override; | |||
wpInitData: override; | |||
wpUnInitData: override; | |||
wpSetTitle: override; | |||
wpFilterPopupMenu: override; | |||
wpModifyPopupMenu: override; | |||
wpMenuItemSelected: override; | |||
wpViewObject: override; | |||
wpMenuItemHelpSelected: override; | |||
wpCreateFromTemplate: override; | |||
wpOpen: override; | |||
wpInsertPopupMenuItems: override; | |||
wpInsertMenuItems: override; | |||
wpCreateShadowObject: override; | |||
wpDragOver: override; | |||
wpDrop: override; | |||
wpQueryDefaultHelp: override; | |||
wpConfirmDelete: override; | |||
wpConfirmObjectTitle: override; | |||
wpPrintObject: override; | |||
wpFormatDragItem: override; | |||
wpDraggedOverObject: override; | |||
wpDroppedOnObject: override; | |||
wpQueryNameClashOptions: override; | |||
wpFilterMenu: override; | |||
wpModifyMenu: override; | |||
somDefaultInit: override; | |||
somDestruct: override; | |||
}; | }; | ||
#endif /* __SOMIDL__ */ | #endif /* __SOMIDL__ */ | ||
Line 141: | Line 129: | ||
=== OS Version Introduced === | === OS Version Introduced === | ||
OS/2 2.1 | OS/2 2.1 | ||
== Types definition == | == Types definition == | ||
=== MyType {DataType Name} === | === MyType {DataType Name} === | ||
My description | My description | ||
==== Type ==== | ==== Type ==== | ||
List of the types fields, e.g. | List of the types fields, e.g. | ||
[[ | [[ULONG]] oNextEntryOffset | ||
[[ | [[FDATE]] fdateCreation | ||
===== C Declaration Method ===== | ===== C Declaration Method ===== | ||
One of the following: | One of the following: | ||
* typedef | * typedef | ||
Line 164: | Line 148: | ||
==== Fields ==== | ==== Fields ==== | ||
Explanation of the fields under type, e.g. | Explanation of the fields under type, e.g. | ||
oNextEntryOffset Offset of next entry. | oNextEntryOffset Offset of next entry. | ||
fdateCreation Date of file creation. | fdateCreation Date of file creation. | ||
==== Coment ==== | ==== Coment ==== | ||
Additional coments where applicable. | Additional coments where applicable. | ||
Line 177: | Line 158: | ||
=== ToDo === | === ToDo === | ||
Link to MB_OK can't be done yet | Link to MB_OK can't be done yet | ||
----- | ----- | ||
== Constants definition == | == Constants definition == | ||
=== [[ | === [[TRUE]] {Constant name }=== | ||
==== Type ==== | ==== Type ==== | ||
[[ | [[BOOL]] {Constant type} | ||
==== Value ==== | ==== Value ==== | ||
1 {Constant value} | 1 {Constant value} | ||
[[Category:The OS/2 API Project]] | [[Category:The OS/2 API Project]] |
Revision as of 14:09, 18 November 2016
by Prokushev, Daniel Lee Kruse, Anakor
Introduction
The OS/2 API is not available for public domain. A range of OS/2 products includes API documentation. Latest OS/2 Toolkit is part of Convenience Packages and eComStation.
Anyway, OS/2 Toolkit documentation contains errors, not all API documented etc. Lot of parts just not included. eComStation comes with newer interfaces, but they not described in any eComStation official documentation.
In 1996 The OS/2 API project was started. But copyright issues not allowed to extend project after maintainers lost interest in it. So, all work from the OS/2 API project was never completed.
After EDM/2 was relaunched, in 2004 Daniel Lee Kruse started OS/2 API Documentation pages. Wiki provided good chance to make this project live.
This article describes how any API entry must be described.
API entry definition
Each API entry must be described and documented in common and standard representation form. Here is example of API function definition as used in the project ({this is comment}):
DosBeep {function name}
- DosBeep(frequency, duration)
- {function definition. No types described here}
Generates the specified frequency on the computer's speaker. {general function description}
Parameters
- frequency - ULONG - input
- {parameter description with type and stream direction}
Frequency as Hertz with valid values from 37 through 32767. {parameter description}
- duration - ULONG - input
Length of the sound in milliseconds.
Constants
None. {list of used constants}
Returns
NO_ERROR {list of return codes} ERROR_INVALID_FREQUENCY
Module
DOSCALLS {name of export module}
Define (C/C++)
DOS_PROCESS {This entry optional and actual only for OS/2 Toolkit compatible C/C++ section. Controls include sequence}
Ordinal/Export name
286 {Ordinal and/or export name of function. Can be detected by LxLite, NeLite, etc.}
Calling convention
Cdecl32 {Calling convertion of function. Possible values are: Cdecl32, Cdecl16, Pascal32 & Pascal16}
Example Code
Not needed for this example listing.
{Here example code. Preffered language - C. But various language-specific voodoo (like C/C++ += -= ++ --) must not used. Minimal pointers<->ULONG conversions because potential error points.}
Related Functions
WinAlarm {Link to related functions}
Comments
I don't have any. {Function specific comments}
OS Version Introduced
OS/2 2.1
Messages definition
Messages also can be interpreted as API entry. Usually you call API function WinSendMsg and receive the result. Each message has some specific parameters and return codes. So, message also must be represented in some form.
SOM Interface definition
SOM interfaces defined via the SOM Interface Definition Language. Module name not known all the time, so no module information. Calling convention is always Cdecl32.
Interface
interface WPShadow : WPAbstract { WPObject wpQueryShadowedObject]](in BOOL fLock); BOOL wpSetShadowTitle (in PSZ pszNewTitle); BOOL wpSetLinkToObject (in WPObject FromObject); #ifdef __SOMIDL__ implementation { releaseorder: wpSetLinkToObject,withdrawn,wpSetShadowTitle,wpQueryShadowedObject; externalstem = wplink; local; externalprefix = shd_; majorversion = 1; minorversion = 2; filestem = wpshadow; metaclass = M_WPShadow; callstyle = oidl; dllname = "pmwp.dll"; wpQueryTitle: override; wpSetup: override; wpSaveState: override; wpRestoreState: override; wpQueryStyle: override; wpInitData: override; wpUnInitData: override; wpSetTitle: override; wpFilterPopupMenu: override; wpModifyPopupMenu: override; wpMenuItemSelected: override; wpViewObject: override; wpMenuItemHelpSelected: override; wpCreateFromTemplate: override; wpOpen: override; wpInsertPopupMenuItems: override; wpInsertMenuItems: override; wpCreateShadowObject: override; wpDragOver: override; wpDrop: override; wpQueryDefaultHelp: override; wpConfirmDelete: override; wpConfirmObjectTitle: override; wpPrintObject: override; wpFormatDragItem: override; wpDraggedOverObject: override; wpDroppedOnObject: override; wpQueryNameClashOptions: override; wpFilterMenu: override; wpModifyMenu: override; somDefaultInit: override; somDestruct: override; }; #endif /* __SOMIDL__ */ };
Comments
I don't have any.
OS Version Introduced
OS/2 2.1
Types definition
MyType {DataType Name}
My description
Type
List of the types fields, e.g.
ULONG oNextEntryOffset FDATE fdateCreation
C Declaration Method
One of the following:
- typedef
- typedef struct
- typedef const
- macro or #define
Fields
Explanation of the fields under type, e.g.
oNextEntryOffset Offset of next entry. fdateCreation Date of file creation.
Coment
Additional coments where applicable.
If anything in the type can't be done yet then leave a message in the talk page of the corresponding type, like this:
ToDo
Link to MB_OK can't be done yet
Constants definition
TRUE {Constant name }
Type
BOOL {Constant type}
Value
1 {Constant value}