aboutsummaryrefslogtreecommitdiffstats
path: root/ApiExtractor
Commit message (Collapse)AuthorAgeFilesLines
* Process global enums in declaration orderMatthew Woehlke2015-02-191-3/+2
| | | | | | | | | | In the same vein as the previous commit, process global enums in order added (which presumably is declaration order). For what we're doing at this point, this may not be as critical, but again is needed to avoid a spurious test failure. Change-Id: If32a07fee2e7e9b7699e01eda3408ed57855e947 Reviewed-by: John Cummings <jcummings2@users.sf.net>
* Return enums in declaration order (order added)Matthew Woehlke2015-02-192-2/+10
| | | | | | | | | | | | | Modify _ScopeModelItem to return enums (from the enums() method) in the order that they were added (which presumably is the order in which they were declared). We must do this because we must process enumerations in the same order in order to resolve values, as later declared enums may refer to values from earlier declared enums (and in fact, this is exactly the case in the 'testenum' test), and the order we get just from QHash may not match declaration order. Change-Id: I15a05df98a2cee7ecccb6c82d3f9017735281245 Reviewed-by: John Cummings <jcummings2@users.sf.net>
* Add parsing of 'noexcept' keywordMatthew Woehlke2014-04-165-0/+25
| | | | | | | | | | | Teach Shiboken to parse the 'noexcept' keyword. This doesn't add any features (and we only support unconditional 'noexcept' for now), but addresses an internal error that causes shiboken to SEGV trying to parse modern versions of boost::intrusive_ptr. A test case to replicate the crash (without the other changes) is also added. Change-Id: I4713593dfd189c02ef4a2d7447d785b6d378019c Reviewed-by: John Ehresman <jpe@wingware.com>
* Fix function rejections (i.e. support overloads)Matthew Woehlke2014-04-161-0/+12
| | | | | | | | | | | | | | | | | | | | | Add an additional check to AbstractMetaBuilder::traverseFunction to also perform a quick-and-dirty construction of the function signature, and to check that against the rejections. Add a unit test for matching full signatures. Before, we were only testing the function name; as a result, a rejection like 'foo()' would never match (because the name does not have ()'s). This is especially helpful for rejecting specific overloads of functions while allowing others to be wrapped normally. (The unit test shows a not-so-far-fetched example why one might want to do this.) The signature building logic isn't very sophisticated and likely requires a very exacting match to the signature as it appears in the wrapped sources, but that's likely not a serious issue, and at any rate this is much better than not being able to match overloads at all. Change-Id: Ic686377477aacf54f79c7bd2013e9aea8521a4ea Reviewed-by: John Ehresman <jpe@wingware.com>
* Fix buffer overrun processing macro definitionsMatthew Woehlke2013-10-151-0/+2
| | | | | | | | | | | | | | Fix potential buffer overrun (__first iterator becomes > __last and starts processing garbage) when parsing macro definitions that would occur if a macro definition ends in a comment. This would cause the macro definition to contain incorrect content or even outright garbage (i.e. random memory) if the trailing comment is at the end of the file, as in boost/type_traits/detail/type_trait_def.hpp. In this worst case, the macro expansion could contain a NUL byte which would cause parsing to prematurely halt at the point of expansion. Change-Id: I94ded39d9a20dc9510d827bc18adb2dc1bad17f0 Reviewed-by: John Cummings <jcummings2@users.sf.net>
* Fix 'special' include handlingMatthew Woehlke2013-10-091-1/+1
| | | | | | | | | Fix handling of includes like '#include BOOST_USER_CONFIG'. This was failing due to an obvious logic error in how the preprocessor tests if the expanded symbol looks like an include file location. Change-Id: Ia085e5c081078d328d6fc84ff2a99681913a30b9 Reviewed-by: John Cummings <jcummings2@users.sf.net>
* Don't warn when inheriting from containerMatthew Woehlke2013-10-091-5/+10
| | | | | | | | | | Change AbstractMetaBuilder::setupInheritance to not warn about classes that inherit from known container types, even if the container type does not have a corresponding wrapper class (which in many or most cases it won't). Remove now-unneeded suppression for the same in 'sample'. Change-Id: I0a45636791eba36cf070ea082eb6ead6cb5947ef Reviewed-by: John Cummings <jcummings2@users.sf.net>
* Fix finding container base classesMatthew Woehlke2013-10-092-32/+64
| | | | | | | | | | | | | | | Move logic to find template classes to its own helper method, and newly use the helper in AbstractMetaBuilder::getBaseClasses. This fixes the latter not finding template base classes, which fixes class topological sorting in some cases. Unfortunately I have not figured out a reliable unit test for this, although printing a debug warning when finding the parent fails (or when a template lookup succeeds) is able to verify that this change is doing something useful. Change-Id: I2a5e0df4035393288b6f69ebc41dc0e64866a182 Reviewed-by: John Cummings <jcummings2@users.sf.net>
* Revert "Remove useless code."Matthew Woehlke2013-10-091-0/+3
| | | | | | | | | | | | | | This reverts commit 02c6e63ac8dbb8acde3bc19abd36fff0db65fd11. Apparently types derived from containers can have a container base class without the container class having a metaclass. This fixes the sample_strlist unit test crashing. (There may be another bug here, in Shiboken's don't-write-generated-source-if-not-changed logic, as the failure doesn't seem to reliably appear/disappear after an incremental build.) Change-Id: I5f60bfb784dca02d9766a32e7b7b8a8a529df5af Reviewed-by: John Ehresman <jpe@wingware.com>
* Refactor and improve added function resolvingMatthew Woehlke2013-09-263-14/+67
| | | | | | | | | | | | | | | | | | | | | | | | | Add a public function to create an AddedFunction::TypeInfo from a signature string. Change translateType to use this to do full recursive resolution on template arguments. Create a new helper function to do more intelligent parsing of template type name signatures, and use this in translateType. Taken together, this means that we now recognize both multiple arguments to template types of added functions, as well as template arguments that are themselves template types. We couldn't do this before due to the use of a regular expression to attempt to separate the template type name from its arguments. The test cases are updated to test these new features. Note, however, that it is now a fatal error if the template argument type cannot be determined. (Before we would just drop it and treat the type as a non-container.) However, 1) this should not be happening in a well formed type system, and 2) it's questionable if things wouldn't have fallen apart anyway from treating the presumed container as something else. Change-Id: I23c3a7f7e311e046642d951d6ad2236571fda6b8 Reviewed-by: John Cummings <jcummings2@users.sf.net>
* Remove useless code.Matthew Woehlke2013-09-251-3/+0
| | | | | | | | | | | | Remove code to set the type entry base container type in AbstractMetaBuilder::setupInheritance outside of setting up the container meta class. We do it anyway when the meta class is found, and fail if we can't find the meta class, so having just the type entry set is not really useful. (And this will allow us to simplify the code going forward.) Change-Id: I90389efc574d516703df0d6a26ba130769adfea7 Reviewed-by: John Cummings <jcummings2@users.sf.net>
* Write inititializations in topological orderMatthew Woehlke2013-09-242-0/+7
| | | | | | | | | | | | | | | | | | Add methods to various places in the hierarchy so that the generator can access the topologically ordered class list (in addition to the unordered class list). Modify CppGenerator::finishGeneration to use this. This fixes a failure to correctly create Python wrapper classes due to subclass wrappers being initialized before their base class (with the result that the looked-up type object for the base class is null, causing the derived class to be created without referencing the base). Also change one of the test cases to test that we correctly wrap a typedef of a template class derived from a non-template base (which was failing before this change for the aforementioned reason). Change-Id: Ib4dc2626a41cb7bb905ff4a302c2613ea12d026b Reviewed-by: John Cummings <jcummings2@users.sf.net>
* Clean up styleMatthew Woehlke2013-08-061-18/+19
| | | | | | | | Change wrapping and indent of some code in Handler::startElement to improve consistency. Change-Id: I13bae6bbb732e3c5791cf0079154feed8d8dcbd1 Reviewed-by: John Cummings <jcummings2@users.sf.net>
* Replaced Nokia copyrights in headerTeemu Kaukoranta2013-05-28156-156/+156
| | | | | | | | | | | | | | | | | | | | | | | | Replaced old Nokia copyrights with Digia copyrights. Removed "All rights reserved" strings without leading copyrights were removed (for example, 'Copyright SomeCompany, all rights reserved remain untouched). Did NOT touch contact details, will change them later. Excluded folders that have '3rdparty' in path. Used command: find . -path '*/3rdparty/*' -prune -o -exec grep -ilI -E '.*Copyright.*Nokia.*' {} \; | tee >(xargs sed -i -r '1,10 s/([ \t#*]*)(.*Copyright.*Nokia.*)/ \1Copyright \(C\) 2013 Digia Plc and\/or its subsidiary\(-ies\)\./I') >(xargs sed -i -r '1,10 s/(^[ \t#*]*)(all rights reserved.*)/\1/I') This excludes binary files and retains whitespace and #* characters in the beginning of the edited lines. Change-Id: I0d49f991c3dbd45d804843f185714e8681bc6c51 Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com> Reviewed-by: Janne Anttila <janne.anttila@digia.com>
* Add test to illustrate issue on typedef enumSebastien Sable2013-03-012-0/+34
| | | | | | Change-Id: I0c95a5ba46a3392d5ff6bb5f40d300b07facf7e9 Reviewed-by: Sébastien Sablé <sable@users.sourceforge.net> Reviewed-by: Hugo Parente Lima <hugo.lima@openbossa.org>
* Find function modifications defined in the 2nd+ base class.John Ehresman2012-06-141-0/+3
| | | | | | | Fixes bug PYSIDE-54 Change-Id: Ic5c341741170cc77e8ebb59c46c746211582ddeb Reviewed-by: Marcelo Lira <marcelo.lira@openbossa.org>
* Fix compilation when there is no libxslt installed on the system.Paulo Alcantara2012-05-031-1/+2
| | | | | | | Signed-off-by: Paulo Alcantara <pcacjr@zytor.com> Change-Id: I7ea373535ff936b6a4fbf0071aff0a690925db15 Reviewed-by: Hugo Parente Lima <hugo.lima@openbossa.org>
* Disable docstring generation if tools aren't found.Hugo Parente Lima2012-04-271-2/+2
| | | | | Change-Id: I11d6b90c2ba924fbe182924e747fa39adc6981c6 Reviewed-by: Hugo Parente Lima <hugo.lima@openbossa.org>
* Remove data dir from ApiExtrator, it doesn't need to install anything now.Hugo Parente Lima2012-03-135-56/+0
|
* Removed all visibility macros from ApiExtractor since it's now a static lib.Hugo Parente Lima2012-03-1313-82/+68
|
* ApiExtractor merged into Shiboken as a static library.Hugo Parente Lima2012-03-133-86/+4
|
* Move ApiExtractor into ApiExtractor directory to ease the merge into Shiboken.Hugo Parente Lima2012-03-13206-0/+41665