gecko-dev/lib/libaddr/abcolumn.c
1998-06-22 21:46:46 +00:00

204 lines
8.7 KiB
C

/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* file: abcolumn.c
** Some portions derive from public domain IronDoc code and interfaces.
**
** Changes:
** <0> 15Dec1997 first draft
*/
#ifndef _ABTABLE_
#include "abtable.h"
#endif
#include "xp_str.h"
/*3456789_123456789_123456789_123456789_123456789_123456789_123456789_12345678*/
static const char* AB_Column_kStdNamesInEnumOrder[] = {
"isperson", /* AB_Attrib_kIsPerson = 0, 00 - "" (t or f) */
"changeseed", /* AB_Attrib_kChangeSeed, 01 - "" */
"fullname", /* AB_Attrib_kFullname, 02 - "" */
"nickname", /* AB_Attrib_kNickname, 03 - "" */
"middlename", /* AB_Attrib_kMiddleName, 04 - "" */
"familyname", /* AB_Attrib_kFamilyName, 05 - "" */
"companyname", /* AB_Attrib_kCompanyName, 06 - "" */
"region", /* AB_Attrib_kRegion, 07 - "" */
"email", /* AB_Attrib_kEmail, 08 - "" */
"info", /* AB_Attrib_kInfo, 09 - "" */
"htmlmail", /* AB_Attrib_kHtmlMail, 10 - "" (t or f) */
"expandedname", /* AB_Attrib_kExpandedName, 11 - "" */
"title", /* AB_Attrib_kTitle, 12 - "" */
"address", /* AB_Attrib_kAddress, 13 - "" */
"zip", /* AB_Attrib_kZip, 14 - "" */
"country", /* AB_Attrib_kCountry, 15 - "" */
"workphone", /* AB_Attrib_kWorkPhone, 16 - "" */
"homephone", /* AB_Attrib_kHomePhone, 17 - "" */
"security", /* AB_Attrib_kSecurity, 18 - "" */
"cooladdress", /* AB_Attrib_kCoolAddress, 19 - "" (conf related) */
"useserver", /* AB_Attrib_kUseServer, 20 - "" (conf related) */
"pager", /* AB_Attrib_kPager, 21 - "" */
"fax", /* AB_Attrib_kFax, 22 - "" */
"displayname", /* AB_Attrib_kDisplayName, 23 - "" */
"sender", /* AB_Attrib_kSender, 24 - "" (mail and news) */
"subject", /* AB_Attrib_kSubject, 25 - "" */
"body", /* AB_Attrib_kBody, 26 - "" */
"date", /* AB_Attrib_kDate, 27 - "" */
"priority", /* AB_Attrib_kPriority, 28 - "" (mail only) */
"msgstatus", /* AB_Attrib_kMsgStatus, 29 - "" */
"to", /* AB_Attrib_kTo, 30 - "" */
"cc", /* AB_Attrib_kCC, 31 - "" */
"toorcc", /* AB_Attrib_kToOrCC, 32 - "" */
"commonname", /* AB_Attrib_kCommonName, 33 - "" (LDAP only) */
"822address", /* AB_Attrib_k822Address, 34 - "" */
"phonenumber", /* AB_Attrib_kPhoneNumber, 35 - "" */
"organization", /* AB_Attrib_kOrganization, 36 - "" */
"orgunit", /* AB_Attrib_kOrgUnit, 37 - "" */
"locality", /* AB_Attrib_kLocality, 38 - "" */
"streetaddress", /* AB_Attrib_kStreetAddress, 39 - "" */
"size", /* AB_Attrib_kSize, 40 - "" */
"anytext", /* AB_Attrib_kAnyText, 41 - "" (header/body) */
"keywords", /* AB_Attrib_kKeywords, 42 - "" */
"distname", /* AB_Attrib_kDistName, 43 - "" */
"objectclass", /* AB_Attrib_kObjectClass, 44 - "" */
"jpegfile", /* AB_Attrib_kJpegFile, 45 - "" */
"location", /* AB_Attrib_kLocation, 46 - "" (result list */
"messagekey", /* AB_Attrib_kMessageKey, 47 - "" (message elems) */
"ageindays", /* AB_Attrib_kAgeInDays, 48 - "" (purging news) */
"givenname", /* AB_Attrib_kGivenName, 49 - "" (sorting LDAP) */
"surname", /* AB_Attrib_kSurname, 50 - "" */
"folderinfo", /* AB_Attrib_kFolderInfo, 51 - "" (view thread) */
"custom1", /* AB_Attrib_kCustom1, 52 - "" (custom attr) */
"custom2", /* AB_Attrib_kCustom2, 53 - "" */
"custom3", /* AB_Attrib_kCustom3, 54 - "" */
"custom4", /* AB_Attrib_kCustom4, 55 - "" */
"custom5", /* AB_Attrib_kCustom5, 56 - "" */
"messageid", /* AB_Attrib_kMessageId, 57 - "" */
"homeurl", /* AB_Attrib_kHomeUrl, 58 - "" */
"workurl", /* AB_Attrib_kWorkUrl, 59 - "" */
"imapurl", /* AB_Attrib_kImapUrl, 60 - "" */
"notifyurl", /* AB_Attrib_kNotifyUrl, 61 - "" */
"prefurl", /* AB_Attrib_kPrefUrl, 62 - "" */
"pageremail", /* AB_Attrib_kPagerEmail, 63 - "" */
"parentphone", /* AB_Attrib_kParentPhone, 64 - "" */
"gender", /* AB_Attrib_kGender, 65 - "" */
"postaladdress", /* AB_Attrib_kPostalAddress, 66 - "" */
"employeeid", /* AB_Attrib_kEmployeeId, 67 - "" */
"agent", /* AB_Attrib_kAgent, 68 - "" */
"bbs", /* AB_Attrib_kBbs, 69 - "" */
"bday", /* AB_Attrib_kBday, 70 - "" (birthdate) */
"calendar", /* AB_Attrib_kCalendar, 71 - "" */
"car", /* AB_Attrib_kCar, 72 - "" */
"carphone", /* AB_Attrib_kCarPhone, 73 - "" */
"categories", /* AB_Attrib_kCategories, 74 - "" */
"cell", /* AB_Attrib_kCell, 75 - "" */
"cellphone", /* AB_Attrib_kCellPhone, 76 - "" */
"charset", /* AB_Attrib_kCharSet, 77 - "" (cs, csid) */
"class", /* AB_Attrib_kClass, 78 - "" */
"geo", /* AB_Attrib_kGeo, 79 - "" */
"gif", /* AB_Attrib_kGif, 80 - "" */
"key", /* AB_Attrib_kKey, 81 - "" (publickey) */
"language", /* AB_Attrib_kLanguage, 82 - "" */
"logo", /* AB_Attrib_kLogo, 83 - "" */
"modem", /* AB_Attrib_kModem, 84 - "" */
"msgphone", /* AB_Attrib_kMsgPhone, 85 - "" */
"n", /* AB_Attrib_kN, 86 - "n" */
"note", /* AB_Attrib_kNote, 87 - "" */
"pagerphone", /* AB_Attrib_kPagerPhone, 88 - "" */
"pgp", /* AB_Attrib_kPgp, 89 - "" */
"photo", /* AB_Attrib_kPhoto, 90 - "" */
"rev", /* AB_Attrib_kRev, 91 - "" */
"role", /* AB_Attrib_kRole, 92 - "" */
"sound", /* AB_Attrib_kSound, 93 - "" */
"sortstring", /* AB_Attrib_kSortString, 94 - "" */
"tiff", /* AB_Attrib_kTiff, 95 - "" */
"tz", /* AB_Attrib_kTz, 96 - "" (timezone) */
"uid", /* AB_Attrib_kUid, 97 - "" (uniqueid) */
"version", /* AB_Attrib_kVersion, 98 - "" */
"voice", /* AB_Attrib_kVoice, 99 - "" */
"?col-name?",
(const char*) 0 /* null terminated */
};
AB_API_IMPL(const char*)
AB_ColumnUid_AsString(ab_column_uid inStdColumnUid, AB_Env* cev) /*i*/
{
const char* outString = 0;
/* ab_Env* ev = ab_Env::AsThis(cev); */
AB_Env_BeginMethod(cev, "AB_ColumnUid", "AsString")
if ( AB_Uid_IsStandardColumn(inStdColumnUid) )
{
ab_num attrib = AB_ColumnUid_AsDbUid(inStdColumnUid);
if ( attrib < AB_Attrib_kNumColumnAttributes )
outString = AB_Column_kStdNamesInEnumOrder[ attrib ];
}
AB_Env_EndMethod(cev)
return outString;
}
/*| AsStandardColumnUid: find which uid corresponds to the input name. This
**| implementation does an excrutiatingly slow linear search that examines
**| each of the standard names in turn. We'll either do a faster version of
**| this later, or else we'll let ab_NameSet subclasses do better.
|*/
AB_API_IMPL(ab_column_uid)
AB_String_AsStandardColumnUid(const char* inStdColumnName, AB_Env* cev) /*i*/
{
ab_column_uid outUid = 0;
/* ab_Env* ev = ab_Env::AsThis(cev); */
AB_Env_BeginMethod(cev, "AB_String", "AsStandardColumnUid")
const char** nameVector = AB_Column_kStdNamesInEnumOrder;
const char* name = *nameVector++;
for ( ; name; name = *nameVector++ ) /* until null termination is reached */
{
if ( !XP_STRCASECMP(name, inStdColumnName ) )
{
ab_num index = (--nameVector - AB_Column_kStdNamesInEnumOrder);
outUid = AB_Attrib_AsStdColUid(index);
break;
}
}
AB_Env_EndMethod(cev)
return outUid;
}