A Preprocessor Approach to Persistent C++ View Full Text


Ontology type: schema:Chapter     


Chapter Info

DATE

1996

AUTHORS

Cem Evrendilek , Asuman Dogac , Tolga Gesli

ABSTRACT

In conventional object oriented programming languages, objects are transient, that is they are destroyed upon program termination. Storing objects using explicit file access methods may cause objects to lose their manipulation and access semantics since the objects with different declarations may have the same storage representation. In this work persistence is added to C++ in DOS environment through a preprocessor and a class library developed in C++, such that the access and manipulation semantics of objects are preserved. The new language is called C**. The disk management of objects declared as persistent are automatically handled by the system through a virtual memory management emulation. Persistency is implemented as a storage class that is completely orthogonal to type. In other words, persistency is a property of objects, not their classes. Language changes are kept to a minimum, thus among the existing persistent C++ implementations, C** requires the minimum coding effort. Furthermore objects of any complexity with arbitrary level of pointer indirections to any type of object is supported. As a result, objects are stored on disk as they are represented in memory. Upward compatibility with C++ is preserved. The hybrid object identifier (OID) mechanism implemented in C** enables dynamic clustering and reduction in the object table size. Although there are several other persistent C++ implementations, the implementation technique of C** is original in that it provides the user with transparent type modifications and uses operator overloading extensively in realizing persistency. To the best of our knowledge C** is the first persistent C++ implementation on DOS with persistence as a storage class. More... »

PAGES

235-251

Book

TITLE

Advances in Databases and Information Systems

ISBN

978-3-540-76014-6
978-1-4471-1486-4

Identifiers

URI

http://scigraph.springernature.com/pub.10.1007/978-1-4471-1486-4_16

DOI

http://dx.doi.org/10.1007/978-1-4471-1486-4_16

DIMENSIONS

https://app.dimensions.ai/details/publication/pub.1010296669


Indexing Status Check whether this publication has been indexed by Scopus and Web Of Science using the SN Indexing Status Tool
Incoming Citations Browse incoming citations for this publication using opencitations.net

JSON-LD is the canonical representation for SciGraph data.

TIP: You can open this SciGraph record using an external JSON-LD service: JSON-LD Playground Google SDTT

