# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: dev@anteru.net-20100624124033-mbpa77ew222ncdus # target_branch: file:///V:/niven/trunk/ # testament_sha1: 9f3a9a04ee85c8ca06a9ac6d52e9c23353450e63 # timestamp: 2010-06-24 16:42:23 +0200 # message: ComputeCUDA patch # base_revision_id: dev@anteru.net-20100622074001-gcs8z9ng48w2c9ly # # Begin patch === modified file 'niven/Compute/CUDA/inc/Function.h' --- niven/Compute/CUDA/inc/Function.h 2010-06-16 11:03:19 +0000 +++ niven/Compute/CUDA/inc/Function.h 2010-06-24 12:40:33 +0000 @@ -24,6 +24,9 @@ int GetSize () const; + void Clear (); + bool IsEmpty () const; + private: void Add (const int size, const void* value, const int alignment); @@ -43,17 +46,6 @@ std::tr1::alignment_of::value); } -void ParameterPack::AddPointer (const ::CUdeviceptr ptr) -{ - // This is needed as device pointer sizes seem to be bound to - // host pointer sizes; this is taken straight out of the NVIDIA - // samples - const void* v = reinterpret_cast ( - static_cast (ptr)); - - Add (v); -} - class NIV_API_COMPUTE_CUDA Function { public: === modified file 'niven/Compute/CUDA/src/Function.cpp' --- niven/Compute/CUDA/src/Function.cpp 2010-06-16 11:03:19 +0000 +++ niven/Compute/CUDA/src/Function.cpp 2010-06-24 12:40:33 +0000 @@ -29,6 +29,28 @@ } ////////////////////////////////////////////////////////////////////////////// +bool ParameterPack::IsEmpty() const +{ + NIV_ASSERT(offsets_.size () == sizes_.size ()); + NIV_ASSERT(std::accumulate (sizes_.begin (), sizes_.end (), 0) == + buffer_.size ()); + + return buffer_.empty () && sizes_.empty () && offsets_.empty (); +} + +////////////////////////////////////////////////////////////////////////////// +void ParameterPack::Clear () +{ + NIV_ASSERT(offsets_.size () == sizes_.size ()); + NIV_ASSERT(std::accumulate (sizes_.begin (), sizes_.end (), 0) == + buffer_.size ()); + + offsets_.clear (); + sizes_.clear (); + buffer_.clear (); +} + +////////////////////////////////////////////////////////////////////////////// int ParameterPack::GetParameterCount () const { NIV_ASSERT(offsets_.size () == sizes_.size ()); @@ -52,6 +74,18 @@ } ////////////////////////////////////////////////////////////////////////////// +void ParameterPack::AddPointer (const ::CUdeviceptr ptr) +{ + // This is needed as device pointer sizes seem to be bound to + // host pointer sizes; this is taken straight out of the NVIDIA + // samples + const void* v = reinterpret_cast ( + static_cast (ptr)); + + Add (v); +} + +////////////////////////////////////////////////////////////////////////////// Function::Function () { } === modified file 'niven/Core/src/text/SimpleLexer.cpp' --- niven/Core/src/text/SimpleLexer.cpp 2010-04-23 14:31:59 +0000 +++ niven/Core/src/text/SimpleLexer.cpp 2010-06-24 12:40:33 +0000 @@ -26,7 +26,7 @@ { struct ExtendedTokenType { - // Make sure to substract 1 in ToTokenType() + // Make sure to subtract 1 in ToTokenType() enum Enum { String = 1, @@ -70,77 +70,77 @@ return tokenType [static_cast (ett) - 1]; } - void BuildLexer (lexertl::basic_rules& rules_, + void BuildLexer (lexertl::basic_rules& rules, const SimpleLexerFlags::Enum flags) { - rules_.add_macro (("BLANK"), ("[ \\t]")); - rules_.add_macro (("CCOMMENT"), ("\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\/")); + rules.add_macro (("BLANK"), ("[ \\t]")); + rules.add_macro (("CCOMMENT"), ("\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\/")); //#define PPSPACE "(" BLANK OR CCOMMENT ")*" - rules_.add_macro (("PPSPACE"), ("({BLANK}|{CCOMMENT})*")); + rules.add_macro (("PPSPACE"), ("({BLANK}|{CCOMMENT})*")); //#define OCTALDIGIT "[0-7]" - rules_.add_macro (("OCTALDIGIT"), ("[0-7]")); + rules.add_macro (("OCTALDIGIT"), ("[0-7]")); //#define DIGIT "[0-9]" - rules_.add_macro (("DIGIT"), ("[0-9]")); + rules.add_macro (("DIGIT"), ("[0-9]")); //#define HEXDIGIT "[0-9a-fA-F]" - rules_.add_macro (("HEXDIGIT"), ("[0-9a-fA-F]")); + rules.add_macro (("HEXDIGIT"), ("[0-9a-fA-F]")); //#define OPTSIGN "[-+]?" - rules_.add_macro (("OPTSIGN"), ("[-+]?")); + rules.add_macro (("OPTSIGN"), ("[-+]?")); //#define EXPSTART "[eE]" "[-+]" - rules_.add_macro (("EXPSTART"), ("[eE][-+]")); + rules.add_macro (("EXPSTART"), ("[eE][-+]")); //#define EXPONENT "(" "[eE]" OPTSIGN "[0-9]+" ")" - rules_.add_macro (("EXPONENT"), ("([eE]{OPTSIGN}[0-9]+)")); + rules.add_macro (("EXPONENT"), ("([eE]{OPTSIGN}[0-9]+)")); //#define NONDIGIT "[a-zA-Z_]" - rules_.add_macro (("NONDIGIT"), ("[a-zA-Z_]")); + rules.add_macro (("NONDIGIT"), ("[a-zA-Z_]")); //#define INTEGER \ // "(" "(0x|0X)" HEXDIGIT "+" OR "0" OCTALDIGIT "*" OR "[1-9]" DIGIT "*" ")" - rules_.add_macro (("INTEGER"), ("((0x|0X){HEXDIGIT}+|0{OCTALDIGIT}*|[1-9]{DIGIT}*)")); + rules.add_macro (("INTEGER"), ("((0x|0X){HEXDIGIT}+|0{OCTALDIGIT}*|[1-9]{DIGIT}*)")); //#define INTEGER_SUFFIX "(" "[uU][lL]?|[lL][uU]?" ")" - rules_.add_macro (("INTEGER_SUFFIX"), ("([uU][lL]?|[lL][uU]?)")); + rules.add_macro (("INTEGER_SUFFIX"), ("([uU][lL]?|[lL][uU]?)")); //#define FLOAT_SUFFIX "(" "[fF][lL]?|[lL][fF]?" ")" - rules_.add_macro (("FLOAT_SUFFIX"), ("([fF][lL]?|[lL][fF]?)")); - rules_.add_macro (("BACKSLASH"), ("\\\\")); - rules_.add_macro ("ESCAPESEQ", "{BACKSLASH}([abfnrtv?'\"]|{BACKSLASH}|x{HEXDIGIT}+|{OCTALDIGIT}{1,3})"); + rules.add_macro (("FLOAT_SUFFIX"), ("([fF][lL]?|[lL][fF]?)")); + rules.add_macro (("BACKSLASH"), ("\\\\")); + rules.add_macro ("ESCAPESEQ", "{BACKSLASH}([abfnrtv?'\"]|{BACKSLASH}|x{HEXDIGIT}+|{OCTALDIGIT}{1,3})"); //#define HEXQUAD HEXDIGIT HEXDIGIT HEXDIGIT HEXDIGIT - rules_.add_macro (("HEXQUAD"), ("{HEXDIGIT}{4}")); - rules_.add_macro (("UNIVERSALCHAR"), ("{BACKSLASH}(u{HEXQUAD}|U{HEXQUAD}{2})")); + rules.add_macro (("HEXQUAD"), ("{HEXDIGIT}{4}")); + rules.add_macro (("UNIVERSALCHAR"), ("{BACKSLASH}(u{HEXQUAD}|U{HEXQUAD}{2})")); //#define NEWLINEDEF "(" "\\n" OR "\\r" OR "\\r\\n" ")" - rules_.add_macro (("NEWLINEDEF"), ("(\\n|\\r|\\r\\n)")); + rules.add_macro (("NEWLINEDEF"), ("(\\n|\\r|\\r\\n)")); //#define PP_NUMBERDEF Q(".") "?" DIGIT "(" DIGIT OR NONDIGIT OR EXPSTART OR Q(".") ")*" - rules_.add_macro (("PP_NUMBERDEF"), ("\\.?{DIGIT}({DIGIT}|{NONDIGIT}|{EXPSTART}|\\.)*")); - - rules_.add (("\\}"), ExtendedTokenType::Right_Brace); - rules_.add (("\\{"), ExtendedTokenType::Left_Brace); - rules_.add (("\\)"), ExtendedTokenType::Right_Parantheses); - rules_.add (("\\("), ExtendedTokenType::Left_Parantheses); - - rules_.add (("{OPTSIGN}{INTEGER}{INTEGER_SUFFIX}?"), ExtendedTokenType::Integer); - rules_.add ("({OPTSIGN}1\\.#(([SsQq]?[Nn][Aa][Nn])|([Ii][Nn][DdFf])))|{OPTSIGN}(({DIGIT}*\\.{DIGIT}+|{DIGIT}+\\.){EXPONENT}?{FLOAT_SUFFIX}?|{DIGIT}+{EXPONENT}{FLOAT_SUFFIX}?)", + rules.add_macro (("PP_NUMBERDEF"), ("\\.?{DIGIT}({DIGIT}|{NONDIGIT}|{EXPSTART}|\\.)*")); + + rules.add (("\\}"), ExtendedTokenType::Right_Brace); + rules.add (("\\{"), ExtendedTokenType::Left_Brace); + rules.add (("\\)"), ExtendedTokenType::Right_Parantheses); + rules.add (("\\("), ExtendedTokenType::Left_Parantheses); + + rules.add (("{OPTSIGN}{INTEGER}{INTEGER_SUFFIX}?"), ExtendedTokenType::Integer); + rules.add ("({OPTSIGN}1\\.#(([SsQq]?[Nn][Aa][Nn])|([Ii][Nn][DdFf])))|{OPTSIGN}(({DIGIT}*\\.{DIGIT}+|{DIGIT}+\\.){EXPONENT}?{FLOAT_SUFFIX}?|{DIGIT}+{EXPONENT}{FLOAT_SUFFIX}?)", ExtendedTokenType::Float); - rules_.add (("([a-zA-Z_$]|{UNIVERSALCHAR})([a-zA-Z0-9_$]|{UNIVERSALCHAR})*"), ExtendedTokenType::Identifier); - rules_.add (("([a-zA-Z]|{UNIVERSALCHAR})([a-zA-Z0-9_/.]|{UNIVERSALCHAR})*"), ExtendedTokenType::Path); + rules.add (("([a-zA-Z_$]|{UNIVERSALCHAR})([a-zA-Z0-9_$]|{UNIVERSALCHAR})*"), ExtendedTokenType::Identifier); + rules.add (("([a-zA-Z]|{UNIVERSALCHAR})([a-zA-Z0-9_/.]|{UNIVERSALCHAR})*"), ExtendedTokenType::Path); - rules_.add (("{CCOMMENT}"), ExtendedTokenType::Comment); + rules.add (("{CCOMMENT}"), ExtendedTokenType::Comment); if (! TestFlag (flags, SimpleLexerFlags::No_Cpp_Comments)) { - rules_.add (("\\/\\/[^\\n\\r]*{NEWLINEDEF}"), ExtendedTokenType::Line_Comment); + rules.add (("\\/\\/[^\\n\\r]*{NEWLINEDEF}"), ExtendedTokenType::Line_Comment); } if (TestFlag (flags, SimpleLexerFlags::Pound_Comments)) { - rules_.add (("#[^\\n\\r]*{NEWLINEDEF}"), ExtendedTokenType::Line_Comment); + rules.add (("#[^\\n\\r]*{NEWLINEDEF}"), ExtendedTokenType::Line_Comment); } - rules_.add (("\\\"({ESCAPESEQ}|[^\\n\\r\"]|{UNIVERSALCHAR})*\\\""), ExtendedTokenType::String); - rules_.add (("{BLANK}+"), ExtendedTokenType::White_Space); + rules.add (("\\\"({ESCAPESEQ}|[^\\n\\r\"]|{UNIVERSALCHAR})*\\\""), ExtendedTokenType::String); + rules.add (("{BLANK}+"), ExtendedTokenType::White_Space); - rules_.add (("{NEWLINEDEF}"), ExtendedTokenType::New_Line); + rules.add (("{NEWLINEDEF}"), ExtendedTokenType::New_Line); //TOKEN_DATA(T_ANY, ".") // this should be the last recognized token - rules_.add (("."), ExtendedTokenType::Unknown); + rules.add (("."), ExtendedTokenType::Unknown); } } } # Begin bundle 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