ebook img

The Implementation of Icon and Unicon PDF

658 Pages·2019·2.021 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview The Implementation of Icon and Unicon

The Implementation of Icon and Unicon Ralph and Madge T. Griswold Kenneth W. Walker Clinton L. Jeffery Michael D. Wilder Anthony T. Jones Jafar Al Gharaibeh ©2017ClintonJeffery ThisisadraftmanuscriptdatedMay29,2019. [email protected]. Contents Preface xvii CompendiumIntroduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 I The Implementation of the Icon Programming Language 3 1 Introduction 7 1.1 ImplementingProgrammingLanguages . . . . . . . . . . . . . . . . . . . . . . . 8 1.2 TheBackgroundforIcon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 IconLanguageOverview 11 2.1 TheIconProgrammingLanguage . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.1 DataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.2 ExpressionEvaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.3 CsetsandStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.1.4 StringScanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.1.5 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.1.6 Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.1.7 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.1.8 Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.1.9 InputandOutput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.1.10 Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.1.11 Co-Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.1.12 DiagnosticFacilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.2 LanguageFeaturesandtheImplementation . . . . . . . . . . . . . . . . . . . . . 37 3 OrganizationoftheImplementation 41 3.1 TheIconVirtualMachine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.2 ComponentsoftheImplementation . . . . . . . . . . . . . . . . . . . . . . . . 42 3.3 TheTranslator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4 TheLinker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.4.1 ScopeResolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.4.2 ConstructionofRun-TimeStructures . . . . . . . . . . . . . . . . . . . . 45 3.5 TheRun-TimeSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4 ValuesandVariables 49 4.1 Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.1.1 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.1.2 TheNullValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.1.3 Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.2 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.3.1 OperationsonVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.3.2 SpecialVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.3.2.1 TrappedVariables . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.3.2.2 KeywordVariables . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.4 DescriptorsandBlocksinC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.1 Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.2 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.3 DefinedConstants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.4.4 RTLCoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5 StringsandCsets 67 5.1 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.1.1 RepresentationofStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.1.2 Concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.1.3 Substrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.1.4 AssignmenttoSubscriptedStrings . . . . . . . . . . . . . . . . . . . . . . 73 5.1.5 Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.2 Csets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6 Lists 83 6.1 StructuresforLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.2 QueueandStackAccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 6.3 PositionalAccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 6.4 Arrays(Unicononly) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 7 SetsandTables 101 7.1 Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 7.1.1 DataOrganizationforSets . . . . . . . . . . . . . . . . . . . . . . . . . . 102 7.1.2 SetOperations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.2 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 7.2.1 DataOrganizationforTables . . . . . . . . . . . . . . . . . . . . . . . . . 105 7.3 HashingFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8 TheInterpreter 117 8.1 Stack-BasedEvaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 8.2 VirtualMachineInstructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 8.2.1 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.2.2 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 8.2.3 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 8.2.4 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 8.2.5 Self-ModifyingInstructions . . . . . . . . . . . . . . . . . . . . . . . . . 131 8.3 TheInterpreterProper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 8.3.1 TheInterpreterLoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 8.3.2 InterpreterStateVariables . . . . . . . . . . . . . . . . . . . . . . . . . . 134 9 ExpressionEvaluation 137 9.1 BoundedExpressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 9.1.1 ExpressionFrames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 9.2 Failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 9.3 GeneratorsandGoal-DirectedEvaluation . . . . . . . . . . . . . . . . . . . . . . 145 9.4 GenerativeControlStructures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 9.4.1 Alternation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 9.4.2 RepeatedAlternation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 9.4.3 Limitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 9.5 Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 9.6 StringScanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 10 Functions,Procedures,andCo-Expressions 169 10.1 InvocationExpressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 10.2 ProcedureBlocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 10.3 Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 10.3.1 ArgumentProcessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 10.3.2 FunctionInvocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 10.3.3 ProcedureInvocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 10.4 Co-Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 11 StorageManagement 187 11.1 MemoryLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 11.2 Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 11.2.1 TheStaticRegion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 11.2.2 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 11.2.3 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 11.3 GarbageCollection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 11.3.1 TheBasis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 11.3.2 TheLocationPhase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 11.3.3 PointerAdjustmentandCompaction . . . . . . . . . . . . . . . . . . . . . 206 11.3.4 CollectingCo-ExpressionBlocks . . . . . . . . . . . . . . . . . . . . . . 216 11.3.5 MultipleRegions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 11.3.6 StorageRequirementsduringGarbageCollection . . . . . . . . . . . . . . 218 11.4 PredictiveNeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 12 Run-TimeSupportOperations 225 12.1 TypeCheckingandConversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 12.2 DereferencingandAssignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 12.2.1 Dereferencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 12.2.2 Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 12.3 InputandOutput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 12.3.1 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 12.3.2 ReadingandWritingData . . . . . . . . . . . . . . . . . . . . . . . . . . 240 12.4 DiagnosticFacilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 II An Optimizing Compiler for Icon 245 PrefacetoPartII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 13 TheOptimizingCompiler 249 13.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 13.2 TypeInferencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 13.3 LivenessAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 13.4 AnalyzingGoal-DirectedEvaluation . . . . . . . . . . . . . . . . . . . . . . . . . 252 14 TheTranslationModel 255 14.1 DataRepresentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 14.2 IntermediateResults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 14.3 ExecutableCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 15 TheTypeInferencingModel 265 15.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 15.2 AbstractInterpretation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 15.3 CollectingSemantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Model1: EliminatingControlFlowInformation . . . . . . . . . . . . . . . . . . . . . . 272 Model2: DecouplingVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Model3: AFiniteTypeSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 16 LivenessAnalysisofIntermediateValues 281 16.1 ImplicitLoops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 16.2 LivenessAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 16.3 AnAttributeGrammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 16.4 PrimaryExpressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 16.5 OperationswithSubexpressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 16.6 ControlStructures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 17 OverviewoftheCompiler 295 17.1 ComponentsoftheCompiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 17.2 TheRun-timeSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 17.3 TheImplementationLanguage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 17.4 StandardandTailoredOperationImplementations . . . . . . . . . . . . . . . . . . 300 18 OrganizationofIconc 303 18.1 CompilerPhases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 18.2 NaiveOptimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 18.3 CodeGenerationforProcedures . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 19 TheImplementationofTypeInferencing 307 19.1 TheRepresentationofTypesandStores . . . . . . . . . . . . . . . . . . . . . . . 307 19.2 AFullTypeSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 19.3 ProcedureCallsandCo-ExpressionActivations . . . . . . . . . . . . . . . . . . . 313 19.4 TheFlowGraphandTypeComputations . . . . . . . . . . . . . . . . . . . . . . . 315 20 CodeGeneration 319 20.1 TranslatingIconExpressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 20.2 SignalHandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 20.3 TemporaryVariableAllocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 21 ControlFlowOptimizations 337 21.1 NaiveCodeGeneration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 21.2 SuccessContinuations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 21.3 Iconc’sPeepholeOptimizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 22 OptimizingInvocations 345 22.1 InvocationofProcedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 22.2 InvocationandIn-liningofBuilt-inOperations . . . . . . . . . . . . . . . . . . . 346 22.3 HeuristicforDecidingtoIn-line . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 22.4 In-liningSuccessContinuations . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 22.5 ParameterPassingOptimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 22.6 AssignmentOptimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 23 PerformanceofCompiledCode 357 23.1 ExpressionOptimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 23.2 ProgramExecutionSpeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 23.3 CodeSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 24 ScalableTypeInferencing 365 24.1 TheTypeRepresentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 24.2 TypeVectorHashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 24.3 TypeInferencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 24.4 ACopy-on-WriteTypeVectorPool . . . . . . . . . . . . . . . . . . . . . . . . . 368 24.5 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 24.5.1 BitVectorHashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 24.5.2 HashHalving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 24.6 Metrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 24.6.1 Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 24.6.2 Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 24.6.3 MeasuringtheTechniques . . . . . . . . . . . . . . . . . . . . . . . . . . 376 24.6.4 CollisionRates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 24.7 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 25 OptimizingCodeGeneratedbyIconc 381 25.1 AreasWhereIconcCanBeImproved . . . . . . . . . . . . . . . . . . . . . . . . 381 25.1.1 RedundantFunctionCalls . . . . . . . . . . . . . . . . . . . . . . . . . . 382 25.1.2 ConstantPropagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 25.1.3 VariableInitialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 25.2 EnablingOptimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 25.3 IntermediateCodeRepresentation . . . . . . . . . . . . . . . . . . . . . . . . . . 382 25.3.1 HowCodeisGenerated . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 25.4 RedundantFunctionCalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 25.5 IconLiteralsandConstantPropagation . . . . . . . . . . . . . . . . . . . . . . . . 387 25.5.1 TendedDescriptorTables . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 25.5.2 AnalyzingLiteralAssignments . . . . . . . . . . . . . . . . . . . . . . . . 388 25.5.3 NewFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 25.6 VariableInitialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 25.6.1 EliminatingDeadCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 25.6.2 LoopUnrolling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 25.7 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 25.7.1 ExecutionSpeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 25.7.2 CodeSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 25.7.3 AnalysisofIntermediateCodeOptimizations . . . . . . . . . . . . . . . . 398 25.8 ConclusionandFutureOptimizations . . . . . . . . . . . . . . . . . . . . . . . . 399 26 FutureWorkontheCompiler 405 26.1 SummaryofPartII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 26.2 FutureWork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 III The Implementation of Unicon 409 27 TheUniconTranslator 413 27.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 27.2 LexicalAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 27.2.1 Lex-compatibleAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 27.2.2 CharacterCategories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 27.2.3 TheTokenType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 27.2.4 ErrorHandlingandDebugging . . . . . . . . . . . . . . . . . . . . . . . . 414 27.2.5 ReservedWords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 27.2.6 Big-inhaleInput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 27.2.7 SemicolonInsertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 27.2.8 TheRealLexicalAnalyzerFunction,yylex2() . . . . . . . . . . . . . . . . 418 27.3 TheUniconParser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 27.3.1 SyntaxErrorHandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 27.4 TheUniconPreprocessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 27.5 SemanticAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 27.6 ObjectOrientedFacilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 27.6.1 ImplementingMultipleInheritanceinUnicon . . . . . . . . . . . . . . . . 432 27.6.2 Unicon’sProgend()revisited . . . . . . . . . . . . . . . . . . . . . . . . . 436 27.6.3 OtherOOPIssues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 27.6.4 OnPublicInterfacesandRuntimeTypeChecking . . . . . . . . . . . . . . 438 28 Networking,MessagingandthePOSIXInterface 439 28.1 NetworkingFacilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 28.1.1 SocketsintheUniconFileFunctions . . . . . . . . . . . . . . . . . . . . 439 28.1.2 SimultaneousInputfromDifferentFileTypes . . . . . . . . . . . . . . . . 439 28.2 MessagingFacilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 28.2.1 TheTransferProtocolLibrary . . . . . . . . . . . . . . . . . . . . . . . . 440 28.2.2 LibtpArchitecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 28.2.3 TheDiscipline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 28.2.4 ExceptionHandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 29 ODBCDatabaseFacilities 445 29.1 Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 29.2 ISQLFiletype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 30 Portable2Dand3DGraphics 449 30.1 GraphicsSourceFilesSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 30.2 StructuresDefinedingraphics.h . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 30.3 PlatformMacrosandCodingConventions . . . . . . . . . . . . . . . . . . . . . . 452 30.4 WindowManipulationinrxwin.riandrmswin.ri . . . . . . . . . . . . . . . . . . . 452 30.4.1 WindowCreationandDestruction . . . . . . . . . . . . . . . . . . . . . . 453 30.4.2 EventProcessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 30.4.3 ResourceManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 30.4.4 MemoryManagementandr*rsc.riFiles . . . . . . . . . . . . . . . . . . . 454 30.4.5 ColorManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 30.4.6 FontManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 30.5 ExternalImageFilesandFormats . . . . . . . . . . . . . . . . . . . . . . . . . . 455 30.6 Implementationof3DFacilities . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 30.6.1 3DFacilitiesRequirements . . . . . . . . . . . . . . . . . . . . . . . . . . 455 30.6.2 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 30.6.3 RedrawingWindows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 30.6.4 Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 30.6.5 TextureCoordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 30.7 GraphicsFacilitiesPortingReference . . . . . . . . . . . . . . . . . . . . . . . . 458 30.8 TheXImplementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 30.9 TheMSWindowsImplementation . . . . . . . . . . . . . . . . . . . . . . . . . . 468

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.