liberscribble/include/scbpages.h File Reference

#include "scbpage.h"
#include <glib.h>

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _ScbPages

Typedefs

typedef struct _ScbPages ScbPages
typedef ScbPagesScbPagesPtr

Functions

gboolean scb_pages_new (ScbPagesPtr ptr)
void scb_pages_free (ScbPagesPtr ptr)
gboolean scb_pages_add_page (ScbPagesPtr pages, ScbPagePtr page)
ScbPagePtr scb_pages_detach_page (ScbPagesPtr pages, ScbPageIdPtr id)
void scb_pages_remove_page (ScbPagesPtr pages, ScbPageIdPtr id)
int scb_pages_get_count (ScbPagesPtr ptr)
ScbPagePtr scb_pages_get_page (ScbPagesPtr pages, ScbPageIdPtr id)
gboolean scb_pages_change_page_id (ScbPagesPtr pages, ScbPageIdPtr oldId, ScbPageIdPtr newId)
gboolean scb_pages_save (ScbPagesPtr pages, ScbXmlPtr xml)
gboolean scb_pages_load (ScbPagesPtr pages, ScbXmlPtr xml)
void scb_pages_dump (ScbPagesPtr pages)


Typedef Documentation

typedef struct _ScbPages ScbPages

Copyright (C) 2005-2008 iRex Technologies B.V. All rights reserved.

Definition at line 38 of file scbpages.h.


Function Documentation

gboolean scb_pages_add_page ( ScbPagesPtr  pages,
ScbPagePtr  page 
)

Definition at line 73 of file scbpages.c.

00074 {
00075     SCB_RET_FALSE_IF(NULL == pages || NULL == page, "Invalid pages or page pointer!");
00076     
00077     ScbPagePtr pItem  = NULL;
00078     GList* ptr = g_list_first(pages->pages);
00079     while(ptr)
00080     {
00081         pItem = ptr->data;
00082         if (pItem && 0 == strncmp(pItem->id.id, page->id.id, SCB_MAX_PAGEID_LEN))
00083         {
00084             // already exist, quit, it's ok,
00085             // SCB_WARN("Duplicated page id %s!", page->id.id);
00086             return TRUE;
00087         }
00088         ptr = g_list_next(ptr);   
00089     }
00090     g_list_append(pages->pages, page);
00091     return TRUE;
00092 }

gboolean scb_pages_change_page_id ( ScbPagesPtr  pages,
ScbPageIdPtr  oldId,
ScbPageIdPtr  newId 
)

Definition at line 171 of file scbpages.c.

00173 {
00174     ScbPagePtr pItem  = NULL;
00175     GList* ptr = g_list_first(pages->pages);
00176     while(ptr)
00177     {
00178         pItem = ptr->data;
00179         if (pItem && 0 == strncmp(pItem->id.id, oldId->id, SCB_MAX_PAGEID_LEN))
00180         {
00181             // ok, hit. 
00182             strncpy(pItem->id.id, newId->id, SCB_MAX_PAGEID_LEN);
00183             return TRUE;
00184         }
00185         ptr = g_list_next(ptr);   
00186     }
00187     return FALSE;
00188 }

ScbPagePtr scb_pages_detach_page ( ScbPagesPtr  pages,
ScbPageIdPtr  id 
)

Definition at line 96 of file scbpages.c.

00097 {
00098     ScbPagePtr pItem  = NULL;
00099     GList* ptr = g_list_first(pages->pages);
00100     while(ptr)
00101     {
00102         pItem = ptr->data;
00103         if (pItem && 0 == strncmp(pItem->id.id, id->id, SCB_MAX_PAGEID_LEN))
00104         {
00105             // ok, hit. notice.......
00106             g_list_remove(pages->pages, pItem);
00107             return pItem;
00108         }
00109         ptr = g_list_next(ptr);   
00110     }
00111     return NULL;
00112 }

void scb_pages_dump ( ScbPagesPtr  pages  ) 

Definition at line 260 of file scbpages.c.

00261 {
00262     SCB_RET_IF(NULL == pages, "NULL pointer!");
00263     g_list_foreach(pages->pages, _page_dump, 0);
00264 }

Here is the call graph for this function:

void scb_pages_free ( ScbPagesPtr  ptr  ) 

Definition at line 57 of file scbpages.c.

00058 {
00059     if (ptr)
00060     {
00061         // release all stroke
00062         g_list_foreach(ptr->pages, _page_release, NULL);
00063 
00064         // now the pointers are wild pointers
00065         g_list_free(ptr->pages);
00066         ptr->pages = NULL;
00067     }
00068 }

