Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Component Manager
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Refimprove|date=June 2009}} In [[Apple Macintosh]] [[computer programming]], '''Component Manager''' was one of many approaches to sharing code that originated on the pre-[[PowerPC]] Macintosh. It was originally introduced as part of [[QuickTime]], which remained the part of the [[classic Mac OS]] that used it most heavily.<ref>{{cite book|title=The multimedia Internet|url=https://archive.org/details/multimediaintern0000wein|url-access=registration|first=Stephen B. |last=Weinstein|publisher=Springer|year= 2005|ISBN =0-387-23681-3|pages=[https://archive.org/details/multimediaintern0000wein/page/355 355]}}</ref> == Technical details == A ''component'' was a piece of code that provided various functions that may be invoked by clients. Each function was identified by a signed 16-bit integer ID code. Non-positive codes were reserved for predefined functions that should be understood by all components—open/close a component instance, query whether a function was supported, etc. The meanings of positive function codes depended on the type of component. A ''component instance'' was created by ''opening'' a component. This called the component's open function to allocate and initialize any necessary storage for the instance. Closing the instance got rid of this storage and invalidated all references to that instance. Components and component instances were referenced by 32-bit values that were not [[pointer (computer programming)|pointer]]s. Instead, they were interpreted as keys into internal Component Manager tables. These references were generated in such a way that, once they became invalid, those values were unlikely to become valid again for a long time. This minimized the chance of obscure bugs due to dangling references. Components were identified by [[OSType]] codes giving their ''type'', ''subtype'' and "''manufacturer''". For instance, a component type might be "raster image compressor", subtypes of which might exist for JPEG, H.261, Sorenson, and Intel Indeo, among others. It was possible to have multiple components registered with exactly the same identification codes, giving alternative implementations of the same algorithm for example using hardware versus software, trading off speed versus quality, or other criteria. It was possible for the applications to query the existence of such alternatives and make explicit choices between them, or let the system choose a default. Among the options available, a component could ''delegate'' parts of its functions to another component as a form of subclassing for code reuse. It was also possible for one component to ''capture'' another, which meant that all accesses to the captured component had to go through the capturing one. == Mac OS Components == Mac OS accumulated a great variety of component types: * Within [[QuickTime]], there were image codecs, media handlers, media data handlers, video digitizer drivers, file format importers and exporters, and many others. * The Sound Manager moved to a predominantly component-based architecture in version 3.0: sound output devices were represented as components, and there were also component types for mixing multiple channels, converting between different sample rates and sample sizes, and encoding and decoding compressed formats. * [[AppleScript]] introduced the concept of scripting languages implemented as components. * [[ColorSync]] implemented different colour-matching methods as components. * [[QuickDraw GX]] "font scalers" were renderers for the different font formats. ==References== {{reflist}} [[Category:Macintosh operating systems development]] [[Category:Component-based software engineering]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Refimprove
(
edit
)
Template:Reflist
(
edit
)