Disable all code related to libXp
[oweals/cde.git] / cde / programs / dtinfo / DtMmdb / object / pstring.h
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /*
24  * $XConsortium: pstring.h /main/5 1996/07/18 14:45:25 drk $
25  *
26  * Copyright (c) 1993 HAL Computer Systems International, Ltd.
27  * All rights reserved.  Unpublished -- rights reserved under
28  * the Copyright Laws of the United States.  USE OF A COPYRIGHT
29  * NOTICE IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION
30  * OR DISCLOSURE.
31  * 
32  * THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE
33  * SECRETS OF HAL COMPUTER SYSTEMS INTERNATIONAL, LTD.  USE,
34  * DISCLOSURE, OR REPRODUCTION IS PROHIBITED WITHOUT THE
35  * PRIOR EXPRESS WRITTEN PERMISSION OF HAL COMPUTER SYSTEMS
36  * INTERNATIONAL, LTD.
37  * 
38  *                         RESTRICTED RIGHTS LEGEND
39  * Use, duplication, or disclosure by the Government is subject
40  * to the restrictions as set forth in subparagraph (c)(l)(ii)
41  * of the Rights in Technical Data and Computer Software clause
42  * at DFARS 252.227-7013.
43  *
44  *          HAL COMPUTER SYSTEMS INTERNATIONAL, LTD.
45  *                  1315 Dell Avenue
46  *                  Campbell, CA  95008
47  * 
48  */
49
50
51 #ifndef _pstring_h
52 #define _pstring_h 1
53
54 #include "object/primitive.h"
55 #include "utility/buffer.h"
56 #include "storage/page_storage.h"
57
58 /***************************************
59 * Primitive string class.
60 ****************************************/
61
62 class pstring: public primitive
63 {
64
65 protected:
66
67 #ifdef C_API
68    static buffer* v_io_buf_ptr;
69 #else
70    static buffer v_io_buf;
71 #endif
72
73 protected:
74    void _asciiIn(istream&) ; // get input to v_io_buf
75
76 public:
77    pstring(pstring&);
78    pstring(c_code_t = STRING_CODE);
79    pstring(const char* string, int sz, c_code_t = STRING_CODE);
80    virtual ~pstring();
81
82    virtual int size() const { return v_sz; };
83
84 #ifdef C_API
85    char* get(buffer& optional_buffer = *v_io_buf_ptr);
86 #else
87    char* get(buffer& optional_buffer = v_io_buf);
88 #endif
89
90    MMDB_SIGNATURES(pstring);
91
92    void init_persistent_info(persistent_info*);
93
94 /*
95 // value comparison functions
96    virtual Boolean value_EQ(root&, Boolean safe = true) const ;
97    virtual Boolean value_LS(root&, Boolean safe = true) const ;
98 */
99
100 // update function
101    virtual Boolean update(pstring& new_value);
102    virtual Boolean update(const char* new_value, int new_value_sz);
103
104 // print function
105    virtual io_status asciiOut(ostream& s) ;
106    virtual io_status asciiIn(istream&) ;
107    virtual io_status asciiIn(const char* buf, int size) ;
108
109 // compacted disk representation In and Out functions
110    virtual int cdr_sizeof();
111    virtual io_status cdrOut(buffer&);
112    virtual io_status cdrIn(buffer&);
113
114    friend class pstring_handler;
115
116 #ifdef C_API
117    friend void initialize_MMDB();
118    friend void quit_MMDB();
119 #endif
120
121 protected: // a union of disk/memory pointer
122    union {
123       mmdb_pos_t loc;
124       char* p;
125    } v_str_ptr;
126    unsigned int v_sz;
127
128
129 private:
130    void _init(const char*, int sz);
131
132 };
133    
134    
135 class pstring_handler : public handler
136 {
137
138 protected:
139
140 public:
141    pstring_handler(const oid_t&, storagePtr = 0);
142    pstring_handler(const char* str, int str_sz, storagePtr = 0);
143    virtual ~pstring_handler();
144
145    pstring* operator ->();
146 };
147
148
149 #endif