Komponenthanterare

I Apple Macintosh- datorprogrammering var Component Manager ett av många sätt att dela kod som har sitt ursprung på Macintosh före PowerPC . Det introducerades ursprungligen som en del av QuickTime , som förblev den del av det klassiska Mac OS som använde det mest.

Tekniska detaljer

En komponent var en kod som gav olika funktioner som kan anropas av klienter. Varje funktion identifierades av en signerad 16-bitars heltals-ID-kod. Icke-positiva koder reserverades för fördefinierade funktioner som borde förstås av alla komponenter – öppna/stäng en komponentinstans, fråga om en funktion stöddes etc. Betydelsen av positiva funktionskoder berodde på typen av komponent.

En komponentinstans skapades genom att öppna en komponent. Detta kallade komponentens öppna funktion för att allokera och initiera all nödvändig lagring för instansen. Genom att stänga instansen blev det här lagringsutrymmet av och alla referenser till instansen ogiltigförklarades.

Komponenter och komponentinstanser refererades till med 32-bitarsvärden som inte var pekare . Istället tolkades de som nycklar i interna Component Manager-tabeller. Dessa referenser genererades på ett sådant sätt att, när de väl blev ogiltiga, var det osannolikt att dessa värden skulle bli giltiga igen under en lång tid. Detta minimerade risken för obskyra buggar på grund av dinglande referenser.

Komponenter identifierades med OSType- koder som gav deras typ , undertyp och " tillverkare ". En komponenttyp kan till exempel vara "rasterbildkompressor", vars undertyper kan finnas för bland annat JPEG, H.261, Sorenson och Intel Indeo. Det var möjligt att ha flera komponenter registrerade med exakt samma identifikationskoder, vilket gav alternativa implementeringar av samma algoritm, till exempel genom att använda hårdvara kontra mjukvara, byta hastighet mot kvalitet eller andra kriterier. Det var möjligt för applikationerna att fråga om det fanns sådana alternativ och göra explicita val mellan dem, eller låta systemet välja en standard.

Bland de tillgängliga alternativen kan en komponent delegera delar av sina funktioner till en annan komponent som en form av underklassning för kodåteranvändning. Det var också möjligt för en komponent att fånga en annan, vilket innebar att alla åtkomster till den fångade komponenten måste gå genom den fångade.

Mac OS-komponenter

Mac OS samlade en mängd olika komponenttyper:

  • Inom QuickTime fanns det bildkodekar, mediahanterare, mediadatahanterare, videodigitaliseringsdrivrutiner, filformatimportörer och -exportörer och många andra.
  • Ljudhanteraren flyttade till en övervägande komponentbaserad arkitektur i version 3.0: ljudutgångsenheter representerades som komponenter, och det fanns även komponenttyper för att blanda flera kanaler, konvertera mellan olika samplingshastigheter och samplingsstorlekar, samt kodning och avkodning av komprimerade format.
  • AppleScript introducerade konceptet med skriptspråk implementerade som komponenter.
  • ColorSync implementerade olika färgmatchningsmetoder som komponenter.
  • QuickDraw GX "font scalers" var renderare för de olika teckensnittsformaten.