GnuCash  2.6.99
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Files | Data Structures | Macros | Typedefs | Functions
Address

Files

file  gncAddress.h
 an Address object
 

Data Structures

struct  GncAddress
 

Macros

#define GNC_ADDRESS_MODULE_NAME   "gncAddress"
 
#define GNC_ID_ADDRESS   GNC_ADDRESS_MODULE_NAME
 
#define GNC_TYPE_ADDRESS   (gnc_address_get_type ())
 
#define GNC_ADDRESS(o)   (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_ADDRESS, GncAddress))
 
#define GNC_ADDRESS_CLASS(k)   (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_ADDRESS, GncAddressClass))
 
#define GNC_IS_ADDRESS(o)   (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_ADDRESS))
 
#define GNC_IS_ADDRESS_CLASS(k)   (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_ADDRESS))
 
#define GNC_ADDRESS_GET_CLASS(o)   (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_ADDRESS, GncAddressClass))
 
#define ADDRESS_NAME   "name"
 
#define ADDRESS_ONE   "number"
 
#define ADDRESS_TWO   "street"
 
#define ADDRESS_THREE   "locality"
 
#define ADDRESS_FOUR   "city"
 
#define ADDRESS_PHONE   "phone"
 
#define ADDRESS_FAX   "fax"
 
#define ADDRESS_EMAIL   "email"
 
#define ADDRESS_OWNER   "owner"
 

Typedefs

typedef struct _gncAddress GncAddress
 
typedef struct _gncAddressClass GncAddressClass
 

Functions

GType gnc_address_get_type (void)
 
gboolean gncAddressIsDirty (const GncAddress *addr)
 
int gncAddressCompare (const GncAddress *a, const GncAddress *b)
 compare two addresses More...
 
gboolean gncAddressEqual (const GncAddress *a, const GncAddress *b)
 Deeply compare two addresses. More...
 

Create/Destroy functions

GncAddressgncAddressCreate (QofBook *book, QofInstance *parent)
 
void gncAddressDestroy (GncAddress *addr)
 
void gncAddressBeginEdit (GncAddress *addr)
 
void gncAddressCommitEdit (GncAddress *addr)
 

Set functions

void gncAddressSetName (GncAddress *addr, const char *name)
 
void gncAddressSetAddr1 (GncAddress *addr, const char *addr1)
 
void gncAddressSetAddr2 (GncAddress *addr, const char *addr2)
 
void gncAddressSetAddr3 (GncAddress *addr, const char *addr3)
 
void gncAddressSetAddr4 (GncAddress *addr, const char *addr4)
 
void gncAddressSetPhone (GncAddress *addr, const char *phone)
 
void gncAddressSetFax (GncAddress *addr, const char *fax)
 
void gncAddressSetEmail (GncAddress *addr, const char *email)
 
void gncAddressClearDirty (GncAddress *address)
 

Get Functions

const char * gncAddressGetName (const GncAddress *addr)
 
const char * gncAddressGetAddr1 (const GncAddress *addr)
 
const char * gncAddressGetAddr2 (const GncAddress *addr)
 
const char * gncAddressGetAddr3 (const GncAddress *addr)
 
const char * gncAddressGetAddr4 (const GncAddress *addr)
 
const char * gncAddressGetPhone (const GncAddress *addr)
 
const char * gncAddressGetFax (const GncAddress *addr)
 
const char * gncAddressGetEmail (const GncAddress *addr)
 

Detailed Description

An address belongs to another object, determined by the GncOwner. It is the owner that assigns a name and identifier to the address. In effect, an address is just a building - to make it useful to GnuCash, it needs to be tied to a person. After all, you cannot invoice a building, you invoice a person working / living in the building.

QOF needs to handle all objects generically and to tie the address to an owner, QOF must be able to find each - as entities.

This allows QOF to follow the hierarchy of objects without having to call any application-specific routines.

To achieve this, new GncAddress routines have been added. An address is now created with a NULL parent and the parent set explicitly using the QOF object declaration. Whilst this adds functionality, it is important that a valid GncOwner entity is always set as a parent. This is an API issue - QOF will always set the parent provided that a suitable entity is passed to the qofAddressSetOwner routine. It is up to you to pass a suitable entity.

Function Documentation

int gncAddressCompare ( const GncAddress a,
const GncAddress b 
)

compare two addresses

Returns
0 if identical, -1 if a is empty or less than b and +1 if a is more than b or if b is empty.

Definition at line 569 of file gncAddress.c.

570 {
571  if (!a && !b) return 0;
572  if (!a && b) return 1;
573  if (a && !b) return -1;
574 
575  return g_strcmp0 (a->name, b->name);
576 }
gboolean gncAddressEqual ( const GncAddress a,
const GncAddress b 
)

Deeply compare two addresses.

Returns
TRUE if all fields match, FALSE otherwise

Definition at line 579 of file gncAddress.c.

580 {
581  if (a == NULL && b == NULL) return TRUE;
582  if (a == NULL || b == NULL) return FALSE;
583 
584  g_return_val_if_fail(GNC_IS_ADDRESS(a), FALSE);
585  g_return_val_if_fail(GNC_IS_ADDRESS(b), FALSE);
586 
587  if (g_strcmp0(a->name, b->name) != 0)
588  {
589  PWARN("names differ: %s vs %s", a->name, b->name);
590  return FALSE;
591  }
592  if (g_strcmp0(a->addr1, b->addr1) != 0)
593  {
594  PWARN("address lines 1 differ: %s vs %s", a->addr1, b->addr1);
595  return FALSE;
596  }
597  if (g_strcmp0(a->addr2, b->addr2) != 0)
598  {
599  PWARN("address lines 2 differ: %s vs %s", a->addr2, b->addr1);
600  return FALSE;
601  }
602  if (g_strcmp0(a->addr3, b->addr3) != 0)
603  {
604  PWARN("address lines 3 differ: %s vs %s", a->addr3, b->addr3);
605  return FALSE;
606  }
607  if (g_strcmp0(a->addr4, b->addr4) != 0)
608  {
609  PWARN("address lines 4 differ: %s vs %s", a->addr4, b->addr4);
610  return FALSE;
611  }
612  if (g_strcmp0(a->phone, b->phone) != 0)
613  {
614  PWARN("phone numbers differ: %s vs %s", a->phone, b->phone);
615  return FALSE;
616  }
617  if (g_strcmp0(a->fax, b->fax) != 0)
618  {
619  PWARN("fax numbers differ: %s vs %s", a->fax, b->fax);
620  return FALSE;
621  }
622  if (g_strcmp0(a->email, b->email) != 0)
623  {
624  PWARN("email addresses differ: %s vs %s", a->email, b->email);
625  return FALSE;
626  }
627 
628  return TRUE;
629 }
#define PWARN(format, args...)
Definition: qoflog.h:243