comp.lang.ada
 help / color / mirror / Atom feed
From: Victor Porton <porton@narod.ru>
Subject: Re: Library cleanup
Date: Tue, 20 May 2014 20:27:20 +0300
Date: 2014-05-20T20:27:20+03:00	[thread overview]
Message-ID: <llg39k$87a$1@speranza.aioe.org> (raw)
In-Reply-To: 1vqik1odcvjrw$.tsdp6cr7bp5y.dlg@40tude.net

Dmitry A. Kazakov wrote:

> On Tue, 20 May 2014 15:56:40 +0300, Victor Porton wrote:
> 
>> I am writing bindings for a C library which requires both initialization
>> and cleanup:
>> 
>> [[[
>> raptor_init()
>> raptor_finish()
>> 
>> Initialise and cleanup the library. These must be called before any
>> raptor class such as raptor_parser, raptor_uri is created or used. Note:
>> as of 1.4.19 these are wrappers around a static instance of the new
>> raptor_world class. In Raptor 2.0 this initialisation and cleanup method
>> will be removed. ]]]
>> 
>> Initialization is clear: I just put it into the handled sequence of
>> statements of the package (should I also add Elaborate and/or
>> Elaborate_Body pragma?)
>> 
>> But how to do cleanup? That is, where to call raptor_finish()?
>> 
>> One way is to create a Limited_Controlled object in the package. Is there
>> a simpler way?
> 
> It is simple enough.
> 
> But much simpler is not to call raptor_finish() at all.
> 
> If the library is not OS-conformant, to clean up its internal persistent
> state (does it have any?) upon unloading its instance, for example, when
> the client application unexpectedly crashes, such a library must be
> removed from the computer ASAP and never installed again.

I disagree: It is quite legitimate for a library to create a temporary file, 
which may be deleted in library cleanup.

-- 
Victor Porton - http://portonvictor.org


  reply	other threads:[~2014-05-20 17:27 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-20 12:56 Library cleanup Victor Porton
2014-05-20 16:20 ` Dmitry A. Kazakov
2014-05-20 17:27   ` Victor Porton [this message]
2014-05-20 19:51     ` Dmitry A. Kazakov
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox