ftp.nice.ch/pub/next/developer/languages/cows/COWS.1.4.s.tar.gz#/COWS/Subprojects/COWS.subproj/COWSStringNode.h

This is COWSStringNode.h in view mode; [Download] [Up]

/*
        Copyright (C) 1994 Sean Luke

        COWSStringNode.h
        Version 1.5a_mj
        Code mangled beyond recognition by Michal Jaegermann
		Slight modifications by Sean Luke

*/


#import "COWSNode.h"
#import <stdio.h>

#define COWSSTRINGNODE_STORED_STRING    1
#define COWSSTRINGNODE_STORED_NUMBER    2
#define COWSSTRINGNODE_STORED_ERROR     4   // error message flag
                                            // for use by library functions

/* flag manipulation macros  - set, clear and check flag X in flags f */
#define SN_SET(f,X)   (f) |= X
#define SN_CLEAR(f,X) (f) &= (~X)
#define SN_CHECK(f,X) ((f) & X)         // X is set iff this is non-zero
#define STORED_STRING(f) (0 != ((f) & COWSSTRINGNODE_STORED_STRING))
#define STORED_NUMBER(f) (0 != ((f) & COWSSTRINGNODE_STORED_NUMBER))
#define STORED_ERROR(f)  (0 != ((f) & COWSSTRINGNODE_STORED_ERROR))

@interface COWSStringNode:COWSNode
{
    char               *string;
    size_t              len;            // how much allocated in string
                                        // total - trailing zeros and stuff
    double              double_value;
    int                 value_flags;    // which interpretations are
                                        // valid for a stored value
}

- init;
- free;
- (const char *)string;
	// returns "" if string is either empty or NULL at the moment
	// returns the string value if there is one
	// returns the value converted into a string if it is of a different type.
- setString:(const char *)this;
- setString:(const char *)this size:(size_t)this_size;  // tacks on a \0

- setIntVal:(int)this;  // different from setIntValue to avoid warnings
- (int)intVal;          // etc.
- setFloatVal:(float)this;
- (float)floatVal;
- setDoubleVal:(double)this;
- (double)doubleVal;

- setBooleanVal:(BOOL)this;     // note that booleans are NOT equivalent to
 // ints--all ints evaluate to TRUE, including
 // 0.  Booleans are defined as non-empty
 // strings (canonically "t") for TRUE, and
 // empty strings for FALSE.
- (BOOL)booleanVal;
- (BOOL)isCanonicallyTrue;      // =="t"
- (BOOL)isCanonicallyFalse;     // =="" This is equivalent to !booleanVal
 // for this string node (COWS), but for other
 // languages (i.e., tcl), it could be needed
 // so is included for symmetry

- copyValue:(COWSStringNode *) from_this;   // copying from another string node
- (int)value_state;             // the value state (string, number, error)
                                // all three can be valid in the same time
#if 0
/* for a future use?? */
// append 'this' to a string stored in COWSStringNode
- (const char *)catString :(const char *)this;
// add 'this' to a number stored in COWSStringNode
- (double)addToVal :(double)this;
#endif


- setError:(BOOL)true_or_false;
- (BOOL)error;

- printContents;                // debugging

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.