FlightGear next
NasalSys.cxx File Reference
#include "config.h"
#include <algorithm>
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fstream>
#include <sstream>
#include <vector>
#include <simgear/debug/ErrorReportingCallback.hxx>
#include <simgear/io/iostreams/sgstream.hxx>
#include <simgear/math/sg_geodesy.hxx>
#include <simgear/math/sg_random.hxx>
#include <simgear/misc/sg_dir.hxx>
#include <simgear/misc/sg_path.hxx>
#include <simgear/misc/strutils.hxx>
#include <simgear/nasal/iolib.h>
#include <simgear/nasal/nasal.h>
#include <simgear/props/props.hxx>
#include <simgear/structure/commands.hxx>
#include <simgear/structure/event_mgr.hxx>
#include <simgear/io/sg_mmap.hxx>
#include <simgear/nasal/cppbind/from_nasal.hxx>
#include <simgear/nasal/cppbind/to_nasal.hxx>
#include <simgear/nasal/cppbind/Ghost.hxx>
#include <simgear/nasal/cppbind/NasalHash.hxx>
#include <simgear/timing/timestamp.hxx>
#include "NasalAddons.hxx"
#include "NasalAircraft.hxx"
#include "NasalCanvas.hxx"
#include "NasalClipboard.hxx"
#include "NasalCondition.hxx"
#include "NasalFlightPlan.hxx"
#include "NasalHTTP.hxx"
#include "NasalPositioned.hxx"
#include "NasalSGPath.hxx"
#include "NasalString.hxx"
#include "NasalSys.hxx"
#include "NasalSys_private.hxx"
#include "NasalTranslations.hxx"
#include "NasalUnitTesting.hxx"
#include <Main/globals.hxx>
#include <Main/fg_props.hxx>
#include <Main/sentryIntegration.hxx>

Go to the source code of this file.

Classes

class  FGNasalModuleListener
 
class  TimerObj
 
class  TimeStampObj
 Timestamp - used to provide millisecond based timing of operations. See SGTimeStamp / 0.373404us to perform elapsedUSec from Nasal : Tested i7-4790K, Win64. More...
 
struct  SimNasalLogFileLine
 
class  NasalCommand
 

Typedefs

typedef SGSharedPtr< TimerObjTimerObjRef
 
typedef nasal::Ghost< TimerObjRefNasalTimerObj
 
typedef SGSharedPtr< TimeStampObjTimeStampObjRef
 
typedef nasal::Ghost< TimeStampObjRefNasalTimeStampObj
 

Functions

void postinitNasalGUI (naRef globals, naContext c)
 
static void f_timerObj_setSimTime (TimerObj &timer, naContext c, naRef value)
 
static SGPropertyNode * findnode (naContext c, naRef *vec, int len, bool create=false)
 
