1/* 2** Distributed under the terms of the MIT License. 3** Copyright 2003-2004,2012. All rights reserved. 4** 5** Authors: Axel D��rfler, axeld@pinc-software.de 6** Oliver Tappe, zooey@hirschkaefer.de 7*/ 8 9#include <Catalog.h> 10#include <CatalogData.h> 11 12 13// Provides an implementation of BCatalog for the build host, in effect only 14// supporting setting and getting of catalog entries. 15 16 17BCatalog::BCatalog() 18 : 19 fCatalogData(NULL) 20{ 21} 22 23 24BCatalog::BCatalog(const entry_ref& catalogOwner, const char *language, 25 uint32 fingerprint) 26 : 27 fCatalogData(NULL) 28{ 29} 30 31 32BCatalog::~BCatalog() 33{ 34} 35 36 37const char * 38BCatalog::GetString(const char *string, const char *context, const char *comment) 39{ 40 if (fCatalogData == 0) 41 return string; 42 43 const char *translated; 44 for (BCatalogData* cat = fCatalogData; cat != NULL; cat = cat->fNext) { 45 translated = cat->GetString(string, context, comment); 46 if (translated) 47 return translated; 48 } 49 50 return string; 51} 52 53 54const char * 55BCatalog::GetString(uint32 id) 56{ 57 if (fCatalogData == 0) 58 return ""; 59 60 const char *translated; 61 for (BCatalogData* cat = fCatalogData; cat != NULL; cat = cat->fNext) { 62 translated = cat->GetString(id); 63 if (translated) 64 return translated; 65 } 66 67 return ""; 68} 69 70 71status_t 72BCatalog::GetData(const char *name, BMessage *msg) 73{ 74 if (fCatalogData == 0) 75 return B_NO_INIT; 76 77 status_t res; 78 for (BCatalogData* cat = fCatalogData; cat != NULL; cat = cat->fNext) { 79 res = cat->GetData(name, msg); 80 if (res != B_NAME_NOT_FOUND && res != EOPNOTSUPP) 81 return res; 82 // return B_OK if found, or specific error-code 83 } 84 85 return B_NAME_NOT_FOUND; 86} 87 88 89status_t 90BCatalog::GetData(uint32 id, BMessage *msg) 91{ 92 if (fCatalogData == 0) 93 return B_NO_INIT; 94 95 status_t res; 96 for (BCatalogData* cat = fCatalogData; cat != NULL; cat = cat->fNext) { 97 res = cat->GetData(id, msg); 98 if (res != B_NAME_NOT_FOUND && res != EOPNOTSUPP) 99 return res; 100 // return B_OK if found, or specific error-code 101 } 102 103 return B_NAME_NOT_FOUND; 104} 105