dmuratshin 9 years ago
parent
commit
1fb43a627f

+ 6 - 1
oxygine/src/core/intrusive_ptr.h

@@ -1,4 +1,7 @@
 #pragma once
 #pragma once
+#ifndef INTRUSIVE_PTR_HEADER
+#define INTRUSIVE_PTR_HEADER
+
 #include "oxygine-include.h"
 #include "oxygine-include.h"
 //#include "ref_counter.h"
 //#include "ref_counter.h"
 #include "ox_debug.h"
 #include "ox_debug.h"
@@ -146,4 +149,6 @@ namespace oxygine
         void releaseRef()
         void releaseRef()
         {}
         {}
     };
     };
-}
+}
+
+#endif

+ 0 - 16
oxygine/src/core/ref_counter.h

@@ -24,14 +24,9 @@ namespace oxygine
                 delete this;
                 delete this;
         }
         }
 
 
-
-        //commented, unsafe
-        //todo, find solution
-
     private:
     private:
         ref_counter(const ref_counter&);
         ref_counter(const ref_counter&);
         const ref_counter& operator=(const ref_counter&);
         const ref_counter& operator=(const ref_counter&);
-
     };
     };
 
 
 
 
@@ -45,14 +40,3 @@ namespace oxygine
         p->releaseRef();
         p->releaseRef();
     }
     }
 }
 }
-
-#define DECLARE_SMART(class_name, spname) \
-    class class_name;\
-    typedef oxygine::intrusive_ptr<class_name> spname;
-
-#define DECLARENS_SMART(name_space, class_name, spname) \
-    namespace name_space \
-    {\
-        class class_name;\
-        typedef oxygine::intrusive_ptr<class_name> spname;\
-    }

+ 71 - 188
oxygine/src/oxygine-forwards.h

@@ -1,21 +1,30 @@
 #pragma  once
 #pragma  once
-#include "oxygine-include.h"
 #include "core/ref_counter.h"
 #include "core/ref_counter.h"
-#include "core/intrusive_ptr.h"
 #include "closure/closure.h"
 #include "closure/closure.h"
 
 
 
 
 #ifdef OXYGINE_SDL
 #ifdef OXYGINE_SDL
-typedef struct SDL_Window SDL_Window;
+    typedef struct SDL_Window SDL_Window;
 #endif
 #endif
 
 
+#define DECLARE_SMART(class_name, spname) \
+    class class_name;\
+    typedef oxygine::intrusive_ptr<class_name> spname;
+
+#define DECLARENS_SMART(name_space, class_name, spname) \
+    namespace name_space \
+    {\
+        class class_name;\
+        typedef oxygine::intrusive_ptr<class_name> spname;\
+    }
+
+
 struct SDL_KeyboardEvent;
 struct SDL_KeyboardEvent;
 
 
 namespace pugi
 namespace pugi
 {
 {
     class xml_node;
     class xml_node;
 }
 }
-
 namespace oxygine
 namespace oxygine
 {
 {
     namespace text
     namespace text
@@ -24,227 +33,101 @@ namespace oxygine
         struct Symbol;
         struct Symbol;
     }
     }
 
 
-    class Event;
-    class Color;
-    class Color;
-    DECLARE_SMART(NativeTexture, spNativeTexture);
-
-
-    class Resource;
-    class ResFont;
-    class ResAnim;
-
-    class CreateResourceContext;
-    class LoadResourcesContext;
-    class Resources;
-    class ShaderProgram;
-    class VertexDeclaration;
-
-    class IVideoDriver;
-
-    class ResourcesLoadOptions;
-
-    class ShaderProgram;
-    class IVideoDriver;
-    DECLARE_SMART(NativeTexture, spNativeTexture);
-
-
-    class Resources;
-    class Mem2Native;
-
-    class LoadResourcesContext;
-    class LoadResourcesContext;
-    DECLARE_SMART(Resource, spResource);
-
-    class Resources;
-    class CreateResourceContext;
-    class Restorable;
-
-    DECLARE_SMART(NativeTexture, spNativeTexture);
-    DECLARE_SMART(ResBuffer, spResBuffer);
-
-    class Resources;
-    class XmlWalker;
-    class CreateResourceContext;
-    DECLARE_SMART(NativeTexture, spNativeTexture);
-    class ResAtlas;
-
-    DECLARE_SMART(Texture, spTexture);
-
-
-    class Image;
-
-    DECLARE_SMART(ResAnim, spResAnim);
-
-    class ResFontBM;
-
-    class Resources;
-    class CreateResourceContext;
-
-    class Font;
-
-    DECLARE_SMART(ResFont, spResFont);
-
-    class ThreadDispatcher;
-    class ShaderProgram;
-    DECLARE_SMART(Object, spObject);
-
-    DECLARE_SMART(NativeTexture, spNativeTexture);
-    DECLARE_SMART(RenderTexture, spRenderTexture);
-
-    typedef void* nativeTextureHandle;
-    class Mutex;
-    class ImageData;
-    class SingleResAnim;
-
-
-    class Resources;
-    class Restorable;
-    class CreateResourceContext;
-    DECLARE_SMART(NativeTexture, spNativeTexture);
-    class ResStarlingAtlas;
-
-    typedef unsigned int dumpOptions;
-    class UberShaderProgram;
-    class RenderState;
-    class UpdateState;
-    class Material;
-    class ResAnim;
-    class EventState;
-    class Actor;
-    class ResAnim;
-    class AnimationFrame;
-    class Sprite;
-    class UpdateState;
-    class PointerState;
-    class Resources;
-    class Resource;
-    class Font;
-    class ResFont;
-    class ClipRectActor;
-    class Sprite;
-    class TextField;
-    class ColorRectSprite;
-    class DebugActor;
-
-    DECLARE_SMART(HttpRequestTask, spHttpRequestTask);
-    DECLARE_SMART(Sprite, spSprite);
-    DECLARE_SMART(WebImage, spWebImage);
-
-
-    DECLARE_SMART(Texture, spTexture);
-    DECLARE_SMART(Actor, spActor);
-    DECLARE_SMART(Clock, spClock);
-    DECLARE_SMART(DragHandler, spDragHandler);
-
+    template <class T>
+    class intrusive_ptr;
+    
     DECLARE_SMART(Actor, spActor);
     DECLARE_SMART(Actor, spActor);
