// This source file is part of HGamer3D, a project to enable 3D game development
// in Haskell. For the latest info, see http://www.hgamer3d.org .
//
// (c) 2011-2014 Peter Althainz
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// ClassPtr.h
// Here are the methods defined, which do the class pointer
// marshalling and the casting of subclasses to higher classes
#include "wchar.h"
#ifndef CLASSPTR_INCLUDE_H
#define CLASSPTR_INCLUDE_H
typedef struct hg3dclass_struct {
void *ptr;
void *fptr;
} hg3dclass_struct;
void *getHG3DClassPtr(hg3dclass_struct inSt, const char* className);
typedef void ClassAnimation;
hg3dclass_struct getHG3DClass_Animation(void *ptrIn);
typedef void ClassAnimationState;
hg3dclass_struct getHG3DClass_AnimationState(void *ptrIn);
typedef void ClassAnimationStateSet;
hg3dclass_struct getHG3DClass_AnimationStateSet(void *ptrIn);
typedef void ClassAnimationTrack;
hg3dclass_struct getHG3DClass_AnimationTrack(void *ptrIn);
typedef void ClassArchive;
hg3dclass_struct getHG3DClass_Archive(void *ptrIn);
typedef void ClassArchiveManager;
hg3dclass_struct getHG3DClass_ArchiveManager(void *ptrIn);
typedef void ClassBillboard;
hg3dclass_struct getHG3DClass_Billboard(void *ptrIn);
typedef void ClassBillboardChain;
hg3dclass_struct getHG3DClass_BillboardChain(void *ptrIn);
typedef void ClassBillboardChainFactory;
hg3dclass_struct getHG3DClass_BillboardChainFactory(void *ptrIn);
typedef void ClassBillboardSet;
hg3dclass_struct getHG3DClass_BillboardSet(void *ptrIn);
typedef void ClassBillboardSetFactory;
hg3dclass_struct getHG3DClass_BillboardSetFactory(void *ptrIn);
typedef void ClassBone;
hg3dclass_struct getHG3DClass_Bone(void *ptrIn);
typedef void ClassCamera;
hg3dclass_struct getHG3DClass_Camera(void *ptrIn);
typedef void ClassConfigFile;
hg3dclass_struct getHG3DClass_ConfigFile(void *ptrIn);
typedef void ClassControllerManager;
hg3dclass_struct getHG3DClass_ControllerManager(void *ptrIn);
typedef void ClassEntity;
hg3dclass_struct getHG3DClass_Entity(void *ptrIn);
typedef void ClassEntityFactory;
hg3dclass_struct getHG3DClass_EntityFactory(void *ptrIn);
typedef void ClassException;
hg3dclass_struct getHG3DClass_Exception(void *ptrIn);
typedef void ClassFrustum;
hg3dclass_struct getHG3DClass_Frustum(void *ptrIn);
typedef void ClassLight;
hg3dclass_struct getHG3DClass_Light(void *ptrIn);
typedef void ClassLightFactory;
hg3dclass_struct getHG3DClass_LightFactory(void *ptrIn);
typedef void ClassLog;
hg3dclass_struct getHG3DClass_Log(void *ptrIn);
typedef void ClassLogManager;
hg3dclass_struct getHG3DClass_LogManager(void *ptrIn);
typedef void ClassManualObject;
hg3dclass_struct getHG3DClass_ManualObject(void *ptrIn);
typedef void ClassManualObjectFactory;
hg3dclass_struct getHG3DClass_ManualObjectFactory(void *ptrIn);
typedef void ClassManualObjectSection;
hg3dclass_struct getHG3DClass_ManualObjectSection(void *ptrIn);
typedef void ClassMaterial;
hg3dclass_struct getHG3DClass_Material(void *ptrIn);
typedef void ClassMaterialManager;
hg3dclass_struct getHG3DClass_MaterialManager(void *ptrIn);
typedef void ClassMesh;
hg3dclass_struct getHG3DClass_Mesh(void *ptrIn);
typedef void ClassMeshManager;
hg3dclass_struct getHG3DClass_MeshManager(void *ptrIn);
typedef void ClassMovableObject;
hg3dclass_struct getHG3DClass_MovableObject(void *ptrIn);
typedef void ClassMovableObjectFactory;
hg3dclass_struct getHG3DClass_MovableObjectFactory(void *ptrIn);
typedef void ClassMultiRenderTarget;
hg3dclass_struct getHG3DClass_MultiRenderTarget(void *ptrIn);
typedef void ClassNode;
hg3dclass_struct getHG3DClass_Node(void *ptrIn);
typedef void ClassNodeAnimationTrack;
hg3dclass_struct getHG3DClass_NodeAnimationTrack(void *ptrIn);
typedef void ClassNumericAnimationTrack;
hg3dclass_struct getHG3DClass_NumericAnimationTrack(void *ptrIn);
typedef void ClassRenderable;
hg3dclass_struct getHG3DClass_Renderable(void *ptrIn);
typedef void ClassRenderSystem;
hg3dclass_struct getHG3DClass_RenderSystem(void *ptrIn);
typedef void ClassRenderTarget;
hg3dclass_struct getHG3DClass_RenderTarget(void *ptrIn);
typedef void ClassRenderTexture;
hg3dclass_struct getHG3DClass_RenderTexture(void *ptrIn);
typedef void ClassRenderWindow;
hg3dclass_struct getHG3DClass_RenderWindow(void *ptrIn);
typedef void ClassResource;
hg3dclass_struct getHG3DClass_Resource(void *ptrIn);
typedef void ClassResourceGroupManager;
hg3dclass_struct getHG3DClass_ResourceGroupManager(void *ptrIn);
typedef void ClassResourceManager;
hg3dclass_struct getHG3DClass_ResourceManager(void *ptrIn);
typedef void ClassRoot;
hg3dclass_struct getHG3DClass_Root(void *ptrIn);
typedef void ClassSceneManager;
hg3dclass_struct getHG3DClass_SceneManager(void *ptrIn);
typedef void ClassSceneManagerFactory;
hg3dclass_struct getHG3DClass_SceneManagerFactory(void *ptrIn);
typedef void ClassSceneNode;
hg3dclass_struct getHG3DClass_SceneNode(void *ptrIn);
typedef void ClassSkeleton;
hg3dclass_struct getHG3DClass_Skeleton(void *ptrIn);
typedef void ClassSkeletonManager;
hg3dclass_struct getHG3DClass_SkeletonManager(void *ptrIn);
typedef void ClassTextureManager;
hg3dclass_struct getHG3DClass_TextureManager(void *ptrIn);
typedef void ClassTimeIndex;
hg3dclass_struct getHG3DClass_TimeIndex(void *ptrIn);
typedef void ClassVertexAnimationTrack;
hg3dclass_struct getHG3DClass_VertexAnimationTrack(void *ptrIn);
typedef void ClassViewport;
hg3dclass_struct getHG3DClass_Viewport(void *ptrIn);
typedef void ClassWindowEventUtilities;
hg3dclass_struct getHG3DClass_WindowEventUtilities(void *ptrIn);
typedef void ClassHG3DUtilities;
hg3dclass_struct getHG3DClass_HG3DUtilities(void *ptrIn);
#endif