[
  {
    "@context": "https://springernature.github.io/scigraph/jsonld/sgcontext.json", 
    "about": [
      {
        "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/0806", 
        "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
        "name": "Information Systems", 
        "type": "DefinedTerm"
      }, 
      {
        "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/08", 
        "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
        "name": "Information and Computing Sciences", 
        "type": "DefinedTerm"
      }
    ], 
    "author": [
      {
        "affiliation": {
          "alternateName": "Scientific and Technological Research Council of Turkey", 
          "id": "https://www.grid.ac/institutes/grid.426409.d", 
          "name": [
            "Software Research and Development Center, Scientific and Technical Research Council of Turkey, Turkey"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Evrendilek", 
        "givenName": "Cem", 
        "id": "sg:person.013633220171.70", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.013633220171.70"
        ], 
        "type": "Person"
      }, 
      {
        "affiliation": {
          "alternateName": "Scientific and Technological Research Council of Turkey", 
          "id": "https://www.grid.ac/institutes/grid.426409.d", 
          "name": [
            "Software Research and Development Center, Scientific and Technical Research Council of Turkey, Turkey"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Dogac", 
        "givenName": "Asuman", 
        "id": "sg:person.01074167140.73", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.01074167140.73"
        ], 
        "type": "Person"
      }, 
      {
        "affiliation": {
          "alternateName": "Scientific and Technological Research Council of Turkey", 
          "id": "https://www.grid.ac/institutes/grid.426409.d", 
          "name": [
            "Software Research and Development Center, Scientific and Technical Research Council of Turkey, Turkey"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Gesli", 
        "givenName": "Tolga", 
        "type": "Person"
      }
    ], 
    "citation": [
      {
        "id": "https://doi.org/10.1002/spe.4380151003", 
        "sameAs": [
          "https://app.dimensions.ai/details/publication/pub.1002286109"
        ], 
        "type": "CreativeWork"
      }, 
      {
        "id": "https://doi.org/10.1145/125223.125244", 
        "sameAs": [
          "https://app.dimensions.ai/details/publication/pub.1011188702"
        ], 
        "type": "CreativeWork"
      }, 
      {
        "id": "https://doi.org/10.1016/0950-5849(90)90018-m", 
        "sameAs": [
          "https://app.dimensions.ai/details/publication/pub.1017803818"
        ], 
        "type": "CreativeWork"
      }, 
      {
        "id": "https://doi.org/10.1016/0950-5849(90)90018-m", 
        "sameAs": [
          "https://app.dimensions.ai/details/publication/pub.1017803818"
        ], 
        "type": "CreativeWork"
      }, 
      {
        "id": "https://doi.org/10.1145/125223.125238", 
        "sameAs": [
          "https://app.dimensions.ai/details/publication/pub.1030412708"
        ], 
        "type": "CreativeWork"
      }, 
      {
        "id": "https://doi.org/10.1145/62070.45066", 
        "sameAs": [
          "https://app.dimensions.ai/details/publication/pub.1033823296"
        ], 
        "type": "CreativeWork"
      }
    ], 
    "datePublished": "1996", 
    "datePublishedReg": "1996-01-01", 
    "description": "In conventional object oriented programming languages, objects are transient, that is they are destroyed upon program termination. Storing objects using explicit file access methods may cause objects to lose their manipulation and access semantics since the objects with different declarations may have the same storage representation. In this work persistence is added to C++ in DOS environment through a preprocessor and a class library developed in C++, such that the access and manipulation semantics of objects are preserved. The new language is called C**. The disk management of objects declared as persistent are automatically handled by the system through a virtual memory management emulation. Persistency is implemented as a storage class that is completely orthogonal to type. In other words, persistency is a property of objects, not their classes. Language changes are kept to a minimum, thus among the existing persistent C++ implementations, C** requires the minimum coding effort. Furthermore objects of any complexity with arbitrary level of pointer indirections to any type of object is supported. As a result, objects are stored on disk as they are represented in memory. Upward compatibility with C++ is preserved. The hybrid object identifier (OID) mechanism implemented in C** enables dynamic clustering and reduction in the object table size. Although there are several other persistent C++ implementations, the implementation technique of C** is original in that it provides the user with transparent type modifications and uses operator overloading extensively in realizing persistency. To the best of our knowledge C** is the first persistent C++ implementation on DOS with persistence as a storage class.", 
    "editor": [
      {
        "familyName": "Eder", 
        "givenName": "Johann", 
        "type": "Person"
      }, 
      {
        "familyName": "Kalinichenko", 
        "givenName": "Leonid A.", 
        "type": "Person"
      }
    ], 
    "genre": "chapter", 
    "id": "sg:pub.10.1007/978-1-4471-1486-4_16", 
    "inLanguage": [
      "en"
    ], 
    "isAccessibleForFree": false, 
    "isPartOf": {
      "isbn": [
        "978-3-540-76014-6", 
        "978-1-4471-1486-4"
      ], 
      "name": "Advances in Databases and Information Systems", 
      "type": "Book"
    }, 
    "name": "A Preprocessor Approach to Persistent C++", 
    "pagination": "235-251", 
    "productId": [
      {
        "name": "doi", 
        "type": "PropertyValue", 
        "value": [
          "10.1007/978-1-4471-1486-4_16"
        ]
      }, 
      {
        "name": "readcube_id", 
        "type": "PropertyValue", 
        "value": [
          "310deec813a3f99784ff30347a420fff6ed1d4e225c8c097e8c87777e3c2ef08"
        ]
      }, 
      {
        "name": "dimensions_id", 
        "type": "PropertyValue", 
        "value": [
          "pub.1010296669"
        ]
      }
    ], 
    "publisher": {
      "location": "London", 
      "name": "Springer London", 
      "type": "Organisation"
    }, 
    "sameAs": [
      "https://doi.org/10.1007/978-1-4471-1486-4_16", 
      "https://app.dimensions.ai/details/publication/pub.1010296669"
    ], 
    "sdDataset": "chapters", 
    "sdDatePublished": "2019-04-15T21:00", 
    "sdLicense": "https://scigraph.springernature.com/explorer/license/", 
    "sdPublisher": {
      "name": "Springer Nature - SN SciGraph project", 
      "type": "Organization"
    }, 
    "sdSource": "s3://com-uberresearch-data-dimensions-target-20181106-alternative/cleanup/v134/2549eaecd7973599484d7c17b260dba0a4ecb94b/merge/v9/a6c9fde33151104705d4d7ff012ea9563521a3ce/jats-lookup/v90/0000000001_0000000264/records_8690_00000249.jsonl", 
    "type": "Chapter", 
    "url": "http://link.springer.com/10.1007/978-1-4471-1486-4_16"
  }
]
 

Download the RDF metadata as:  json-ld nt turtle xml License info

HOW TO GET THIS DATA PROGRAMMATICALLY:

JSON-LD is a popular format for linked data which is fully compatible with JSON.

curl -H 'Accept: application/ld+json' 'https://scigraph.springernature.com/pub.10.1007/978-1-4471-1486-4_16'

N-Triples is a line-based linked data format ideal for batch operations.

curl -H 'Accept: application/n-triples' 'https://scigraph.springernature.com/pub.10.1007/978-1-4471-1486-4_16'

Turtle is a human-readable linked data format.

curl -H 'Accept: text/turtle' 'https://scigraph.springernature.com/pub.10.1007/978-1-4471-1486-4_16'

RDF/XML is a standard XML format for linked data.

curl -H 'Accept: application/rdf+xml' 'https://scigraph.springernature.com/pub.10.1007/978-1-4471-1486-4_16'


 

This table displays all metadata directly associated to this object as RDF triples.

98 TRIPLES      23 PREDICATES      32 URIs      20 LITERALS      8 BLANK NODES

Subject Predicate Object
1 sg:pub.10.1007/978-1-4471-1486-4_16 schema:about anzsrc-for:08
2 anzsrc-for:0806
3 schema:author N2219051344964d1e9fee1a0d36efeda3
4 schema:citation https://doi.org/10.1002/spe.4380151003
5 https://doi.org/10.1016/0950-5849(90)90018-m
6 https://doi.org/10.1145/125223.125238
7 https://doi.org/10.1145/125223.125244
8 https://doi.org/10.1145/62070.45066
9 schema:datePublished 1996
10 schema:datePublishedReg 1996-01-01
11 schema:description In conventional object oriented programming languages, objects are transient, that is they are destroyed upon program termination. Storing objects using explicit file access methods may cause objects to lose their manipulation and access semantics since the objects with different declarations may have the same storage representation. In this work persistence is added to C++ in DOS environment through a preprocessor and a class library developed in C++, such that the access and manipulation semantics of objects are preserved. The new language is called C**. The disk management of objects declared as persistent are automatically handled by the system through a virtual memory management emulation. Persistency is implemented as a storage class that is completely orthogonal to type. In other words, persistency is a property of objects, not their classes. Language changes are kept to a minimum, thus among the existing persistent C++ implementations, C** requires the minimum coding effort. Furthermore objects of any complexity with arbitrary level of pointer indirections to any type of object is supported. As a result, objects are stored on disk as they are represented in memory. Upward compatibility with C++ is preserved. The hybrid object identifier (OID) mechanism implemented in C** enables dynamic clustering and reduction in the object table size. Although there are several other persistent C++ implementations, the implementation technique of C** is original in that it provides the user with transparent type modifications and uses operator overloading extensively in realizing persistency. To the best of our knowledge C** is the first persistent C++ implementation on DOS with persistence as a storage class.
12 schema:editor Nfcc7c0ed12af4c01bf316f61fc16c5eb
13 schema:genre chapter
14 schema:inLanguage en
15 schema:isAccessibleForFree false
16 schema:isPartOf N3b6761eeb34e4874a9ffad7dcac5cdf6
17 schema:name A Preprocessor Approach to Persistent C++
18 schema:pagination 235-251
19 schema:productId N6d0a91cef62a4cd7a401bb2a8a7a72db
20 Ne4d2464a20dc4317bf5bce4837cc81f4
21 Nf70630a0efa14ce3bfb0e7511dd68602
22 schema:publisher Na03e4af44b4d4269a53368b9075d9d63
23 schema:sameAs https://app.dimensions.ai/details/publication/pub.1010296669
24 https://doi.org/10.1007/978-1-4471-1486-4_16
25 schema:sdDatePublished 2019-04-15T21:00
26 schema:sdLicense https://scigraph.springernature.com/explorer/license/
27 schema:sdPublisher N4db2147a1d6744b9b5e50a0156eb75a8
28 schema:url http://link.springer.com/10.1007/978-1-4471-1486-4_16
29 sgo:license sg:explorer/license/
30 sgo:sdDataset chapters
31 rdf:type schema:Chapter
32 N08be9a57882b4d31a56a29526681022d rdf:first N4524d7b0014046abb705ed2164524b2a
33 rdf:rest rdf:nil
34 N2219051344964d1e9fee1a0d36efeda3 rdf:first sg:person.013633220171.70
35 rdf:rest Nd3e8775a78e04c79b44c83158ea122df
36 N3b6761eeb34e4874a9ffad7dcac5cdf6 schema:isbn 978-1-4471-1486-4
37 978-3-540-76014-6
38 schema:name Advances in Databases and Information Systems
39 rdf:type schema:Book
40 N4524d7b0014046abb705ed2164524b2a schema:affiliation https://www.grid.ac/institutes/grid.426409.d
41 schema:familyName Gesli
42 schema:givenName Tolga
43 rdf:type schema:Person
44 N4db2147a1d6744b9b5e50a0156eb75a8 schema:name Springer Nature - SN SciGraph project
45 rdf:type schema:Organization
46 N545f4947358147dc98ce3059fb5e7f0b schema:familyName Kalinichenko
47 schema:givenName Leonid A.
48 rdf:type schema:Person
49 N6d0a91cef62a4cd7a401bb2a8a7a72db schema:name doi
50 schema:value 10.1007/978-1-4471-1486-4_16
51 rdf:type schema:PropertyValue
52 Na03e4af44b4d4269a53368b9075d9d63 schema:location London
53 schema:name Springer London
54 rdf:type schema:Organisation
55 Na0af61677e104a7fb230813674f72152 schema:familyName Eder
56 schema:givenName Johann
57 rdf:type schema:Person
58 Nca2f9207e920413b824a9dbae9379d86 rdf:first N545f4947358147dc98ce3059fb5e7f0b
59 rdf:rest rdf:nil
60 Nd3e8775a78e04c79b44c83158ea122df rdf:first sg:person.01074167140.73
61 rdf:rest N08be9a57882b4d31a56a29526681022d
62 Ne4d2464a20dc4317bf5bce4837cc81f4 schema:name dimensions_id
63 schema:value pub.1010296669
64 rdf:type schema:PropertyValue
65 Nf70630a0efa14ce3bfb0e7511dd68602 schema:name readcube_id
66 schema:value 310deec813a3f99784ff30347a420fff6ed1d4e225c8c097e8c87777e3c2ef08
67 rdf:type schema:PropertyValue
68 Nfcc7c0ed12af4c01bf316f61fc16c5eb rdf:first Na0af61677e104a7fb230813674f72152
69 rdf:rest Nca2f9207e920413b824a9dbae9379d86
70 anzsrc-for:08 schema:inDefinedTermSet anzsrc-for:
71 schema:name Information and Computing Sciences
72 rdf:type schema:DefinedTerm
73 anzsrc-for:0806 schema:inDefinedTermSet anzsrc-for:
74 schema:name Information Systems
75 rdf:type schema:DefinedTerm
76 sg:person.01074167140.73 schema:affiliation https://www.grid.ac/institutes/grid.426409.d
77 schema:familyName Dogac
78 schema:givenName Asuman
79 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.01074167140.73
80 rdf:type schema:Person
81 sg:person.013633220171.70 schema:affiliation https://www.grid.ac/institutes/grid.426409.d
82 schema:familyName Evrendilek
83 schema:givenName Cem
84 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.013633220171.70
85 rdf:type schema:Person
86 https://doi.org/10.1002/spe.4380151003 schema:sameAs https://app.dimensions.ai/details/publication/pub.1002286109
87 rdf:type schema:CreativeWork
88 https://doi.org/10.1016/0950-5849(90)90018-m schema:sameAs https://app.dimensions.ai/details/publication/pub.1017803818
89 rdf:type schema:CreativeWork
90 https://doi.org/10.1145/125223.125238 schema:sameAs https://app.dimensions.ai/details/publication/pub.1030412708
91 rdf:type schema:CreativeWork
92 https://doi.org/10.1145/125223.125244 schema:sameAs https://app.dimensions.ai/details/publication/pub.1011188702
93 rdf:type schema:CreativeWork
94 https://doi.org/10.1145/62070.45066 schema:sameAs https://app.dimensions.ai/details/publication/pub.1033823296
95 rdf:type schema:CreativeWork
96 https://www.grid.ac/institutes/grid.426409.d schema:alternateName Scientific and Technological Research Council of Turkey
97 schema:name Software Research and Development Center, Scientific and Technical Research Council of Turkey, Turkey
98 rdf:type schema:Organization
 




Preview window. Press ESC to close (or click here)


...