aboutsummaryrefslogtreecommitdiff
path: root/tool_src/QvLib/QvSFBool.cpp
blob: a1ecd9ca8c519f48ea1a84afc22b039b9cdc6ef8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <QvReadError.h>
#include <QvSFBool.h>

QV_SFIELD_SOURCE(QvSFBool);

QvBool
QvSFBool::readValue(QvInput *in)
{
    // accept 0 or 1
    if (in->read(value)) {
	if (value != 0 && value != 1) {
	    QvReadError::post(in, "Illegal value for QvSFBool: %d "
			      "(must be 0 or 1)", value);
	    return FALSE;
	}
	return TRUE;
    }

    // read TRUE/FALSE keyword
    QvName n;
    if (! in->read(n, TRUE))
	return FALSE;
    
    if (n == "TRUE") {
	value = TRUE;
	return TRUE;
    }

    if (n == "FALSE") {
	value = FALSE;
	return TRUE;
    }

    QvReadError::post(in, "Unknown value (\"%s\") for QvSFBool ",
		      "(must be TRUE or FALSE)", n.getString());
    return FALSE;
}