]> git.mxchange.org Git - flightgear.git/commitdiff
- make function table and lookup function
authormfranz <mfranz>
Thu, 15 Jun 2006 18:09:15 +0000 (18:09 +0000)
committermfranz <mfranz>
Thu, 15 Jun 2006 18:09:15 +0000 (18:09 +0000)
- make unnamed elements explicitly "[unnamed]"

src/Cockpit/cockpit.cxx
src/Cockpit/hud_card.cxx
src/Cockpit/hud_gaug.cxx
src/Cockpit/hud_labl.cxx
src/Cockpit/hud_ladr.cxx
src/Cockpit/hud_rwy.cxx
src/Cockpit/hud_tbi.cxx
src/Cockpit/panel_io.cxx

index a1b034754d483ee481cbdefe4499fc0b8bfef8e8..2a1029284982ccc5541648cc166b4da2a48a0905 100644 (file)
@@ -729,3 +729,66 @@ void fgCockpitUpdate( void ) {
     glViewport( 0, 0, iwidth, iheight );
 }
 
+
+
+
+
+struct FuncTable {
+    char *name;
+    FLTFNPTR func;
+} fn_table[] = {
+    { "agl", get_agl },
+    { "aileronval", get_aileronval },
+    { "altitude", get_altitude },
+    { "anzg", get_anzg },
+    { "aoa", get_aoa },
+    { "ax", get_Ax },
+    { "climb", get_climb_rate },
+    { "elevatortrimval", get_elev_trimval },
+    { "elevatorval", get_elevatorval },
+    { "fov", get_fov },
+    { "framerate", get_frame_rate },
+    { "heading", get_heading },
+    { "latitude", get_latitude },
+    { "longitude", get_longitude },
+    { "mach", get_mach },
+    { "rudderval", get_rudderval },
+    { "speed", get_speed },
+    { "throttleval", get_throttleval },
+    { "view_direction", get_view_direction },
+    { "vfc_tris_culled", get_vfc_tris_culled },
+    { "vfc_tris_drawn", get_vfc_tris_drawn },
+#ifdef ENABLE_SP_FMDS
+    { "aux1", get_aux1 },
+    { "aux2", get_aux2 },
+    { "aux3", get_aux3 },
+    { "aux4", get_aux4 },
+    { "aux5", get_aux5 },
+    { "aux6", get_aux6 },
+    { "aux7", get_aux7 },
+    { "aux8", get_aux8 },
+    { "aux9", get_aux9 },
+    { "aux10", get_aux10 },
+    { "aux11", get_aux11 },
+    { "aux12", get_aux12 },
+    { "aux13", get_aux13 },
+    { "aux14", get_aux14 },
+    { "aux15", get_aux15 },
+    { "aux16", get_aux16 },
+    { "aux17", get_aux17 },
+    { "aux18", get_aux18 },
+#endif
+    { 0, 0 },
+};
+
+
+FLTFNPTR get_func(const char *name)
+{
+    for (int i = 0; fn_table[i].name; i++)
+        if (!strcmp(fn_table[i].name, name))
+            return fn_table[i].func;
+
+    return 0;
+}
+
+
index 7f8deddb5c8adb2956fb2dfbf57027d21e7fd438..c60efd0d04bb4774f2d4c3953953fa9fba189d4e 100644 (file)
@@ -16,6 +16,7 @@
 #define textString(x, y, text, digit)  puDrawString(guiFnt, text, x, y)
 #endif
 
+FLTFNPTR get_func(const char *name);   // FIXME
 
 hud_card::hud_card(const SGPropertyNode *node) :
     instr_scale(
@@ -32,7 +33,7 @@ hud_card::hud_card(const SGPropertyNode *node) :
             node->getIntValue("major_divs"),
             node->getIntValue("minor_divs"),
             node->getIntValue("modulator"),
-            node->getBoolValue("working")),
+            node->getBoolValue("working", true)),
     val_span(node->getFloatValue("value_span")),    // FIXME
     type(node->getStringValue("type")),
     draw_tick_bottom(node->getBoolValue("tick_bottom", false)),
