#pragma interface #ifndef TLMPDOC_H #define TLMPDOC_H #include // Opaque type class DOC_ID{ public: class DOC_ID_PRIVATE *priv; /*~PROTOBEG~ DOC_ID */ public: DOC_ID (const char *_label); DOC_ID (void); const char *getlabel (void)const; ~DOC_ID (void); /*~PROTOEND~ DOC_ID */ }; #define _TLMP_page struct _F_page{ class _F_page_private *priv; #define _F_page_desc(nom) void nom desc() virtual _F_page_desc( )=0; #define _F_page_image(nom) void nom image() virtual _F_page_image( )=0; }; #define _TLMP_paragraph struct _F_paragraph{ class _F_paragraph_private *priv; #define _F_paragraph_body(nom) void nom body() virtual _F_paragraph_body( )=0; }; #define _TLMP_section struct _F_section{ class _F_section_private *priv; void htmlout (PARAM_STRING s); #define _F_section_body(nom) void nom body(bool printing, bool fulldoc) virtual _F_section_body( )=0; }; #define _TLMP_sample struct _F_sample{ class _F_sample_private *priv; void htmlout (PARAM_STRING s); void printf (const char *s, ...); void include (const char *file); void include (const char *file, const char *prefix); void setwidth (int width); void setnbtab (int nbtab); void settableopt (const char *opt); #define _F_sample_body(nom) void nom body() virtual _F_sample_body( )=0; }; #define _TLMP_pre struct _F_pre{ class _F_pre_private *priv; void htmlout (PARAM_STRING s); void printf (const char *s, ...); #define _F_pre_body(nom) void nom body() virtual _F_pre_body( )=0; }; #define _TLMP_document struct _F_document{ class _F_document_private *priv; void author (const char *name, const char *email); void urlproject(); void urltlmpdoc(); void htmlout( PARAM_STRING out ); #define _F_document_abstract(nom) void nom abstract() virtual _F_document_abstract( )=0; #define _F_document_body(nom) void nom body() virtual _F_document_body( )=0; #define _F_document_ref(nom) void nom ref() virtual _F_document_ref( ); #define _F_document_bottom(nom) void nom bottom(int tbno[10], int level) virtual _F_document_bottom( ); }; #define MAX_PROJECT_DOC 4 #define _TLMP_project struct _F_project{ class _F_project_private *priv; // Setup an hyperlink to a document of this project void setdoclink (int no, const char *title); // Call a specific document so it becomes inline void calldocument (int no); #define _F_project_documents(nom) void nom documents(int no, const char *title) virtual _F_project_documents( ); #define _F_project_document1(nom) void nom document1(int no, const char *title) virtual _F_project_document1( ); #define _F_project_document2(nom) void nom document2(int no, const char *title) virtual _F_project_document2( ); #define _F_project_document3(nom) void nom document3(int no, const char *title) virtual _F_project_document3( ); #define _F_project_document4(nom) void nom document4(int no, const char *title) virtual _F_project_document4( ); #define _F_project_news(nom) void nom news(const char *title) virtual _F_project_news( ); #define _F_project_has_news(nom) bool nom has_news(const char *title) virtual _F_project_has_news( ); #define _F_project_logs(nom) void nom logs(const char *title) virtual _F_project_logs( ); #define _F_project_has_logs(nom) bool nom has_logs(const char *title) virtual _F_project_has_logs( ); #define _F_project_refs(nom) void nom refs(const char *title) virtual _F_project_refs( ); #define _F_project_logo(nom) void nom logo(const char *title) virtual _F_project_logo( ); #define _F_project_layout(nom) void nom layout(const char *title) virtual _F_project_layout( ); #define _F_project_docindex(nom) void nom docindex(const char *title) virtual _F_project_docindex( ); }; enum DOCNODE_STATUS{ DOCNODE_OLD, // The reader has seen this node DOCNODE_NEVERSEEN, // The reader has never this node // but has seen other part of the document // A DOCNODE_NEW node is new since the // reader last visited the document DOCNODE_MODIFIED, // He has seen it, but it has changed since DOCNODE_NEW, // This is new since he last visited the document }; #define _TLMP_docsession struct _F_docsession{ class _F_docsession_private *priv; #define _F_docsession_body(nom) void nom body() virtual _F_docsession_body( )=0; }; #define _TLMP_wiki struct _F_wiki{ class _F_wiki_private *priv; #define _F_wiki_body(nom) void nom body() virtual _F_wiki_body( )=0; #define _F_wiki_abstract(nom) void nom abstract() virtual _F_wiki_abstract( )=0; }; struct DOCUMENT_POINTER { int tb[6]; bool changed; DOCUMENT_POINTER(); void set (int s1, int s2, int s3, int s4, int s5, int s6); bool ischanged() const { return changed; } void resetchanged() { changed = false; } void reset(); bool at_top() const; DOCUMENT_POINTER & operator =(const DOCUMENT_POINTER &n); }; #include "tlmpdoc.p" #endif