+    DECLARE_SMART(AsyncTask, spAsyncTask);
     DECLARE_SMART(Box9Sprite, spBox9Sprite);
     DECLARE_SMART(Box9Sprite, spBox9Sprite);
     DECLARE_SMART(Button, spButton);
     DECLARE_SMART(Button, spButton);
     DECLARE_SMART(ClipRectActor, spClipRectActor);
     DECLARE_SMART(ClipRectActor, spClipRectActor);
     DECLARE_SMART(Clock, spClock);
     DECLARE_SMART(Clock, spClock);
     DECLARE_SMART(ColorRectSprite, spColorRectSprite);
     DECLARE_SMART(ColorRectSprite, spColorRectSprite);
     DECLARE_SMART(DebugActor, spDebugActor);
     DECLARE_SMART(DebugActor, spDebugActor);
+    DECLARE_SMART(DragHandler, spDragHandler);
     DECLARE_SMART(EventDispatcher, spEventDispatcher);
     DECLARE_SMART(EventDispatcher, spEventDispatcher);
     DECLARE_SMART(HttpRequestTask, spHttpRequestTask);
     DECLARE_SMART(HttpRequestTask, spHttpRequestTask);
     DECLARE_SMART(InputText, spInputText);
     DECLARE_SMART(InputText, spInputText);
     DECLARE_SMART(MaskedSprite, spMaskedSprite);
     DECLARE_SMART(MaskedSprite, spMaskedSprite);
-
-    class Event;
-    class Material;
-    class PointerState;
+    DECLARE_SMART(NativeTexture, spNativeTexture);
+    DECLARE_SMART(Object, spObject);
     DECLARE_SMART(Polygon, spPolygon);
     DECLARE_SMART(Polygon, spPolygon);
     DECLARE_SMART(ProgressBar, spProgressBar);
     DECLARE_SMART(ProgressBar, spProgressBar);
+    DECLARE_SMART(RenderTexture, spRenderTexture);
+    DECLARE_SMART(ResAnim, spResAnim);
+    DECLARE_SMART(ResBuffer, spResBuffer);
+    DECLARE_SMART(ResFont, spResFont);
+    DECLARE_SMART(Resource, spResource);
+    DECLARE_SMART(STDMaterial, spSTDMaterial);
     DECLARE_SMART(SlidingActor, spSlidingActor);
     DECLARE_SMART(SlidingActor, spSlidingActor);
     DECLARE_SMART(Sprite, spSprite);
     DECLARE_SMART(Sprite, spSprite);
     DECLARE_SMART(Stage, spStage);
     DECLARE_SMART(Stage, spStage);
-    DECLARE_SMART(STDMaterial, spSTDMaterial);
     DECLARE_SMART(TextField, spTextField);
     DECLARE_SMART(TextField, spTextField);
+    DECLARE_SMART(Texture, spTexture);
     DECLARE_SMART(ThreadLoader, spThreadLoader);
     DECLARE_SMART(ThreadLoader, spThreadLoader);
     DECLARE_SMART(Tween, spTween);
     DECLARE_SMART(Tween, spTween);
     DECLARE_SMART(TweenQueue, spTweenQueue);
     DECLARE_SMART(TweenQueue, spTweenQueue);
     DECLARE_SMART(WebImage, spWebImage);
     DECLARE_SMART(WebImage, spWebImage);
 
 