@@ -59,39 +60,7 @@ hud_card::hud_card(const SGPropertyNode *node) :
     SG_LOG(SG_INPUT, SG_INFO, "Done reading dial/tape instrument "
             << node->getStringValue("name", "[unnamed]"));
 
-    string loadfn = node->getStringValue("loadfn");
-    float (*load_fn)(void);
-    if (loadfn == "anzg")
-        load_fn = get_anzg;
-    else if (loadfn == "heading")
-        load_fn = get_heading;
-    else if (loadfn == "aoa")
-        load_fn = get_aoa;
-    else if (loadfn == "climb")
-        load_fn = get_climb_rate;
-    else if (loadfn == "altitude")
-        load_fn = get_altitude;
-    else if (loadfn == "agl")
-        load_fn = get_agl;
-    else if (loadfn == "speed")
-        load_fn = get_speed;
-    else if (loadfn == "view_direction")
-        load_fn = get_view_direction;
-    else if (loadfn == "aileronval")
-        load_fn = get_aileronval;
-    else if (loadfn == "elevatorval")
-        load_fn = get_elevatorval;
-    else if (loadfn == "elevatortrimval")
-        load_fn = get_elev_trimval;
-    else if (loadfn == "rudderval")
-        load_fn = get_rudderval;
-    else if (loadfn == "throttleval")
-        load_fn = get_throttleval;
-    else
-        load_fn = 0;
-
-    set_data_source(load_fn);
-
+    set_data_source(get_func(node->getStringValue("loadfn")));
     half_width_units = range_to_show() / 2.0;
 }
 
index 51568fd30acd6237b882ef9dfb680ad62e04523a..30b91bd4c72cad02349179caa4e0acbb6769ecaf 100644 (file)
@@ -6,6 +6,7 @@
 #define textString(x, y, text, digit)  puDrawString(guiFnt, text, x, y)
 #endif
 
+FLTFNPTR get_func(const char *name);   // FIXME
 
 gauge_instr::gauge_instr(const SGPropertyNode *node) :
     instr_scale(
@@ -23,43 +24,12 @@ gauge_instr::gauge_instr(const SGPropertyNode *node) :
             node->getIntValue("minor_divs"),
             node->getIntValue("modulator"), // "rollover"
             0, /* hud.cxx: static int dp_shoing = 0; */    // FIXME
-            node->getBoolValue("working"))
+            node->getBoolValue("working", true))
 {
     SG_LOG(SG_INPUT, SG_INFO, "Done reading gauge instrument "
             << node->getStringValue("name", "[unnamed]"));
 
-    string loadfn = node->getStringValue("loadfn");            // FIXME
-    float (*load_fn)(void);
-    if (loadfn=="anzg") {
-        load_fn = get_anzg;
-    } else if (loadfn=="heading") {
-        load_fn = get_heading;
-    } else if (loadfn=="aoa") {
-        load_fn = get_aoa;
-    } else if (loadfn=="climb") {
-        load_fn = get_climb_rate;
-    } else if (loadfn=="altitude") {
-        load_fn = get_altitude;
-    } else if (loadfn=="agl") {
-        load_fn = get_agl;
-    } else if (loadfn=="speed") {
-        load_fn = get_speed;
-    } else if (loadfn=="view_direction") {
-        load_fn = get_view_direction;
-    } else if (loadfn=="aileronval") {
-        load_fn = get_aileronval;
-    } else if (loadfn=="elevatorval") {
-        load_fn = get_elevatorval;
-    } else if (loadfn=="elevatortrimval") {
-        load_fn = get_elev_trimval;
-    } else if (loadfn=="rudderval") {
-        load_fn = get_rudderval;
-    } else if (loadfn=="throttleval") {
-        load_fn = get_throttleval;
-    } else
-        load_fn = 0;
-
-    set_data_source(load_fn);
+    set_data_source(get_func(node->getStringValue("loadfn")));
 }
 
 
