{"action":"created","issue":{"url":"https://api.github.com/repos/jasonhall/bwapi/issues/142","labels_url":"https://api.github.com/repos/jasonhall/bwapi/issues/142/labels{/name}","comments_url":"https://api.github.com/repos/jasonhall/bwapi/issues/142/comments","events_url":"https://api.github.com/repos/jasonhall/bwapi/issues/142/events","html_url":"https://github.com/jasonhall/bwapi/issues/142","id":59426929,"number":142,"title":"interfaces and portability","user":{"login":"GoogleCodeExporter","id":9614759,"avatar_url":"https://avatars.githubusercontent.com/u/9614759?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCodeExporter","html_url":"https://github.com/GoogleCodeExporter","followers_url":"https://api.github.com/users/GoogleCodeExporter/followers","following_url":"https://api.github.com/users/GoogleCodeExporter/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCodeExporter/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCodeExporter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCodeExporter/subscriptions","organizations_url":"https://api.github.com/users/GoogleCodeExporter/orgs","repos_url":"https://api.github.com/users/GoogleCodeExporter/repos","events_url":"https://api.github.com/users/GoogleCodeExporter/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCodeExporter/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/jasonhall/bwapi/labels/auto-migrated","name":"auto-migrated","color":"ededed"},{"url":"https://api.github.com/repos/jasonhall/bwapi/labels/Usability","name":"Usability","color":"ededed"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-03-02T00:52:00Z","updated_at":"2015-03-02T00:52:02Z","closed_at":"2015-03-02T00:52:00Z","body":"```\nforked issue 134, collecting facts:\n\n1.\nfact:\ncurrent interface is the \"abstract interface\". Read more under \"C++ Mature \nApproach: Using an Abstract Interface\" at \nhttp://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx . This \ninterface is only portable between C++ compilers. More on that under \"Why \nThis Works With Other Compilers\". \n\nplan:\nremove the abstract interface and let agents compile the receiver code. \nThis option became available since the bridge from issue 134.\nNote: \"receiver\" is coined as \"agent-side wrapper classes around bridge's \nprotocoll\"\n\n2.\nfact:\nMany nonC++ classes beg to use BWAPI. This feature is best implemented on \nthe agent's side. Since the bridge, the are no drawbacks this way.\n\nsuggestion:\nigalvelis has a promising project using swig to port the C++ receiver into \nany target language. Technically this is a better way than using sockets. \nI suggest making a wiki acticle for nonC++ users about portability and \nlink to igalvelis's project page, where they hopefully, soon will be able \nto download an adapter library for their target language.\nOr we could make igalvelis's project part of BWAPIs and publish the \nadapter libraries with our releases.\n```\n\nOriginal issue reported on code.google.com by `goo...@teabix.com` on 28 Nov 2009 at 12:58"},"comment":{"url":"https://api.github.com/repos/jasonhall/bwapi/issues/comments/76642817","html_url":"https://github.com/jasonhall/bwapi/issues/142#issuecomment-76642817","issue_url":"https://api.github.com/repos/jasonhall/bwapi/issues/142","id":76642817,"user":{"login":"GoogleCodeExporter","id":9614759,"avatar_url":"https://avatars.githubusercontent.com/u/9614759?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCodeExporter","html_url":"https://github.com/GoogleCodeExporter","followers_url":"https://api.github.com/users/GoogleCodeExporter/followers","following_url":"https://api.github.com/users/GoogleCodeExporter/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCodeExporter/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCodeExporter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCodeExporter/subscriptions","organizations_url":"https://api.github.com/users/GoogleCodeExporter/orgs","repos_url":"https://api.github.com/users/GoogleCodeExporter/repos","events_url":"https://api.github.com/users/GoogleCodeExporter/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCodeExporter/received_events","type":"User","site_admin":false},"created_at":"2015-03-02T00:52:02Z","updated_at":"2015-03-02T00:52:02Z","body":"```\nI dont think I need to wrap any interface that BWAgent.dll (when done) will \nprovide -\nswig should do it automatically.\n\nI am talking about generating code for the BWAgent itself. To automate writing \nof all\nthe methods that communicate between BWAPI.dll and BWApiAgent.dll. Would that \nnot be\nbetter than writing them all by hand? I expect you will need at least one \nmethod for\neach method in existing classes.\n\nCurrently I am able to parse all the h files in the include directory. \nPreviously\nattached ExampleAIModule.zip shows how I already can generate some helper \nmethods for\nall the classes. So changing this code to generate BWAPI/BWAgent communication \ncode\nshould be a snap. \n\nI would just need to understand exactly what kind of C++ needs to be generated.\n\nThe parser/generator source is available:\nhttp://breakablec.redirectme.net/svn/repos/trunk/BWParser\nUnfortunately it is absolutely documented and messy, i will try to add some \nReadme today.\n\n```\n\nOriginal comment by `igalve...@gmail.com` on 2 Dec 2009 at 1:58"}}