Trac is being migrated to new services! Issues can be found in our new
YouTrack instance and WIKI pages can be found on our
website.
- Timestamp:
-
May 26, 2007, 6:45:34 PM (17 years ago)
- Author:
-
ecoffey
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
v19
|
v20
|
|
8 | 8 | * Completely wrap libpurple API in .NET bindings. |
9 | 9 | * ~~Fix the Mysterious Seg Fault On Exit (tm).~~ |
10 | | * Re-examing and possibly re-implement signal-glue and API -glue code. |
11 | | * Give .NET Purple objects the ability to actually update their C counterpart (or create one). |
12 | | Possible solution: Every api Object thats mapped to a purple object would inherit from Object. Object would have a !IntPtr pointing to the C structure (or null if this is a "new" object). A potential constructor could look like: |
13 | | {{{ |
14 | | public class Object { |
15 | | private IntPtr _c_structure = null; |
16 | | Object(IntPtr struct) { |
17 | | _c_structure = struct; |
18 | | _updateFromStruct(); |
19 | | } |
20 | | } |
21 | | }}} |
22 | | And derived classes could be responsible for implementing _updateFromStruct(). Derived classes would also have to handle creation of their specific C struct: |
23 | | {{{ |
24 | | public class Buddy : Object { |
25 | | Buddy(IntPtr struct) |
26 | | : base(struct) |
27 | | { |
28 | | } |
29 | | |
30 | | Buddy() |
31 | | { |
32 | | _c_structure = purple_buddy_new_glue(); |
33 | | } |
34 | | } |
35 | | }}} |
36 | | * Right now delegates are invoked and just given an array of their data. Would be nice if we could explicitly state what they expect, e.g. {{{ OnBuddyStatusChanged(Buddy b, Status s) }}} |
37 | | * Possibly utilize an object cache mainly in the signal-glue code, so we're not constantly (re)building objects. |
| 10 | * ~~Re-examing and possibly re-implement signal-glue and API -glue code.~~ The glue code is now gone. The use of !DllImport has made it all pretty much obsolete. |
| 11 | * ~~Give .NET Purple objects the ability to actually update their C counterpart (or create one).~~ |
| 12 | * Would be nice if we could explicitly state what Delegates expect, e.g. {{{ OnBuddyStatusChanged(Buddy b, Status s) }}} This could probably be solved with the Manager idea discussed below. |
| 13 | * Possibly utilize an object cache in the api, and to manage the mappings between .net objects and their c struct counterparts so we're not constantly (re)building objects. |
38 | 14 | * [http://reaperworld.com/htdocs/monoloader.html grim provided gameplan] |
39 | 15 | |
… |
… |
|
42 | 18 | * Fix the build system so that make can be run successfully with multiple jobs. |
43 | 19 | |
44 | | === Loader Internals: === |
45 | | * There must be a better way for having the loader handle signals on behalf of .net plugins (will document the current implementation here). |
46 | | |
| 20 | == Loader Internals == |
| 21 | The api objects now directly tap into libpurple using !DllImport. This is true for purple_signal_connect also, which gives us a cleaner way to tie up signals in .Net. Going to need to explore an Object Manager so that plugins don't have to worry about !IntPtrs and what not. |
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!