Here is the call graph for this function:

int scb_pages_get_count ( ScbPagesPtr  ptr  ) 

Definition at line 139 of file scbpages.c.

00140 {
00141     SCB_RET_INT_IF(NULL == pages, SCB_INVALID_COUNT, "Invalid pages pointer!");
00142     int len = g_list_length(pages->pages);
00143     if (len > 0)
00144     {
00145         return len - 1;
00146     }
00147     return SCB_INVALID_COUNT;
00148 }

ScbPagePtr scb_pages_get_page ( ScbPagesPtr  pages,
ScbPageIdPtr  id 
)

Definition at line 152 of file scbpages.c.

00153 {
00154     ScbPagePtr pItem  = NULL;
00155     GList* ptr = g_list_first(pages->pages);
00156     while(ptr)
00157     {
00158         pItem = ptr->data;
00159         if (pItem && 0 == strncmp(pItem->id.id, id->id, SCB_MAX_PAGEID_LEN))
00160         {
00161             // ok, hit. notice.......
00162            return pItem;
00163         }
00164         ptr = g_list_next(ptr);   
00165     }
00166     return NULL;
00167 }

gboolean scb_pages_load ( ScbPagesPtr  pages,
ScbXmlPtr  xml 
)

Definition at line 219 of file scbpages.c.

00220 {
00221     // check
00222     SCB_RET_FALSE_IF(NULL == pages || NULL == xml, "Invalid pointer!");
00223 
00224     // construct xPath
00225     ScbXmlPtr self = scb_xml_clone(xml);
00226     strncat(self->xPath, "/pages", SCB_MAX_XML_PATH);
00227     self->index = 1;
00228 
00229     // load pages
00230     gboolean bLoad = TRUE;
00231     while (bLoad)
00232     {
00233         ScbPagePtr page = scb_page_new();
00234         bLoad = scb_page_load(page, self);
00235         if (bLoad)
00236         {
00237             scb_pages_add_page(pages, page);
00238             ++self->index;
00239         }
00240         else
00241         {
00242             scb_page_free(page);
00243             break;
00244         }
00245     }
00246     scb_xml_free(self);
00247     return TRUE;
00248 }

Here is the call graph for this function:

gboolean scb_pages_new ( ScbPagesPtr  ptr  ) 

Definition at line 42 of file scbpages.c.

00043 {
00044     SCB_RET_FALSE_IF(NULL == ptr, "Invalid pointer!");
00045 
00046     ptr->pages = g_list_alloc();
00047     if (NULL == ptr->pages)
00048     {
00049         SCB_ERROR("Could not allocate list!");
00050         return FALSE;
00051     }
00052     return TRUE;
00053 }

void scb_pages_remove_page ( ScbPagesPtr  pages,
ScbPageIdPtr  id 
)

Definition at line 116 of file scbpages.c.

00117 {
00118     SCB_RET_IF(NULL == pages || NULL == id, "Invalid pointer!");
00119     
00120     ScbPagePtr pItem  = NULL;
00121     GList* ptr = g_list_first(pages->pages);
00122     while(ptr)
00123     {
00124         pItem = ptr->data;
00125         if (pItem && 0 == strncmp(pItem->id.id, id->id, SCB_MAX_PAGEID_LEN))
00126         {
00127             // ok, hit. notice.......
00128             scb_page_free(pItem);
00129             g_list_remove(pages->pages, ptr->data);
00130             return;
00131         }
00132         ptr = g_list_next(ptr);   
00133     }
00134 }

Here is the call graph for this function:

gboolean scb_pages_save ( ScbPagesPtr  pages,
ScbXmlPtr  xml 
)

Definition at line 204 of file scbpages.c.

00205 {
00206     SCB_RET_FALSE_IF(NULL == pages || NULL == xml, "Invalid pointer!");
00207     // xPath
00208     ScbXmlPtr self = scb_xml_clone(xml);
00209     self->index = 1;
00210     ermXmlNewString(&xml->handle, self->xPath, "pages", "");
00211     strncat(self->xPath, "/pages", SCB_MAX_XML_PATH);
00212     g_list_foreach(pages->pages, _page_save, self);
00213     scb_xml_free(self);
00214     return TRUE;
00215 }

Here is the call graph for this function:


Generated on Sun Dec 14 17:15:02 2008 by  doxygen 1.5.6