Changes in / [8dac2cc:64bc131]
- Files:
-
- 6 deleted
- 3 edited
-
doc/generic_types/generic_types.tex (modified) (1 diff)
-
doc/nda/Aaron_Moss-Rob_Schluntz-Thierry_Delisle.pdf (deleted)
-
doc/nda/Cover_Letter.pdf (deleted)
-
doc/nda/Daniel_Caccamo.pdf (deleted)
-
doc/nda/NDA.pdf (deleted)
-
doc/nda/Neda_Paryab.pdf (deleted)
-
doc/nda/Peter_Buhr-30-jul-2014.pdf (deleted)
-
doc/rob_thesis/thesis.bib (modified) (1 prop)
-
src/InitTweak/FixInit.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/generic_types/generic_types.tex
r8dac2cc r64bc131 1020 1020 While \CC provides good backwards compatibility with C, it has a steep learning curve for many of its extensions. 1021 1021 For example, polymorphism is provided via three disjoint mechanisms: overloading, inheritance, and templates. 1022 The overloading is restricted because resolution does not us ethe return type, inheritance requires learning object-oriented programming and coping with a restricted nominal-inheritance hierarchy, templates cannot be separately compiled resulting in compilation/code bloat and poor error messages, and determining how these mechanisms interact and which to use is confusing.1022 The overloading is restricted because resolution does not using the return type, inheritance requires learning object-oriented programming and coping with a restricted nominal-inheritance hierarchy, templates cannot be separately compiled resulting in compilation/code bloat and poor error messages, and determining how these mechanisms interact and which to use is confusing. 1023 1023 In contrast, \CFA has a single facility for polymorphic code supporting type-safe separate-compilation of polymorphic functions and generic (opaque) types, which uniformly leverage the C procedural paradigm. 1024 1024 The key mechanism to support separate compilation is \CFA's \emph{explicit} use of assumed properties for a type. -
doc/rob_thesis/thesis.bib
-
Property mode
changed from
100644to100755
-
Property mode
changed from
-
src/InitTweak/FixInit.cc
r8dac2cc r64bc131 656 656 unqExpr->set_result( maybeClone( unqExpr->get_expr()->get_result() ) ); 657 657 if ( unqCount[ unqExpr->get_id() ] == 0 ) { // insert destructor after the last use of the unique expression 658 stmtsToAdd After.splice( stmtsToAddAfter.end(), dtors[ unqExpr->get_id() ] );658 stmtsToAdd.splice( stmtsToAddAfter.end(), dtors[ unqExpr->get_id() ] ); 659 659 } 660 660 if ( addDeref.count( unqExpr->get_id() ) ) { … … 668 668 stmtsToAdd.splice( stmtsToAdd.end(), fixer.stmtsToAdd ); 669 669 unqMap[unqExpr->get_id()] = unqExpr; 670 if ( unqCount[ unqExpr->get_id() ] == 0 ) { // insert destructor after the last use of the unique expression671 stmtsToAddAfter.splice( stmtsToAddAfter.end(), dtors[ unqExpr->get_id() ] );672 } else { // remember dtors for last instance of unique expr673 dtors[ unqExpr->get_id() ] = fixer.stmtsToAddAfter;674 }675 670 if ( UntypedExpr * deref = dynamic_cast< UntypedExpr * >( unqExpr->get_expr() ) ) { 671 if ( unqCount[ unqExpr->get_id() ] == 0 ) { // insert destructor after the last use of the unique expression 672 stmtsToAdd.splice( stmtsToAddAfter.end(), dtors[ unqExpr->get_id() ] ); 673 } else { // remember dtors for last instance of unique expr 674 dtors[ unqExpr->get_id() ] = fixer.stmtsToAddAfter; 675 } 676 676 // unique expression is now a dereference, because the inner expression is an lvalue returning function call. 677 677 // Normalize the expression by dereferencing the unique expression, rather than the inner expression
Note:
See TracChangeset
for help on using the changeset viewer.