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!