@@ -20,6 +20,7 @@ import (
20
20
"path/filepath"
21
21
"strings"
22
22
23
+ "github.com/arduino/arduino-cli/arduino/cores"
23
24
"github.com/arduino/arduino-cli/arduino/libraries"
24
25
"github.com/arduino/arduino-cli/arduino/libraries/librariesmanager"
25
26
"github.com/arduino/arduino-cli/arduino/utils"
@@ -53,6 +54,49 @@ func (resolver *Cpp) ScanFromLibrariesManager(lm *librariesmanager.LibrariesMana
53
54
return nil
54
55
}
55
56
57
+ // ScanIDEBuiltinLibraries reads ide-builtin librariers loaded in the LibrariesManager to find
58
+ // and cache all C++ headers for later retrieval.
59
+ func (resolver * Cpp ) ScanIDEBuiltinLibraries (lm * librariesmanager.LibrariesManager ) error {
60
+ for _ , libAlternatives := range lm .Libraries {
61
+ for _ , lib := range libAlternatives .Alternatives {
62
+ if lib .Location == libraries .IDEBuiltIn {
63
+ resolver .ScanLibrary (lib )
64
+ }
65
+ }
66
+ }
67
+ return nil
68
+ }
69
+
70
+ // ScanUserAndUnmanagedLibraries reads user/unmanaged librariers loaded in the LibrariesManager to find
71
+ // and cache all C++ headers for later retrieval.
72
+ func (resolver * Cpp ) ScanUserAndUnmanagedLibraries (lm * librariesmanager.LibrariesManager ) error {
73
+ for _ , libAlternatives := range lm .Libraries {
74
+ for _ , lib := range libAlternatives .Alternatives {
75
+ if lib .Location == libraries .User || lib .Location == libraries .Unmanaged {
76
+ resolver .ScanLibrary (lib )
77
+ }
78
+ }
79
+ }
80
+ return nil
81
+ }
82
+
83
+ // ScanPlatformLibraries reads platform-bundled libraries for a specific platform loaded in the LibrariesManager
84
+ // to find and cache all C++ headers for later retrieval.
85
+ func (resolver * Cpp ) ScanPlatformLibraries (lm * librariesmanager.LibrariesManager , platform * cores.PlatformRelease ) error {
86
+ for _ , libAlternatives := range lm .Libraries {
87
+ for _ , lib := range libAlternatives .Alternatives {
88
+ if lib .Location != libraries .PlatformBuiltIn && lib .Location != libraries .ReferencedPlatformBuiltIn {
89
+ continue
90
+ }
91
+ if lib .ContainerPlatform != platform {
92
+ continue
93
+ }
94
+ resolver .ScanLibrary (lib )
95
+ }
96
+ }
97
+ return nil
98
+ }
99
+
56
100
// ScanLibrary reads a library to find and cache C++ headers for later retrieval
57
101
func (resolver * Cpp ) ScanLibrary (lib * libraries.Library ) error {
58
102
cppHeaders , err := lib .SourceHeaders ()
0 commit comments