-
-
-
-
+    class Actor;
     class AnimationFrame;
     class AnimationFrame;
-
-    class Resource;
-    class ResAnim;
-    class ResFont;
-
-    struct serializedata;
-    struct deserializedata;
-    struct deserializeLinkData;
-
+    class ClipRectActor;
     class Color;
     class Color;
+    class ColorRectSprite;
+    class CreateResourceContext;
+    class DebugActor;
     class Event;
     class Event;
+    class EventState;
+    class Font;
+    class IVideoDriver;
+    class Image;
+    class ImageData;
+    class LoadResourcesContext;
+    class MaskedSprite;
     class Material;
     class Material;
-
-    class Actor;
-    class ShaderProgram;
+    class Mem2Native;
+    class Mutex;
+    class PointerState;
     class PostProcessOptions;
     class PostProcessOptions;
-
-    class UpdateState;
-    class Tween;
-    class Actor;
-    class UpdateState;
-    class UpdateState;
-    class TweenOptions;
-
+    class ProgressBar;
     class RenderState;
     class RenderState;
-    class Actor;
-    class ClipRectActor;
-    class MaskedSprite;
+    class ResAnim;
+    class ResAtlas;
+    class ResFont;
+    class ResFontBM;
+    class ResStarlingAtlas;
+    class Resource;
+    class Resources;
+    class ResourcesLoadOptions;
+    class Restorable;
+    class ShaderProgram;
+    class SingleResAnim;
     class Sprite;
     class Sprite;
     class TextField;
     class TextField;
-    class ColorRectSprite;
-    class ProgressBar;
-    DECLARE_SMART(TextField, spTextField);
-
-    DECLARE_SMART(Stage, spStage);
-    class Actor;
-    class EventState;
-
-    DECLARE_SMART(NativeTexture, spNativeTexture);
-
-    typedef unsigned int glyphOptions;
-
-    typedef int eventType;
-    class Event;
-
-    typedef int eventType;
-    DECLARE_SMART(EventDispatcher, spEventDispatcher);
+    class ThreadDispatcher;
     class TouchEvent;
     class TouchEvent;
+    class Tween;
+    class TweenOptions;
+    class UberShaderProgram;
+    class UpdateState;
+    class VertexDeclaration;
+    class XmlWalker;    
+    struct deserializeLinkData;
+    struct deserializedata;
+    struct serializedata;
 
 
-    class ResFontBM;
-    class ResAnim;
-    class Resources;
-
-    DECLARE_SMART(TextField, spTextField);
-    DECLARE_SMART(ColorRectSprite, spColorRectSprite);
-
-
-
-    DECLARE_SMART(Texture, spTexture);
-    DECLARE_SMART(NativeTexture, spNativeTexture);
-
-
-    DECLARE_SMART(STDMaterial, spSTDMaterial);
-    DECLARE_SMART(AsyncTask, spAsyncTask);
+    const int cloneOptionsDoNotCloneClildren = 0x01;
+    const int cloneOptionsResetTransform = 0x02;  
 
 
     typedef Closure<void(Event* ev)> EventCallback;
     typedef Closure<void(Event* ev)> EventCallback;
-
-
-    typedef Closure<void(const UpdateState& us)> UpdateCallback;
     typedef Closure<void(const RenderState& rs)> RenderCallback;
     typedef Closure<void(const RenderState& rs)> RenderCallback;
+    typedef Closure<void(const UpdateState& us)> UpdateCallback;
     typedef int cloneOptions;
     typedef int cloneOptions;
     typedef int copyOptions;//deprecated typedef
     typedef int copyOptions;//deprecated typedef
-
-
-    const int cloneOptionsDoNotCloneClildren = 0x01;
-    const int cloneOptionsResetTransform = 0x02;
+    typedef int eventType;
+    typedef unsigned int dumpOptions;
+    typedef unsigned int glyphOptions;
+    typedef void* nativeTextureHandle;
 
 
 
 
 #define DECLARE_COPYCLONE(type) type(const type &src, cloneOptions);\
 #define DECLARE_COPYCLONE(type) type(const type &src, cloneOptions);\

+ 5 - 1
oxygine/src/oxygine-include.h

@@ -1,4 +1,7 @@
 #pragma once
 #pragma once
+#ifndef OXYGINE_INCLUDE_HEADER
+#define OXYGINE_INCLUDE_HEADER
+
 #include <assert.h>
 #include <assert.h>
 #include <string.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdio.h>
@@ -174,4 +177,5 @@ namespace oxygine
     void fastFree(void* data);
     void fastFree(void* data);
 }
 }
 
 
-#include "oxygine-forwards.h"
+#include "oxygine-forwards.h"
+#endif