aboutsummaryrefslogtreecommitdiff
path: root/sp/src/public/filesystem_helpers.h
blob: 070e779ad96297b9be3ffc3ccdead996c3049cc4 (plain) (blame)
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
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//===========================================================================//

#ifndef FILESYSTEM_HELPERS_H
#define FILESYSTEM_HELPERS_H

#ifdef _WIN32
#pragma once
#endif

struct characterset_t;

// Don't call this directly. You should (as long as your destination is an array) be
// able to call ParseFile, which is safer as it infers your array size for you.
const char* ParseFileInternal( const char* pFileBytes, OUT_Z_CAP(nMaxTokenLen) char* pTokenOut, bool* pWasQuoted, characterset_t *pCharSet, size_t nMaxTokenLen );

// Call until it returns NULL. Each time you call it, it will parse out a token.

template <size_t count>
const char* ParseFile( const char* pFileBytes, OUT_Z_ARRAY char (&pTokenOut)[count], bool* pWasQuoted, characterset_t *pCharSet = NULL, unsigned int nMaxTokenLen = (unsigned int)-1 )
{
	(void*)nMaxTokenLen; // Avoid unreferenced variable warnings.
	return ParseFileInternal( pFileBytes, pTokenOut, pWasQuoted, pCharSet, count );
}

template <size_t count>
char* ParseFile( char* pFileBytes, OUT_Z_ARRAY char (&pTokenOut)[count], bool* pWasQuoted )	// (same exact thing as the const version)
{
	return const_cast<char*>( ParseFileInternal( pFileBytes, pTokenOut, pWasQuoted, NULL, count ) );
}

#endif // FILESYSTEM_HELPERS_H