]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Move objerror to qc
authorTimePath <andrew.hardaker1995@gmail.com>
Wed, 27 Jul 2016 12:04:38 +0000 (22:04 +1000)
committerTimePath <andrew.hardaker1995@gmail.com>
Wed, 27 Jul 2016 12:04:38 +0000 (22:04 +1000)
qcsrc/dpdefs/post.qh
qcsrc/dpdefs/pre.qh
qcsrc/lib/_all.inc
qcsrc/lib/log.qh
qcsrc/lib/oo.qh
qcsrc/lib/self.qh
qcsrc/server/g_world.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/sv_main.qc
qcsrc/server/sys-post.qh
qcsrc/server/sys-pre.qh

index db8752d2bb8075d2f9611c3c776830c6d682540d..9419dceea18aafb7f8e75f1063b0ab8a3d79c523 100644 (file)
@@ -6,6 +6,7 @@
 #undef error
 #undef movetogoal
 #undef objerror
+#undef remove
 #undef walkmove
 
 #ifdef MENUQC
index b24d0120a49e56a0bee597379b3522e454013949..801b8731bc89bf08bdcf8d5ed52c445763986c3e 100644 (file)
@@ -6,4 +6,5 @@
 #define error builtin_error
 #define movetogoal builtin_movetogoal
 #define objerror builtin_objerror
+#define remove builtin_remove
 #define walkmove builtin_walkmove
index 37093d27d810fe5f0c7ffe1baf3151aeed1a56a1..b0c9ec901c76103dae5531c9bb0136b7ace93471 100644 (file)
@@ -112,6 +112,22 @@ void    isnt_bool(float this) { print(ftos(this)); }
 
 #include "matrix/_mod.inc"
 
+#ifndef SVQC
+#define objerror_safe(e)
+#else
+void make_safe_for_remove(entity this);
+    #define objerror_safe(e) make_safe_for_remove(e)
+#endif
+
+#define objerror(this, msg) MACRO_BEGIN { \
+       LOG_WARNING("======OBJECT ERROR======"); \
+       entity _e = (this); \
+       eprint(_e); \
+       objerror_safe(_e); \
+       delete(_e); \
+       LOG_WARNINGF("%s OBJECT ERROR in %s:\n%s\nTip: read above for entity information", PROGNAME, __FUNC__, msg); \
+} MACRO_END
+
 #ifdef MENUQC
        void _m_init();
        void m_init() { if (_m_init) _m_init(); }
index 370d96be5629f2fdc3e6a26b767799a7c1c2c7b4..a8874adbd4630d69a03458346404391ac23bd2a6 100644 (file)
@@ -82,13 +82,7 @@ string(string...) strcat0n = #115;
        } MACRO_END
 
 // TODO: this sucks, lets find a better way to do backtraces?
-#ifdef SVQC
-       void builtin_remove(entity);
-       #define _backtrace() builtin_remove(NULL)
-#else
-       void remove(entity);
-       #define _backtrace() remove(NULL)
-#endif
+#define _backtrace() builtin_remove(NULL)
 
 noref int autocvar_developer;
 noref bool autocvar_prvm_backtraceforwarnings;
index f47e558a8fe7c5a673e68729c3c3d797f67da2f9..e3206dcf3ee799b584e85bf71457fbe44d20ee3e 100644 (file)
@@ -73,11 +73,15 @@ entity __spawn(string _classname, string _sourceLoc, bool pure)
 
 [[accumulate]] void ONREMOVE(entity this) {}
 
+#ifndef SVQC
+       #define delete_fn builtin_remove
+#endif
+
 #define delete(this) MACRO_BEGIN { \
     entity _this = (this); \
     void(entity) _dtor = _this.dtor; \
     ONREMOVE(this); \
-    if (_dtor) _dtor(_this); else remove(_this); \
+    if (_dtor) _dtor(_this); else delete_fn(_this); \
     /* this = NULL; */  \
 } MACRO_END
 
@@ -274,7 +278,7 @@ STATIC_INIT(RegisterClasses)
 #define spawn_1(this)
 #define _vtbl NULL
 CLASS(Object, );
