fix a regression regarding struct-asset naming scheme

This commit is contained in:
Fischlurch 2010-04-17 01:56:14 +02:00
parent 68aefe5074
commit e574fdf702
6 changed files with 71 additions and 74 deletions

View file

@ -202,14 +202,14 @@ namespace asset {
Asset::Ident
getIdent() const
{
Category cat (STRUCT, idi::StructTraits<TY>::catFolder);
Category cat (STRUCT, idi::StructTraits<TY>::catFolder());
return Asset::Ident (this->getSym(), cat);
}
static idi::HashVal
getTypeHash()
{
return hash_value (Category (STRUCT, idi::StructTraits<TY>::catFolder));
return hash_value (Category (STRUCT, idi::StructTraits<TY>::catFolder()));
}
@ -237,7 +237,7 @@ namespace asset {
operator string () const
{
return "ID<"+idi::StructTraits<TY>::idSymbol+">-"+EntryID::getSym();
return "ID<"+idi::StructTraits<TY>::idSymbol()+">-"+EntryID::getSym();
}
friend ostream& operator<< (ostream& os, EntryID const& id) { return os << string(id); }

View file

@ -99,7 +99,7 @@ namespace asset {
// does the query somehow specify the desired name-ID?
string nameID = extractID (genericIdSymbol, query);
if (isnil (nameID))
nameID = extractID (StructTraits<STRU>::idSymbol, query);
nameID = extractID (StructTraits<STRU>::idSymbol(), query);
if (isnil (nameID))
{
// no name-ID contained in the query...
@ -107,15 +107,15 @@ namespace asset {
static int i=0;
static format namePattern ("%s.%d");
static format predPattern ("%s(%s), ");
nameID = str(namePattern % StructTraits<STRU>::namePrefix % (++i) );
nameID = str(namePattern % StructTraits<STRU>::namePrefix() % (++i) );
name.insert(0,
str(predPattern % StructTraits<STRU>::idSymbol % nameID ));
str(predPattern % StructTraits<STRU>::idSymbol() % nameID ));
}
ENSURE (!isnil (name));
ENSURE (!isnil (nameID));
ENSURE (contains (name, nameID));
Category cat (STRUCT, StructTraits<STRU>::catFolder);
Category cat (STRUCT, StructTraits<STRU>::catFolder());
return Asset::Ident (name, cat ); ///////////////////////TICKET #565 the ID field should be just the ID, the query should go into a dedicated "capabilities" field.
}

View file

@ -36,30 +36,14 @@
#define ASSET_STRUCT_SCHEME_H
//#include "proc/mobject/session.hpp"
//#include "proc/mobject/mobject.hpp"
#include "lib/symbol.hpp"
//#include "lib/error.hpp"
//#include "lib/util.hpp"
//#include <boost/format.hpp>
#include <boost/format.hpp>
using boost::format;
/////////////////////////////////////////////////////////TODO needs to be pushed down into a *.cpp
#include <cstdlib>
//using mobject::Session;
//using mobject::MObject;
/////////////////////////////////////////////////////////TICKET #166 : needs to be pushed down into a *.cpp
#include <boost/format.hpp>
using boost::format;
using lib::Symbol;
//using util::isnil;
//using util::contains;
//using asset::Query;
//using lumiera::query::LUMIERA_ERROR_CAPABILITY_QUERY;
//using lumiera::query::extractID;
namespace mobject {
namespace session {
@ -77,28 +61,76 @@ namespace asset{
class Timeline;
class Sequence;
namespace idi {
// structural asset ID scheme ///////////////////////////////////////////////////////////TICKET #565
using lib::Symbol;
/* ==== structural asset ID scheme ==== */ /////////////////////////////////////////////TICKET #565 : better organisation of this naming scheme
template<class STRU>
struct StructTraits
{
static Symbol namePrefix;
static Symbol catFolder;
static Symbol idSymbol;
static Symbol namePrefix();
static Symbol catFolder();
static Symbol idSymbol();
};
// Note: individual defaults are defined in stuct.cpp
///////////////////////////////////////////////////////////////////////////////////////////TICKET #581 intending to abandon asset::Track in favour of a plain EntryID
template<> struct StructTraits<asset::Track>
{
static Symbol namePrefix() { return "track"; }
static Symbol catFolder() { return "tracks";}
static Symbol idSymbol() { return "track"; }
};
template<> struct StructTraits<mobject::session::Track>
{
static Symbol namePrefix() { return "track"; }
static Symbol catFolder() { return "tracks";}
static Symbol idSymbol() { return "track"; }
};
template<> struct StructTraits<mobject::session::Clip>
{
static Symbol namePrefix() { return "clip"; }
static Symbol catFolder() { return "clips";}
static Symbol idSymbol() { return "clip"; }
};
template<> struct StructTraits<Pipe>
{
static Symbol namePrefix() { return "pipe"; }
static Symbol catFolder() { return "pipes";}
static Symbol idSymbol() { return "pipe"; }
};
template<> struct StructTraits<const ProcPatt>
{
static Symbol namePrefix() { return "patt"; }
static Symbol catFolder() { return "build-templates";}
static Symbol idSymbol() { return "procPatt"; }
};
template<> struct StructTraits<Timeline>
{
static Symbol namePrefix() { return "tL"; }
static Symbol catFolder() { return "timelines";}
static Symbol idSymbol() { return "timeline"; }
};
template<> struct StructTraits<Sequence>
{
static Symbol namePrefix() { return "seq"; }
static Symbol catFolder() { return "sequences";}
static Symbol idSymbol() { return "sequence"; }
};
/* catch-all defaults */
template<class X>
Symbol StructTraits<X>::idSymbol = typeid(X).name(); ////////////////////TICKET #583 this default works but is ugly
Symbol StructTraits<X>::idSymbol() { return typeid(X).name(); } ////////////////////TICKET #583 this default works but is ugly
template<class X>
Symbol StructTraits<X>::catFolder = StructTraits<X>::idSymbol;
Symbol StructTraits<X>::catFolder(){ return idSymbol(); }
template<class X>
Symbol StructTraits<X>::namePrefix = StructTraits<X>::idSymbol;
Symbol StructTraits<X>::namePrefix(){return idSymbol(); }
@ -109,9 +141,9 @@ namespace asset{
{
static uint i=0;
static format namePattern ("%s.%03d");
/////////////////////////////////////////////////////////TODO needs to be pushed down into a *.cpp
////////////////////////////////////////////////////////////////////////////////TICKET #166 : needs to be pushed down into a *.cpp
return str(namePattern % StructTraits<STRU>::namePrefix % (++i) );
return str(namePattern % StructTraits<STRU>::namePrefix() % (++i) );
}

View file

@ -155,39 +155,4 @@ namespace asset {
template PSequence StructFactory::operator() (const Query<Sequence>& query);
/* ======= struct asset naming scheme ======== */
///////////////////////////////////////////////////////////////////////////////////////////TICKET #565 better organisation for the asset::Struct naming scheme
///////////////////////////////////////////////////////////////////////////////////////////TICKET #581 intending to abandon asset::Track in favour of a plain EntryID
template<> Symbol StructTraits<asset::Track>::namePrefix = "track";
template<> Symbol StructTraits<asset::Track>::catFolder = "tracks";
template<> Symbol StructTraits<asset::Track>::idSymbol = "track";
template<> Symbol StructTraits<mobject::session::Track>::namePrefix = "track";
template<> Symbol StructTraits<mobject::session::Track>::catFolder = "tracks";
template<> Symbol StructTraits<mobject::session::Track>::idSymbol = "track";
template<> Symbol StructTraits<mobject::session::Clip>::namePrefix = "clip";
template<> Symbol StructTraits<mobject::session::Clip>::catFolder = "clips";
template<> Symbol StructTraits<mobject::session::Clip>::idSymbol = "clip";
template<> Symbol StructTraits<Pipe>::namePrefix = "pipe";
template<> Symbol StructTraits<Pipe>::catFolder = "pipes";
template<> Symbol StructTraits<Pipe>::idSymbol = "pipe";
template<> Symbol StructTraits<const ProcPatt>::namePrefix = "patt";
template<> Symbol StructTraits<const ProcPatt>::catFolder = "build-templates";
template<> Symbol StructTraits<const ProcPatt>::idSymbol = "procPatt";
template<> Symbol StructTraits<Timeline>::namePrefix = "tL";
template<> Symbol StructTraits<Timeline>::catFolder = "timelines";
template<> Symbol StructTraits<Timeline>::idSymbol = "timeline";
template<> Symbol StructTraits<Sequence>::namePrefix = "seq";
template<> Symbol StructTraits<Sequence>::catFolder = "sequences";
template<> Symbol StructTraits<Sequence>::idSymbol = "sequence";
} // namespace asset

View file

@ -12,8 +12,8 @@ END
TEST "normalise ID" QueryUtils_test normaliseID <<END
out: ..original : a A AA dufte 1a _1 A_A BÄH White space §&Ω%€GΩ%€ar Ω baäääääge!!!!! :
out: normalised : a a aA dufte o1a o_1 a_A bH o white_space gar_bage :
out-lit: ..original : a A AA dufte 1a _1 A_A BÄH White space §&Ω%€GΩ%€ar Ω baäääääge!!!!! :
out-lit: normalised : a a aA dufte o1a o_1 a_A bH o white_space gar_bage :
END

View file

@ -93,7 +93,7 @@ namespace lumiera {
{
Cmdline tokens ("a A AA dufte 1a _1 A_A BÄH");
tokens.push_back ("");
tokens.push_back (" White space ");
tokens.push_back (" White \t space ");
tokens.push_back ("§&Ω%€GΩ%€ar Ω baäääääge!!!!! ");
cout << "..original : " << tokens << " :\n";