diff options
Diffstat (limited to 'api/Specification.cpp')
-rw-r--r-- | api/Specification.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/api/Specification.cpp b/api/Specification.cpp index 09a0663d..6b0d09db 100644 --- a/api/Specification.cpp +++ b/api/Specification.cpp @@ -224,7 +224,20 @@ bool VersionInfo::scan(Scanner* scanner, int maxApiLevel) { return minVersion == 0 || minVersion <= maxApiLevel; } -Definition::Definition(const std::string& name) : mName(name), mDeprecated(false), mHidden(false) { +Definition::Definition(const std::string& name) + : mName(name), mDeprecated(false), mHidden(false), mFinalVersion(-1) { +} + +void Definition::updateFinalVersion(const VersionInfo& info) { + /* We set it if: + * - We have never set mFinalVersion before, or + * - The max version is 0, which means we have not expired this API, or + * - We have a max that's later than what we currently have. + */ + if (mFinalVersion < 0 || info.maxVersion == 0 || + (mFinalVersion > 0 && info.maxVersion > mFinalVersion)) { + mFinalVersion = info.maxVersion; + } } void Definition::scanDocumentationTags(Scanner* scanner, bool firstOccurence, @@ -323,6 +336,7 @@ void ConstantSpecification::scanConstantSpecification(Scanner* scanner, SpecFile Constant* constant = systemSpecification.findOrCreateConstant(name, &created); ConstantSpecification* spec = new ConstantSpecification(constant); constant->addSpecification(spec); + constant->updateFinalVersion(info); specFile->addConstantSpecification(spec, created); spec->mVersionInfo = info; @@ -348,6 +362,7 @@ void TypeSpecification::scanTypeSpecification(Scanner* scanner, SpecFile* specFi Type* type = systemSpecification.findOrCreateType(name, &created); TypeSpecification* spec = new TypeSpecification(type); type->addSpecification(spec); + type->updateFinalVersion(info); specFile->addTypeSpecification(spec, created); spec->mVersionInfo = info; @@ -529,6 +544,7 @@ void FunctionSpecification::scanFunctionSpecification(Scanner* scanner, SpecFile Function* function = systemSpecification.findOrCreateFunction(name, &created); FunctionSpecification* spec = new FunctionSpecification(function); function->addSpecification(spec); + function->updateFinalVersion(info); specFile->addFunctionSpecification(spec, created); spec->mUnexpandedName = unexpandedName; |