-    DESTRUCTOR(Object) { remove(this); }
+    DESTRUCTOR(Object) { builtin_remove(this); }
     #define remove(this) delete(this)
        METHOD(Object, describe, string(Object this))
        {
index 5d42bdccd74c2c76927b7c8cf07734037d69d8b3..bc545b0d0f53721c338fe7b9d6af93b6a5e8bc6b 100644 (file)
@@ -102,12 +102,6 @@ SELFWRAP(SendEntity, bool, (entity to, int sendflags), (entity this, entity to,
 #endif
 #define error(...) (__self = (NULL), builtin_error(__VA_ARGS__))
 #define movetogoal(e, ...) (__self = (e), builtin_movetogoal(__VA_ARGS__))
-#ifndef SVQC
-    #define objerror(e, ...) (__self = (e), builtin_objerror(__VA_ARGS__))
-#else
-    void make_safe_for_remove(entity this);
-    #define objerror(e, ...) (__self = (e), make_safe_for_remove(__self), builtin_objerror(__VA_ARGS__))
-#endif
 #define walkmove(e, ...) (__self = (e), builtin_walkmove(__VA_ARGS__))
 
 #ifndef MENUQC
index 064a69e47e9431ba21d760e72d989a142810ce0a..2eff929b8b9828c58aafa1ff9cea5eb5593e4744 100644 (file)
@@ -540,7 +540,7 @@ spawnfunc(__init_dedicated_server)
        cvar_string = cvar_string_normal;
        cvar_set = cvar_set_normal;
 
-       remove = remove_unsafely;
+       delete_fn = remove_unsafely;
 
        entity e = spawn();
        setthink(e, GotoFirstMap);
@@ -657,7 +657,7 @@ spawnfunc(worldspawn)
                error("world already spawned - you may have EXACTLY ONE worldspawn!");
        world_already_spawned = true;
 
-       remove = remove_safely; // during spawning, watch what you remove!
+       delete_fn = remove_safely; // during spawning, watch what you remove!
 
        cvar_changes_init(); // do this very early now so it REALLY matches the server config
 
index 2686e05539db85165b9d043b4009b25e01c1e029..0abfef4568dc8c793547a7051b947f87485fe5ed 100644 (file)
@@ -881,7 +881,7 @@ void InitializeEntitiesRun()
 {
     entity startoflist = initialize_entity_first;
     initialize_entity_first = NULL;
-    remove = remove_except_protected;
+    delete_fn = remove_except_protected;
     for (entity e = startoflist; e; e = e.initialize_entity_next)
     {
                e.remove_except_protected_forbidden = 1;
@@ -912,7 +912,7 @@ void InitializeEntitiesRun()
         }
         e = next;
     }
-    remove = remove_unsafely;
+    delete_fn = remove_unsafely;
 }
 
 .float(entity) isEliminated;
index bf24e09b71f350ed58210f1a98c8363a5a777ea1..105e2a94372168490aaea0ec0049db3bbb8b4051 100644 (file)
@@ -165,7 +165,7 @@ void StartFrame()
        execute_next_frame();
        if (autocvar_sv_autopause && !server_is_dedicated) Pause_TryPause(true);
 
-       remove = remove_unsafely; // not during spawning!
+       delete_fn = remove_unsafely; // not during spawning!
        serverprevtime = servertime;
        servertime = time;
        serverframetime = frametime;
index e24a790a148a2cdebbe4bf3c40302178e6ee6adb..32024aec5f258fe6c0615652d4838b2bc7357b98 100644 (file)
@@ -10,7 +10,7 @@
 var float(string name) cvar;
 var string(string name) cvar_string;
 var void(string name, string value) cvar_set;
-var void remove(entity e);
+var void delete_fn(entity e);
 
 #undef IT_SHOTGUN
 #undef IT_SUPER_SHOTGUN
index 7ab3f7b9f62763da2566d9409d6f53cb14ea1e80..9799a087ea0814e7a2d52b98f4f47a5c5d58e622 100644 (file)
@@ -1,7 +1,6 @@
 #pragma once
 
 #define droptofloor builtin_droptofloor
-#define remove builtin_remove
 #define cvar_set builtin_cvar_set
 #define cvar_string builtin_cvar_string
 #define cvar builtin_cvar