11#ifndef __Pulsar_Agent_h
12#define __Pulsar_Agent_h
14#include "Pulsar/Archive.h"
24 class Archive::Agent :
public Reference::Able {
32 virtual bool advocate (
const char* filename) = 0;
35 virtual std::string get_name () = 0;
38 virtual std::string get_description () = 0;
41 virtual Archive* new_Archive () = 0;
44 static std::string get_plugin_path (
const char* shell_variable);
47 static void report ();
50 static std::string get_list ();
53 static void get_list( std::vector<std::pair<std::string,std::string> >& );
58 static std::string plugin_path;
70 template<
class Plugin>
71 class Archive::Advocate :
public Agent {
76 Advocate () { entry.get(); }
79 Archive* new_Archive () {
return new Plugin; }
82 static void ensure_linkage () { entry.get(); }
87 static Registry::List<Archive::Agent>::Enter<
typename Plugin::Agent> entry;
92 template<
class Plugin>
93 Registry::List<Archive::Agent>::Enter<
typename Plugin::Agent>
94 Archive::Advocate<Plugin>::entry;
Archive()
Default constructor.
Definition Archive.C:67
Defines the PSRCHIVE library.
Definition CalSource.h:17