index 6012e58bd7ba0be7df5604475bca376983ee086a..ceaeaf05f0d3b390f52a989a11a21b1ccd7a449e 100644 (file)
@@ -8,13 +8,7 @@
 #define textString(x, y, text, digit)  puDrawString(guiFnt, text, x, y)
 #endif
 
-// FIXME
-extern float get_aux1(), get_aux2(), get_aux3(), get_aux4(), get_aux5(), get_aux6();
-extern float get_aux7(), get_aux8(), get_aux9(), get_aux10(), get_aux11(), get_aux12();
-extern float get_aux13(), get_aux14(), get_aux15(), get_aux16(), get_aux17(), get_aux18();
-extern float get_Ax(), get_speed(), get_mach(), get_altitude(), get_agl(), get_frame_rate();
-extern float get_heading(), get_fov(), get_vfc_tris_culled(), get_vfc_tris_drawn(), get_aoa();
-extern float get_latitude(), get_anzg(), get_longitude(), get_throttleval();
+FLTFNPTR get_func(const char *name);   // FIXME
 
 instr_label::instr_label(const SGPropertyNode *node) :
     instr_item(
@@ -25,7 +19,7 @@ instr_label::instr_label(const SGPropertyNode *node) :
             NULL /* node->getStringValue("data_source") */,    // FIXME
             node->getFloatValue("scale_data"),
             node->getIntValue("options"),
-            node->getBoolValue("working"),
+            node->getBoolValue("working", true),
             node->getIntValue("digits")),
     pformat(node->getStringValue("label_format")),
     pre_str(node->getStringValue("pre_label_string")),
@@ -37,83 +31,9 @@ instr_label::instr_label(const SGPropertyNode *node) :
     lbox(node->getBoolValue("label_box", false))
 {
     SG_LOG(SG_INPUT, SG_INFO, "Done reading instr_label instrument "
-            << node->getStringValue("name", "[none]"));
-
-    string loadfn = node->getStringValue("data_source");       // FIXME
-    float (*load_fn)(void);
-#ifdef ENABLE_SP_FMDS
-    if (loadfn == "aux1")
-        load_fn = get_aux1;
-    else if (loadfn == "aux2")
-        load_fn = get_aux2;
-    else if (loadfn == "aux3")
-        load_fn = get_aux3;
-    else if (loadfn == "aux4")
-        load_fn = get_aux4;
-    else if (loadfn == "aux5")
-        load_fn = get_aux5;
-    else if (loadfn == "aux6")
-        load_fn = get_aux6;
-    else if (loadfn == "aux7")
-        load_fn = get_aux7;
-    else if (loadfn == "aux8")
-        load_fn = get_aux8;
-    else if (loadfn == "aux9")
-        load_fn = get_aux9;
-    else if (loadfn == "aux10")
-        load_fn = get_aux10;
-    else if (loadfn == "aux11")
-        load_fn = get_aux11;
-    else if (loadfn == "aux12")
-        load_fn = get_aux12;
-    else if (loadfn == "aux13")
-        load_fn = get_aux13;
-    else if (loadfn == "aux14")
-        load_fn = get_aux14;
-    else if (loadfn == "aux15")
-        load_fn = get_aux15;
-    else if (loadfn == "aux16")
-        load_fn = get_aux16;
-    else if (loadfn == "aux17")
-        load_fn = get_aux17;
-    else if (loadfn == "aux18")
-        load_fn = get_aux18;
-    else
-#endif
-    if (loadfn == "ax")
-        load_fn = get_Ax;
-    else if (loadfn == "speed")
-        load_fn = get_speed;
-    else if (loadfn == "mach")
-        load_fn = get_mach;
-    else if (loadfn == "altitude")
-        load_fn = get_altitude;
-    else if (loadfn == "agl")
-        load_fn = get_agl;
-    else if (loadfn == "framerate")
-        load_fn = get_frame_rate;
-    else if (loadfn == "heading")
-        load_fn = get_heading;
-    else if (loadfn == "fov")
-        load_fn = get_fov;
-    else if (loadfn == "vfc_tris_culled")
-        load_fn = get_vfc_tris_culled;
-    else if (loadfn == "vfc_tris_drawn")
-        load_fn = get_vfc_tris_drawn;
-    else if (loadfn == "aoa")
-        load_fn = get_aoa;
-    else if (loadfn == "latitude")
-        load_fn = get_latitude;
-    else if (loadfn == "anzg")
-        load_fn = get_anzg;
-    else if (loadfn == "longitude")
-        load_fn = get_longitude;
-    else if (loadfn =="throttleval")
-        load_fn = get_throttleval;
-    else
-        load_fn = 0;
-
-    set_data_source(load_fn);
+            << node->getStringValue("name", "[unnamed]"));
+
+    set_data_source(get_func(node->getStringValue("data_source")));
 
     int just = node->getIntValue("justification");
     if (just == 0)
