• Places
    • Home
    • Graphs
    • Prefixes
  • Admin
    • Users
    • Settings
    • Plugins
    • Statistics
  • CPACK
    • Home
    • List packs
    • Submit pack
  • Repository
    • Load local file
    • Load from HTTP
    • Load from library
    • Remove triples
    • Clear repository
  • Query
    • YASGUI SPARQL Editor
    • Simple Form
    • SWISH Prolog shell
  • Help
    • Documentation
    • Tutorial
    • Roadmap
    • HTTP Services
  • Login

12.4.17 Miscellaneous
All Application Manual Name SummaryHelp

  • Documentation
    • Reference manual
      • Foreign Language Interface
        • The Foreign Include File
          • Miscellaneous
            • Term Comparison
            • Recorded database
            • Database
              • PL_assert()
            • Getting file names
            • Dealing with Prolog flags from C
    • Packages
id="idx:recorda3:2577">recorda/3 and friends. The recorded database may be used to communicate Prolog terms between threads.
record_t PL_record(term_t +t)
Record the term t into the Prolog database as recorda/3 and return an opaque handle to the term. The returned handle remains valid until PL_erase() is called on it. PL_recorded() is used to copy recorded terms back to the Prolog stack. Currently aborts the process with a fatal error on failure. Future versions may raise a resource exception and return (record_t)0.
record_t PL_duplicate_record(record_t record)
Return a duplicate of record. As records are read-only objects this function merely increments the records reference count. Returns (record_t)0 if the record is an external record (see PL_record_external()).
int PL_recorded(record_t record, term_t -t)
Copy a recorded term back to the Prolog stack. The same record may be used to copy multiple instances at any time to the Prolog stack. Returns TRUE on success, and FALSE if there is not enough space on the stack to accommodate the term. See also PL_record() and PL_erase().
void PL_erase(record_t record)
Remove the recorded term from the Prolog database, reclaiming all associated memory resources.

The second group (headed by PL_record_external()) provides the same functionality, but the returned data has properties that enable storing the data on an external device. It has been designed for fast and compact storage of Prolog terms in an external database. Here are the main features:

  • Independent of session
    Records can be communicated to another Prolog session and made visible using PL_recorded_external().
  • Binary
    The representation is binary for maximum performance. The returned data may contain zero bytes.
  • Byte-order independent
    The representation can be transferred between machines with different byte order.
  • No alignment restrictions
    There are no memory alignment restrictions and copies of the record can thus be moved freely. For example, it is possible to use this representation to exchange terms using shared memory between different Prolog processes.
  • Compact
    It is assumed that a smaller memory footprint will eventually outperform slightly faster representations.
  • Stable
    The format is designed for future enhancements without breaking compatibility with older records.
char * PL_recor

ClioPatria (version V3.1.1-42-gd6a756b-DIRTY)