static naRef f_getprop (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_setprop (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_print (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_logprint (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_fgcommand (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_settimer (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_makeTimer (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_makeSingleShot (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_maketimeStamp (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_setlistener (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_removelistener (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_cmdarg (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_interpolate (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_rand (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_srand (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_abort (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_directory (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_resolveDataPath (naContext c, naRef me, int argc, naRef *args)
 Given a data path, resolve it in FG_ROOT or an FG_AIRCRFT directory.
 
static naRef f_findDataDir (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_addCommand (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_removeCommand (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_open (naContext c, naRef me, int argc, naRef *args)
 
static naRef ftype (naContext ctx, const SGPath &f)
 
static naRef f_custom_stat (naContext ctx, naRef me, int argc, naRef *args)
 
static naRef f_parsexml (naContext c, naRef me, int argc, naRef *args)
 
static naRef f_md5 (naContext c, naRef me, int argc, naRef *args)
 Create md5 hash from given string.
 
static naRef f_systime (naContext c, naRef me, int argc, naRef *args)
 
bool pathSortPredicate (const SGPath &p1, const SGPath &p2)
 
SGSubsystemMgr::Registrant< FGNasalSysregistrantFGNasalSys (SGSubsystemMgr::INIT)
 
int nasalStructEqual (naContext ctx, naRef a, naRef b)
 @breif wrapper for naEqual which recursively checks vec/hash equality Probably not very performant.
 

Variables

static FGNasalSysnasalSys = nullptr
 
bool global_nasalMinimalInit = false
 
struct { 
 
   const char *   name 
 
   naCFunction   func 
 
funcs [] 
 

Typedef Documentation

◆ NasalTimerObj

typedef nasal::Ghost<TimerObjRef> NasalTimerObj

Definition at line 234 of file NasalSys.cxx.

◆ NasalTimeStampObj

typedef nasal::Ghost<TimeStampObjRef> NasalTimeStampObj

Definition at line 276 of file NasalSys.cxx.

◆ TimerObjRef

typedef SGSharedPtr<TimerObj> TimerObjRef

Definition at line 233 of file NasalSys.cxx.

◆ TimeStampObjRef

typedef SGSharedPtr<TimeStampObj> TimeStampObjRef

Definition at line 275 of file NasalSys.cxx.

Function Documentation

◆ f_abort()

static naRef f_abort ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 740 of file NasalSys.cxx.

◆ f_addCommand()

static naRef f_addCommand ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 833 of file NasalSys.cxx.

◆ f_cmdarg()

static naRef f_cmdarg ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 688 of file NasalSys.cxx.

◆ f_custom_stat()

static naRef f_custom_stat ( naContext ctx,
naRef me,
int argc,
naRef * args )
static

Definition at line 900 of file NasalSys.cxx.

◆ f_directory()

static naRef f_directory ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 747 of file NasalSys.cxx.

◆ f_fgcommand()

static naRef f_fgcommand ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 601 of file NasalSys.cxx.

◆ f_findDataDir()

static naRef f_findDataDir ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 788 of file NasalSys.cxx.

◆ f_getprop()

static naRef f_getprop ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 451 of file NasalSys.cxx.

◆ f_interpolate()

static naRef f_interpolate ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 697 of file NasalSys.cxx.

◆ f_logprint()

static naRef f_logprint ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 576 of file NasalSys.cxx.

◆ f_makeSingleShot()

static naRef f_makeSingleShot ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 644 of file NasalSys.cxx.

◆ f_makeTimer()

static naRef f_makeTimer ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 624 of file NasalSys.cxx.

◆ f_maketimeStamp()

static naRef f_maketimeStamp ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 666 of file NasalSys.cxx.

◆ f_md5()

static naRef f_md5 ( naContext c,
naRef me,
int argc,
naRef * args )
static

Create md5 hash from given string.

md5(str)

Definition at line 990 of file NasalSys.cxx.

◆ f_open()

static naRef f_open ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 860 of file NasalSys.cxx.

◆ f_parsexml()

static naRef f_parsexml ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 953 of file NasalSys.cxx.

◆ f_print()

static naRef f_print ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 538 of file NasalSys.cxx.

◆ f_rand()

static naRef f_rand ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 729 of file NasalSys.cxx.

◆ f_removeCommand()

static naRef f_removeCommand ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 847 of file NasalSys.cxx.

◆ f_removelistener()

static naRef f_removelistener ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 681 of file NasalSys.cxx.

◆ f_resolveDataPath()

static naRef f_resolveDataPath ( naContext c,
naRef me,
int argc,
naRef * args )
static

Given a data path, resolve it in FG_ROOT or an FG_AIRCRFT directory.

Definition at line 778 of file NasalSys.cxx.

◆ f_setlistener()

static naRef f_setlistener ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 674 of file NasalSys.cxx.

◆ f_setprop()

static naRef f_setprop ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 491 of file NasalSys.cxx.

◆ f_settimer()

static naRef f_settimer ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 618 of file NasalSys.cxx.

◆ f_srand()

static naRef f_srand ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 734 of file NasalSys.cxx.

◆ f_systime()

static naRef f_systime ( naContext c,
naRef me,
int argc,
naRef * args )
static

Definition at line 1002 of file NasalSys.cxx.

◆ f_timerObj_setSimTime()

static void f_timerObj_setSimTime ( TimerObj & timer,
naContext c,
naRef value )
static

Definition at line 236 of file NasalSys.cxx.

◆ findnode()

static SGPropertyNode * findnode ( naContext c,
naRef * vec,
int len,
bool create = false )
static

Definition at line 424 of file NasalSys.cxx.

◆ ftype()

static naRef ftype ( naContext ctx,
const SGPath & f )
static

Definition at line 890 of file NasalSys.cxx.

◆ nasalStructEqual()

int nasalStructEqual ( naContext ctx,
naRef a,
naRef b )

@breif wrapper for naEqual which recursively checks vec/hash equality Probably not very performant.

Definition at line 2088 of file NasalSys.cxx.

◆ pathSortPredicate()

bool pathSortPredicate ( const SGPath & p1,
const SGPath & p2 )

Definition at line 1299 of file NasalSys.cxx.

◆ postinitNasalGUI()

void postinitNasalGUI ( naRef globals,
naContext c )

Definition at line 157 of file FileDialog.cxx.

◆ registrantFGNasalSys()

SGSubsystemMgr::Registrant< FGNasalSys > registrantFGNasalSys ( SGSubsystemMgr::INIT )

Variable Documentation

◆ func

naCFunction func

Definition at line 1018 of file NasalSys.cxx.

◆ [struct]

struct { ... } funcs[]
Initial value:
= {
{"getprop", f_getprop},
{"setprop", f_setprop},
{"print", f_print},
{"logprint", f_logprint},
{"_fgcommand", f_fgcommand},
{"settimer", f_settimer},
{"maketimer", f_makeTimer},
{"makesingleshot", f_makeSingleShot},
{"_setlistener", f_setlistener},
{"removelistener", f_removelistener},
{"addcommand", f_addCommand},
{"removecommand", f_removeCommand},
{"_cmdarg", f_cmdarg},
{"_interpolate", f_interpolate},
{"rand", f_rand},
{"srand", f_srand},
{"abort", f_abort},
{"directory", f_directory},
{"resolvepath", f_resolveDataPath},
{"finddata", f_findDataDir},
{"parsexml", f_parsexml},
{"md5", f_md5},
{"systime", f_systime},
{"maketimestamp", f_maketimeStamp},
{0, 0}}
static naRef f_settimer(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:618
static naRef f_getprop(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:451
static naRef f_fgcommand(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:601
static naRef f_parsexml(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:953
static naRef f_print(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:538
static naRef f_systime(naContext c, naRef me, int argc, naRef *args)
static naRef f_srand(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:734
static naRef f_cmdarg(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:688
static naRef f_setlistener(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:674
static naRef f_makeTimer(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:624
static naRef f_setprop(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:491
static naRef f_logprint(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:576
static naRef f_addCommand(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:833
static naRef f_md5(naContext c, naRef me, int argc, naRef *args)
Create md5 hash from given string.
Definition NasalSys.cxx:990
static naRef f_abort(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:740
static naRef f_removelistener(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:681
static naRef f_rand(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:729
static naRef f_findDataDir(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:788
static naRef f_maketimeStamp(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:666
static naRef f_removeCommand(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:847
static naRef f_resolveDataPath(naContext c, naRef me, int argc, naRef *args)
Given a data path, resolve it in FG_ROOT or an FG_AIRCRFT directory.
Definition NasalSys.cxx:778
static naRef f_directory(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:747
static naRef f_interpolate(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:697
static naRef f_makeSingleShot(naContext c, naRef me, int argc, naRef *args)
Definition NasalSys.cxx:644

◆ global_nasalMinimalInit

bool global_nasalMinimalInit = false

Definition at line 86 of file NasalSys.cxx.

◆ name

const char* name

Definition at line 1018 of file NasalSys.cxx.

◆ nasalSys

FGNasalSys* nasalSys = nullptr
static

Definition at line 82 of file NasalSys.cxx.