diff -r 7c4a911dc066 -r 541af5ee3ed9 imgtools/buildrom/tools/cdfparser.pm --- a/imgtools/buildrom/tools/cdfparser.pm Fri Aug 13 14:59:05 2010 +0300 +++ b/imgtools/buildrom/tools/cdfparser.pm Wed Aug 18 17:23:33 2010 +0300 @@ -1,439 +1,439 @@ -# -# Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of the License "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# - -# This package contains routines to read the information from the Component Description Files. -package cdfparser; - -# Include Module package to use APIs to parse an XML file. -use genericparser; - -require Exporter; -@ISA=qw(Exporter); -@EXPORT=qw( - CreateCDFFileBinaryMapFromDir - GetBinaries - GetCDFFileName - LoadCDF - GetDynamicDependencies - GetBinaryInfo - GetIncludedFeatureList - GetExcludedFeatureList -); - -use strict; - -# Map between the CDF File Name and the corresponding list of binaries -# This is required so that one can fetch the list of binaries for a particular CDF file. -my %binaryCDFFileMap=(); - -# Include Feature List -# The list of features to be included for a given binary. -my @includeFeatureList; - -# Exclude Feature List -# The list of features to be excluded for a given binary. -my @excludeFeatureList; - -# List that contains the complete information of each binary -my %binaryInfo=(); - -my $warning_level = 0; - -# Absolute path that contains the CDF Files -my @cdfDirectories; - -# To extract the cdf files from the directory specified as input. The default directory is chosen if no -# input is specified. -sub CreateCDFFileBinaryMapFromDir -{ - - my @acdfDirList = @_; - # To store the list of cdf file names specified under the directory - my @cdfFileList; - - if ((scalar @acdfDirList) != 0) - { - foreach my $acdfDir (@acdfDirList) - { - opendir DIR, "$acdfDir"; - if(not grep /$acdfDir/i, @cdfDirectories) - { - push @cdfDirectories, $acdfDir; - } - - push (@cdfFileList, (grep /\.cdf/i, readdir DIR)); - foreach my $filename (@cdfFileList) - { - &CreateCDFFileBinaryMap(lc($filename), $acdfDir); - $binaryCDFFileMap{$filename}{path} = $acdfDir; - } - } - } -} - -# To create a mapping between the CDF file name and the corresponding list of binaries -sub CreateCDFFileBinaryMap -{ - my ($cdffilename, $aCdfDir) = @_; - - if( defined $binaryCDFFileMap{$cdffilename} ) - { - return; - } - - my $path; - if( defined $aCdfDir) - { - $path = "$aCdfDir\\$cdffilename"; - } - else - { - $path = $cdffilename; - } - - my $rootNode = &genericparser::getRootElement($path); - $binaryCDFFileMap{$cdffilename}{root} = $rootNode; - - my @binaryList = &genericparser::getChildElements($rootNode); - - my $binaryInfoRef; - foreach my $binary (@binaryList) - { - my $filename = &genericparser::getAttrValue($binary, "id"); - push @{$binaryCDFFileMap{$cdffilename}{binaries}}, $filename; -# This is required so that one can fetch the CDF file name in which the binary is present - $binaryInfoRef = \%{$binaryInfo{$filename}}; - $binaryInfoRef->{"filename"} = $cdffilename; - } -} - -# To get the complete list of binaries present in a given CDF file -# Input Parameter : CDF filename -# Returns the complete list of binaries -sub GetBinaries -{ - my $cdffilename = shift; - if (exists $binaryCDFFileMap{$cdffilename}) - { - return @{$binaryCDFFileMap{$cdffilename}{binaries}}; - } - else - { - return undef; - } -} - - -# To get the name of the CDF file that contains the input binary -# Input Parameter : Binary Name -# Returns the CDF file name -sub GetCDFFileName -{ - my $aBinary = lc(shift); - - if (exists $binaryInfo{$aBinary}) - { - my $binInfo = \%{$binaryInfo{$aBinary}}; - return $binInfo->{filename}; - } - else - { - return undef; - } - -} - -#Loads all the specified CDF files. -sub LoadCDF -{ - my @cdfFileList = @_; - - foreach my $afile (@cdfFileList) - { - CreateCDFFileBinaryMap($afile); - my $rootNode = $binaryCDFFileMap{$afile}{root}; - - # Get the total list of files present in the cdf file. - my @binaryList = &genericparser::getChildElements($rootNode); - - # Hash Reference to the hash map binaryInfo - my $binaryInfoHashRef; - - foreach my $binaryNode (@binaryList) - { - my $fileId = &genericparser::getAttrValue($binaryNode, "id"); - $binaryInfoHashRef = \%{$binaryInfo{$fileId}}; - &setBinaryInfo($binaryInfoHashRef, $binaryNode); - } - } - -} - -#Sets the information of the CDF file to a hash map -sub setBinaryInfo -{ - my ($aBinaryInfoRef, $aBinaryNode) = @_; - - # Set the File attributes - $aBinaryInfoRef->{"id"} = &genericparser::getAttrValue($aBinaryNode, "id"); - $aBinaryInfoRef->{"customisable"} = &genericparser::getAttrValue($aBinaryNode, "customisable"); - $aBinaryInfoRef->{"addressable"} = &genericparser::getAttrValue($aBinaryNode, "addressable"); - $aBinaryInfoRef->{"compress"} = &genericparser::getAttrValue($aBinaryNode, "compress"); - $aBinaryInfoRef->{"type"} = &genericparser::getAttrValue($aBinaryNode, "type"); - $aBinaryInfoRef->{"plugin_name"} = &genericparser::getAttrValue($aBinaryNode, "plugin_name"); - - # Check for the plugin, setting the plugin type as ECOM_PLUGIN - - if (defined $aBinaryInfoRef->{"plugin_name"}) - { - $aBinaryInfoRef->{"IsFoundInCDF"} = 1; - $aBinaryInfoRef->{"source"} = "ABI_DIR\\BUILD_DIR\\$aBinaryInfoRef->{id}"; - $aBinaryInfoRef->{"plugin_name"} =~ s/$aBinaryInfoRef->{plugin_name}/ECOM/; - } - - else { - - # Get all the nodes of element 'file' - my @children = &genericparser::getChildElements($aBinaryNode); - - foreach my $childNode (@children) - { - $aBinaryInfoRef->{"IsFoundInCDF"} = 1; - - if (&genericparser::getElementName($childNode) eq "source") - { - $aBinaryInfoRef->{"source"} = &genericparser::getElementValue($childNode); - } - - if (&genericparser::getElementName($childNode) eq "destination") - { - $aBinaryInfoRef->{"destination"} = &genericparser::getElementValue($childNode); - } - - if (&genericparser::getElementName($childNode) eq "features") - { - # The children nodes will specify the list of features - my @aFeatureNodes = &genericparser::getChildElements($childNode); - foreach my $aFeatureChildNode (@aFeatureNodes) - { - # A list of features can be listed out either for supported case or for the prevented case. - if (&genericparser::getElementName($aFeatureChildNode) eq "supports") - { - my @aSupportedFeatureNodes = &genericparser::getChildElements($aFeatureChildNode); - foreach my $aSuppChildNode (@aSupportedFeatureNodes) - { - my %feat = (); - my $featureName = &genericparser::getAttrValue($aSuppChildNode, "name"); - my $featureUID = &genericparser::getAttrValue($aSuppChildNode, "uid"); - if (defined ($featureName) and ($featureName ne "")) - { - $feat{name} = $featureName ; - $feat{uid} = undef; - } - elsif(defined ($featureUID) and ($featureUID ne "")) - { - if(&featureparser::ValidateUIDValue($featureUID)) - { - $featureUID = &featureparser::ConvertHexToDecimal($featureUID); - $feat{uid} = $featureUID; - $feat{name} = undef; - } - else - { - print "The uid value $featureUID specified for the Include feature list for the Binary, $aBinaryInfoRef->{id}, is not a valid number\n"; - } - } - else - { - print ("Warning: Feature $featureName has both name and Uid mentioned\n") if ($warning_level < 2); - next; - } - - $feat{include} = 1; - push @includeFeatureList, \%feat; - - } - } - if (&genericparser::getElementName($aFeatureChildNode) eq "prevents") - { - my @aPreventedFeatureNodes = &genericparser::getChildElements($aFeatureChildNode); - foreach my $aPreventedChildNode (@aPreventedFeatureNodes) - { - my %feat = (); - my $featureName = &genericparser::getAttrValue($aPreventedChildNode, "name"); - my $featureUID = &genericparser::getAttrValue($aPreventedChildNode, "uid"); - if (defined ($featureName) and ($featureName ne "")) - { - $feat{name} = $featureName ; - $feat{uid} = undef; - } - elsif(defined ($featureUID) and ($featureUID ne "")) - { - if(&featureparser::ValidateUIDValue($featureUID)) - { - $featureUID = &featureparser::ConvertHexToDecimal($featureUID); - $feat{uid} = $featureUID; - $feat{name} = undef; - } - else - { - print "The uid value $featureUID specified for the Exclude feature list for the Binary, $aBinaryInfoRef->{id}, is not a valid number\n"; - } - } - else - { - print "Warning: Feature $featureName has both name and Uid mentioned\n" if ($warning_level < 2); - next; - } - - $feat{exclude} = 1; - push @excludeFeatureList, \%feat; - - } - push @{$aBinaryInfoRef->{"prevents"}}, (&genericparser::getElementValue($aFeatureChildNode)); - } - } - } - - if (&genericparser::getElementName($childNode) eq "dynamicdependencies") - { - # The children nodes will contain the file name. - my @aDynDependNodes = &genericparser::getChildElements($childNode); - - foreach my $aDynDependChildNode (@aDynDependNodes) - { - # There can be a list of binaries for dynamic dependencies - if (&genericparser::getElementName($aDynDependChildNode) eq "depend") - { - push @{$aBinaryInfoRef->{"depend"}}, (&genericparser::getElementValue($aDynDependChildNode)); - } - } - } - - if (&genericparser::getElementName($childNode) eq "localisation") - { - # The children nodes will contain the language code - my @aLocalisationNodes = &genericparser::getChildElements($childNode); - - foreach my $aLocalisationChildNode (@aLocalisationNodes) - { - # There can be a list of binaries for dynamic dependencies - if (&genericparser::getElementName($aLocalisationChildNode) eq "default") - { - $aBinaryInfoRef->{"default"} = &genericparser::getElementValue($aLocalisationChildNode); - } - if (&genericparser::getElementName($aLocalisationChildNode) eq "language") - { - push @{$aBinaryInfoRef->{"language"}}, (&genericparser::getElementValue($aLocalisationChildNode)); - } - } - } - - if (&genericparser::getElementName($childNode) eq "options") - { - # The children nodes will contain the option details - my @aOptionNodes = &genericparser::getChildElements($childNode); - foreach my $aOptionChildNode (@aOptionNodes) - { - if (&genericparser::getElementName($aOptionChildNode) eq "multilinguify") - { - $aBinaryInfoRef->{"multilinguify"} = &genericparser::getElementValue($aOptionChildNode); - } - if (&genericparser::getElementName($aOptionChildNode) eq "stack") - { - $aBinaryInfoRef->{"stack"} = &genericparser::getElementValue($aOptionChildNode); - } - if (&genericparser::getElementName($aOptionChildNode) eq "heapmin") - { - $aBinaryInfoRef->{"heapmin"} = &genericparser::getElementValue($aOptionChildNode); - } - if (&genericparser::getElementName($aOptionChildNode) eq "heapmax") - { - $aBinaryInfoRef->{"heapmax"} = &genericparser::getElementValue($aOptionChildNode); - } - if (&genericparser::getElementName($aOptionChildNode) eq "fixed") - { - $aBinaryInfoRef->{"fixed"} = &genericparser::getElementValue($aOptionChildNode); - } - if (&genericparser::getElementName($aOptionChildNode) eq "priority") - { - $aBinaryInfoRef->{"priority"} = &genericparser::getElementValue($aOptionChildNode); - } - if (&genericparser::getElementName($aOptionChildNode) eq "uid1") - { - $aBinaryInfoRef->{"uid1"} = &genericparser::getElementValue($aOptionChildNode); - } - if (&genericparser::getElementName($aOptionChildNode) eq "uid2") - { - $aBinaryInfoRef->{"uid2"} = &genericparser::getElementValue($aOptionChildNode); - } - if (&genericparser::getElementName($aOptionChildNode) eq "uid3") - { - $aBinaryInfoRef->{"uid3"} = &genericparser::getElementValue($aOptionChildNode); - } - if (&genericparser::getElementName($aOptionChildNode) eq "dll") - { - $aBinaryInfoRef->{"dll"} = &genericparser::getElementValue($aOptionChildNode); - } - if (&genericparser::getElementName($aOptionChildNode) eq "dlldatatop") - { - $aBinaryInfoRef->{"dlldatatop"} = &genericparser::getElementValue($aOptionChildNode); - } - } - } - } - } -} - -# To get the complete list of information for a given binary -# Input Parameter : Binary -# Returns the detailed information for each binary -sub GetBinaryInfo -{ - my $aBinary = shift; - my $aBinaryInfoHash = \%{$binaryInfo{$aBinary}}; - if ($aBinaryInfoHash->{IsFoundInCDF}) - { - return $aBinaryInfoHash; - } - return undef; -} - -# To get the complete list of dynamic dependencies for a given binary -# Input Parameter : Binary -# Returns the complete list of dynamic dependencies -sub GetDynamicDependencies -{ - my $aBinary = shift; - - my $bin = \%{$binaryInfo{$aBinary}}; - - return \@{$bin->{"depend"}}; -} - -#Returns the included feature list -sub GetIncludedFeatureList -{ - return \@includeFeatureList; -} - -#Returns the excluded feature list -sub GetExcludedFeatureList -{ - return \@excludeFeatureList; -} - -1; +# +# Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of the License "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +# This package contains routines to read the information from the Component Description Files. +package cdfparser; + +# Include Module package to use APIs to parse an XML file. +use genericparser; + +require Exporter; +@ISA=qw(Exporter); +@EXPORT=qw( + CreateCDFFileBinaryMapFromDir + GetBinaries + GetCDFFileName + LoadCDF + GetDynamicDependencies + GetBinaryInfo + GetIncludedFeatureList + GetExcludedFeatureList +); + +use strict; + +# Map between the CDF File Name and the corresponding list of binaries +# This is required so that one can fetch the list of binaries for a particular CDF file. +my %binaryCDFFileMap=(); + +# Include Feature List +# The list of features to be included for a given binary. +my @includeFeatureList; + +# Exclude Feature List +# The list of features to be excluded for a given binary. +my @excludeFeatureList; + +# List that contains the complete information of each binary +my %binaryInfo=(); + +my $warning_level = 0; + +# Absolute path that contains the CDF Files +my @cdfDirectories; + +# To extract the cdf files from the directory specified as input. The default directory is chosen if no +# input is specified. +sub CreateCDFFileBinaryMapFromDir +{ + + my @acdfDirList = @_; + # To store the list of cdf file names specified under the directory + my @cdfFileList; + + if ((scalar @acdfDirList) != 0) + { + foreach my $acdfDir (@acdfDirList) + { + opendir DIR, "$acdfDir"; + if(not grep /$acdfDir/i, @cdfDirectories) + { + push @cdfDirectories, $acdfDir; + } + + push (@cdfFileList, (grep /\.cdf/i, readdir DIR)); + foreach my $filename (@cdfFileList) + { + &CreateCDFFileBinaryMap(lc($filename), $acdfDir); + $binaryCDFFileMap{$filename}{path} = $acdfDir; + } + } + } +} + +# To create a mapping between the CDF file name and the corresponding list of binaries +sub CreateCDFFileBinaryMap +{ + my ($cdffilename, $aCdfDir) = @_; + + if( defined $binaryCDFFileMap{$cdffilename} ) + { + return; + } + + my $path; + if( defined $aCdfDir) + { + $path = "$aCdfDir\/$cdffilename"; + } + else + { + $path = $cdffilename; + } + + my $rootNode = &genericparser::getRootElement($path); + $binaryCDFFileMap{$cdffilename}{root} = $rootNode; + + my @binaryList = &genericparser::getChildElements($rootNode); + + my $binaryInfoRef; + foreach my $binary (@binaryList) + { + my $filename = &genericparser::getAttrValue($binary, "id"); + push @{$binaryCDFFileMap{$cdffilename}{binaries}}, $filename; +# This is required so that one can fetch the CDF file name in which the binary is present + $binaryInfoRef = \%{$binaryInfo{$filename}}; + $binaryInfoRef->{"filename"} = $cdffilename; + } +} + +# To get the complete list of binaries present in a given CDF file +# Input Parameter : CDF filename +# Returns the complete list of binaries +sub GetBinaries +{ + my $cdffilename = shift; + if (exists $binaryCDFFileMap{$cdffilename}) + { + return @{$binaryCDFFileMap{$cdffilename}{binaries}}; + } + else + { + return undef; + } +} + + +# To get the name of the CDF file that contains the input binary +# Input Parameter : Binary Name +# Returns the CDF file name +sub GetCDFFileName +{ + my $aBinary = lc(shift); + + if (exists $binaryInfo{$aBinary}) + { + my $binInfo = \%{$binaryInfo{$aBinary}}; + return $binInfo->{filename}; + } + else + { + return undef; + } + +} + +#Loads all the specified CDF files. +sub LoadCDF +{ + my @cdfFileList = @_; + + foreach my $afile (@cdfFileList) + { + CreateCDFFileBinaryMap($afile); + my $rootNode = $binaryCDFFileMap{$afile}{root}; + + # Get the total list of files present in the cdf file. + my @binaryList = &genericparser::getChildElements($rootNode); + + # Hash Reference to the hash map binaryInfo + my $binaryInfoHashRef; + + foreach my $binaryNode (@binaryList) + { + my $fileId = &genericparser::getAttrValue($binaryNode, "id"); + $binaryInfoHashRef = \%{$binaryInfo{$fileId}}; + &setBinaryInfo($binaryInfoHashRef, $binaryNode); + } + } + +} + +#Sets the information of the CDF file to a hash map +sub setBinaryInfo +{ + my ($aBinaryInfoRef, $aBinaryNode) = @_; + + # Set the File attributes + $aBinaryInfoRef->{"id"} = &genericparser::getAttrValue($aBinaryNode, "id"); + $aBinaryInfoRef->{"customisable"} = &genericparser::getAttrValue($aBinaryNode, "customisable"); + $aBinaryInfoRef->{"addressable"} = &genericparser::getAttrValue($aBinaryNode, "addressable"); + $aBinaryInfoRef->{"compress"} = &genericparser::getAttrValue($aBinaryNode, "compress"); + $aBinaryInfoRef->{"type"} = &genericparser::getAttrValue($aBinaryNode, "type"); + $aBinaryInfoRef->{"plugin_name"} = &genericparser::getAttrValue($aBinaryNode, "plugin_name"); + + # Check for the plugin, setting the plugin type as ECOM_PLUGIN + + if (defined $aBinaryInfoRef->{"plugin_name"}) + { + $aBinaryInfoRef->{"IsFoundInCDF"} = 1; + $aBinaryInfoRef->{"source"} = "ABI_DIR\/BUILD_DIR\/$aBinaryInfoRef->{id}"; + $aBinaryInfoRef->{"plugin_name"} =~ s/$aBinaryInfoRef->{plugin_name}/ECOM/; + } + + else { + + # Get all the nodes of element 'file' + my @children = &genericparser::getChildElements($aBinaryNode); + + foreach my $childNode (@children) + { + $aBinaryInfoRef->{"IsFoundInCDF"} = 1; + + if (&genericparser::getElementName($childNode) eq "source") + { + $aBinaryInfoRef->{"source"} = &genericparser::getElementValue($childNode); + } + + if (&genericparser::getElementName($childNode) eq "destination") + { + $aBinaryInfoRef->{"destination"} = &genericparser::getElementValue($childNode); + } + + if (&genericparser::getElementName($childNode) eq "features") + { + # The children nodes will specify the list of features + my @aFeatureNodes = &genericparser::getChildElements($childNode); + foreach my $aFeatureChildNode (@aFeatureNodes) + { + # A list of features can be listed out either for supported case or for the prevented case. + if (&genericparser::getElementName($aFeatureChildNode) eq "supports") + { + my @aSupportedFeatureNodes = &genericparser::getChildElements($aFeatureChildNode); + foreach my $aSuppChildNode (@aSupportedFeatureNodes) + { + my %feat = (); + my $featureName = &genericparser::getAttrValue($aSuppChildNode, "name"); + my $featureUID = &genericparser::getAttrValue($aSuppChildNode, "uid"); + if (defined ($featureName) and ($featureName ne "")) + { + $feat{name} = $featureName ; + $feat{uid} = undef; + } + elsif(defined ($featureUID) and ($featureUID ne "")) + { + if(&featureparser::ValidateUIDValue($featureUID)) + { + $featureUID = &featureparser::ConvertHexToDecimal($featureUID); + $feat{uid} = $featureUID; + $feat{name} = undef; + } + else + { + print "The uid value $featureUID specified for the Include feature list for the Binary, $aBinaryInfoRef->{id}, is not a valid number\n"; + } + } + else + { + print ("Warning: Feature $featureName has both name and Uid mentioned\n") if ($warning_level < 2); + next; + } + + $feat{include} = 1; + push @includeFeatureList, \%feat; + + } + } + if (&genericparser::getElementName($aFeatureChildNode) eq "prevents") + { + my @aPreventedFeatureNodes = &genericparser::getChildElements($aFeatureChildNode); + foreach my $aPreventedChildNode (@aPreventedFeatureNodes) + { + my %feat = (); + my $featureName = &genericparser::getAttrValue($aPreventedChildNode, "name"); + my $featureUID = &genericparser::getAttrValue($aPreventedChildNode, "uid"); + if (defined ($featureName) and ($featureName ne "")) + { + $feat{name} = $featureName ; + $feat{uid} = undef; + } + elsif(defined ($featureUID) and ($featureUID ne "")) + { + if(&featureparser::ValidateUIDValue($featureUID)) + { + $featureUID = &featureparser::ConvertHexToDecimal($featureUID); + $feat{uid} = $featureUID; + $feat{name} = undef; + } + else + { + print "The uid value $featureUID specified for the Exclude feature list for the Binary, $aBinaryInfoRef->{id}, is not a valid number\n"; + } + } + else + { + print "Warning: Feature $featureName has both name and Uid mentioned\n" if ($warning_level < 2); + next; + } + + $feat{exclude} = 1; + push @excludeFeatureList, \%feat; + + } + push @{$aBinaryInfoRef->{"prevents"}}, (&genericparser::getElementValue($aFeatureChildNode)); + } + } + } + + if (&genericparser::getElementName($childNode) eq "dynamicdependencies") + { + # The children nodes will contain the file name. + my @aDynDependNodes = &genericparser::getChildElements($childNode); + + foreach my $aDynDependChildNode (@aDynDependNodes) + { + # There can be a list of binaries for dynamic dependencies + if (&genericparser::getElementName($aDynDependChildNode) eq "depend") + { + push @{$aBinaryInfoRef->{"depend"}}, (&genericparser::getElementValue($aDynDependChildNode)); + } + } + } + + if (&genericparser::getElementName($childNode) eq "localisation") + { + # The children nodes will contain the language code + my @aLocalisationNodes = &genericparser::getChildElements($childNode); + + foreach my $aLocalisationChildNode (@aLocalisationNodes) + { + # There can be a list of binaries for dynamic dependencies + if (&genericparser::getElementName($aLocalisationChildNode) eq "default") + { + $aBinaryInfoRef->{"default"} = &genericparser::getElementValue($aLocalisationChildNode); + } + if (&genericparser::getElementName($aLocalisationChildNode) eq "language") + { + push @{$aBinaryInfoRef->{"language"}}, (&genericparser::getElementValue($aLocalisationChildNode)); + } + } + } + + if (&genericparser::getElementName($childNode) eq "options") + { + # The children nodes will contain the option details + my @aOptionNodes = &genericparser::getChildElements($childNode); + foreach my $aOptionChildNode (@aOptionNodes) + { + if (&genericparser::getElementName($aOptionChildNode) eq "multilinguify") + { + $aBinaryInfoRef->{"multilinguify"} = &genericparser::getElementValue($aOptionChildNode); + } + if (&genericparser::getElementName($aOptionChildNode) eq "stack") + { + $aBinaryInfoRef->{"stack"} = &genericparser::getElementValue($aOptionChildNode); + } + if (&genericparser::getElementName($aOptionChildNode) eq "heapmin") + { + $aBinaryInfoRef->{"heapmin"} = &genericparser::getElementValue($aOptionChildNode); + } + if (&genericparser::getElementName($aOptionChildNode) eq "heapmax") + { + $aBinaryInfoRef->{"heapmax"} = &genericparser::getElementValue($aOptionChildNode); + } + if (&genericparser::getElementName($aOptionChildNode) eq "fixed") + { + $aBinaryInfoRef->{"fixed"} = &genericparser::getElementValue($aOptionChildNode); + } + if (&genericparser::getElementName($aOptionChildNode) eq "priority") + { + $aBinaryInfoRef->{"priority"} = &genericparser::getElementValue($aOptionChildNode); + } + if (&genericparser::getElementName($aOptionChildNode) eq "uid1") + { + $aBinaryInfoRef->{"uid1"} = &genericparser::getElementValue($aOptionChildNode); + } + if (&genericparser::getElementName($aOptionChildNode) eq "uid2") + { + $aBinaryInfoRef->{"uid2"} = &genericparser::getElementValue($aOptionChildNode); + } + if (&genericparser::getElementName($aOptionChildNode) eq "uid3") + { + $aBinaryInfoRef->{"uid3"} = &genericparser::getElementValue($aOptionChildNode); + } + if (&genericparser::getElementName($aOptionChildNode) eq "dll") + { + $aBinaryInfoRef->{"dll"} = &genericparser::getElementValue($aOptionChildNode); + } + if (&genericparser::getElementName($aOptionChildNode) eq "dlldatatop") + { + $aBinaryInfoRef->{"dlldatatop"} = &genericparser::getElementValue($aOptionChildNode); + } + } + } + } + } +} + +# To get the complete list of information for a given binary +# Input Parameter : Binary +# Returns the detailed information for each binary +sub GetBinaryInfo +{ + my $aBinary = shift; + my $aBinaryInfoHash = \%{$binaryInfo{$aBinary}}; + if ($aBinaryInfoHash->{IsFoundInCDF}) + { + return $aBinaryInfoHash; + } + return undef; +} + +# To get the complete list of dynamic dependencies for a given binary +# Input Parameter : Binary +# Returns the complete list of dynamic dependencies +sub GetDynamicDependencies +{ + my $aBinary = shift; + + my $bin = \%{$binaryInfo{$aBinary}}; + + return \@{$bin->{"depend"}}; +} + +#Returns the included feature list +sub GetIncludedFeatureList +{ + return \@includeFeatureList; +} + +#Returns the excluded feature list +sub GetExcludedFeatureList +{ + return \@excludeFeatureList; +} + +1;