index 0b275435f9e8419c52fbfd5234311e58f1b8d5bc..a724b5404640086729b00c8f4dd5796be7ec9862 100644 (file)
@@ -21,7 +21,7 @@ HudLadder::HudLadder(const SGPropertyNode *node) :
             node->getIntValue("height"),
             get_roll,
             get_pitch,                         // FIXME getter functions from cockpit.cxx
-            node->getBoolValue("working"),
+            node->getBoolValue("working", true),
             HUDS_RIGHT),
     width_units(int(node->getFloatValue("span_units"))),
     div_units(int(fabs(node->getFloatValue("division_units")))),
@@ -52,7 +52,7 @@ HudLadder::HudLadder(const SGPropertyNode *node) :
         factor = 640.0 / 55.0;
 
     SG_LOG(SG_INPUT, SG_INFO, "Done reading HudLadder instrument"
-            << node->getStringValue("name", "[NONE]"));
+            << node->getStringValue("name", "[unnamed]"));
 
     if (!width_units)
         width_units = 45;
index b9e78eb93cfb66dcc9e2774ca0cfe851b1ee9949..64d01a5b0f6411503615610498833d900790dc95 100644 (file)
@@ -62,7 +62,7 @@ runway_instr::runway_instr(const SGPropertyNode *node) :
     drawIAAlways(arrowScale > 0 ? node->getBoolValue("arrow_always") : false)
 {
     SG_LOG(SG_INPUT, SG_INFO, "Done reading runway instrument "
-            << node->getStringValue("name"));
+            << node->getStringValue("name", "[unnamed]"));
 
     view[0] = 0;
     view[1] = 0;
index a602bcdb139ae18a8d3f791b0682fb693fd9d635..0c96340d14bd9fe5a73fd87a1dcd70b80d415357 100644 (file)
@@ -23,7 +23,7 @@ fgTBI_instr::fgTBI_instr(const SGPropertyNode *node) :
             node->getIntValue("height"),
             get_roll,                                  // FIXME
             get_sideslip,
-            node->getBoolValue("working"),
+            node->getBoolValue("working", true),
             HUDS_TOP),
     BankLimit(int(node->getFloatValue("maxBankAngle"))),
     SlewLimit(int(node->getFloatValue("maxSlipAngle"))),
@@ -33,7 +33,7 @@ fgTBI_instr::fgTBI_instr(const SGPropertyNode *node) :
 
 {
     SG_LOG(SG_INPUT, SG_INFO, "Done reading TBI instrument"
-            << node->getStringValue("name", "[NONE]"));
+            << node->getStringValue("name", "[unnamed]"));
 }
 
 
index ac57ef8c8c6e4775eb5e9da0d168da45039344a3..16e148ba56b2cb843c18fe6b5973071bd2a4024a 100644 (file)
@@ -22,7 +22,7 @@
 #  include <config.h>
 #endif
 
-#ifdef HAVE_WINDOWS_H          
+#ifdef HAVE_WINDOWS_H
 #  include <windows.h>
 #endif