Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AG_CORE(3)		     Library Functions Manual		      AG_CORE(3)

NAME
     AG_Core -- agar core library initialization

SYNOPSIS
     #include <agar/core.h>

DESCRIPTION
     The  Agar-Core  library implements the AG_Object(3) system and provides in-
     terfaces to common operating system services  (filesystems,  network  APIs,
     threads,  etc).   Agar-GUI is built on top of AG_Core, but Agar-Core itself
     contains no GUI-related code and may be installed independently.

     For a complete listing of available  subsystems  and  interfaces,	see  the
     "AGAR-CORE" section of AG_Intro(3).

INITIALIZATION
     int AG_InitCore(const char *progname, Uint flags)

     void AG_AtExitFunc(void (*fn)(void))

     void AG_Quit(void)

     void AG_Destroy(void)

     The AG_InitCore() function initializes the AG_Core library.  progname is an
     optional  identifier  for	the program.  This name may be used to construct
     platform-specific directory paths.  Unless the AG_CREATE_DATADIR flags  op-
     tion is set, the progname argument can be NULL.

     Available flags options include:

     AG_VERBOSE 	 Allow errors/warnings on the standard error output.

     AG_CREATE_DATADIR	 Check	that the application data directory exists, cre-
			 ate it if necessary (or fail if it cannot be  created).
			 It  contains  the  state of objects saved by AG_Object-
			 Save(3).  The default is $HOME/.progname/ on  Unix  and
			 platform-dependent elsewhere.

     AG_SOFT_TIMERS	 Don't	use  OS-provided  timer  mechanisms (such as BSD
			 kqueue(2), Linux timerfd or select(2)).  Timers will be
			 handled either by explicitely updating a software-based
			 timing wheel (see AG_ProcessTimeouts(3)), or some other
			 mechanism.

     AG_POSIX_USERS	 If both AG_User(3) modules  "getenv"  and  "posix"  are
			 available, prefer "posix".  This is not the default be-
			 cause	"posix"  incurs potential startup overhead while
			 initially accessing the password database (and $HOME is
			 all Agar needs for its own purposes).

     The AG_AtExitFunc() registers a function that will be invoked automatically
     by AG_Destroy().

     AG_Quit() terminates the application by releasing	resources  allocated  by
     AG_Core and invoking exit(2).

     The  AG_Destroy()	function releases all resources allocated by the AG_Core
     library.

AGAR VERSION INFORMATION
     void AG_GetVersion(AG_AgarVersion *ver)

     bool AG_VERSION_ATLEAST(int major, int minor, int patchlevel)

     The AG_GetVersion() function fills an AG_AgarVersion structure with version
     information:

     typedef struct ag_agar_version {
	     int major;
	     int minor;
	     int patch;
	     const char *release;
     } AG_AgarVersion;

     Agar does not need to have been previously initialized for  AG_GetVersion()
     to work.

     The  AG_VERSION_ATLEAST()	macro evaluates to true if the current Agar ver-
     sion is equal to, or exceeds the given version number.

EXAMPLES
     The following program initializes Agar-Core and prints the Agar version and
     release information:

	   int
	   main(int argc, char *argv[])
	   {
		   AG_AgarVersion *ver;

		   if (AG_InitCore("myProgram", 0) == -1) {
			   AG_Verbose("AG_InitCore: %s\n", AG_GetError());
			   return (1);
		   }

		   AG_GetVersion(&ver);
		   AG_Verbose("Hello Agar %d.%d.%d (\"%s\")\n",
		       ver.major, ver.minor, ver.patch, ver.release);

		   AG_Destroy()
		   return (0);
	   }

SEE ALSO
     AG_Config(3),   AG_DataSource(3),	 AG_Db(3),    AG_DSO(3),    AG_Error(3),
     AG_Event(3),   AG_EventLoop(3),   AG_Execute(3),  AG_File(3),  AG_Intro(3),
     AG_Limits(3),  AG_Net(3),	AG_Object(3),  AG_String(3),  AG_TextElement(3),
     AG_Threads(3), AG_Time(3), AG_Timer(3), AG_User(3), AG_Variable(3), AG_Ver-
     sion(3)

HISTORY
     The   AG_InitCore()   function   first   appeared	 in   Agar   1.0.    The
     AG_CREATE_DATADIR option appeared in Agar 1.3.3.	AG_SOFT_TIMERS	in  Agar
     1.5.0 and AG_POSIX_USERS in Agar 1.6.0.

Agar 1.7			December 21, 2022		      AG_CORE(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=AG_Core&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help