Matches in SemOpenAlex for { <https://semopenalex.org/work/W2046915826> ?p ?o ?g. }
Showing items 1 to 77 of
77
with 100 items per page.
- W2046915826 endingPage "550" @default.
- W2046915826 startingPage "531" @default.
- W2046915826 abstract "Multi-methods are functions whose calls at runtime are resolved depending on the dynamic types of more than one argument. They are useful for common programming problems. However, while many languages provide different mechanisms to implement them in one way or another, there is still, to the best of our knowledge, no library or language feature that handles them in a general and flexible way. In this paper, we present the EVL (Extended Virtual function Library) framework which provides a set of classes in C++ aiming at solving this problem. The EVL framework provides a generalization of virtual function dispatch through the number of dimensions and the selection of the function to invoke using a so-called Function Comparison Operator . Our library provides both symmetric and asymmetric dispatch algorithms that can be refined by the programmer to include criteria other than class inheritance. For instance, the EVL framework provides multi-methods with predicate dispatch by defining a dedicated FCO based not only on the dynamic types of the arguments but also on their values. This flexibility greatly helps to resolve ambiguities without having to define new functions. Our multi-methods also unify dispatch tables and caching by introducing cache strategies for which the implementation is a balance between memory and speed. To define multi-methods in C++, we implement a non-intrusive reflection library providing fast dynamic casting and supporting dynamic class loading. Our multi-methods are policy-based class templates that support virtual but not repeated inheritance. They check the type compatibility of functions at compile-time, preserve type-safety and resolve function calls at runtime by invoking the cache or updating it by computing the selected function for the requested tuple of types. By default, our multi-methods handle dispatch errors at runtime by throwing exceptions but an error-code strategy can be set up by defining a dedicated policy class. Performance of our multi-methods is comparable with that of standard virtual functions when configured with fast cache." @default.
- W2046915826 created "2016-06-24" @default.
- W2046915826 creator A5037701996 @default.
- W2046915826 creator A5081324945 @default.
- W2046915826 date "2015-02-01" @default.
- W2046915826 modified "2023-09-24" @default.
- W2046915826 title "EVL: A framework for multi-methods in C++" @default.
- W2046915826 cites W1525643703 @default.
- W2046915826 cites W1533109738 @default.
- W2046915826 cites W1567903304 @default.
- W2046915826 cites W1573982151 @default.
- W2046915826 cites W1586902756 @default.
- W2046915826 cites W1602914846 @default.
- W2046915826 cites W1649645444 @default.
- W2046915826 cites W1966217640 @default.
- W2046915826 cites W2042227350 @default.
- W2046915826 cites W2052790390 @default.
- W2046915826 cites W2054846797 @default.
- W2046915826 cites W2055305598 @default.
- W2046915826 cites W2055970549 @default.
- W2046915826 cites W2080670657 @default.
- W2046915826 cites W2096004107 @default.
- W2046915826 cites W2113547509 @default.
- W2046915826 cites W2123528931 @default.
- W2046915826 cites W2137857582 @default.
- W2046915826 cites W2144015080 @default.
- W2046915826 cites W2145019140 @default.
- W2046915826 cites W2548304418 @default.
- W2046915826 cites W2987803397 @default.
- W2046915826 cites W61997153 @default.
- W2046915826 doi "https://doi.org/10.1016/j.scico.2014.08.003" @default.
- W2046915826 hasPublicationYear "2015" @default.
- W2046915826 type Work @default.
- W2046915826 sameAs 2046915826 @default.
- W2046915826 citedByCount "1" @default.
- W2046915826 countsByYear W20469158262021 @default.
- W2046915826 crossrefType "journal-article" @default.
- W2046915826 hasAuthorship W2046915826A5037701996 @default.
- W2046915826 hasAuthorship W2046915826A5081324945 @default.
- W2046915826 hasConcept C115537543 @default.
- W2046915826 hasConcept C140146324 @default.
- W2046915826 hasConcept C154945302 @default.
- W2046915826 hasConcept C173608175 @default.
- W2046915826 hasConcept C199360897 @default.
- W2046915826 hasConcept C2777212361 @default.
- W2046915826 hasConcept C2778514511 @default.
- W2046915826 hasConcept C41008148 @default.
- W2046915826 hasConcept C80444323 @default.
- W2046915826 hasConceptScore W2046915826C115537543 @default.
- W2046915826 hasConceptScore W2046915826C140146324 @default.
- W2046915826 hasConceptScore W2046915826C154945302 @default.
- W2046915826 hasConceptScore W2046915826C173608175 @default.
- W2046915826 hasConceptScore W2046915826C199360897 @default.
- W2046915826 hasConceptScore W2046915826C2777212361 @default.
- W2046915826 hasConceptScore W2046915826C2778514511 @default.
- W2046915826 hasConceptScore W2046915826C41008148 @default.
- W2046915826 hasConceptScore W2046915826C80444323 @default.
- W2046915826 hasLocation W20469158261 @default.
- W2046915826 hasOpenAccess W2046915826 @default.
- W2046915826 hasPrimaryLocation W20469158261 @default.
- W2046915826 hasRelatedWork W1503760549 @default.
- W2046915826 hasRelatedWork W1528736836 @default.
- W2046915826 hasRelatedWork W2294416791 @default.
- W2046915826 hasRelatedWork W3137189469 @default.
- W2046915826 hasRelatedWork W3160136729 @default.
- W2046915826 hasRelatedWork W4236420542 @default.
- W2046915826 hasRelatedWork W4237428255 @default.
- W2046915826 hasRelatedWork W4244759621 @default.
- W2046915826 hasRelatedWork W4246531319 @default.
- W2046915826 hasRelatedWork W1482645738 @default.
- W2046915826 hasVolume "98" @default.
- W2046915826 isParatext "false" @default.
- W2046915826 isRetracted "false" @default.
- W2046915826 magId "2046915826" @default.
- W2046915826 workType "article" @default.