Merge branch 'terencehill/eraseable_functions'
authorterencehill <piuntn@gmail.com>
Sat, 1 Jul 2017 12:10:08 +0000 (14:10 +0200)
committerterencehill <piuntn@gmail.com>
Sat, 1 Jul 2017 12:10:08 +0000 (14:10 +0200)
1  2 
qcsrc/common/util.qh
qcsrc/lib/counting.qh
qcsrc/lib/cvar.qh
qcsrc/lib/vector.qh

diff --combined qcsrc/common/util.qh
index a5ca2cf350208dc694074282f2f26aa9bcbf8014,d8c0d67faab7d4e066da95f61d4e522e74a7521e..da86bf22ea63eccf1c7a408c815bb2d049e7f6ad
@@@ -105,12 -105,6 +105,6 @@@ void get_mi_min_max_texcoords(float mod
  float almost_equals(float a, float b);
  float almost_in_bounds(float a, float b, float c);
  
- vector rgb_to_hsl(vector rgb);
- vector hsl_to_rgb(vector hsl);
- vector rgb_to_hsv(vector rgb);
- vector hsv_to_rgb(vector hsv);
- string rgb_to_hexcolor(vector rgb);
  float boxesoverlap(vector m1, vector m2, vector m3, vector m4);
  float boxinsidebox(vector smins, vector smaxs, vector bmins, vector bmaxs);
  
@@@ -156,6 -150,16 +150,6 @@@ vector healtharmor_applydamage(float a
  
  string getcurrentmod();
  
 -#ifdef GAMEQC
 -#ifdef CSQC
 -int ReadInt24_t();
 -#else
 -void WriteInt24_t(float dest, float val);
 -void WriteInt48_t(float dest, vector val);
 -void WriteInt72_t(float dest, vector val);
 -#endif
 -#endif
 -
  float float2range11(float f);
  float float2range01(float f);
  
diff --combined qcsrc/lib/counting.qh
index c44951225ba2bc179bfb67f7c25812ed8de135dd,11c06822edfd73767f86dc721219ce552429554f..12ec4a9b61dc7f09a4fff6c80a735022c558ae70
@@@ -61,6 -61,7 +61,7 @@@
        _("CI_THI^%d seconds"), /* third */ \
        _("CI_MUL^%d seconds")) /* multi */
  
+ [[eraseable]]
  string count_ordinal(int interval)
  {
        // This function is designed primarily for the English language, it's impossible
@@@ -86,6 -87,7 +87,7 @@@
        return "";
  }
  
+ [[eraseable]]
  string count_fill(float interval, string zeroth, string first, string second, string third, string multi)
  {
        // This function is designed primarily for the English language, it's impossible
        return "";
  }
  
+ [[eraseable]]
  string process_time(float outputtype, float seconds)
  {
        float tmp_hours = 0, tmp_minutes = 0, tmp_seconds = 0;
  
                        if (tmp_minutes)
                        {
 -                              output = sprintf(
 -                                      "%s%s",
 +                              output = strcat(
                                        count_minutes(tmp_minutes),
 -                                      ((output != "") ? sprintf(", %s", output) : ""));
 +                                      ((output != "") ? strcat(", ", output) : ""));
                        }
  
                        if (tmp_hours)
                        {
 -                              output = sprintf(
 -                                      "%s%s",
 +                              output = strcat(
                                        count_hours(tmp_hours),
 -                                      ((output != "") ? sprintf(", %s", output) : ""));
 +                                      ((output != "") ? strcat(", ", output) : ""));
                        }
  
                        if (tmp_days)
                        {
 -                              output = sprintf(
 -                                      "%s%s",
 +                              output = strcat(
                                        count_days(tmp_days),
 -                                      ((output != "") ? sprintf(", %s", output) : ""));
 +                                      ((output != "") ? strcat(", ", output) : ""));
                        }
  
                        if (tmp_weeks)
                        {
 -                              output = sprintf(
 -                                      "%s%s",
 +                              output = strcat(
                                        count_weeks(tmp_weeks),
 -                                      ((output != "") ? sprintf(", %s", output) : ""));
 +                                      ((output != "") ? strcat(", ", output) : ""));
                        }
  
                        if (tmp_years)
                        {
 -                              output = sprintf(
 -                                      "%s%s",
 +                              output = strcat(
                                        count_years(tmp_years),
 -                                      ((output != "") ? sprintf(", %s", output) : ""));
 +                                      ((output != "") ? strcat(", ", output) : ""));
                        }
  
                        return output;
                        if (tmp_days)
                        {
                                output = sprintf(
 -                                      "%s%s",
                                        count_days(tmp_days),
 -                                      ((output != "") ? sprintf(", %s", output) : ""));
 +                                      ((output != "") ? strcat(", ", output) : ""));
                        }
  
                        return output;
diff --combined qcsrc/lib/cvar.qh
index 666e14ab93f2592a0d884434b67339da2bddf62f,d52f25cdd28ac680b97be35b9311e855e553a0e7..f322753c0af92d9d5eda78b9e57497633777b052
@@@ -4,8 -4,10 +4,10 @@@
  #include "progname.qh"
  #include "static.qh"
  
+ [[eraseable]]
  void RegisterCvars(void(string name, string def, string desc, bool archive, string file) f) {}
  
+ [[eraseable]]
  bool cvar_value_issafe(string s)
  {
        if (strstrofs(s, "\"", 0) >= 0) return false;
@@@ -18,6 -20,7 +20,7 @@@
  }
  
  /** escape the string to make it safe for consoles */
+ [[eraseable]]
  string MakeConsoleSafe(string input)
  {
        input = strreplace("\n", "", input);
        return input;
  }
  
+ [[eraseable]]
  void cvar_describe(string name, string desc)
  {
        localcmd(sprintf("\nset %1$s \"$%1$s\" \"%2$s\"\n", name, MakeConsoleSafe(desc)));
  }
  
+ [[eraseable]]
  void cvar_archive(string name)
  {
        localcmd(sprintf("\nseta %1$s \"$%1$s\"\n", name));
  }
  
+ [[eraseable]]
  void RegisterCvars_Set(string name, string def, string desc, bool archive, string file)
  {
        cvar_describe(name, desc);
@@@ -44,6 -50,7 +50,7 @@@
  }
  
  int RegisterCvars_Save_fd;
+ [[eraseable]]
  void RegisterCvars_Save(string name, string def, string desc, bool archive, string file)
  {
        if (!archive) return;
@@@ -73,12 -80,6 +80,12 @@@ const noref vector default_vector = '0 
  #define repr_cvar_string(x) (x)
  #define repr_cvar_vector(x) (sprintf("%v", x))
  
 +//pseudo prototypes:
 +// void AUTOCVAR(<cvar_name>, <qc_var_type>, default_cvar_value, string desc)
 +// void AUTOCVAR_SAVE(<cvar_name>, <qc_var_type>, default_cvar_value, string desc)
 +//  where default_cvar_value has type <qc_var_type>
 +//  e.g.: AUTOCVAR(mycvar, float, 2.5, "cvar description")
 +
  #define __AUTOCVAR(file, archive, var, type, desc, default) \
        [[accumulate]] void RegisterCvars(void(string, string, string, bool, string) f) \
        { \
diff --combined qcsrc/lib/vector.qh
index 6c32e4312d594799e830c68b7b05f2f49fffcd87,5d2b795f4515f6915141cc7ff0c5758ebda26dd9..746a43d089015eec6eed881b76ea86df8eb10d87
@@@ -25,6 -25,7 +25,7 @@@ noref vector _dotproduct_a, _dotproduct
  #if 1
  #define cross(a, b) ((a) >< (b))
  #else
+ [[eraseable]]
  vector cross(vector a, vector b)
  {
        return
@@@ -45,6 -46,7 +46,7 @@@ const vector eX = '1 0 0'
  const vector eY = '0 1 0';
  const vector eZ = '0 0 1';
  
+ [[eraseable]]
  vector randompos(vector m1, vector m2)
  {
        vector v;
        return v;
  }
  
+ [[eraseable]]
  float vlen_maxnorm2d(vector v)
  {
        return max(v.x, v.y, -v.x, -v.y);
  }
  
+ [[eraseable]]
  float vlen_minnorm2d(vector v)
  {
        return min(max(v.x, -v.x), max(v.y, -v.y));
  }
  
+ [[eraseable]]
  float dist_point_line(vector p, vector l0, vector ldir)
  {
        ldir = normalize(ldir);
  }
  
  /** requires that m2>m1 in all coordinates, and that m4>m3 */
+ [[eraseable]]
  float boxesoverlap(vector m1, vector m2, vector m3, vector m4) { return m2_x >= m3_x && m1_x <= m4_x && m2_y >= m3_y && m1_y <= m4_y && m2_z >= m3_z && m1_z <= m4_z; }
  
  /** requires the same as boxesoverlap, but is a stronger condition */
+ [[eraseable]]
  float boxinsidebox(vector smins, vector smaxs, vector bmins, vector bmaxs) { return smins.x >= bmins.x && smaxs.x <= bmaxs.x && smins.y >= bmins.y && smaxs.y <= bmaxs.y && smins.z >= bmins.z && smaxs.z <= bmaxs.z; }
  
  #define PITCH(v) ((v).x)
        up = v_up; \
  } MACRO_END
  
 +//pseudo prototypes:
 +// vector vec2(vector v); // returns a vector with just the x and y components of the given vector
 +// vector vec2(float x, float y); // returns a vector with the given x and y components
 +
  noref vector _vec2;
  #define vec2(...) EVAL(OVERLOAD(vec2, __VA_ARGS__))
  #define vec2_1(v) (_vec2 = (v), _vec2.z = 0, _vec2)
  noref vector _vec3;
  #define vec3(_x, _y, _z) (_vec3.x = (_x), _vec3.y = (_y), _vec3.z = (_z), _vec3)
  
+ [[eraseable]]
  vector Rotate(vector v, float a)
  {
        float a_sin = sin(a), a_cos = cos(a);
 -      vector r = '0 0 0';
 -      r.x =      v.x * a_cos + v.y * a_sin;
 -      r.y = -1 * v.x * a_sin + v.y * a_cos;
 -      return r;
 +      return vec2(v.x * a_cos + v.y * a_sin, -v.x * a_sin + v.y * a_cos);
  }
  
  noref vector _yinvert;
   * @param norm the normalized normal
   * @returns dir reflected by norm
   */
+ [[eraseable]]
  vector reflect(vector dir, vector norm)
  {
        return dir - 2 * (dir * norm) * norm;
  /**
   * clip vel along the plane defined by norm (assuming 0 distance away), bounciness determined by bounce 0..1
   */
+ [[eraseable]]
  vector vec_reflect(vector vel, vector norm, float bounce)
  {
        return vel - (1 + bounce) * (vel * norm) * norm;
  }
  
+ [[eraseable]]
  vector vec_epsilon(vector this, float eps)
  {
        if (this.x > -eps && this.x < eps) this.x = 0;
        (out = vec_epsilon(vec_reflect(in, normal, (overbounce) - 1), 0.1))
  
  #ifdef GAMEQC
+       [[eraseable]]
        vector get_corner_position(entity box, int corner)
        {
                switch (corner)
                }
        }
  
+       [[eraseable]]
        vector NearestPointOnBox(entity box, vector org)
        {
                vector m1 = box.mins + box.origin;
                vector m2 = box.maxs + box.origin;
  
 -              vector ret;
 -              ret.x = bound(m1.x, org.x, m2.x);
 -              ret.y = bound(m1.y, org.y, m2.y);
 -              ret.z = bound(m1.z, org.z, m2.z);
 -              return ret;
 +              return vec3(
 +                      bound(m1.x, org.x, m2.x),
 +                      bound(m1.y, org.y, m2.y),
 +                      bound(m1.z, org.z, m2.z)
 +              );
        }
  #endif