bugfix [#25154] .MXF files should be included as a known video file type in the sequencer
[blender-staging.git] / source / blender / blenkernel / intern / unit.c
index 4cb59a2ee86da16b91891f21629ae522ec0aed05..1b04589c1f216d184bbcb1b37b0a946875a64222 100644 (file)
@@ -24,6 +24,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #include <string.h>
+#include <assert.h>
 #include "BKE_unit.h"
 
 #include "BLI_math.h"
 
 /* define a single unit */
 typedef struct bUnitDef {
-       char *name;
-       char *name_plural;      /* abused a bit for the display name */
-       char *name_short;       /* this is used for display*/
-       char *name_alt;         /* keyboard-friendly ASCII-only version of name_short, can be NULL */
+       const char *name;
+       const char *name_plural;        /* abused a bit for the display name */
+       const char *name_short; /* this is used for display*/
+       const char *name_alt;           /* keyboard-friendly ASCII-only version of name_short, can be NULL */
                                                /* if name_short has non-ASCII chars, name_alt should be present */
        
-       char *name_display;             /* can be NULL */
+       const char *name_display;               /* can be NULL */
 
        double scalar;
        double bias;            /* not used yet, needed for converting temperature */
@@ -274,6 +275,7 @@ static struct bUnitCollection *bUnitSystems[][9] = {
 /* internal, has some option not exposed */
 static bUnitCollection *unit_get_system(int system, int type)
 {
+       assert((system > -1) && (system < UNIT_SYSTEM_TOT) && (type > -1) && (type < B_UNIT_TYPE_TOT));
        return bUnitSystems[system][type]; /* select system to use, metric/imperial/other? */
 }
 
@@ -421,7 +423,7 @@ void bUnit_AsString(char *str, int len_max, double value, int prec, int system,
 }
 
 
-static char *unit_find_str(char *str, char *substr)
+static char *unit_find_str(char *str, const char *substr)
 {
        char *str_found;
 
@@ -476,7 +478,7 @@ static int ch_is_op(char op)
        }
 }
 
-static int unit_scale_str(char *str, int len_max, char *str_tmp, double scale_pref, bUnitDef *unit, char *replace_str)
+static int unit_scale_str(char *str, int len_max, char *str_tmp, double scale_pref, bUnitDef *unit, const char *replace_str)
 {
        char *str_found;
 
@@ -738,7 +740,7 @@ double bUnit_BaseScalar(int system, int type)
 /* external access */
 int bUnit_IsValid(int system, int type)
 {
-       return !(type < 0 || type >= B_UNIT_MAXDEF || system < 0 || system > UNIT_SYSTEM_TOT);
+       return !(system < 0 || system > UNIT_SYSTEM_TOT || type < 0 || type > B_UNIT_TYPE_TOT);
 }
 
 
@@ -755,11 +757,16 @@ void bUnit_GetSystem(void **usys_pt, int *len, int system, int type)
        *len= usys->length;
 }
 
-char *bUnit_GetName(void *usys_pt, int index)
+int bUnit_GetBaseUnit(void *usys_pt)
+{
+       return ((bUnitCollection *)usys_pt)->base_unit;
+}
+
+const char *bUnit_GetName(void *usys_pt, int index)
 {
        return ((bUnitCollection *)usys_pt)->units[index].name;
 }
-char *bUnit_GetNameDisplay(void *usys_pt, int index)
+const char *bUnit_GetNameDisplay(void *usys_pt, int index)
 {
        return ((bUnitCollection *)usys_pt)->units[index].name_display;
 }