open_toontown_panda3d/dtool/src/interrogatedb/interrogate_datafile.cxx

106 lines
3.1 KiB
C++

// Filename: interrogate_datafile.cxx
// Created by: drose (09Aug00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) 2001, Disney Enterprises, Inc. All rights reserved
//
// All use of this software is subject to the terms of the Panda 3d
// Software license. You should have received a copy of this license
// along with this source code; you will also find a current copy of
// the license at http://www.panda3d.org/license.txt .
//
// To contact the maintainers of this program write to
// panda3d@yahoogroups.com .
//
////////////////////////////////////////////////////////////////////
#include "interrogate_datafile.h"
////////////////////////////////////////////////////////////////////
// Function: idf_output_string
// Description: Writes the indicated string to the output file. Uses
// the given whitespace character to separate the
// string's length and its contents.
////////////////////////////////////////////////////////////////////
void
idf_output_string(ostream &out, const string &str, char whitespace) {
out << str.length() << whitespace;
if (!str.empty()) {
out << str << whitespace;
}
}
////////////////////////////////////////////////////////////////////
// Function: idf_input_string
// Description: Reads the given string from the input file, as
// previously written by output_string().
////////////////////////////////////////////////////////////////////
void
idf_input_string(istream &in, string &str) {
int length;
in >> length;
if (in.fail()) {
return;
}
// Skip one character of whitespace, and then read the string.
in.get();
str = "";
while (length > 0) {
str += in.get();
length--;
}
}
////////////////////////////////////////////////////////////////////
// Function: idf_output_string
// Description: Writes the indicated string to the output file. Uses
// the given whitespace character to separate the
// string's length and its contents.
////////////////////////////////////////////////////////////////////
void
idf_output_string(ostream &out, const char *str, char whitespace) {
if (str == (const char *)NULL) {
out << "0 ";
} else {
out << strlen(str) << whitespace;
if (str[0] != '\0') {
out << str << whitespace;
}
}
}
////////////////////////////////////////////////////////////////////
// Function: idf_input_string
// Description: Reads the given string from the input file, as
// previously written by output_string().
////////////////////////////////////////////////////////////////////
void
idf_input_string(istream &in, const char *&str) {
int length;
in >> length;
if (in.fail()) {
return;
}
if (length == 0) {
// Don't change the string if the input length is zero.
return;
}
// Skip one character of whitespace, and then read the string.
in.get();
char *readstr = new char[length + 1];
int p = 0;
while (p < length) {
readstr[p] = in.get();
p++;
}
readstr[p] = '\0';
str = readstr;
}