Implemented KRUnknown and KRUnknownManager to allow applications to use Kraken's resource management functionality for application-specific files.
--HG-- extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%40203
This commit is contained in:
@@ -21,6 +21,14 @@
|
|||||||
E414BAE51435558900A668C4 /* KRInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E414BAE41435558800A668C4 /* KRInstance.cpp */; };
|
E414BAE51435558900A668C4 /* KRInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E414BAE41435558800A668C4 /* KRInstance.cpp */; };
|
||||||
E414BAE7143557D200A668C4 /* KRScene.h in Headers */ = {isa = PBXBuildFile; fileRef = E414BAE6143557D200A668C4 /* KRScene.h */; };
|
E414BAE7143557D200A668C4 /* KRScene.h in Headers */ = {isa = PBXBuildFile; fileRef = E414BAE6143557D200A668C4 /* KRScene.h */; };
|
||||||
E414BAE91435585A00A668C4 /* KRScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E414BAE81435585A00A668C4 /* KRScene.cpp */; };
|
E414BAE91435585A00A668C4 /* KRScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E414BAE81435585A00A668C4 /* KRScene.cpp */; };
|
||||||
|
E414F9A61694D977000B3D58 /* KRUnknownManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E414F9A41694D977000B3D58 /* KRUnknownManager.cpp */; };
|
||||||
|
E414F9A71694D977000B3D58 /* KRUnknownManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E414F9A41694D977000B3D58 /* KRUnknownManager.cpp */; };
|
||||||
|
E414F9A81694D977000B3D58 /* KRUnknownManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E414F9A51694D977000B3D58 /* KRUnknownManager.h */; };
|
||||||
|
E414F9A91694D977000B3D58 /* KRUnknownManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E414F9A51694D977000B3D58 /* KRUnknownManager.h */; };
|
||||||
|
E414F9AC1694DA37000B3D58 /* KRUnknown.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E414F9AA1694DA37000B3D58 /* KRUnknown.cpp */; };
|
||||||
|
E414F9AD1694DA37000B3D58 /* KRUnknown.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E414F9AA1694DA37000B3D58 /* KRUnknown.cpp */; };
|
||||||
|
E414F9AE1694DA37000B3D58 /* KRUnknown.h in Headers */ = {isa = PBXBuildFile; fileRef = E414F9AB1694DA37000B3D58 /* KRUnknown.h */; };
|
||||||
|
E414F9AF1694DA37000B3D58 /* KRUnknown.h in Headers */ = {isa = PBXBuildFile; fileRef = E414F9AB1694DA37000B3D58 /* KRUnknown.h */; };
|
||||||
E416AA9916713749000F6786 /* KRAnimationCurveManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E416AA9816713749000F6786 /* KRAnimationCurveManager.h */; };
|
E416AA9916713749000F6786 /* KRAnimationCurveManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E416AA9816713749000F6786 /* KRAnimationCurveManager.h */; };
|
||||||
E416AA9A16713749000F6786 /* KRAnimationCurveManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E416AA9816713749000F6786 /* KRAnimationCurveManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
E416AA9A16713749000F6786 /* KRAnimationCurveManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E416AA9816713749000F6786 /* KRAnimationCurveManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
E416AA9C1671375C000F6786 /* KRAnimationCurveManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E416AA9B1671375C000F6786 /* KRAnimationCurveManager.cpp */; };
|
E416AA9C1671375C000F6786 /* KRAnimationCurveManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E416AA9B1671375C000F6786 /* KRAnimationCurveManager.cpp */; };
|
||||||
@@ -259,6 +267,10 @@
|
|||||||
E414BAE41435558800A668C4 /* KRInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = KRInstance.cpp; path = Classes/KRInstance.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
|
E414BAE41435558800A668C4 /* KRInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = KRInstance.cpp; path = Classes/KRInstance.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
|
||||||
E414BAE6143557D200A668C4 /* KRScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = KRScene.h; path = Classes/KRScene.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
E414BAE6143557D200A668C4 /* KRScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = KRScene.h; path = Classes/KRScene.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
||||||
E414BAE81435585A00A668C4 /* KRScene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = KRScene.cpp; path = Classes/KRScene.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
|
E414BAE81435585A00A668C4 /* KRScene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = KRScene.cpp; path = Classes/KRScene.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
|
||||||
|
E414F9A41694D977000B3D58 /* KRUnknownManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KRUnknownManager.cpp; path = Classes/KRUnknownManager.cpp; sourceTree = "<group>"; };
|
||||||
|
E414F9A51694D977000B3D58 /* KRUnknownManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KRUnknownManager.h; path = Classes/KRUnknownManager.h; sourceTree = "<group>"; };
|
||||||
|
E414F9AA1694DA37000B3D58 /* KRUnknown.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KRUnknown.cpp; path = Classes/KRUnknown.cpp; sourceTree = "<group>"; };
|
||||||
|
E414F9AB1694DA37000B3D58 /* KRUnknown.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KRUnknown.h; path = Classes/KRUnknown.h; sourceTree = "<group>"; };
|
||||||
E416AA9816713749000F6786 /* KRAnimationCurveManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KRAnimationCurveManager.h; path = Classes/KRAnimationCurveManager.h; sourceTree = "<group>"; };
|
E416AA9816713749000F6786 /* KRAnimationCurveManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KRAnimationCurveManager.h; path = Classes/KRAnimationCurveManager.h; sourceTree = "<group>"; };
|
||||||
E416AA9B1671375C000F6786 /* KRAnimationCurveManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KRAnimationCurveManager.cpp; path = Classes/KRAnimationCurveManager.cpp; sourceTree = "<group>"; };
|
E416AA9B1671375C000F6786 /* KRAnimationCurveManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KRAnimationCurveManager.cpp; path = Classes/KRAnimationCurveManager.cpp; sourceTree = "<group>"; };
|
||||||
E41B841D16260C5600C7A771 /* sky_box.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; name = sky_box.fsh; path = Shaders/sky_box.fsh; sourceTree = "<group>"; };
|
E41B841D16260C5600C7A771 /* sky_box.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; name = sky_box.fsh; path = Shaders/sky_box.fsh; sourceTree = "<group>"; };
|
||||||
@@ -445,6 +457,17 @@
|
|||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
|
E414F9A21694D949000B3D58 /* UnknownManager */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
E414F9A41694D977000B3D58 /* KRUnknownManager.cpp */,
|
||||||
|
E414F9A51694D977000B3D58 /* KRUnknownManager.h */,
|
||||||
|
E414F9AA1694DA37000B3D58 /* KRUnknown.cpp */,
|
||||||
|
E414F9AB1694DA37000B3D58 /* KRUnknown.h */,
|
||||||
|
);
|
||||||
|
name = UnknownManager;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
E416AA96167136FB000F6786 /* AnimationCurve */ = {
|
E416AA96167136FB000F6786 /* AnimationCurve */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -585,6 +608,7 @@
|
|||||||
E488399915F92BA300BD66D5 /* Managers */ = {
|
E488399915F92BA300BD66D5 /* Managers */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
E414F9A21694D949000B3D58 /* UnknownManager */,
|
||||||
E416AA96167136FB000F6786 /* AnimationCurve */,
|
E416AA96167136FB000F6786 /* AnimationCurve */,
|
||||||
E428C2EF166960ED00A16EDF /* Animation */,
|
E428C2EF166960ED00A16EDF /* Animation */,
|
||||||
E48839AB15F930E200BD66D5 /* Bundle */,
|
E48839AB15F930E200BD66D5 /* Bundle */,
|
||||||
@@ -888,6 +912,8 @@
|
|||||||
E4C454B2167BC04C003586CD /* KRModelSphere.h in Headers */,
|
E4C454B2167BC04C003586CD /* KRModelSphere.h in Headers */,
|
||||||
E4C454B8167BD236003586CD /* KRHitInfo.h in Headers */,
|
E4C454B8167BD236003586CD /* KRHitInfo.h in Headers */,
|
||||||
E44F38241683B23000399B5D /* KRRenderSettings.h in Headers */,
|
E44F38241683B23000399B5D /* KRRenderSettings.h in Headers */,
|
||||||
|
E414F9A81694D977000B3D58 /* KRUnknownManager.h in Headers */,
|
||||||
|
E414F9AE1694DA37000B3D58 /* KRUnknown.h in Headers */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -950,6 +976,8 @@
|
|||||||
E4C454AD167BB8EC003586CD /* KRModelCube.h in Headers */,
|
E4C454AD167BB8EC003586CD /* KRModelCube.h in Headers */,
|
||||||
E4C454B3167BC04C003586CD /* KRModelSphere.h in Headers */,
|
E4C454B3167BC04C003586CD /* KRModelSphere.h in Headers */,
|
||||||
E44F38251683B23000399B5D /* KRRenderSettings.h in Headers */,
|
E44F38251683B23000399B5D /* KRRenderSettings.h in Headers */,
|
||||||
|
E414F9A91694D977000B3D58 /* KRUnknownManager.h in Headers */,
|
||||||
|
E414F9AF1694DA37000B3D58 /* KRUnknown.h in Headers */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -1088,6 +1116,8 @@
|
|||||||
E4C454B5167BC05C003586CD /* KRModelSphere.cpp in Sources */,
|
E4C454B5167BC05C003586CD /* KRModelSphere.cpp in Sources */,
|
||||||
E4C454BB167BD248003586CD /* KRHitInfo.cpp in Sources */,
|
E4C454BB167BD248003586CD /* KRHitInfo.cpp in Sources */,
|
||||||
E44F38281683B24800399B5D /* KRRenderSettings.cpp in Sources */,
|
E44F38281683B24800399B5D /* KRRenderSettings.cpp in Sources */,
|
||||||
|
E414F9A61694D977000B3D58 /* KRUnknownManager.cpp in Sources */,
|
||||||
|
E414F9AC1694DA37000B3D58 /* KRUnknown.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -1150,6 +1180,8 @@
|
|||||||
E4C454B6167BC05C003586CD /* KRModelSphere.cpp in Sources */,
|
E4C454B6167BC05C003586CD /* KRModelSphere.cpp in Sources */,
|
||||||
E4C454BC167BD248003586CD /* KRHitInfo.cpp in Sources */,
|
E4C454BC167BD248003586CD /* KRHitInfo.cpp in Sources */,
|
||||||
E44F38291683B24800399B5D /* KRRenderSettings.cpp in Sources */,
|
E44F38291683B24800399B5D /* KRRenderSettings.cpp in Sources */,
|
||||||
|
E414F9A71694D977000B3D58 /* KRUnknownManager.cpp in Sources */,
|
||||||
|
E414F9AD1694DA37000B3D58 /* KRUnknown.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ KRContext::KRContext() {
|
|||||||
m_pSceneManager = new KRSceneManager(*this);
|
m_pSceneManager = new KRSceneManager(*this);
|
||||||
m_pAnimationManager = new KRAnimationManager(*this);
|
m_pAnimationManager = new KRAnimationManager(*this);
|
||||||
m_pAnimationCurveManager = new KRAnimationCurveManager(*this);
|
m_pAnimationCurveManager = new KRAnimationCurveManager(*this);
|
||||||
|
m_pUnknownManager = new KRUnknownManager(*this);
|
||||||
m_bDetectedExtensions = false;
|
m_bDetectedExtensions = false;
|
||||||
m_current_frame = 0;
|
m_current_frame = 0;
|
||||||
m_absolute_time = 0.0f;
|
m_absolute_time = 0.0f;
|
||||||
@@ -76,6 +77,11 @@ KRContext::~KRContext() {
|
|||||||
delete m_pAnimationCurveManager;
|
delete m_pAnimationCurveManager;
|
||||||
m_pAnimationCurveManager = NULL;
|
m_pAnimationCurveManager = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(m_pUnknownManager) {
|
||||||
|
delete m_pUnknownManager;
|
||||||
|
m_pUnknownManager = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// The bundles must be destroyed last, as the other objects may be using mmap'ed data from bundles
|
// The bundles must be destroyed last, as the other objects may be using mmap'ed data from bundles
|
||||||
if(m_pBundleManager) {
|
if(m_pBundleManager) {
|
||||||
@@ -108,6 +114,9 @@ KRAnimationManager *KRContext::getAnimationManager() {
|
|||||||
KRAnimationCurveManager *KRContext::getAnimationCurveManager() {
|
KRAnimationCurveManager *KRContext::getAnimationCurveManager() {
|
||||||
return m_pAnimationCurveManager;
|
return m_pAnimationCurveManager;
|
||||||
}
|
}
|
||||||
|
KRUnknownManager *KRContext::getUnknownManager() {
|
||||||
|
return m_pUnknownManager;
|
||||||
|
}
|
||||||
|
|
||||||
void KRContext::loadResource(const std::string &file_name, KRDataBlock *data) {
|
void KRContext::loadResource(const std::string &file_name, KRDataBlock *data) {
|
||||||
std::string name = KRResource::GetFileBase(file_name);
|
std::string name = KRResource::GetFileBase(file_name);
|
||||||
@@ -136,7 +145,7 @@ void KRContext::loadResource(const std::string &file_name, KRDataBlock *data) {
|
|||||||
} else if(extension.compare("mtl") == 0) {
|
} else if(extension.compare("mtl") == 0) {
|
||||||
m_pMaterialManager->load(name.c_str(), data);
|
m_pMaterialManager->load(name.c_str(), data);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "KRContext::loadResource - Unknown resource file type: %s\n", file_name.c_str());
|
m_pUnknownManager->load(name, extension, data);
|
||||||
delete data;
|
delete data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#import "KRModelManager.h"
|
#import "KRModelManager.h"
|
||||||
#import "KRAnimationManager.h"
|
#import "KRAnimationManager.h"
|
||||||
#import "KRAnimationCurveManager.h"
|
#import "KRAnimationCurveManager.h"
|
||||||
|
#import "KRUnknownManager.h"
|
||||||
|
|
||||||
class KRContext {
|
class KRContext {
|
||||||
public:
|
public:
|
||||||
@@ -47,6 +48,7 @@ public:
|
|||||||
KRModelManager *getModelManager();
|
KRModelManager *getModelManager();
|
||||||
KRAnimationManager *getAnimationManager();
|
KRAnimationManager *getAnimationManager();
|
||||||
KRAnimationCurveManager *getAnimationCurveManager();
|
KRAnimationCurveManager *getAnimationCurveManager();
|
||||||
|
KRUnknownManager *getUnknownManager();
|
||||||
|
|
||||||
KRCamera *createCamera(int width, int height);
|
KRCamera *createCamera(int width, int height);
|
||||||
|
|
||||||
@@ -74,6 +76,7 @@ private:
|
|||||||
KRModelManager *m_pModelManager;
|
KRModelManager *m_pModelManager;
|
||||||
KRAnimationManager *m_pAnimationManager;
|
KRAnimationManager *m_pAnimationManager;
|
||||||
KRAnimationCurveManager *m_pAnimationCurveManager;
|
KRAnimationCurveManager *m_pAnimationCurveManager;
|
||||||
|
KRUnknownManager *m_pUnknownManager;
|
||||||
|
|
||||||
void detectExtensions();
|
void detectExtensions();
|
||||||
bool m_bDetectedExtensions;
|
bool m_bDetectedExtensions;
|
||||||
|
|||||||
42
KREngine/KREngine/Classes/KRUnknown.cpp
Normal file
42
KREngine/KREngine/Classes/KRUnknown.cpp
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
//
|
||||||
|
// KRUnknown.cpp
|
||||||
|
// KREngine
|
||||||
|
//
|
||||||
|
// Created by Kearwood Gilbert on 2013-01-02.
|
||||||
|
// Copyright (c) 2013 Kearwood Software. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "KRUnknown.h"
|
||||||
|
|
||||||
|
KRUnknown::KRUnknown(KRContext &context, std::string name, std::string extension) : KRResource(context, name)
|
||||||
|
{
|
||||||
|
m_pData = new KRDataBlock();
|
||||||
|
m_extension = extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
KRUnknown::KRUnknown(KRContext &context, std::string name, std::string extension, KRDataBlock *data) : KRResource(context, name)
|
||||||
|
{
|
||||||
|
m_pData = data;
|
||||||
|
m_extension = extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
KRUnknown::~KRUnknown()
|
||||||
|
{
|
||||||
|
delete m_pData;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string KRUnknown::getExtension()
|
||||||
|
{
|
||||||
|
return m_extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool KRUnknown::save(KRDataBlock &data)
|
||||||
|
{
|
||||||
|
data.append(*m_pData);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
KRDataBlock *KRUnknown::getData()
|
||||||
|
{
|
||||||
|
return m_pData;
|
||||||
|
}
|
||||||
37
KREngine/KREngine/Classes/KRUnknown.h
Normal file
37
KREngine/KREngine/Classes/KRUnknown.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
//
|
||||||
|
// KRUnknown.h
|
||||||
|
// KREngine
|
||||||
|
//
|
||||||
|
// Created by Kearwood Gilbert on 2013-01-02.
|
||||||
|
// Copyright (c) 2013 Kearwood Software. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef KRUNKNOWN_H
|
||||||
|
#define KRUNKNOWN_H
|
||||||
|
|
||||||
|
#import "KREngine-common.h"
|
||||||
|
#import "KRContextObject.h"
|
||||||
|
#import "KRDataBlock.h"
|
||||||
|
#import "KRResource.h"
|
||||||
|
#import <map>
|
||||||
|
|
||||||
|
class KRUnknown : public KRResource {
|
||||||
|
|
||||||
|
public:
|
||||||
|
KRUnknown(KRContext &context, std::string name, std::string extension);
|
||||||
|
KRUnknown(KRContext &context, std::string name, std::string extension, KRDataBlock *data);
|
||||||
|
virtual ~KRUnknown();
|
||||||
|
|
||||||
|
virtual std::string getExtension();
|
||||||
|
|
||||||
|
virtual bool save(KRDataBlock &data);
|
||||||
|
|
||||||
|
KRDataBlock *getData();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::string m_extension;
|
||||||
|
KRDataBlock *m_pData;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* defined(KRUNKNOWN_H) */
|
||||||
73
KREngine/KREngine/Classes/KRUnknownManager.cpp
Normal file
73
KREngine/KREngine/Classes/KRUnknownManager.cpp
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
//
|
||||||
|
// FileManager.cpp
|
||||||
|
// KREngine
|
||||||
|
//
|
||||||
|
// Created by Kearwood Gilbert on 2013-01-02.
|
||||||
|
// Copyright (c) 2013 Kearwood Software. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "KRUnknownManager.h"
|
||||||
|
|
||||||
|
KRUnknownManager::KRUnknownManager(KRContext &context) : KRContextObject(context)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
KRUnknownManager::~KRUnknownManager()
|
||||||
|
{
|
||||||
|
for(map<std::string, map<std::string, KRUnknown *> >::iterator extension_itr = m_unknowns.begin(); extension_itr != m_unknowns.end(); extension_itr++) {
|
||||||
|
for(map<std::string, KRUnknown *>::iterator name_itr=(*extension_itr).second.begin(); name_itr != (*extension_itr).second.end(); name_itr++) {
|
||||||
|
delete (*name_itr).second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KRUnknownManager::add(KRUnknown *unknown)
|
||||||
|
{
|
||||||
|
std::string lower_name = unknown->getName();
|
||||||
|
std::string lower_extension = unknown->getExtension();
|
||||||
|
|
||||||
|
std::transform(lower_name.begin(), lower_name.end(), lower_name.begin(), ::tolower);
|
||||||
|
std::transform(lower_extension.begin(), lower_extension.end(), lower_extension.begin(), ::tolower);
|
||||||
|
|
||||||
|
map<std::string, map<std::string, KRUnknown *> >::iterator extension_itr = m_unknowns.find(lower_extension);
|
||||||
|
if(extension_itr == m_unknowns.end()) {
|
||||||
|
m_unknowns[lower_name] = map<std::string, KRUnknown *>();
|
||||||
|
extension_itr = m_unknowns.find(lower_extension);
|
||||||
|
}
|
||||||
|
|
||||||
|
map<std::string, KRUnknown *>::iterator name_itr = (*extension_itr).second.find(lower_name);
|
||||||
|
if(name_itr != (*extension_itr).second.end()) {
|
||||||
|
delete (*name_itr).second;
|
||||||
|
(*name_itr).second = unknown;
|
||||||
|
} else {
|
||||||
|
(*extension_itr).second[lower_extension] = unknown;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
KRUnknown *KRUnknownManager::load(const std::string &name, const std::string &extension, KRDataBlock *data)
|
||||||
|
{
|
||||||
|
KRUnknown *unknown = new KRUnknown(getContext(), name, extension, data);
|
||||||
|
if(unknown) add(unknown);
|
||||||
|
return unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
KRUnknown *KRUnknownManager::get(const std::string &name, const std::string &extension)
|
||||||
|
{
|
||||||
|
std::string lower_name = name;
|
||||||
|
std::string lower_extension = extension;
|
||||||
|
|
||||||
|
std::transform(lower_name.begin(), lower_name.end(), lower_name.begin(), ::tolower);
|
||||||
|
std::transform(lower_extension.begin(), lower_extension.end(), lower_extension.begin(), ::tolower);
|
||||||
|
|
||||||
|
return m_unknowns[lower_extension][lower_name];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const map<std::string, KRUnknown *> &KRUnknownManager::get(const std::string &extension)
|
||||||
|
{
|
||||||
|
std::string lower_extension = extension;
|
||||||
|
std::transform(lower_extension.begin(), lower_extension.end(), lower_extension.begin(), ::tolower);
|
||||||
|
return m_unknowns[lower_extension];
|
||||||
|
}
|
||||||
|
|
||||||
42
KREngine/KREngine/Classes/KRUnknownManager.h
Normal file
42
KREngine/KREngine/Classes/KRUnknownManager.h
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
//
|
||||||
|
// FileManager.h
|
||||||
|
// KREngine
|
||||||
|
//
|
||||||
|
// Created by Kearwood Gilbert on 2013-01-02.
|
||||||
|
// Copyright (c) 2013 Kearwood Software. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef KRUNKNOWN_MANAGER_H
|
||||||
|
#define KRUNKNOWN_MANAGER_H
|
||||||
|
|
||||||
|
#import "KREngine-common.h"
|
||||||
|
|
||||||
|
#include "KRUnknown.h"
|
||||||
|
#include "KRContextObject.h"
|
||||||
|
#include "KRDataBlock.h"
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <set>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
using std::map;
|
||||||
|
using std::set;
|
||||||
|
|
||||||
|
class KRUnknownManager : public KRContextObject {
|
||||||
|
public:
|
||||||
|
KRUnknownManager(KRContext &context);
|
||||||
|
virtual ~KRUnknownManager();
|
||||||
|
|
||||||
|
void add(KRUnknown *unknown);
|
||||||
|
|
||||||
|
KRUnknown *load(const std::string &name, const std::string &extension, KRDataBlock *data);
|
||||||
|
KRUnknown *get(const std::string &name, const std::string &extension);
|
||||||
|
|
||||||
|
|
||||||
|
const map<std::string, KRUnknown *> &get(const std::string &extension);
|
||||||
|
|
||||||
|
private:
|
||||||
|
map<std::string, map<std::string, KRUnknown *> > m_unknowns;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* defined(KRUNKNOWN_MANAGER_H) */
|
||||||
Reference in New Issue
Block a user