You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/Miscellaneous/Documentation Development.md
+12-48Lines changed: 12 additions & 48 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -81,56 +81,20 @@ These are modules within VBA and VBRUN:
81
81
>
82
82
> All non-alphabetic characters, as well as parameters, are removed from the links. All attribute names are in lowercase in the links. E.g. `ArrayBoundsChecks(Bool)` is referenced as `/tB/Core/Attributes#arrayboundschecks`.
Copy file name to clipboardExpand all lines: docs/Reference/Attributes.md
+67-4Lines changed: 67 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,6 +76,14 @@ Applicable to: [**Class**](Class)
76
76
77
77
Assigns a COM CLSID to a class. For details, [see this COM documentation page](https://learn.microsoft.com/en-us/windows/win32/com/com-class-objects-and-clsids).
78
78
79
+
## ClassInterface
80
+
81
+
twinBASIC doesn't supports this attribute directly. It supports its values under different names. See:
82
+
83
+
*[DualInterface](#dualinterface)
84
+
*[DispInterface](#dispinterface)
85
+
86
+
79
87
## CoClassCustomConstructor (String)
80
88
{: #coclasscustomconstructor }
81
89
@@ -208,7 +216,7 @@ Applicable to: [**Class**](Class)
Applicable to: [procedure in a **Class**](../Gloss#procedure)
239
+
240
+
Default members are accessed under the instance of the object itself, without specifying their name. For example, a class that offers indexable elements may have an **Item** property that is the default member:
241
+
242
+
```vb
243
+
ClassMyCollection
244
+
[DefaultMember]
245
+
PropertyGetItem(ByValindex&)AsString
246
+
' ...
247
+
EndProperty
248
+
249
+
[DefaultMember]
250
+
PropertyLetItem(ByValindex&,ByValvalue$)
251
+
' ...
252
+
EndProperty
253
+
EndClass
254
+
255
+
SubExample()
256
+
DimcollAsNewMyCollection
257
+
Debug.Print"Item #3: ",coll(3)' Property Get Item is invoked
Applicable to: [procedure in an Interface](../Gloss#procedure)
239
277
240
-
Defines a dispatch ID associated with the procedure.
278
+
Defines a dispatch ID associated with the procedure when exposed via **IDispatch**.
279
+
280
+
## DispInterface
281
+
282
+
Syntax: **[DispInterface]**
283
+
284
+
Applicable to: [**Interface**](Interface) in a **Library**
285
+
286
+
> [!NOTE]
287
+
> This attribute is generated in the **Library** modules that twinBASIC generates for COM references in a project. It cannot be manually created.
288
+
289
+
Indicates that the interface exposes methods via **IDispatch** late-binding. This is the default. Note that [**DualInterface**](#dualinterface) can also be specified, giving much improved performance over that of **IDispatch**-based interfaces.
241
290
242
291
## DllExport (optional Bool)
243
292
{: #dllexport }
@@ -262,6 +311,18 @@ Applicable to: [**Declare** (API declaration)](Declare)
262
311
263
312
Gives minor codegen size reduction on 32-bit API calls on the Intel platform. Has no effect on other platforms.
264
313
314
+
## DualInterface
315
+
316
+
Syntax: **[DualInterface]**
317
+
318
+
Applicable to: [**Interface**](Interface) in a **Library**
319
+
320
+
> [!NOTE]
321
+
>
322
+
> This attribute is generated in the **Library** modules that twinBASIC generates for COM references in a project. It cannot be manually created.
323
+
324
+
Indicates that the interface exposes methods through the OLE VTable binding. The latter has much improved performance over that of **IDispatch**-based interfaces.
0 commit comments