1
// $Id: res_descriptor.cxx,v 1.15 2003/04/02 19:59:04 grumbel Exp $
3
// Pingus - A free Lemmings clone
4
// Copyright (C) 1999 Ingo Ruhnke <grumbel@gmx.de>
6
// This program is free software; you can redistribute it and/or
7
// modify it under the terms of the GNU General Public License
8
// as published by the Free Software Foundation; either version 2
9
// of the License, or (at your option) any later version.
11
// This program is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
// GNU General Public License for more details.
16
// You should have received a copy of the GNU General Public License
17
// along with this program; if not, write to the Free Software
18
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
#include "res_descriptor.hxx"
23
#include "pingus_error.hxx"
26
uri -> file:///home/ingo/.pingus/images/...
27
uri -> resource://core/result/ok
28
uri -> file://bla.png (relative to ~/.pingus/images/)
29
ResDescriptor(const std::string& uri);
32
ResDescriptor::ResDescriptor()
37
modifier = ResourceModifierNS::ROT0;
40
ResDescriptor::ResDescriptor (const ResDescriptor& res_desc)
41
: type(res_desc.type),
42
datafile(res_desc.datafile),
43
res_name(res_desc.res_name),
44
modifier(res_desc.modifier)
49
ResDescriptor::operator= (const ResDescriptor& old)
55
datafile = old.datafile;
56
res_name = old.res_name;
57
modifier = old.modifier;
62
ResDescriptor::ResDescriptor(const std::string& arg_res_name,
63
const std::string& arg_datafile,
64
ResourceType arg_type,
65
ResourceModifierNS::ResourceModifier arg_modifier)
67
res_name = arg_res_name;
68
datafile = arg_datafile;
70
modifier = arg_modifier;
74
ResDescriptor::operator<(const ResDescriptor& res_desc) const
76
// FIXME: This is ugly and slow
77
//return (datafile + res_name + to_string (type) + to_string (modifier))
78
// < (res_desc.datafile + res_desc.res_name + to_string (res_desc.type) + to_string (res_desc.modifier));
80
if (datafile < res_desc.datafile)
82
else if (datafile > res_desc.datafile)
86
if (res_name < res_desc.res_name)
88
else if (res_name > res_desc.res_name)
92
if (modifier < res_desc.modifier)
94
else if (modifier > res_desc.modifier)
98
if (type < res_desc.type)
100
else if (type > res_desc.type)
109
std::ostream& operator<<(std::ostream& s, const ResDescriptor& desc)
113
case ResDescriptor::RD_RESOURCE:
114
return s << "[" << desc.res_name << ", " << desc.datafile
115
<< ", " << ResourceModifierNS::rs_to_string(desc.modifier) << "]";
117
case ResDescriptor::RD_FILE:
118
return s << "(plainfile:" << desc.res_name << ")";
120
case ResDescriptor::RD_AUTO:
121
return s << "(auto)";
124
std::cout << "ResDescriptor: Unknown type: " << desc.type << std::endl;
125
assert (!"Unknown type");